Разработчики, вы больше думаете, чем пишете, или наоборот?
Я джуниор, но замечаю за собой, что я больше думаю, чем пишу. Возможно в силу неопытности.
Думаю над названиями переменных, классов и методов, так чтобы, в следующий раз при возврате к проекту хотя бы самому разобраться, что тут к чему, я уж не говорю о других.
Думаю "А может мне создать еще один метод, или оставить в этом, или лучше унаследовать класс? Или не надо?"
Ну и так далее.
Подскажите, кто работает разработчиком уже 5 лет и более, особенно в командах, у вас также происходит?
Условно говоря из 8-ми часового рабочего дня, сколько часов ваши руки находятся на клавиатуре, набивая символы?
Где-то читал, что в Google, у одного разработчика в продакшн за несколько месяцев могут выпустить лишь пару десятков строчек кода. Не знаю насколько это правда. И что они делают тогда полный рабочий день...
Возможно я конечно очень медленный и ленивый.
К слову сказать, много лет занимался написанием электронной музыки, и несмотря на то, что писал по коммерческим меркам рынка довольно хорошо, всё равно много думал над тем "оставить эту партию здесь или лучше убрать? или лучше другой тембр в синтезаторе подобрать? или всё таки норм?", и проект доводил до финала довольно долго.
Работа бывает разной. Опыт у всех тоже разный.
Если какие-то типовые вещи, то они пишутся практически без участия мозга, под музычку или даже фильмец. А если процесс творческий, то тут и музыка меняется на классическую, и задача обдумывается сначала, иногда продолжительное время.
В литературе фигурирует страшненькое число 13% - столько в среднем кодит программист в США от своего рабочего времени.
Из своего опыта могу сказать, что происходят два разно направленных процесса с накоплением опыта:
1. Чем дольше работаешь, тем вероятнее, что новая задача будет для тебя типовой и ты сядешь делать её сразу, не тратя время на раздумия.
2. Чем больше опыта, тем больше осознаёшь важность архитектуры решения, важность постановки. Лучше пять раз всё прояснить по задаче, потратить время на подготовку, чем потом переделывать сгоряча написанное.
Если Вы спрашиваете правильных разработчиков, то:
1. Они строят и продумывают архитектуру
2. Читают официальную документацию
3. Оптимизируют стыки, логику, алгоритмы
4. Они отвечают на Тостере
Если про всех остальных, то:
1. Они спрашивают на Тостере
2. Пытаются найти исходники или статьи, похожие на их задачу
3. Пытаются найти тех, кому перепродать проект.
дополню. Можно за час написать 60 строк кода. потом заняться своими делами , хоть покурить, хоть пообедать и переписать все использовав 1-5 строчек кода. Или случайно найти готовую функцию вместо своего велосипеда.
Т.е. настоящий программист думает о задаче всегда, даже если кажется, что он гоняет балду .
Но для этого нужно познать дзен. А не просто быть раздолбаем.
В режиме "продумал, написал и заработало", на сам код уходит 10-20%% времени. Остальное - разобраться в уже существующем коде, в доках, погуглить, подумать, обсудить с коллегами или начальством.
В режиме отладки печатается и кликается больше, но это все в прод не попадает же. Зачастую после поиска какого-то бага и написания кучи "одноразовых тестов" в коммит идет одна измененная строчка.
В режиме "быстро клепаем демо/прототип/пруф-оф-концепт особо не задумываясь, разбрасывая по коду всевозможные TODO и давая переменным имена типа foo" - можно вообще нонстоп печатать. Ну точнее выходит около 70%, потому что иногда приходится таки голову включать или что-то читать.
редко когда больше 4х часов кодинга, остальное изучение, кодревью, обсуждение, чтение, презентации, ну и прочая мура.
во время написания, можно сразу писать - это дело привычки, быстро подбирать решения, особенно подходы и названия, первые версии всегда берутся самые простые и самые быстрые, важно как раз процесс не тормазить из-за всякой ерунды типа поиска "хорошего" названия, ты это название еще 15 раз перепишешь, так что фигачишь сразу код в виде черновика, все свои мысли, потом корректируешь, начинаешь с высокоуровневого описания задачи, постепенно спускаясь все ниже и ниже, где в самом низу конкретные реализаций.
На редактирование кода уходит хорошо если час-два в день. Два это уже хорошо. Остальное - осмысление проблемы, чтение документации, кода, иногда книг, поиск подходящего решения, выбор решения, осмысление выбора, переписка с другими людьми, если от них зависит твоя работа. Да, общаться приходится довольно много. На емейлы может уходить до нескольких часов в день. Писанина в багтрекере, написание публичных заметок (назовем это "документацией").
Чем ближе проект к кровавому энтерпрайзу, тем меньше ты программируешь. Если ты, например, пишешь ПО для ракеты как в НАСА, то там больше чертят диаграммы и проверяют все на бумаге, чем редактируют код. И вообще просто так нельзя вносить изменения в код без согласования. Ну это совсем крайний случай.
Я вот занимаюсь автоматизацией, у меня на проекте на написание новых тестов уходит от силы наверное 15% времени, все остальное время - проверка и разбор результатов тестов, заведение багрепортов, проверка фиксов. Отчетность, митинги (как я их терпеть не могу). Бывают - дни вообще ни одного коммита.