Я решил написать свое мнение на тему революций. Это не совсем политическая статья, поэтому примеры будут из области IT. Я надеюсь, параллели будут достаточно прозрачными. За время тренерской и девелоперской карьеры накопилось много опыта на эту тему, поэтому хочется его “выплеснуть” в аудиторию. 🙂
Если говорить абстрактно, то революция практически всегда хуже эволюции. Революция по определению меняет что-то в корне, несет потрясение для области реализации революционного плана. А любые потрясения не проходят для всех одинаково хорошо и чаще всего чем-то приходится жертвовать. И даже если результатом революции есть что-то позитивное для одной области, то чаще всего есть что-то негативное для другой области. В революции никто не застрахован от ошибок, все происходит достаточно радикально и времени на принятие верных решений не всегда хватает. Эволюция же в этом плане куда лучше, но существенно медленнее. При этом, для успешной эволюции нужно много сил и воли не отступить от намеченного плана.
При чем тут IT, спросите вы. Практически на каждом тренинге по инженерным практикам или QA мне задают один и тот же вопрос: “понятно как это сделать на новом проекте, но у нас легаси с кучей бед, как это там быстро внедрить?”. Быстро? Вы годы, а иногда десятки лет, делали это “легаси”, а теперь хотите быстро все исправить? Я всем рассказываю путь, по которому, на мой взгляд, им нужно идти:
- Сначала проанализируйте текущий процесс с целью определить корневые проблемы, приводящие к видимым неприятностям на проекте.
- Определитесь с ключевыми метриками, которые будут демонстрировать ваш успех на пути внедрения изменений.
- Разработайте стратегию предотвращения этих проблем и постепенного внедрения выбранных практик в команде.
- Примите решение для новой функциональности следовать новым практикам неукоснительно, даже в ущерб скорости разработки.
- Отслеживайте возникающие проблемы и корректируйте стратегию внедрения.
- Выделяйте время для постепенного улучшения существующего “легаси”. Внедрите практику микроулучшений, которые делает каждый член команды по мере работы с “легаси”.
- Регулярно собирайтесь и обсуждайте результаты, все правила и наработки документируйте и контролируйте следование им.
- Координируйте ваши усилия с бизнесом, демонстрируйте им ваши успехи и декларируйте сложности. Стройте открытые отношения и прозрачный процесс.
Это, по сути, эволюционный путь от “легаси” до здорового приятного проекта. Этот путь может занять месяцы и даже годы, но он никому не принесет вреда и может очень гибко подстраиваться под точечные интересы бизнеса в разное время. Этот путь отнюдь не простой, потому что требует много работы со стороны команды, больших усилий для достижения результата.
Многие, услышав такой ответ, сразу расстраиваются. “Это очень долго”, “заказчик не одобрит”, “у нас нет на это времени”, “мы уже уволимся к тому времени” – эти и другие отговорки звучат или появляются в головах собеседников. Они хотят “раз и готово!”. Чтобы, как по мановению волшебной палочки, ужасное “легаси” вдруг превратилось в прекрасного принца. Им подавай революцию. Ведь теперь они вооружены новыми знаниями и идеалами, они увидели свои предыдущие ошибки, не хватает только времени на их реализацию. Им видятся совсем другие решения:
- Надо завести команду автоматизаторов и они нам все быстренько автоматизируют, а мы пока продолжим работать как работали.
- Сделаем задачу по рефакторингу ядра системы на 3 месяца. А уж как только отрефакторим, заживем припеваючи.
- Надо срочно перейти на последние версии фреймворков и других технологий, в этом наша основная беда.
- С завтрашнего дня все начинаем в обязательном порядке писать юнит-тесты, кто не будет писать – уволим.
Это революция! Такие решения принимаются на эмоциях, под “давлением” груза старых и надоевших проблем. Но, как и у любой революции, даже если удастся реализовать изначальный план, то он “аукнется” в другой области: существенно замедлится разработка, испортятся отношения с заказчиком, все разочаруются в автоматизации, проект развалится вообще. У подобной революции чаще всего есть две существенные проблемы:
- Отсутствие лидера, который бы мог вести за собой всех остальных, не взирая на проблемы. Того, кто бы вдохновлял на действия после принятия решения и революционного плана. Того, кто бы жертвовал своими интересами и помогал другим на этом непростом пути. Того, кто бы отстаивал интересы и идеалы революции перед всеми внешними силами при любых обстоятельствах.
- Отсутствие понимания, что без существенного перестроения подхода к разработке результаты революции будут лишь краткосрочными. Если не изменить процесс, не поменять правила и практики, то через год проект снова превратится в “легаси”, а результаты революции будут утеряны и забыты. Уйдет лидер, поменяется часть команды и все вернется на старые рельсы. Без реформ ничего не меняется.
Если у революции будет уверенный лидер, который при поддержке всей команды, пользуясь краткосрочными “победами”, будет реформировать процесс разработки целиком и внедрять новые подходы для долгосрочных перспектив, то такая революция имеет шанс на успех. Но это ооочень редкий случай, который больше теоретический нежели практический.
Статья получилась длинная, поэтому пора бы подвести итоги. Желаю вам хорошо продуманной успешной эволюции и поменьше непродуманных провальных революций!