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

Когда мы пишем прозу, есть множество причудливых советов. Говорят, подумайте о своем идеальном читателе. Представьте, что они читают ваши слова, и пишут им напрямую. Не используйте (бессмысленные) прилагательные. Следует избегать пассивных навыков. Никогда не используйте слово за пять долларов, если подойдет слово за пятьдесят центов. Но что бы мы ни писали, некоторым это понравится, а некоторым - нет. У нас нет платонического читателя, который понимал бы каждую ссылку и любил бы каждый оборот фразы. С другой стороны, когда мы пишем код, у нас действительно есть идеальный «читатель»: компьютер. Читатель, который одновременно и более снисходительный, и менее снисходительный, чем человек. Компьютеры не заботятся о стиле или ясности. Они не будут пытаться начать с вами недобросовестные споры в Твиттере. Но они действительно, действительно заботятся об опечатках.

Есть много причудливых советов по кодированию. Используйте значащие имена. Не изобретайте велосипед. Совет по кодированию обычно содержит больше аббревиатур. ЯГНИ - «тебе это не понадобится». СУХОЙ - «не повторяйся». SOC - «Разделение интересов». Они звучат как глаголы: вытри свой код, сочи его в нос. Некоторые советы откровенно жестоки. «Всегда программируйте так, как будто парень, который в конечном итоге поддерживает ваш код, будет жестоким психопатом, который знает, где вы живете», - написал Джон Вудс.

Перезапись - это рефакторинг

Они говорят, что писать - значит переписывать. У кодирования есть своя версия: рефакторинг. Рефакторинг - это переписывание кода, чтобы сделать то же самое более понятным или более удобным для сопровождения способом. Для меня кодирование - это постоянный триггер. Взламывать что-то вместе методом проб и ошибок, строить постыдно неэлегантные команды, пока, наконец, оно не сделает то, что я хочу. Затем остановился, чтобы привести его в порядок. Я постоянно переделываю то, что написал, чтобы сделать его презентабельным для внешнего мира. Написание слов ничем не отличается.

Я вспоминаю знаменитую шутку Оскара Уайльда: «Я все утро работал над доказательством одного из своих стихотворений и вынул запятую. Днем - ставлю обратно ». Вчера я работал над одним из моих объектов и добавил метод. Вечером снова достал.

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

Пропустить ненужные функции

Их слова очаровывают прозаиков. Убейте своих любимых, - говорят, осознавая, насколько сложно удалить слова, над которыми вы вспотели. В коде, когда я могу удалить функцию, я с удовольствием нажимаю клавишу удаления. Каждое утверждение - это одна строка, которую я хотел бы исключить. Моя идеальная компьютерная программа была бы одной строкой: doThing (). Но затем я мысленно реорганизовал это. Возможно, это должно быть: do (thing) или thing.do ().

Как странно, что слова в прозе, однажды написанные, - любимые, о которых мы плачем, когда удаляем, а кодовые слова - это гоблины, которые заставляют нас улыбаться, когда мы возвращаем их в небытие. Лучший код - это его отсутствие, - говорит Джефф Этвуд. Код - наш враг, - пишет Рич Скрента. Возможно, это кодовые версии известного совета Уильяма Странка: опускайте ненужные слова.

У каждого набора текста есть свой покровитель. Что касается письма, это Уильям Странк, властный автор Элементов стиля, который склонялся над своим столом и кричал его совету: «Избавьтесь от ненужных слов! Опусти лишние слова! Пропустите ненужные слова! » Они сказали, что он пропустил столько слов, что теперь повторил все три раза, чтобы наверстать упущенное. Для кодирования эквивалентом является добродушный дядя Боб, автор Clean Code: « Первое правило функций - они должны быть небольшими», - пишет он. «Второе правило функций - они должны быть меньше этого». Первое правило предложений - они должны быть короткими.

Между написанием и кодированием есть эти странные маленькие инверсии. Мой код - белый текст на черном, моя проза - черный текст на белом. Закончив код, я отпускаю его. Как голубь. Когда я закончу писать, я публикую это. От латинского «сделать достоянием общественности». Эти два глагола кажутся мне неправильными. Код - это то, что я делаю публично, а написание - это то, что я позволяю улетать.

Тогда есть экономические различия. Восьминедельные учебные курсы по программированию приводят к шестизначной зарплате. Четырехлетние дипломы по искусству приводят к неоплачиваемым стажировкам и случайным выплатам 3 фунтов стерлингов из литературных журналов.

Пишите так, как будто ваш читатель - жестокий психопат

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

Советы по кодированию, которые мы читаем, не предназначены для компьютеров. Мы не пишем короткие функции и простые команды в помощь компилятору. Мы пишем их, чтобы помочь последующим людям читать наш код. Это не компьютер, который является жестоким психопатом, владеющим бензопилой, который знает, где мы живем, это человек, который поддерживает код после вас. Как я уже сказал выше (СУХОЙ не достигается) код - это рабочие слова. Он повторяется снова и снова. Подумайте о своем любимом приложении - Chrome, Twitter или Fortnite. Ваш компьютер будет запускать код, запускающий это приложение, тысячи раз. Разработчики программного обеспечения будут читать, редактировать и выпускать обновления этого кода. Когда вы думаете о своей любимой книге, вы, возможно, прочитали ее полдюжины раз. Уж точно не миллионы раз. И даже если автор выпустил обновленное издание, он не присылает вам новый экземпляр каждый второй вторник, содержащий «исправления ошибок и улучшения».

Тем не менее, мне интересно, сколько советов можно перенести из одной дисциплины в другую. Использование простых функций вместо непонятных языковых функций приравнивается к использованию простых слов. Keep it Simple, Stupid может применяться к любому из них. «Не повторяйся» больше применимо к письму, чем к программированию. Избегайте вложенных подпунктов: избегайте вложенных условных выражений. Нет переполнения стека для записи, но если бы писатели копировали и вставляли из него, а другие сказали бы не делать этого. Слава богу, у нас нет прилагательных для обозначения кода. Это эквивалент излишне подробных комментариев.

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

Я люблю писать и писать советы. Это одна из моих (многих) нездоровой пищи в Интернете. Подобные советы, я думаю, убедительны, потому что их чтение кажется работой, но не требует никаких усилий. Это крайнее промедление со встроенным правдоподобным отрицанием: «Я затачиваю свой топор», - можно сказать, просматривая еще один список из 10 советов, которые помогут нам в письме.

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