пятница, 25 марта 2016 г.

Запись в дневнике после удаления зуба мудрости

Сегодня я не пошел на работу. Моя челюсть болит и кровоточит, страдая по покинувшему её зубу мудрости. Наверное из-за этих неприятных ощущений я в настроении побухтеть о несовершенстве бытия.


Как и все разработчики, однажды я был очарован передовыми идеями объектно-ориентированного подхода, паттернами "Банды четырёх", компонентной объектной моделью и мантрами "все есть объект". В институте нас учили, что ООП - это Единственный Правильный Путь Программирования, иные парадигмы отметались как устаревшие и недостаточно продвинутые. Объектная истерия тогда изрядно захлестнула индустрию. Помню, как одно время сильно пиарили ООБД, которые должны были похоронить РСУБД как класс, но почему-то не взлетели. Я был очарован, но одновременно и подавлен: у меня никак не получалось достичь гармонии. Мои системы классов были запутаны, я тратил часы и дни пытаясь придумать идеальную иерархию, а потом тратил вдесятеро больше времени, борясь с полученными монстром. От этого я натурально впадал в депрессию и не хотел возвращаться к своим программам.

Первой вехой на пути к освобождению ума стало открытие, что в процедурном стиле можно написать очень хороший код, который будет понятен, расширяем и весьма сопровождабелен. Это заставило меня пересмотреть свои взгляды. Оказалось, что качество кода и пути его достижения не зависят от выбранной парадигмы. Они фундаментальны и приходят с опытом. Если ты делаешь BDUF при отсутствии исчерпывающих вводных, то ты дурак вне зависимости от того, какое у тебя любимое ключевое слово - "class" или "procedure". Или даже "predicate". Плохо ли ООП? Ничуть! Проблема не в парадигме как таковой, а в людях, которые уверовали в её чудодейственную силу решить все наши проблемы. И лично во мне, поскольку я тоже уверовал и тратил время на достижение "объектной чистоты" вместо того, что бы обучаться фундаментальным навыкам, критичным для своего дела.


Немного времени спустя нас охватила другая волна экзальтации - гибкая методология. Когда до нас дошла благая весь об Agile, в душе моей появились смутные сомнения. Выглядели и преподносились эти идеи очень привлекательно. В то же время, не отпускало ощущение, что нечто похожее я где-то уже проходил. И действительно, в каком-то смысле история повторилась. Я был участником нескольких внедрений Agile, которые не привели по большому счету ни к чему (хотя, местами было прикольно). Все это сильно напоминало мои метания в ООП, но на другом уровне. Общаясь с коллегами, я обнаружил, что не я один это замечаю. У некоторых моих знакомых на Agile выработалась такая идиосинкразическая реакция, что собаки Павлова позавидовали бы. И снова в глаза бросалась разница между захватывающими дух перспективами, которые нам рисовали апологеты новых методов, и нашей серой повседневности. Так может быть и сейчас мы не под тем фонарём ищем?

В одной компании, где я работал, были три человека: директор, архитектор и продуктолог. Они постоянно друг с другом ругались. Я бы сказал сильное грубее, но могут и дамы прочитать. Любой из этой троицы в одиночку мог сорвать совещание с его повестки и отправить в космос. Когда собиралось двое, то остальные участники могли просто уходить незамеченными. Когда их было трое, то над Москвой собирались черные тучи, протяжно выла сирена. Там пытались внедрять и скрам, и канбан. Блуждающий ветер долго играл стикерами на заброшенных досках задач.

Управление - это наука о людях и окружающем мире. Умение разговаривать и договариваться, давать и принимать обратную связь, выстраивать рабочие отношения, планировать и координировать совместные действия, учиться и обучать, доверять и проверять, надеяться на лучшее, рассчитывая на худшее, соизмерять свои амбиции со своими силами, давать и держать слово, планировать свое личное время, искать решения проблем, и т.д. Все это нужно для успешной работы, как бы ни называлась книжка, по которой вы строите свою организацию. Это фундамент на который опирается любой метод. Нет фундамента - пиши пропало. Провалится и Scrum, и PMBOK. Чтобы заниматься строевой подготовкой, надо сначала научиться ходить.

Беда в том, что про этот фундамент как-то... забывают, что ли. Открываешь первые десять ссылок в гугле по слову "Scrum", там все одно и то же: роли, спринты, бэклог, планирование-дейлимитинг-ретроспектива. Вроде и написано в манифесте, что "люди и взаимодействие важнее процессов и инструментов", но почему-то упор делают не на том, как научить людей друг с другом разговаривать, а все как-то о процессах и инструментах.

Плох ли Agile? Ничуть! Это хороший и полезный инструмент для ряда задач, но он не заменяет фундаментальных навыков, необходимых для работы. Наоборот, он весьма требователен к их наличию.


Этот опыт изменил мой подход к работе: от развития "сверху вниз" я стал переходить к развитию "снизу вверх". Это означает, что я не занимаюсь внедрением готового процесса ("с понедельника живём по скраму"), а занимаюсь систематическим поиском и решением конкретных проблем, а так же развиваю в себе и своих коллегах базовые навыки, составляющие тот самый фундамент. Это не так гламурно, как размахивать флагом с новым модным названием. Это долгая и кропотливая работа, но эти вложения окупаются. Agile, Scrum, PBMOK, Теория ограничений Голдратта и прочие полезные вещи лежат у меня в загашнике и применяются по мере необходимости, когда я считаю их подходящими к ситуации.

За сим свои бухтения прекращаю.