Получи случайную криптовалюту за регистрацию!

Хороший разработчик - ленивый разработчик Под ленью я имею | Так не сойдет

Хороший разработчик - ленивый разработчик

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

Как же ведет себя этот зверь в естественной среде обитания?

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

Ищет наиболее эффективные способы решения задач
Ленивому разработчику лень писать сложный код, поэтому он максимально прорабатывает задачу еще до написания кода ища способы решить проблему пользователя минимальным колличеством кода.

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

Реализует концепцию deep modules
Ленивый разработчик понимает, что эффективный модуль/класс/функция должен(-а) предоставлять «узкий» интерфейс скрывая за ним «глубокую» реализацию и упрощая повторное использование.

Автоматизирует QA
Ленивый не значит безотвественный. Ленивому программисту лень доказывать, что его код работает. Лень проверять как изменилось поведение после внесения изменений. Лень проверять все 100500 корнер кейсов. Поэтому ленивый программист вместо того, чтобы проверять код руками, автоматизирует все проверки согласно тестовой пирамиде.

Использует defensive programming
Ленивому разработчику лень дебажить код пытаясь понять, почему он делает не то, что требуется. Поэтому ленивый разработчик держит только одну точку изменения внутреннего состояния; гарантирует, что связанные поля изменяются вместе; использует immutability где может и т.д. Проектируя фичи ленивый программист думает о том, как сделать так, чтобы фича требовала минимум ручного сопровождения и «восстанавливалась» самостоятельно в случае сбоя.

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

Будте ленивыми, но направляйте лень в правильное русло!