Сперва добейся

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

Что такое технически годный сложный продукт? Всего три варианта.
Во-первых, тот, что годами живёт в офигиллиардах production’ов, выполняя свою работу в режиме пяти девяток, образно говоря. Пример: ядра операционных систем.
Во-вторых, тот, что годами живёт в production’е без вмешательства человека. И да, выполняет свою работу в режиме пяти девяток, всё так же образно говоря. Пример: софт того, что земляне в космос извергают.
В-третьих, тот, что выживает в стрессовых условиях окружающей среды при огромной цене ошибки. И… вы поняли. Пример: военный, авиационный софт.
Почему именно эти “отрасли”? Если вы хоть час потратите на глубокое размышление о том, что за задачи там возникают и какие требования к решениям, поймёте простое: всё плохо. Ограничение по ресурсам. Максимум устойчивости (в страшном сне ребут Боинга на высоте 10К метров, ага). Особые требования (вспышка слева, кладбище справа). При этом бывает адок огромных кодовых баз (Boeing 787 Dreamliner = ~7M LoC, например) с адком интеграции сотен и тысяч модулей систем. Жёсткое следование стандартам. Всё такое.
В общем, вне зависимости от того, что об этом думаете вы, описанное выше является Skills Challenge промышленного программирования. И код, который всё это успешно делает, является кодом для изучения и подражания, если хотите писать продукты такого уровня.
При чём тут “сперва добейся”? Все интеллектуальные разговоры о том, что такое правильный и удобный язык, в каком стиле писать код, каким гайдам следовать и т.п. — они до первого хардкорного проекта. И стоят копейку, не больше. Граница там же, где граница между строителями пальмовых хижин в няшном климате райских островов и строителями командных центров РВСН в условиях Ямала. Достаточно даже не делать самому, но вдумчиво изучить проблемы и решения, чтобы многое понять.
И что? Да то, что вон те ребята, которые ввели в эксплуатацию КЦ РВСН — они добились, они сделяль. Им как-то уж точно виднее, что и как правильно в согласовании с реальностью. Если они используют какую-нибудь конструкцию языка, от которой вас воротит, значит, проблема не в конструкции языка. Если они используют язык, который вы считаете неправильным, значит, проблема не в языке. Если вы видите в их архитектуре, методах, стиле что-то, что вы считаете неправильным… ну, докажите обратное. С их стороны конструкция, которая выдержит падение Луны на маковку. С вашей стороны морщины несогласия на лбу и опыт тысячи хижин на берегу у голубой водички.
Фиг с ним, с делом, накопайте и покажите что-то, что делает то же с тем же результатом, но удовлетворяет вашему вкусу. Linux kernel на JavaScript (а не этом страшном C). Спутник связи на Python (а не на этом головоломном C++). Ford GT на Ruby, наконец (к слову, у Ford GT количество LoC в mission critical code на ~3M больше, чем у Боинга). Это замечательные выразительные языки. На них вы можете легко и быстро писать годный софт. В них нет нелюбимых вами конструкций. Всё для того, чтобы попа у разработчика была мягкой и шелковистой.
Нет? Не получается? Внезапно оказывается, что няшные конструкции — это ни фига не то, что следует считать приоритетом? Или “ну это же языки НЕ ДЛЯ ЭТОГО”? Тогда не надо вилять попой под обстрелом. Надо в дискуссиях честно и сразу ставить шашки на место: “я, Семецкий Юрий Михайлович, считаю, что мой любимый язык является удобным языком для строительства пальмовых хижин, а конструкция XYZ великолепна для вкапывания брёвнышек в песок”. Попутно добавляя шёпотом, что эти же любимые языки Семецкого не являются универсальными или, как минимум, гораздо менее универсальные, чем C/C++. И что все эти рассуждения о том, что УДОБНО и что ПРАВИЛЬНО — они валидны лишь в ясно обозначаемом контексте. И вся болтовня без “сперва добился” так и остаётся пустой болтовнёй, ибо, повторюсь, первый же проект сурового уровня меняет мышление разработчика, после чего и на goto смотрят крайне спокойно и прагматично. А если мышление не меняется, разработчик с Ямала едет к пальмам.

Уф. Хау. Я сказаль. Иногда здорово достают нападки на C/C++, от чего у меня поводок обрывается.

Добавить комментарий