Программист мало пишет, но много читает

031fec9602ac1539df4ecc8fd9ffd703

Здравствуйте, меня зовут Александр, я backend-разработчик. Цель данной публикации — проанализировать затраты времени при разработке приложений. Расчеты приведены на основе web приложений на языке Python. Так же не рассматривается ситуация разработки MVP для получения различных тендеров. В качестве упрощения, в данной публикации слова «разработчик» и «программист» являются синонимами.

Зачастую у многих людей малознакомых с особенностями разработки программного обеспечения может складываться впечатление, что более 90% времени должно тратиться именно на написание программного кода. Многим начинающим программистам кажется, что качество их работы прямо пропорционально количеству кода, которые они пишут. Но так ли это?

Оценим сколько символов кода мы в среднем пишем. Для начала рассмотрим среднее количество символов в строке кода (с учетом все отступов). Для этого рассматривалось 20 реальных проектов, реализованных на языке Python на следующих фреймворках: FastApi, Django, Pyramid. Результаты приведены в таблице

min

max

среднее

Без учета пустых строк

40

50

43

С учетом пустых строк

34

42

36

Для упрощения возьмем 40 символов в строке, т.е. примерно 10 слов (4 символа на слово).

А сколько строк кода мы пишем в день? В работе [1] указывается, что мы пишем в среднем 10 — 12 строк. А в работе [2] указывается, что в день программист пишет 100 — 150 строк кода. Т.е. даже если возьмем 100 строк кода в день, то получим в среднем 4000 символов, или примерно 1000 слов это, кажется, немного. Но действительно, если посмотреть на Merge requests зачастую они будут небольшие (десятки строк кода). Конечно, бывают исключения. При разработке нового функционала добавляются большие объемы кода, Merge requests на сотни строк. Но перед этим идет этап изучения проблемы, выбор способа реализации, а после исправление багов и доработка новых фич. При которых кодовая база увеличивается совсем незначительно. Для сравнения в статье [3] приводится средняя скорость набора текста 50 слов в минуту, это 24 000 слов в день. Что значительно больше.

Несомненно, скорость разработки программного продукта является очень важным параметром. Наверное, одним из самых важным с точки зрения бизнеса. Но эту скорость характеризует размер проделанной работы (новые функционал и исправленные баги), а не скорость разрастания кодовой базы. Поэтому может возникнуть вопрос: так чем же программист занимается?

Ответ прост — он думает и читает, читает и анализирует. А что именно он читает:

  • документацию всего проекта, для понимания того, что он разрабатывает;

  • легаси-код — ведь далеко не всегда мы включаемся в абсолютно новый проект;

  • свой собственный код — при доработке новых фич, при исправлении багов, при рефакторинге мы должны вначале прочитать и понять, то, что писали ранее. В связи с этим вспоминается цитата М. Фаулера «Любой дурак может писать код, который будет понятен компьютерам. Хорошие программисты пишут код, который будет понятен людям»;

  • автоматические тесты — которые в некоторых случаях могут дополнять или заменять документацию.

  • документацию, новые возможности библиотек и фреймворков. Т.к. происходит их постоянное развитие и архитектурные и технические решения актуальные ранее могут быть не самыми оптимальными сегодня;

  • и конечно же книги и статьи для расширения кругозора и понимания тенденций развития IT. Поиска новых, более оптимальных технических решений для проекта.

Как раз анализ всего прочитанного позволяет писать качественный программный код. Который в дальнейшем удобно поддерживать и развивать. Не стоит пренебрегать качеством в угоду количеству. Это чревато появлением различных ошибок связанных с выбором неправильных подходов и технологий. И если вспомнить «Чистый код» Р. Мартина на исправление таких ошибок, может  тратится огромное количество времени. Так же необдуманные технические решения могут изначально позволить быстро реализовать начальный функционал, но при этом полностью заблокировать дальнейшую разработку продукта.

Программирование — специфический труд. Это очень напряжённая умственная деятельность, которая не ограничивается рабочим днем. Программистам свойственно стремление к постоянному саморазвитию и изучению нового. Именно поэтому самая важная работа делается как раз вдали от клавиатуры.

© Habrahabr.ru