Сколько строк кода ты пишешь?
Denis KuznetsovСледующая тема, которую я поднимаю всегда для вновь прибывших программистов - это то, как надо работать над задачей.
И перед тем, как начать обсуждать эту тему, я задаю вопрос:
Как ты считаешь, сколько должен писать строк кода программист в день?
Вообще, когда я в ударе, я могу написать 200 строк, может, 500 строк кода. Иногда, если подключаю помощника, может быть и 1000 строк в день (О_О).
Но сколько строк кода в день должен писать программист для выполнения задачи?
Прежде чем ответить на этот вопрос, давайте сначала разберем то, как происходит правильный подход по работе над задачей (абсолютно любой задачей).
Сначала мы изучаем задачу.
У задачи есть всегда идея. И эту идею нужно изучить, рассмотреть со всех сторон и только потом реализовывать. На это требуется время.
Изучение происходит максимально подробно. Мы докапываемся до каждого слова, изучаем каждый поворот логики. Стараемся найти все двусмысленности и непонятки. Выписываем все вопросы, если непонятно, какой результат должен быть.
Потом мы думаем над тем, как эту задачу реализовать в проекте.
Мы изучаем место, куда мы будем втыкать код. Мы изучаем теперь задачу с точки зрения архитектуры - каким будет новый код. Мы занимаемся планированием, расписываем схемы, рисуем графики, и так далее. Мы пишем псевдокод и проверяем его логику на выдержку различных ситуаций. И так до тех пор, пока вся система не станет понятной и рабочей.
Если задача тяжелая и большая, то (и это сейчас немного вас выбьет из калии):
Мы не просто собираем архитектуру - мы пишем большую документацию по тому, как это все должно работать до того, как мы начнем писать код. Может быть, во время создания этой доки и будет проскальзывать пара тройка строчек кода, но все еще это не тот код, который остается в проекте, а тот код, который черновой и останется на досках и в документации.
И только теперь мы пишем код.
Если вы сделали все правильно, все расписали от и до, то время на написание кода тратится очень мало. Это примерно до 30% всего времени работы над задачей. То есть, сейчас происходит тот самый этап, когда программист начинает писать миллион строк в секунду, потому что у него уже сложилось точное понимание того, как это должно работать.
Если посмотреть на таймлайн работы над задачей, то это выглядит примерно так:

Хочу отметить, что это разделение относится ко всему - к маленьким задачкам на 5 минут, и к задачам на 2-3 месяца. Может так случиться, что вы три месяца будете на досках Miro описывать систему, и у вас вообще ни одной строчки кода не будет. А потом выкатывать огромную систему на 20к строк за месяц.
Ответ на вопрос:
Вот теперь можно ответить на вопрос о том, сколько же строк кода должен писать программист в день.
И на этот вопрос есть ответ, но с небольшим но - в среднем, 10 строк кода в день. И большая часть этого кода пишется за эти 30% работы над задачей. Остальное время программист думает, не мешайте ему =)
И ответ на второй вопрос:
Откуда такая цифра?
Это значение показали независимые исследования в ряде крупных IT компаний, где качество работы над задачей стояло во главе угла. Более подробно об этом можно почитать в книге "Совершенный код" Стива Макконнелл. А об этой книге я напишу отдельный пост, так как это следующая тема, которую я рассказываю вновь прибывшим =)
Итого:
Если вы работаете в компании, где ПМы, Лиды, ТехДиректора от вас требуют прямо сейчас код и чтобы вы каждый день заливали коммиты - бегите оттуда. Особенно, если приходят и говорят "чо там делать, тык-пык, и работает". Там вообще нет понимания того, как происходит работа над задачами. Скорее всего там нет вообще никакого тайм-менеджмента и управления проектом.