It’s okay to write dirty code

Писать грязный код — нормально

Efim Sirotkin
Clean Code

--

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

Я чувствую то же самое. И стараюсь делать мой код максимально чистым.

Но эта попытка писать чистый код на самом деле тормозит большинство из нас. Мы учимся медленнее. Мы делаем меньше. И в результате мы вносим меньший вклад в этот мир.

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

Когда писать грязный код

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

  1. Когда вы в тупике
  2. Когда вы хотите написать хороший код
  3. Когда вы хотите сделать что-то быстро

Второй пункт звучит противоречиво, да? Мы доберемся до этого. Обещаю.

Пишите грязный код, когда вы в тупике

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

Например, я обычно испытываю трудности, когда пытаюсь писать статьи. Я чувствую себя некомфортно, потому что подвергаю себя цензуре. Эти мысли пришли мне в голову, когда я писал эту статью:

  1. Эта идея недостаточно хороша
  2. Я не должен писать так
  3. Что если кто-то увидит эту статью и решит, что я паршивый разработчик?

Это жутко.

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

Мы тупим, потому что сосредоточены на попытках писать чистый код. Наши идеи не текут.

Вот почему.

Думайте о мыслях как о воде в кране.

  1. Хорошие идеи, хорошая работа, хорошее написание, хороший код и т.д. — это горячая вода.
  2. Плохие идеи, плохой код, плохое написание, плохая работа — это холодная вода.

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

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

Если вы хотите сделать что-то стоящее, вам нужно перестать подвергать себя цензуре. Это запустит процесс создания. Это позволит воде течь.

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

Сначала вы должны выбросить свои плохие идеи, потому что хорошие идеи не придут, пока все плохие не исчезнут.

  1. Вы не приходите на работу с хорошими идеями.
  2. Вы не пялитесь на экран с надеждой, что умеете кодить.

Хорошие идеи появляются во время работы. Они всплывают, только если вы перестаете подвергать себя цензуре.

Догадываетесь как я пришел к этой аналогии холодной/горячей воды?

Я начал писать эту статью со слов «Я цензурирую себя прямо сейчас …». Посмотрите, что вы сейчас читаете. Вы даже не осилили половину, и вы хотите читать дальше. Да? :)

Давайте продолжим.

Пишите грязный код, когда вы хотите написать хороший код

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

Но это правда.

Хороший код происходит от плохого кода. Так же, как хорошее письмо происходит от плохого письма.

Вы можете высказать свои мысли (без редактуры) в своем блоге. Это просто. Но это будет плохая писанина. Она будет содержать всякую не относящуюся к делу информацию.

Хорошее письмо происходит от очистки плохого письма. Это называется редактированием. Именно здесь мы режем и сжигаем все, что не помогает нам донести сообщение, которое мы хотим донести.

Хороший код тоже происходит от редактирования. За исключением того, что мы называем этот процесс рефакторингом: изменением кода так, чтобы написанное не влияло на его поведение.

Вы должны написать плохой код, чтобы получить творческие соки. Затем вы должны отрефакторить его, чтобы другие могли его понять.

Этот процесс занимает время. Это требует терпения.

Когда вы хотите сделать что-то быстро.

Разработчики имеют привычку добавлять функционал, который не нужен, в нашем коде. Например:

  1. Мы помещаем код в функции, когда нам это не нужно.
  2. Пишем используя ООП, ФП или другие парадигмы, когда в этом нет необходимости.
  3. Мы используем map / filter / reduce, когда проще написать цикл for

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

Когда мы что-то делаем, то часто добавляем больше сложностей, чем нужно. Например, когда я делал таймер обратного отсчета для страницы продаж Learn JavaScript, я добавил поддержку часовых поясов для всех часовых поясов в мире… хотя мне был нужен только PST.

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

В начале нормально писать плохой код. Это мешает вам писать что-то слишком навороченное и помогает делать вещи быстрее.

Как писать хороший код (последовательно и быстро)

По сути, процесс написания хорошего кода сводится к:

  1. Написанию плохого кода
  2. Отверганию самоцензуры во время написания
  3. Рефакторингу, когда вы закончили писать плохой код

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

Сворачиваемся

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

Это рискованно и страшно. Но это то, что мы должны сделать.

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

Вот что улучшит положение дел, когда вы впервые напишите дерьмовый код. 🍻.

Translation: zellwk

--

--