Народ, всем привет. Большинство людей представляет себе программиста, как человека, который сидит перед монитором и строчит строчки кода, словно пишет музыку. И кажется, что работа программиста это сплошное программирование, ты просто открываешь редактор, пишешь волшебные команды, и они превращаются в приложения, сайты, игры или алгоритмы. Но на самом деле всё иначе.
Парадокс заключается в том, что программирование — это такая профессия, в которой кодинг может занимать лишь 10% времени. Все остальное, это некая невидимая, но критически важная работа, о которой редко говорят, но именно она составляет настоящую суть профессии и часто становится источником усталости, выгорания, конфликтов и роста.
А все из-за того, что прежде чем написать хоть одну строку кода, нужно понять, что это вообще за строчка кода будет. По факту, это означает изучение требований, который поставил заказчик или ваш начальник, понять постановку задачи, исследовать контекст, выбрать инструмент, подход, написать алгоритм и все такое прочее.
Хороший программист тратит массу времени на то, чтобы не писать код, а понять, какой код нужно написать и стоит ли вообще его писать.
Именно поэтому программисты это инженеры со своим инженерным мышлением, которое требует глубокой аналитики. Это на всяческих курсах вас за три месяца научать писать команды и синтаксис языка, но «думать» как инженер вас не научат. По крайней мере не за три месяца. Ведь нужно заранее предугадать, и понять, как поведет себя программа, функция, как она впишется в остальную архитектуру, какие ограничения существуют.
Это требует чтения документации, анализа чужого кода, диалогов с заказчиками и архитекторами. Сам по себе процесс проектирования может занимать больше времени, чем последующая реализация. Но это оправдано, ведь плохая архитектура в будущем обернётся большими затратами на её переделку. Кстати, большую часть времени программист не пишет, а читает. И не стихи («у Лукоморья код забаган»), а чужой код, часто старый, неочевидный и без комментариев. Понять, как работает унаследованная система, какие зависимости в ней спрятаны, почему что-то «вдруг сломалось», это требует концентрации и терпения.
Хотите знать больше? Читайте нас в нашем Telegram – там еще больше интересного: новинки гаджетов, технологии, AI, фишки программистов, примеры дизайна и маркетинга.
Дебаг тоже ещё один вид невидимого труда, и еще какого. Это не просто запуск программы с отладчиком, это тщательное воспроизведение условий бага, логика, поиск источника проблемы в огромном количестве слоёв, от пользовательского интерфейса до базы данных. Ошибки бывают неочевидными, плавающими, зависящими от контекста. Иногда отладка одной проблемы может занять дни. В таких ситуациях написание кода это последний шаг. Всё остальное — анализ, эксперименты и логическая работа.
Еще стоит отметить, что современная разработка редко бывает одиночным занятием, и как правило, программист это часть команды… «часть корабля». И чем крупнее проект, тем больше времени уходит на коммуникацию, встречи, совещания, планирования, ревью, обсуждение архитектурных решений. Каждый PR (pull request) требует не только кода, но и объяснений, почему было сделано так, а не иначе.
Кроме того, разработчик должен понимать коллег по разработке, дизайнеров, тестировщиков, продакт-менеджеров, аналитиков. Это значит, что приходится участвовать в синхронизациях, согласовывать приоритеты, разъяснять технические ограничения и переводить требования на язык задач. Короче, у вас целый день может пройти, с тем поговори, с этим, а по факту, даже IDE-шку не открыли. Но это нужно, ведь часто от качества этой «социальной» части работы зависит успех всего проекта. Хороший код, написанный не в том направлении или не в нужное время по своей сути мёртвый груз.
После написания кода работа не заканчивается, а лишь начинается следующий цикл: покрытие тестами, написание документации, развертывание, мониторинг. В идеале всё должно быть автоматизировано, но на практике многое требует ручного контроля. Даже написание unit-тестов и то, это интеллектуальная работа, где нужно предугадать, что может пойти не так, и покрыть это в тестах. В крупных проектах есть ещё интеграционные и end-to-end тесты, и все они требуют времени.
Ну и документация, куда без нее, ещё один невидимый компонент. Отсутствие понятного описания API, внутренних протоколов или бизнес-логики может парализовать всю команду. Хороший программист документирует свои решения, иногда это README-файл, иногда комментарии, иногда подробный текст в Confluence или Notion. Всё это редко ценится по достоинству, но критично для устойчивости проекта.
Ну и в конце это сопровождение и поддержка, работа с багами, запросами от пользователей, обновлениями зависимостей, миграциями баз данных и всего, что связано с живым проектом. Это тоже программирование, но не творческое, а рутинное, зато очень важное.
А, и еще то я забыл, немного не в части конкретного проекта, но тоже некая часть работы программиста – это обучение. Чтобы оставаться в профессии, программист вынужден постоянно учиться, а значит чтение статей, документации, участие в конференциях, изучение новых инструментов, всё это будет занимать время, которое невозможно «показать» в системе трекинга задач, но без которого ты быстро вылетаешь из актуальной повестки.
По факту, недооценка невидимого труда программиста приводит к неправильным ожиданиям. Менеджеры ждут «больше кода», пользователи — «поправьте за пять минут», а начинающие разработчики чувствуют тревогу от того, что «слишком долго ничего не пишу». Понимание того, что основная часть работы это не код, а мышление, коммуникация, анализ и поддержка, помогает правильно расставлять приоритеты, беречь внимание и не считать себя неэффективным только потому, что за день ты написал 10 строк.
На самом деле, эти 10 строк могут стоить десятков часов труда — и именно в этом и заключается мастерство.
Кстати, у нас есть и другой канал, FIT FOR FUN, про фитнес, бодибилдинг, правильное питание, похудение и ЗОЖ в целом. Кому интересно, ждем вас в гости!