Настоящее программирование — это скучно

Негодует автор блога Divide By Zero


Программирование — это очень скучно. Это обыденное, монотонное занятие, в котором мало места удивлениям. Ну или оно хотя бы должно таким быть! Программирование, конечно, не всегда скучное и унылое — существуют его отдельные захватывающие аспекты, в которых вам приходится разбираться с интересными нестандартными проблемами. Но они, как правило, все равно сопровождаются огромным количеством скучных и однообразных тасков.

Многие известные мне программисты утверждают обратное: по их словам, программирование — это страшно интересно. Они прыгают от задачи к задаче, и за ними тянется шлейф модного на этой неделе фреймворка или технологии. Они забивают на тесты, документацию, и что самое страшное — на реальное понимание среды и существующей проблемы. Так вот что я хочу таким программистам сказать: а не пойти ли вам к черту?

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

Программирование, по сути, сводится к следующему алгоритму:

  1. Понять проблему.
  2. Решить проблему.
  3. Убедиться, что решение будет легко поддерживать и развивать.

Чтобы проблему решить, нужно пообщаться с коллегами, задокументировать ваши намерения и, возможно, применить какую-нибудь методологию, agile, например — она позволит быстро перебирать решения, пока не найдется наиболее оптимальное.

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

Представьте: у вас вдруг что-то заболело в груди, и вы пошли к врачу. Доктор немедленно предположил, что для лечения точно подойдет тройное шунтирование: «Зачем что-то документировать или тратить время на болтовню? Это же впечатляющий способ! Ах, не подходит? Тогда я ухожу, потому что если бы вы посмотрели на мое резюме, то знали бы — я делаю тройные шунтирования как бог!»

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

Программирование переполнено всевозможными инициалами и акронимами, так что я придумаю еще один. Вот: TYKD. Расшифровывается как «Test, YAGNI, KISS, Document» — «Тестируй, YAGNI, KISS, Документируй». Да, и тут полно аббревиатур, получилась целая супер-аббревиатура. Но это неважно. Важно тут вот что: тестируй; you are’t gonna need it (тебе это не понадобится); keep it simple stupid (делай вещи проще); документируй. Скучно? Но это и есть профессионализм.


Тем, кто вдохновился материалом, будет интересен наш перевод другой интересной заметки — «Почему я (все еще) пишу код?»

Источник: Блог Divide By Zero