Цели против средств: когда за деревьями не видно леса
Что важнее для программиста — шашечки или ехать? Результат любой ценой или строгое следование процессу? Разбираемся с разработчиком Шалитой Сурангой.
Кадр: сериал «Остановись и гори»
Pen Magnet
(Shalitha Suranga)
об авторе
Инженер-программист в 99x. Член Apache PMC. Open Source contributor (автор Neutralinojs). Технический писатель.
Работая над программным обеспечением, мы пользуемся своими узкоспециальными познаниями в сфере информатики — но решаем при этом реальные бизнес-проблемы наших заказчиков.
У этого процесса есть отмеренный ему временной срок, который в нашей среде принято обозначать как SDLC (system development life cycle, жизненный цикл разработки ПО). Он помогает всем участникам проекта планировать развитие их продуктов.
Этапы жизненного цикла можно объединить в различные структуры, которые мы называем моделями разработки. Например, широко известны такие модели, как гибкая (agile), каскадная (waterfall), поэтапная (incremental) и спиральная (spiral) разработка. Agile сейчас применяется повсеместно, потому что позволяет командам эффективнее управлять своей работой, а также более полно удовлетворять потребности заказчиков.
Чтобы лучше контролировать процесс, неплохо разбить каждую из целей, стоящих перед разработчиками, на более мелкие задачи.
Как правило, наши цели связаны с релизами новых версий приложений или сервисов, которые предлагают пользователям набор дополнительных возможностей. А значит, выполнение любой из подзадач позволяет приблизиться к достижению главной цели и при их выполнении можно использовать две разные стратегии мышления: ту, что больше ориентирована на достижение цели, или же ту, что опирается на процесс.
Процессно-ориентированная стратегия
Человек, ориентированный на процесс, обычно концентрируется на тщательном выполнении мелких операций. Например, программисты с таким типом мышления склонны полностью фокусироваться на порученных им локальных задачах и не задумываются о том, насколько это приближает команду к конечной цели. Это типичные путники, готовые под лупой рассматривать каждое деревце и каждую травинку, но не разглядят лес целиком.
Отсюда все их достоинства и недостатки. Чаще всего это ярко выраженные перфекционисты, которые будут раз за разом выверять каждую мелочь и подробно прописывать каждый свой шаг, строго соблюдая установленные стандарты и процедуры. При этом они вряд ли когда-нибудь попробуют что-то новое — скажем, то, что поможет заметно сократить время выполнения их работы.
Предположим, вы разрабатываете компьютерные игры. Скорее всего, первые версии будут далеко не идеальными. Тут вам как раз понадобятся «процессники» с их терпением и нацеленностью на выпуск патча за патчем, способностью кропотливо вносить миллионы изменений и мелких улучшений — и так до тех пор, пока игра, наконец, не будет доведена до ума.
Так, сейчас на YouTube можно найти массу роликов, где геймеры сравнивают GTA 5 и забагованный Cyberpunk 2077 — естественно, не в пользу последнего. Предполагаю, что их мнение изменится после того, как команда Cyberpunk всерьёз возьмётся за исправление мелких недостатков и выпустит хотя бы несколько патчей.
Стратегия целеполагания
У человека, ориентированного на достижение цели, обычно довольно быстро складывается общее комплексное представление о том, что нужно сделать. Скажем, сторонники такой стратегии мышления в программировании больше думают о том, как быстрее завершить свои этапы работы, а не о том, насколько строго результат их труда будет соответствовать всем стандартам.
Такой подход позволяет пробовать что-то новое, выходить за рамки типовых процессов и сокращать путь к цели. Специалисты этого типа никогда не перенесут сроки выполнения работ, но могут cделать больше ошибок или упустить из виду больше деталей по сравнению с программистами, ориентированными на процесс. Следовательно, в противоположность первым, эти товарищи «видят лес, но не видят деревьев».
При этом у них есть важное достоинство: столкнувшись со специфической задачей, для выполнения которой нет всей необходимой информации, они, скорее всего, не спасуют и с лёгкостью справятся с ней — такие люди чаще всего предельно гибки в работе и открыты для любых новых концепций.
Гибридный подход
Попробуем ответить на философский вопрос: какая из стратегий более эффективна для нас, разработчиков программного обеспечения? Ведь у каждой, как мы уже успели разобраться, есть свои плюсы и минусы. Какая из чаш перевесит?
Мне кажется, наша работа — не тот случай, когда нужно выбирать что-то одно: оптимально использовать оба подхода в зависимости от ситуации и получать удовольствие. Допустим, стратегия, ориентированная на процесс, будет приносить радость в конце каждого рабочего дня, когда вы с чувством выполненного долга начнёте зачёркивать в ежедневнике строчку за строчкой, помечая выполненные мелкие задачи.
Зато, если вы будете ориентироваться сразу на цель, у вас под рукой всегда будет чёткий план движения к ней и комплексное видение того, что уже достигнуто и сколько ещё предстоит сделать.
В общем, не стоит увязать в рутине, когда можно подняться над ситуацией и посмотреть на неё с высоты птичьего полёта. Но и полностью игнорировать так называемые мелочи тоже нельзя — без тщательного соблюдения стандартных процессов нужного качества работы тоже не достичь.