SlideShare a Scribd company logo
1 of 47
Download to read offline
Преемственность
продуктов
Колесников Степан
Степан Колесников
@karakazyablek
Я хочу рассказать про преемственность программных продуктов и поделиться своим
опытом по смене одного поколения софта следующим.
Поехали!
Впервые про преемственность я узнал незадолго до того того, как пошел в школу и
слово "преемственность" воспринималось мной исключительно в контексте проблемы
передачи власти в стране. Тогда, в августе, вот эти дядьки с картинки пугали всю страну
с экранов телевизоров,
а вот эти суровые мужчины пугали тех, кто пугал всю страну. В конечном счёте мы знаем
чем всё кончилось. Я не знаю, можно ли было говорить тогда о преемственности власти
в результате тех событий, но слово засело в моём сознании довольно крепко.
"А как же с преемственностью программных продуктов" - скажете вы мне. Откуда я что-
то знаю про неё? Минуточку терпения. Сейчас расскажу.
Всё началось 4 года назад, когда я пришел в компанию 2ГИС разработчиком на
единственный на тот момент внутренний продукт в компании. Продукт был довольно
большим: сотни тысяч строк кода на плюсах и десятки тысяч строк на VBA. Тогда мне
казалось, что количество времени и сил, которые разработчики разных поколений
вложили в разработку этого продукта сопоставимо с ресурсами на постройку Саяно-
Шушенской ГЭС
ну или Беломорканала...
Примерно в то же самое время у нас в компании начались работы по разработке новых
систем, которые должны были прийти на смену разных модулей старой. Поэтому всё это
время, все эти годы я находился в самом центре перемен и перехода от старой системы
к новым.
Я успел побывать на обеих сторонах барикады. Я участвовал и в строительстве нового
мира с новыми программными продуктами
и поддерживал старый рекационный продукт, чтобы он держался на плаву столько,
сколько того потребует бизнес.
За это время я успел посмотреть на разные эффекты и процессы, которые возникали у
нас по ходу дела.
Я видел как создавались и распадались команды разработки. Я видел, как команды и
отдельные их участники демотивировались или наоборот вдохновлялись в какой-то
момент и делали очень крутые штуки. Вот про это я и буду рассказывать дальше.
Начнем с того, что я расскажу про контекст, в котором мы работали. Когда-то у нас был
всего один внутренний продукт и он, казалось бы, вечен. Он вполне справлялся с
нагрузкой, его любили рабочие, а он делал их жизнь легче.
Но в какой-то момент стало понятно, что бизнес выдвигает нам всё новые и новые
требования и начало появляться ощущение, что старый продукт уже не сможет с ними
справиться на отлично. Мы стали думать о преемнике. Более мощном, современном и
соответсвующем новым вызовам бизнеса.
Вывод первый:
смена продуктов
должна быть
своевременной.
Здесь появляется первый вывод
Начинайте думать о преемнике, пока ваш старый добарый продукт ещё не впал в
коматоз
Плохой пример: нововоронежская аэс. С момента открытия инженерский состав этой аэс
был стабильным и практически не менялся. Инженеры были молоды, полны сил и
энергии. Но в какой-то момент они все состарились. Разом. Сейчас у аэс большая
проблема с тем, кто будет работать, когда все инженеры уйдут на пенсию.
Но мы подумали о преемнике вовремя и начали думать, как нам разрабатывать новый
продукт. У нас было 2 варианта. Первый из них - обратиться к системным интеграторам.
К счастью, они запросили слишком много и мы решили делать всё своими руками.
Мы довольно быстро собрали команду из нескольких программистов и аналитика. Но на
первом этапе мы толком не знали, что мы делаем и что должно получиться. В итоге
программисты довольно долго занимались различными сервисными задачами,
настройкой окружения и так далее. Что, конечно же, не сильно-то приближало нас к
заветной цели.
Вывод второй:
знай чего хочешь до
того, как написана
первая строчка кода
Реальная работа началась только тогда, когда аналитик разобрался, что именно нужно
делать и начал транслировать свой план на программистов.
Человек на фото - Клаус Фукс. Один из самых эффективных разведчиков, который
передавал сведения по ядерному проекту в СССР. Суть в том, что человек рисковал
своей свободой и жизнью только лишь для того, чтобы поделиться знаниями.
Как правило, разработчикам из команд нового и старого продукта ничем рисковать не
нужно, чтобы пообщаться и задать друг другу какие-то вопросы. Но общение между
новой и старой командами скорее редкость, чем правило.
Хотя для того, чтобы узнать больше, нужно уметь очень немногое: правильно задавать
вопросы.
Правда, не очень понятно, какие именно вопросы разработчики новой системы могут
задать программистам из старой. На самом деле это зависит от того, насколько должны
быть похожи старая и новая системы. Стоит обязательно поговорить про:
1. Глоссарий. У 2-х команд возникнет гораздо меньше трудностей в общении и в
интеграции, если разработчики из разных команд будут оперировать одними и теми же
терминами
2. Часто изменяемые части системы.
Разработчики старой системы могут дать много интересной пищи для размышления о
том, где новая система может остаться достаточно жесткой и неизменной
а где нужно добавить максимум гибкости, потому что эта часть системы регулярно
менялась и скорее всего будет меняться и дальше.
Вывод третий:
задавай вопросы,
это бесплатно!
Ещё одна проблема совместной параллельной разработки 2-х продуктов заключается в
том, что команда нового продукта всегда находится в позиции догоняющего. Догонять
вообще сложно, а ещё сложнее когда от тебя убегают, а перед тобой всё время
вырастают какие-то барьеры.
Игра в догоняжки между новым и старым продуктом - очень плохо. Нужно стремиться
избегать этого.
Хорошей же метафорой в разработке 2-х продуктов в параллели служит передача
этафетной палочки. В этом случае, команды подстраиваются друг под друга для того,
чтобы передача эстафеты всё же произошла.
Вывод четвёртый:
не играйте в
догоняжки -
передавайте
эстафету
Самым плохим исходом, к которому может привести игра в догоняжки является
холодная война между командами. Когда для команды новичков типичным является
утверждение, что старому продукту (да и команде!) место на свалке истории. А команда
ветеранов троллит новую команду тем, что у них после года-полутора-двух разработки
так и не произошло ни одного успешного внедрения.
Одним из симптомов нездоровой ситуации в отношениях между командами может
служить желание меряться всем чем можно: "а у нас клиент толще!"
А у нас юзер-стори длиннее!
Но вот, положим, новый продукт дошел до стадии внедрения. Есть несколько вопросов,
которые нужно задать себе перед внедрением, чтобы ещё раз убедиться, что мы ничего
не забыли.
Вопрос первый - миграция данных. Обычно это то, о чем думают в самый последний
момент и на что обращают минимум внимания: часто нет ни требований, ни карты
миграции, регламентов и так далее. Поэтому это очень багоопасный процесс. Совет:
думайте о миграции сразу же, как только начали разрабатывать новый продукт. Не
работайте с демо-данными в процессе разработке, лучше мигрируйте реальные и
работайте с ними.
Второй вопрос, тесно связанный с миграцией - это очистка данных. Обязательно
спросите себя, может ли новая система работать с данными старой? Или нужна какая-то
процедура очистки. У нас был случай, когда процедура очисти данных оказалась
настолько сложной, что пришлось разработать отдельную систему для этих целей.
Вывод пятый:
запланируйте задачу
очистки данных
после миграции
Подумайте об интеграции старой и новой систем. Скорее всего она вам понадобится.
Вывод шестой:
учите матчасть.
В данном случае -
шаблоны интеграции
Одной из проблем при внедрении новой системы может стать требование
одновременной работы части пользователей в разных системах. т.е. может оказаться,
что в разных базах у нас лежат частично пересекающиеся данные, которые со временем
разъезжаются и становится не ясно, где взять правильные данные и кому, собственно,
верить.
Я знаю про одну компанию, в которой параллельно были внедрены сразу 3 системы с
аналогичным функционалом. Вопрос о правильности данных решался на ежемесячном
собрании представителей всех 3-х продуктов и бизнеса.
Говорят, что часто в этих спорах у кого данные правильнее выигрывал тот, у кого
харизма выше.
Вывод седьмой:
для всех данных
должна быть
определена
единственная
мастер-система
И ещё раз вернемся к вопросу интеграции. В интеграции часто бывает довольно много
проблем, связанных с недопониманием разными командами всей задачи в целом.
Это недопонимание - прямое следствие цехового принципа разработки, когда 2 команды
считают, что раз они договорились о программных интерфейсах и описали какие-то
схемы данных, то дело в шляпе, можно просто запилить свой кусочек и всё будет
нормально. На самом деле это не так. Цеховой принцип разработки работает плохо.
Всегда находится что-то, из-за чего не получается запустить интеграцию с первого раза.
Поэтому, для успешной интеграции нужно более тесное общение между командами. В
идеале, разработчики обеих команд должны знать всё интеграционное решение, а не
только свою часть.
Добиться этого не легко, но возможно. Например, можно выделить на пару спринтов по
1-2 человека из каждой команд в одну команду интеграции. Желательно ещё и посадить
их рядом, чтобы они могли свободно общаться между собой.
Вывод восьмой:
собери их все!
Вопросы?
Степан Колесников,
@karakazyablek
karakazyablek@gmail.com
На самом деле, тема гораздо шире и я успел обозначить только некоторые особенности
перехода от старой системы к новой. Какой вывод я сделал для себя? Нужно не бояться
изменений и думать не только о новом и старом продукте, но и о всей системе в целом.

