О религии в работе программиста 19.10.2016

Итак, вы — программист и гордитесь этим, а именно тем, что вы знаете пару тройку языков и даже можете бегло общаться с их помощью с другими программистами. Вы знаете много модных библиотек, фреймворков и других крутых штук. Считаете себя экспертом в большинстве смежных областей, что позволяет с высока смотреть на ваших коллег из других отделов, не программистов, «нормальных людей, начинающих отсчет не с нуля, а единицы». Вы считаете, что результат вашей работы — код, совершенный с точки зрения какого-нибудь новомодного аспекта.

Не буду оригинален, если в этом месте укажу на очевидное — последнее утверждение неверно. Результатом работы программиста является не код, а то, что и как этот код делает. Каким бы продуманным ни был ваш код, если он делает не то, чего от него ожидают, писать его не стоило. Итак, в конечном счете, результатом работы программиста является продукт.

Кто же и чего ожидает от вашего кода? Если посмотреть на продукт вашего труда с этой точки зрения, то нужно оправдать ожидания заказчика, бизнеса, как ни странно, конечного пользователя, ну и конечно же ваших коллег по цеху.

Удивительно, но интересы этих четырех групп не всегда совпадают и нужно искать компромисс.

Чем отличается заказчик от бизнеса? Что такое бизнес? Под бизнесом я понимаю вашу компанию в целом, с ее целями и продуктом. Противоречить ожиданиям бизнеса сложно, т.к. именно бизнес в конечном счете делает деньги на вашу зарплату. Очевидно, ваша работа должна приносить бизнесу деньги.

Заказчиком является тот, кто непосредственно ставит задачу на разработку той или иной фичи. Заказчики — опасные люди, т.к., не смотря на то, что сами являются частью бизнеса, иногда могут преследовать свои собственные цели, не совпадающие ни с целями бизнеса, ни с потребностями пользователя. Здесь возникает вопрос о целесообразности задачи. С одной стороны выполнять то, что кажется очевидно бесполезным, не хочется, с другой — не стоит злоупотреблять собственной субъективной точкой зрения, ведь тот, кто поставил задачу, также обладает знанием и опытом по своей предметной теме, зачастую превышающие ваши собственные..

С пользователем все проще, пользователь — это тот, кто обращается в вашу службу поддержки. В итоге, ваша задача, да как и любого другого сотрудника вашей компании, сделать довольным пользователя настолько, насколько того требует бизнес.

Чем ожидания бизнеса, заказчика и пользователя могут противоречить ожиданиям ваших коллег? Решением, необходимым для получения наилучшего результата с точки зрения первых трех групп. Все мы любим красивые универсальные решения, однако, универсальное решение в отдельно взятом случае чаще всего дает посредственный результат — результат выше посредственного потребует отклонения от стандартных подходов и увеличения энтропии в коде проекта, что и может послужить поводом для недовольства у ваших товарищей по команде.

Итак, получается, что для того, чтобы оправдать ожидания всех участников процесса, необходимо убедиться в целесообразности задачи, учесть интересы клиента и решить ее как можно проще.

Кто то, наверное, скажет — главное выполнить задачу, разбираться в ее целесообразности не мое дело. Если вам нравится просто писать какой то код, значит, вы — фанатик своего дела, продолжайте в том же духе. Мне же кажется, что быть безразличным к результату своего труда — странно. Я хочу видеть осязаемый результат своего — просто просиживать штаны за зарплату можно в любом другом месте. И для меня это значит, что я буду искать решение проблемы только если она действительно есть и постараюсь, чтобы оно стало оптимальным для всех заинтересованных сторон, в том числе и меня.

Эффективнее для бизнеса, удобнее для клиента, проще для меня.

by 19.10.2016