Недавнее исследование на тему того, как разработчики тратят свое рабочее время, показало, что программисты проводят большую часть времени, НЕ занимаясь написанием кода. Компания Eric Cloud опросила 443 разработчика ПО и выяснила, что в среднем они расходуют менее половины рабочего времени на «разработку и кодирование». Большая же часть времени расходуется на такие вещи, как брейнcторминг, административные задачи, управление окружением и тестирование.
Если для вас это выглядит странно, то значит вы никогда не работали программистом. Даже для не-разработчиков эта новость не должна стать потрясением, т. к. много ли профессионалов в той или иной области тратят всё своё время на какой-то один вид деятельности? Другие аналогичные исследования, показывают, что:
• Инженеры-конструкторы тратят лишь 60% времени на технические задачи.
• Свадебные фотографы только 40% времени заняты съемкой или редактированием фотографий.
• Учителя старших классов в Дании лишь 20% рабочего времени уделяют обучению школьников.
Однако результаты исследования мне кажутся несколько обманчивыми. Хотя есть немало дней, где на разработку уходит менее половины рабочего времени, но также предостаточно дней или недель, где большая часть времени уходит на медитации над Perl, PL/SQL или Shell-скриптами. Единственная вещь, которую можно с уверенностью сказать о работе программиста: деятельность существенно меняется ото дня ко дню. Как правило, на что тратится время, зависит от того, на каком этапе разработки находится то, над чем он сейчас работает.
На ранних этапах разработки, например, системы управления контентом, требуется совсем немного кодирования. Большая часть времени будет уходить на участие в заседаниях, сбор и анализ требований, поиск инструментов и решений, создание функциональных спецификаций, планирование и т. д. Когда дело доходит до собственно разработки, написание программного кода может занимать 90 или даже 100% рабочего времени. Ближе к запуску продукта рабочее время будет равномерно распределяться между кодированием (завершение функциональности, тестирование, исправление ошибок), написанием документации, обучением конечных пользователей и т. д. После запуска приложения, но перед началом следующего крупного проекта, время в основном расходуется на поддержку, но также его можно легко потратить на не связанные с написанием кода вещи вроде чтения и изучения новых возможностей языков и платформ, посещения тренингов и конференций.
Поэтому, нет: то, что вы программист, не означает, что вы целыми днями пишете код, хотя и есть дни, занятые лишь этим. Это работа с большим разнообразием ежедневных задач, многие из которых не требуют нахождения за экраном компьютера. Программисты, которые работают в ином окружении (например, практикуют парное программирование), могут иметь в связи с этим иной опыт, но основная идея в том, что нет понятия «среднего» рабочего дня или «недели» для разработчика ПО.
Хотя всё-таки есть одна важная задача, которая становится частью каждого рабочего дня, потому как является критичной для способности эффективно делать свою работу: получение и потребление кофе. Как жаль, что сотрудники Electric Cloud не выделили это в отдельный пункт, проводя опрос разработчиков. Может быть, в другой раз.