В продолжение заметки Я глупый и криворукий джуниор . Еще одна черта моего характера, которой я горжусь, это лень. Казалось бы, всем известно, что лень — это плохо. Как вообще можно ею гордиться? Не волнуйтесь, господа, сейчас я вам все объясню!

Рассмотрим двух программистов — ленивого (программист Л) и трудолюбивого (программист Т). Допустим, эти программисты столкнулись с некой нетривиальной задачей. Совершенно очевидно, что программист Л в такой ситуации полезет в Google искать готовый инструмент, фреймворк или библиотеку, потому что писать свое решение ему лень. Тем временем программист Т вместо того, чтобы выбрать самый простой и быстрый путь, будет усердно писать свое решение. В результате ленивый программист использует готовые, стабильные, проверенные временем наработки, быстро добиваясь результата, а трудолюбивый программист тратит кучу времени, плодя никому ненужные велосипеды. Налицо польза лени!

Вот еще пример. Ленивому программисту не хочется писать один и тот же код по 10 раз, поэтому он находит повторяющиеся куски и выносит их в функции. При должном везении ему даже удастся найти большие куски похожего функционала и придумать для них какой-нибудь DSL . В итоге код становится более читаемым и более легким в сопровождении, производительность программиста Л возрастает. А бедный программист Т старательно правит код в пяти местах при разработке каждой новой фичи.

Еще трудолюбивый программист может неэффективно расходовать свое время, делая работу, о которой его не просили. Например, если для некоторых данных требуется предусмотреть API создания и обновления, трудолюбивый программист может проявить инициативу и также написать API для удаления этих данных. Совершенно лишний API, который никто не просил, и который, скорее всего, никто и никогда не будет использовать! Мало того, что было потрачено время на написание этого API, так его еще нужно и поддерживать. Ленивый программист никогда не допустит такой ужасной ошибки.

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

Оба программиста, Л и Т, в большом количестве читают книги. Однако ленивый программист выбирает только действительно нужные ему книги, да и те скорее «индексирует», нежели читает. Просто ему лень запоминать прочитанное. Вместо этого он запоминает, в какой книге при необходимости он может найти ту или иную информацию, а также записывает наиболее интересные моменты в блоге . Ну или хотя бы хранит в виде наработок на GitHub. Трудолюбивый же программист тратит уйму времени на чтение книг от корки до корки, делая пометки карандашиком на полях, старательно решая все упражнения и пытаясь удержать в голове тысячи фактов, которые, скорее всего, никогда не пригодятся ему на практике. Стоит ли говорить, что подход программиста Л куда эффективнее?

Больше всего на свете трудолюбивые программисты любят хреначить код. Поэтому им не нравиться тратить свое драгоценное время на всякую ерунду вроде бета-тестирования проекта, разрабатываемого коллегами из соседнего отдела, посещения дурацких планерок, где происходит обсуждение нового протокола, или же общение с админами на кухоньке. В результате они теряют представление о том, что происходит в компании в целом. Они могут не знать, что где-то уже есть библиотека с функционалом, над котором они сейчас работают. Они могут даже реализовывать некоторые фичи с явными ошибками, потому что они просто не понимают, как эти фичи будут использованы в стороннем проекте. Поскольку программисты Т не принимали участие в обсуждении нового протокола, в нем не были учтены их интересы. А вот программисты Л отлынивают от работы всеми доступными способами. Поэтому они знают обо всех новых библиотеках, пишут фичи без ошибок и отстаивают свои интересы при обсуждении нового протокола.

Наконец, трудолюбивые программисты могут работать сверхурочно или даже по выходным. В результате они устают, приходят на роботу грустными и совсем не отдохнувшими, из-за чего пишут код с ошибками, который потом приходится переписывать. В отличие от них ленивые программисты проводят на работе не более 9 часов 5 дней в неделю. Каждый день они приходят на работу веселые и отдохнувшие, благодаря чему пишут хороший, качественный код, который, как правило, сразу работает без ошибок.

Такие дела. Мы выяснили, что глупость и лень — два очень полезных качества для программиста. Сможете ли вы угадать третье качество?

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

1 месяц ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

1 месяц ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

1 месяц ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

1 месяц ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

1 месяц ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

1 месяц ago