More Related Content

What's hot

Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»CEE-SEC(R)
 
"Как начать свое дело", Пол Грем
"Как начать свое дело", Пол Грем"Как начать свое дело", Пол Грем
"Как начать свое дело", Пол ГремAngel Relations Group
 
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"EgorNemov
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыryba4
 
Инструменты системного мышления против решений (РИТ++)
Инструменты системного мышления против решений (РИТ++)Инструменты системного мышления против решений (РИТ++)
Инструменты системного мышления против решений (РИТ++)2ГИС Технологии
 
Практика внедрения Scrum (статья)
Практика внедрения Scrum (статья)Практика внедрения Scrum (статья)
Практика внедрения Scrum (статья)Andrey Bibichev
 
«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»Olga Lavrentieva
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всемSQALab
 
Проектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийПроектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийCEE-SEC(R)
 
Мульти-блиц выступление на Стачка-2012
Мульти-блиц выступление на Стачка-2012Мульти-блиц выступление на Стачка-2012
Мульти-блиц выступление на Стачка-2012Alexey Mahotkin
 

What's hot (11)

Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»Законы создания IT команд и следствия законов для IT проектов «на пальцах»
Законы создания IT команд и следствия законов для IT проектов «на пальцах»
 
"Как начать свое дело", Пол Грем
"Как начать свое дело", Пол Грем"Как начать свое дело", Пол Грем
"Как начать свое дело", Пол Грем
 
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"В'ячеслав Панкратов "Кар'єра в сфері ІТ"
В'ячеслав Панкратов "Кар'єра в сфері ІТ"
 
