Когда шёл работать на свою первую программистскую работу, почему-то не интересовался тем, как устроен день программиста изнутри, а стоило бы. Хотя бы для того, чтобы понимать, попал я в нормальную контору с поставленным процессом или в обычную шарашку без перспектив роста.
По существу, процесс работы над каким-либо проектом сам по себе напоминает программу, что довольно предсказуемо в нашем случае. Программисты склонны все превращать в подобие приложений, которые они пишут.
Начало дня. Ничего не деланье. (Раз в неделю, может два)
Когда вы приходите на работу в понедельник и у вас нет долгов за предыдущую неделю, то вы можете спокойно заняться своими делами. Конечно, руководство это не поприветствует, поэтому я обычно трачу это время на свои личные проекты и все выглядит так, как будто я исправно занимаюсь рабочими обязанностями, а в это время на самом деле злостно саморазвиваюсь. Если же остались какие-то долги, то вы скорее всего рвёте A-NUS в последние минуты, чтобы все прошло гладко на демонстрации.
Демонстрация (раз в неделю)
Тут все понятно, вы показываете, что было сделано за прошлую неделю. Не всегда сделанные задачи можно показать, так как часть алгоритмов запустить без реальной нагрузки попросту не получится или это слишком трудозатратно. Тогда вы просто объясняете, почему показывать ничего не будете. Хотя все всё понимают, всё же чувствуешь себя при этом неприятно, ибо ты мог делать что-то сложное всю неделю, а в итоге похвалят того, кто прикрутил красную кнопочку в правом нижнем углу экрана, так как это можно легко и эффектно показать.
Планирование (раз в неделю обычно в один день с демонстрацией)
Где-то после обеда начинается планирование - это такая встреча, где вся команда обсуждает, какие задачи она успеет выполнить за будущую неделю. Каждая задача оценивается по сложности и в конце планирования у вас есть доска задач, из которых, вы можете брать себе любую на свой вкус. В целом это очень круто и напоминает процесс выполнения квестов в какой-нибудь RPG.
Честно говоря ненавижу планирования, так как чем больше людей вовлечено в собрание, тем оно бесполезнее. А в планирование вовлечено очень много (МНОГО) людей. К сожалению без него никуда, ибо без цели команде очень тяжело ощущать проект и свой вклад в него, что в свою очередь влияет на мотивацию и качество работы.
Стенд-ап, он же митинг(каждый день, когда нет планирования)
Это просто ежедневная встреча, на которой вы рассказываете, что сделали вчера и какие задачи будете делать сегодня. Также можете задать вопросы команде, если они у вас имеются и требуется реально помощь всех.
Эти собрания очень подстёгивают не отлынивать, так как сказать, что ничего не сделал, совестно. Хотя со временем и научаешься любую мелочь преподнести, как вселенский подвиг (в стиле той фразы на картинке в заголовке), все равно нужно быть достаточно отмороженным, чтобы несколько собраний подряд не показывать результата и говорить об этом без тени смущения. Такие отмороженные, кстати, бывают. Они сильно демотивируют команду и вообще фу такими быть.
Рабочее время (Каждый день)
Ну и пожалуй оставшееся время посвящается непосредственно разработке. В дни планирования остаётся всего часа четыре. В остальные дни 6 часов. Это, если не засиживаться допоздна. Первый год работы, я постоянно сидел и по 10 и по 12 часов, ибо было тяжело разрешать некоторые проблемы без опыта.
Про это время особо ничего не расскажешь. Каждый день оно проходит по-разному. Если попадётся неразрешимая задачка, тогда работа напоминает осаду крепости, где ты все ходишь вокруг да около в поисках каната или какого-то подкопа и постепенно впадаешь в уныние и апатию. В такие дни можно не написать ни одной строчки кода вообще. Если задача лёгкая, то это обычно жёсткий раш и неотрывное программирование, постоянно перезапускаешь приложение, дабы там протестировать, там продумать получше, в другом месте исправить старые косяки. Это обычно весело и даже если не завершается конкретным успехом, приносит массу удовольствия. В основном за этим люди и идут в программирование. Такие дни и задачи обычно надолго заседают в памяти и вообще мотивируют дальше заниматься всем этим делом.
Заключение. Немного о том, как все это выглядит в отстойных конторах
Вот в общем-то говоря и все. Так устроен день работы программиста изнутри в нормальной конторе. В отстойных конторах обычно нет планирования, отсутствуют ежедневные встречи, или же их ценность стремится к нулю. Задачи чаще всего первого типа, или же настолько легкие, что их решение не приносит никакого удовольствия. Фаза ничего не деланья в таких местах может растягиваться не то что на часы или дни, а на месяцы. Конечно, есть и другие признаки, но вот эти бросаются в глаза прямо с ходу.
На этом все, если заинтересовал или вызвал возмущение, напишите мне в комментариях, что не так или что хотели бы ещё узнать, о работе программиста.
В следующий раз расскажу немного о процессе самой разработки в целом, и о том, как так получается, что куча людей делает какие-то согласованные изменения в миллионе строчек кода, не разрушая при этом то, что уже работает.