Стул, сделанный искусным мастером, — одно из самых красивых зрелищ. Это эстетично, функционально. И когда вы сидите на нем, вы можете почувствовать мастерство его создателей, их преданность делу, их страсть. Поделки ручной работы — одни из самых красивых, но функциональных предметов в мире.

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

Чтобы быть лучшим программистом, нужно быть ремесленником в рабочее время и философом в свободное время. Теперь, что я имею в виду под этим? Когда в последний раз вы часами сидели за рабочим столом, ни на что не отвлекаясь? Сосредоточены на вашем коде? Погрузились в его дизайн? Одержим своей функцией? Увлечены своей эстетикой? Огромный объем мусора, заполонивший кодовые базы по всему миру, является доказательством того, что большинство из нас не думает о своем коде так, как это сделал бы ремесленник. Мы не относимся к этому достаточно серьезно.

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

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

Теперь, каков был бы самый простой и самый фундаментальный способ заставить ваш код работать? Используйте метод, который оскорбительно прост. Это должно быть глупо. Он должен быть чистым. Следует исходить из того, что любой коллега, посмотревший на ваш код, полный дебил.

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

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

На данный момент ваш код выглядит довольно хорошо. Тем не менее, он может содержать частички грязи и пыли здесь и там. Магические числа. Плохо названные переменные. Мутирующие переменные. Если вы понимаете, о чем я. Займитесь домашним хозяйством. Очистите свой код. Добавьте комментарий над каждой функцией, чтобы сообщить идиотам в вашей команде, что она должна делать.

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

Устали от этого процесса? Очень жаль. Вернитесь наверх и повторите каждый шаг по пути. Настало время рефакторинга. Каждая итерация делает ваш код немного лучше. Не поленитесь и пропустите эту часть.

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

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

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