Ярина Готліб
Ярина Готліб Ярина Готліб
Ярина Готліб
 
Выступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работыВыступление: инструменты и методы эффективной удалённой работы
Выступление: инструменты и методы эффективной удалённой работы
 
Инструменты системного мышления против решений (РИТ++)
Инструменты системного мышления против решений (РИТ++)Инструменты системного мышления против решений (РИТ++)
Инструменты системного мышления против решений (РИТ++)
 
Практика внедрения Scrum (статья)
Практика внедрения Scrum (статья)Практика внедрения Scrum (статья)
Практика внедрения Scrum (статья)
 
«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»«Домовёнок кузя изгоняет лешего»
«Домовёнок кузя изгоняет лешего»
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
Проектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требованийПроектирование с учетом пользовательских требований
Проектирование с учетом пользовательских требований
 
Мульти-блиц выступление на Стачка-2012
Мульти-блиц выступление на Стачка-2012Мульти-блиц выступление на Стачка-2012
Мульти-блиц выступление на Стачка-2012
 

Viewers also liked

Mooroolbark property sale_190413
Mooroolbark property sale_190413Mooroolbark property sale_190413
Mooroolbark property sale_190413stockdalecroydon
 
Decreto afrocolombianidad.
Decreto afrocolombianidad.Decreto afrocolombianidad.
Decreto afrocolombianidad.Miguel Abeth
 
