Не пиши простой код
- пятница, 25 апреля 2025 г. в 00:00:12
По мотивам статьи: Пиши простой код / Хабр
ПредПредПредисловие:
Это должен был быть пост, но не хватило 4000 символов. Прошу прощения за все отсутствующие запятые, отдельно за присутствующие, за ошибки грамматические, орфографические и стилистические.
ПредПредисловие:
Если Ваш код правят спустя пять и более лет - забудьте о претензиях вообще. Никто из всей цепочки от инвестора до Вашего непосредственного ни думал на такую дистанцию, все полезное что Ваш код должен был этим людям сделать (а это их бизнес) он уже сделал и себя окупил. За это время должны были прийти новые релизы фреймворков, новые языки, квантовые компьютеры, ИИ должен был заменить умственный труд и весь бизнес должны были вывести на IPO и продать к чертовой матери, купить и еще раз продать. И все это, между прочим, случилось, но Ваш код, Ваш велосипед, подпертый костылями со всех сторон, продержался в этой конкурентной борьбе с топами автоматизации без единой правки и это когда у вас не было даже четкого ТЗ. Вы сумели написать что-то между гениальностью, удачливостью и пофигизмом, точно мы не узнаем. Вы уловили суть времени. Эта статья о других, о тех, чей код по несчастной случайности пришлось править другим много раньше. Или Вам самим.
Предисловие:
Одно время в моей стране не платили программистам много. Даже скажу прямо - платили до обидного мало. И я подрабатывал в смежной области проектировщиком и монтажником слаботочки, по вечерам заправляя картриджи. Как ни странно, но я получил необычайно полезный опыт в программировании, с которым я теперь хочу поделиться. Конечно, аналогия плохой метод. Но очень наглядный. Поэтому дальнейшее относится не к кабельным работам, как кажется на первый взгляд, а к кодингу.
Жизненный опыт.
Встреченные мною на разнообразных стройках поделки с кабелями вызывали разнообразные чувства. От смеха до ужаса, от благоговения до испанского стыда. У меня до сих пор, по прошествии двух-трех десятков лет не сложилось понимания, под влиянием каких препаратов могли быть проведены некоторые из работ. Я повидал многое. Были и кабеля, брошенные из угла по кратчайшему пути до розетки и телефонные скрутки на живую на 30+ абонентов. Изогнутые под дикими углами скрученные в узлы 6й категории кабели. Расплетенные кабели. Телефония на витой паре и езернет на телефонии. Дикие скрутки. Вероятным апофеозом стала кирпичная стена в пол кирпича, которая начала падать, когда мы на нее облокотились, но повисла на скрутке электрики, которой там не должно было быть. В тот момент я испытал некоторую крайнюю степень отчаяния в понимании происходящего со смесью просветления.
Вывод первый.
Максимально изучи стандарты, принятые в отрасли. Беспрактис. Паттерны. Даже если надо вкрутить лампочку в свисающий сверху проводочек сделай это максимально стандартно и элегантно, набивай руку на всякой мелочи. Будь Мастером в мелочах. Мастера видно по почерку, по кремпру на его поясе, по изгибу кабеля, по оставленному колечку про запас последующему ушлепку. По красоте, выстраданной на сотнях объектов.
Вывод второй. Наблюдай и делай красиво, воруй у других. Тащи себе в привычку все лучшее, что ты увидел у других. Лучшие практики, лучшие проектные фишки. Лучшие технологии. Лучший инструментарий. Это даст если не денег, то удовлетворенность проделанной работой и то самое чувство не бесцельно прожитых лет. Уважение коллег. Самоуважение.
Вывод третий. Следствие из первого.
Видя говно(код) нажимай CTRL-A + DEL без раздумий (но помни про правило 5ти лет, может это и не говнокод вовсе). Это теперь твой проект, твоя ответственность, а ответственность неделима и не бывает второй свежести. Если нельзя сделать совсем уж CTRL-A, строго определи ту границу, где твоя ответственность заканчивается. Начерти ее самым жирным маркером, опиши на ней граничные условия и своим Мастерским почерком начни свой подпроект.
Вывод третий.
Выбирай сложность согласно максимально возможному будущему развитию проекта. Ты повидал многое, ты знаешь, как случаются факапы, как случаются успешные успехи, которые не случаются потому что в кузнице не оказалось гвоздя. Ты знаешь куда ведут все модные тенденции, не стесняйся закладывать их в проект, если он может туда прийти. Поверь, директор всей той богадельни мечтает о куда как больших перспективах, чем ты, не подрезай ему крылья на взлете, не надо. Простота здесь хуже воровства. Коробочки, гофра, медь, ящички по лучшим стандартам. Следующий за тобой уже при прощупывании стен металлоискателем должен увидеть, что перед ним был Мастер и понять замысел твоего проекта, присоединится к нему. Ему должно быть физически больно говнокодить на твою систему. Почему, не спрашивай. Иначе все теряет смысл.
Вывод четвертый.
Эстетика важна. На работе ты проводишь большую часть жизни. Жить красиво это не пришел домой на 2 часа поел с красивой посуды и лег на красивую кровать. Жить красиво это прежде всего о работе, о твоем продукте, о твоем инструментарии, о твоих мыслях, которые с тобой даже когда ты дома. В первую, вторую и третью очередь. Ты живешь, по сути, со своими коллегами, а не с супрогом/супругой. Все, что делает твой продукт эстетически красивым смело тяни в свой проект. Это избавит тебя от выгорания. Это привнесет в проект искреннюю твою заинтересованность, что гораздо важнее чем какая-то там избыточная сложность.
Вывод пятый. Философский.
Всегда найдется желающий самоутвердится на различии твоего проекта с последующим его жизненным циклом. Даже если он был идеален в моменте. Это часть пути. Инь и Янь, если хочешь, диалектика.
Вывод шестой, он же спорный, абстрактный.
Абстракции. Идеально заряжать их сразу на всю катушку согласно модели проекта, бизнес-концепции. Это моя спорная неидеальная точка зрения. Пустые этажи абстракций забивать заглушками. Абстракции как способ декларативного самодокументирования проекта. Нейминг абстракций очень важен, т. к. удачный нейминг из непонятной абстракции сделает помощника. Но никакой нейминг, даже самый удачный не спасет от недоучки в его использовании, каковой согласно п.5 не приминёт самоутвердится. Или от спешащего мимопроходил, желающего срубить легких денег на быстром и таком доступном повышении энтропии. В конце концов есть же и люди зачем-то раскручивающие витые пары и пускающие по ним электричество.
Вывод последний, общий.
Здесь ничего не было про простой или сложный код. Здесь ничего не было даже про эффективный или дешевый код. Здесь про отношение. Отношение к своему труду, профессиональному росту и росту в своей жизни, в своих проектах. Гармонию со своей профессиональной жизнью. А гармония она не в согласии, не в одобрении начальством и даже не в следовании бестпрактис. Она во внутренней удовлетворенности пройденным путем.
Твори, программист. Ты один из представителей последних творческих профессий, последняя цитадель.
Я, следующий за тобой, пойму и приму твои ошибки.
А идеальный код напишет ИИ и без нас.