Почему я перестал следовать стандартам программирования / Блог им. rmrevin


Оригинал: Why I Have Given Up on Coding Standards

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

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

В последнее время развели много шума. Воскрешение JavaScript приводит к определенной ответственности. Это проявляется в так называемых «особенностях», в частности: optional semi-colons. Терабайты утверждений, гипотез и контраргументов засоряют пространство. Пожалуйста, перейдите к написанию кода, вместо того, чтобы заниматься ерундой. Поймите, наконец, кто вы.

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

Вот что происходит: когда вы начали программировать, вы понятия не имели, что делаете. Это было весело и в чем-то напоминало игру, пока вы не попытались разобраться в коде. После того как вы измучились в попытках разобраться в неаккуратном коде, вы поняли, что были простым учеником. Начните путь мастера с прочтения Code Complete, The Pragmatic Programmer, и конечно Joel.

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

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

А потом — пустота. Та же утомительная работа, тот же «марш смерти», те же ошибки, те же страдания. No silver bullet.

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

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

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

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

Так почему самые умные кодеры делают с точностью до наоборот? Что делает нас похожими на диктаторов?

Во-первых, вы, вроде, передаете свой собственный опыт другим. Но не все думают так, как вы. Brains are pretty weird.

Во-вторых, контроль — это хорошо. Но не следует говорить кодерам, что делать. Кошки — не стадо.

В-третьих, вы получаете дополнительную ответственность. Каждый в команде занят чем-то:
— Мы следуем правилам!
— Вы не смогли выполнить задачу.
— Да, но ведь мы следовали правилам!
— Ну, в таком случае, вот еще один проект…

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

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

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

Настоящим злом стандартов программирования — то, что они делают с вашем сердцем, сердцем вашей команды. Стандарты говорят вам, что вы не достаточно хорош. Вы теряете доверие. И в итоге вы все портите.

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

Начните с простого принципа — ваши программисты действительно умные. Это работает.

Я ожидаю от каждого, что он будет писать хороший, чистый код. Вы сами решаете, что это значит. Вы сами решаете, сможете ли вы спать спокойно, пока у вас есть макеты со случайным набором кода и непоследовательные имена переменных. Но при этом вы знаете, что это просто не имеет значения для 100-строчного node.js мини-сервера, который делает всего лишь одну вещь. Выбор за вами. Это ваша ответственность, потому что вы — программист.