Actividad aplicaciones de integral
Actividad aplicaciones de integralActividad aplicaciones de integral
Actividad aplicaciones de integralRosmary Diaz
 
Багажные ярлыки (GiftsPro)
Багажные ярлыки (GiftsPro)Багажные ярлыки (GiftsPro)
Багажные ярлыки (GiftsPro)GiftsPro.Ru
 
Feliz día de las madres
Feliz día de las madresFeliz día de las madres
Feliz día de las madrestapias10
 
origen de la computadora
origen de la computadoraorigen de la computadora
origen de la computadorafrancisca07
 
mood board short film
mood board short filmmood board short film
mood board short filmtyrachuck12
 
053 ร่วมสมัย
053 ร่วมสมัย053 ร่วมสมัย
053 ร่วมสมัยthana bkk
 
ELF14 Cheryl Doig Moving Mindset Keynote presentation
ELF14 Cheryl Doig Moving Mindset Keynote presentationELF14 Cheryl Doig Moving Mindset Keynote presentation
ELF14 Cheryl Doig Moving Mindset Keynote presentationSmartNet
 

Viewers also liked (20)

Madres y blogs
Madres y blogsMadres y blogs
Madres y blogs
 
Bitacora
BitacoraBitacora
Bitacora
 
Trading Derivados19/04/2013
Trading Derivados19/04/2013Trading Derivados19/04/2013
Trading Derivados19/04/2013
 
Group presentation 2
Group presentation 2Group presentation 2
Group presentation 2
 
Idea del Dia19/04/2013
Idea del Dia19/04/2013Idea del Dia19/04/2013
Idea del Dia19/04/2013
 
Mooroolbark property sale_190413
Mooroolbark property sale_190413Mooroolbark property sale_190413
Mooroolbark property sale_190413
 
AA2 Autorretrato Pincel John Lopez
AA2 Autorretrato Pincel John LopezAA2 Autorretrato Pincel John Lopez
AA2 Autorretrato Pincel John Lopez
 
Uroc27 7klas
Uroc27 7klasUroc27 7klas
Uroc27 7klas
 
20130419133943357
2013041913394335720130419133943357
20130419133943357
 
Decreto afrocolombianidad.
Decreto afrocolombianidad.Decreto afrocolombianidad.
Decreto afrocolombianidad.
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo
 
Diapositivas proyecto
Diapositivas proyectoDiapositivas proyecto
Diapositivas proyecto
 
Actividad aplicaciones de integral
Actividad aplicaciones de integralActividad aplicaciones de integral
Actividad aplicaciones de integral
 
Багажные ярлыки (GiftsPro)
Багажные ярлыки (GiftsPro)Багажные ярлыки (GiftsPro)
Багажные ярлыки (GiftsPro)
 
Feliz día de las madres
Feliz día de las madresFeliz día de las madres
Feliz día de las madres
 
origen de la computadora
origen de la computadoraorigen de la computadora
origen de la computadora
 
mood board short film
mood board short filmmood board short film
mood board short film
 
S P - VB - LMS 477
S P - VB - LMS 477S P - VB - LMS 477
S P - VB - LMS 477
 
053 ร่วมสมัย
053 ร่วมสมัย053 ร่วมสมัย
053 ร่วมสมัย
 
ELF14 Cheryl Doig Moving Mindset Keynote presentation
ELF14 Cheryl Doig Moving Mindset Keynote presentationELF14 Cheryl Doig Moving Mindset Keynote presentation
ELF14 Cheryl Doig Moving Mindset Keynote presentation
 

Similar to Преемственность продуктов

Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Качество продукта через управление проектом
Качество продукта через управление проектомКачество продукта через управление проектом
Качество продукта через управление проектомОльга Павлова
 
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15Maxim Tsepkov
 
Вы и Заказчик: решаем проблемы, а не отрабатываем требования
Вы и Заказчик: решаем проблемы, а не отрабатываем требованияВы и Заказчик: решаем проблемы, а не отрабатываем требования
Вы и Заказчик: решаем проблемы, а не отрабатываем требованияSQALab
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовrit2010
 
Принципы Getting real (часть 1).Мегамозг
Принципы Getting real (часть 1).МегамозгПринципы Getting real (часть 1).Мегамозг
Принципы Getting real (часть 1).Мегамозгwisedarkness
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)Ontico
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D Prit2010
 
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ..."Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...Julia Lebedeva
 
Фасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийФасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийSvetlana Mukhina ICP, -ATF, -BVA, - ACC, PSM I, CSPO
 
Фасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийФасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийLuxoftAgilePractice
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряit-people
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияnomoretears
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRАлександр Алаев
 
Как найти нишу для SaaS продукта и протестировать ее малой кровью
Как найти нишу для SaaS продукта и протестировать ее малой кровьюКак найти нишу для SaaS продукта и протестировать ее малой кровью
Как найти нишу для SaaS продукта и протестировать ее малой кровьюInternational Marketing Group Ukraine
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковSQALab
 

Similar to Преемственность продуктов (20)

Это сложно
Это сложноЭто сложно
Это сложно
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Качество продукта через управление проектом
Качество продукта через управление проектомКачество продукта через управление проектом
Качество продукта через управление проектом
 
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15
You and Сustomer: Solve problems Tsepkov Myasnikov Uzhevko SQAdays-15
 
Вы и Заказчик: решаем проблемы, а не отрабатываем требования
Вы и Заказчик: решаем проблемы, а не отрабатываем требованияВы и Заказчик: решаем проблемы, а не отрабатываем требования
Вы и Заказчик: решаем проблемы, а не отрабатываем требования
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсовAndrey Petrov методология P D P, часть 1, цели вместо кейсов
Andrey Petrov методология P D P, часть 1, цели вместо кейсов
 
Принципы Getting real (часть 1).Мегамозг
Принципы Getting real (часть 1).МегамозгПринципы Getting real (часть 1).Мегамозг
Принципы Getting real (часть 1).Мегамозг
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
 
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
DevOps-трансформация Альфа-Банка / Антон Исанин (Альфа-Банк)
 
Andrey Petrov P D P
Andrey Petrov P D PAndrey Petrov P D P
Andrey Petrov P D P
 
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ..."Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...
"Без, платно: виды монетизации через Freemium в мобильной индустрии", Леонид ...
 
Фасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийФасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решений
 
Фасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решенийФасилитируем командное обсуждение и принятие решений
Фасилитируем командное обсуждение и принятие решений
 
Extrproj
 Extrproj Extrproj
Extrproj
 
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октябряорганизация мероприятий без упячки. герасимович. Itotvet 19 20 октября
организация мероприятий без упячки. герасимович. Itotvet 19 20 октября
 
Интернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятияИнтернет в помощь команде разработчиков культурно массового мероприятия
Интернет в помощь команде разработчиков культурно массового мероприятия
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseR
 
Как найти нишу для SaaS продукта и протестировать ее малой кровью
Как найти нишу для SaaS продукта и протестировать ее малой кровьюКак найти нишу для SaaS продукта и протестировать ее малой кровью
Как найти нишу для SaaS продукта и протестировать ее малой кровью
 
Практика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиковПрактика организации ИТ-конфереций и других мероприятий для разработчиков
Практика организации ИТ-конфереций и других мероприятий для разработчиков
 

Преемственность продуктов

  • 2. Степан Колесников @karakazyablek Я хочу рассказать про преемственность программных продуктов и поделиться своим опытом по смене одного поколения софта следующим.
  • 4. Впервые про преемственность я узнал незадолго до того того, как пошел в школу и слово "преемственность" воспринималось мной исключительно в контексте проблемы передачи власти в стране. Тогда, в августе, вот эти дядьки с картинки пугали всю страну с экранов телевизоров,
  • 5. а вот эти суровые мужчины пугали тех, кто пугал всю страну. В конечном счёте мы знаем чем всё кончилось. Я не знаю, можно ли было говорить тогда о преемственности власти в результате тех событий, но слово засело в моём сознании довольно крепко.
  • 6. "А как же с преемственностью программных продуктов" - скажете вы мне. Откуда я что- то знаю про неё? Минуточку терпения. Сейчас расскажу.
  • 7. Всё началось 4 года назад, когда я пришел в компанию 2ГИС разработчиком на единственный на тот момент внутренний продукт в компании. Продукт был довольно большим: сотни тысяч строк кода на плюсах и десятки тысяч строк на VBA. Тогда мне казалось, что количество времени и сил, которые разработчики разных поколений вложили в разработку этого продукта сопоставимо с ресурсами на постройку Саяно- Шушенской ГЭС
  • 8. ну или Беломорканала... Примерно в то же самое время у нас в компании начались работы по разработке новых систем, которые должны были прийти на смену разных модулей старой. Поэтому всё это время, все эти годы я находился в самом центре перемен и перехода от старой системы к новым.
  • 9. Я успел побывать на обеих сторонах барикады. Я участвовал и в строительстве нового мира с новыми программными продуктами
  • 10. и поддерживал старый рекационный продукт, чтобы он держался на плаву столько, сколько того потребует бизнес.
  • 11. За это время я успел посмотреть на разные эффекты и процессы, которые возникали у нас по ходу дела. Я видел как создавались и распадались команды разработки. Я видел, как команды и отдельные их участники демотивировались или наоборот вдохновлялись в какой-то момент и делали очень крутые штуки. Вот про это я и буду рассказывать дальше.
  • 12. Начнем с того, что я расскажу про контекст, в котором мы работали. Когда-то у нас был всего один внутренний продукт и он, казалось бы, вечен. Он вполне справлялся с нагрузкой, его любили рабочие, а он делал их жизнь легче.
  • 13. Но в какой-то момент стало понятно, что бизнес выдвигает нам всё новые и новые требования и начало появляться ощущение, что старый продукт уже не сможет с ними справиться на отлично. Мы стали думать о преемнике. Более мощном, современном и соответсвующем новым вызовам бизнеса.
  • 14. Вывод первый: смена продуктов должна быть своевременной. Здесь появляется первый вывод
  • 15. Начинайте думать о преемнике, пока ваш старый добарый продукт ещё не впал в коматоз
  • 16. Плохой пример: нововоронежская аэс. С момента открытия инженерский состав этой аэс был стабильным и практически не менялся. Инженеры были молоды, полны сил и энергии. Но в какой-то момент они все состарились. Разом. Сейчас у аэс большая проблема с тем, кто будет работать, когда все инженеры уйдут на пенсию.
  • 17. Но мы подумали о преемнике вовремя и начали думать, как нам разрабатывать новый продукт. У нас было 2 варианта. Первый из них - обратиться к системным интеграторам. К счастью, они запросили слишком много и мы решили делать всё своими руками.
  • 18. Мы довольно быстро собрали команду из нескольких программистов и аналитика. Но на первом этапе мы толком не знали, что мы делаем и что должно получиться. В итоге программисты довольно долго занимались различными сервисными задачами, настройкой окружения и так далее. Что, конечно же, не сильно-то приближало нас к заветной цели.
  • 19. Вывод второй: знай чего хочешь до того, как написана первая строчка кода Реальная работа началась только тогда, когда аналитик разобрался, что именно нужно делать и начал транслировать свой план на программистов.
  • 20. Человек на фото - Клаус Фукс. Один из самых эффективных разведчиков, который передавал сведения по ядерному проекту в СССР. Суть в том, что человек рисковал своей свободой и жизнью только лишь для того, чтобы поделиться знаниями. Как правило, разработчикам из команд нового и старого продукта ничем рисковать не нужно, чтобы пообщаться и задать друг другу какие-то вопросы. Но общение между новой и старой командами скорее редкость, чем правило.
  • 21. Хотя для того, чтобы узнать больше, нужно уметь очень немногое: правильно задавать вопросы.
  • 22. Правда, не очень понятно, какие именно вопросы разработчики новой системы могут задать программистам из старой. На самом деле это зависит от того, насколько должны быть похожи старая и новая системы. Стоит обязательно поговорить про: 1. Глоссарий. У 2-х команд возникнет гораздо меньше трудностей в общении и в интеграции, если разработчики из разных команд будут оперировать одними и теми же терминами 2. Часто изменяемые части системы.
  • 23. Разработчики старой системы могут дать много интересной пищи для размышления о том, где новая система может остаться достаточно жесткой и неизменной
  • 24. а где нужно добавить максимум гибкости, потому что эта часть системы регулярно менялась и скорее всего будет меняться и дальше.
  • 26. Ещё одна проблема совместной параллельной разработки 2-х продуктов заключается в том, что команда нового продукта всегда находится в позиции догоняющего. Догонять вообще сложно, а ещё сложнее когда от тебя убегают, а перед тобой всё время вырастают какие-то барьеры.
  • 27. Игра в догоняжки между новым и старым продуктом - очень плохо. Нужно стремиться избегать этого.
  • 28. Хорошей же метафорой в разработке 2-х продуктов в параллели служит передача этафетной палочки. В этом случае, команды подстраиваются друг под друга для того, чтобы передача эстафеты всё же произошла.
  • 29. Вывод четвёртый: не играйте в догоняжки - передавайте эстафету
  • 30. Самым плохим исходом, к которому может привести игра в догоняжки является холодная война между командами. Когда для команды новичков типичным является утверждение, что старому продукту (да и команде!) место на свалке истории. А команда ветеранов троллит новую команду тем, что у них после года-полутора-двух разработки так и не произошло ни одного успешного внедрения.
  • 31. Одним из симптомов нездоровой ситуации в отношениях между командами может служить желание меряться всем чем можно: "а у нас клиент толще!"
  • 32. А у нас юзер-стори длиннее!
  • 33. Но вот, положим, новый продукт дошел до стадии внедрения. Есть несколько вопросов, которые нужно задать себе перед внедрением, чтобы ещё раз убедиться, что мы ничего не забыли. Вопрос первый - миграция данных. Обычно это то, о чем думают в самый последний момент и на что обращают минимум внимания: часто нет ни требований, ни карты миграции, регламентов и так далее. Поэтому это очень багоопасный процесс. Совет: думайте о миграции сразу же, как только начали разрабатывать новый продукт. Не работайте с демо-данными в процессе разработке, лучше мигрируйте реальные и работайте с ними.
  • 34. Второй вопрос, тесно связанный с миграцией - это очистка данных. Обязательно спросите себя, может ли новая система работать с данными старой? Или нужна какая-то процедура очистки. У нас был случай, когда процедура очисти данных оказалась настолько сложной, что пришлось разработать отдельную систему для этих целей.
  • 36. Подумайте об интеграции старой и новой систем. Скорее всего она вам понадобится.
  • 37. Вывод шестой: учите матчасть. В данном случае - шаблоны интеграции
  • 38. Одной из проблем при внедрении новой системы может стать требование одновременной работы части пользователей в разных системах. т.е. может оказаться, что в разных базах у нас лежат частично пересекающиеся данные, которые со временем разъезжаются и становится не ясно, где взять правильные данные и кому, собственно, верить.
  • 39. Я знаю про одну компанию, в которой параллельно были внедрены сразу 3 системы с аналогичным функционалом. Вопрос о правильности данных решался на ежемесячном собрании представителей всех 3-х продуктов и бизнеса.
  • 40. Говорят, что часто в этих спорах у кого данные правильнее выигрывал тот, у кого харизма выше.
  • 41. Вывод седьмой: для всех данных должна быть определена единственная мастер-система
  • 42. И ещё раз вернемся к вопросу интеграции. В интеграции часто бывает довольно много проблем, связанных с недопониманием разными командами всей задачи в целом.
  • 43. Это недопонимание - прямое следствие цехового принципа разработки, когда 2 команды считают, что раз они договорились о программных интерфейсах и описали какие-то схемы данных, то дело в шляпе, можно просто запилить свой кусочек и всё будет нормально. На самом деле это не так. Цеховой принцип разработки работает плохо. Всегда находится что-то, из-за чего не получается запустить интеграцию с первого раза.
  • 44. Поэтому, для успешной интеграции нужно более тесное общение между командами. В идеале, разработчики обеих команд должны знать всё интеграционное решение, а не только свою часть.
  • 45. Добиться этого не легко, но возможно. Например, можно выделить на пару спринтов по 1-2 человека из каждой команд в одну команду интеграции. Желательно ещё и посадить их рядом, чтобы они могли свободно общаться между собой.
  • 47. Вопросы? Степан Колесников, @karakazyablek karakazyablek@gmail.com На самом деле, тема гораздо шире и я успел обозначить только некоторые особенности перехода от старой системы к новой. Какой вывод я сделал для себя? Нужно не бояться изменений и думать не только о новом и старом продукте, но и о всей системе в целом.