Ладно, обо всем по порядку… Я никоим образом не выступаю против чистого кода и не говорю, что это обязательно плохо.
Однако… в последние годы она, кажется, становится все более похожей на религию — слишком усердные «эксперты» проповедуют ее молодым верующим как «единственное истинное евангелие» и осуждают тех, кто осмеливается выступать против нее, как еретиков. Это больше похоже на культ и крайне вредно для нашей индустрии.
Но разве «Чистый код» — это не хорошо?
И да, и нет… в зависимости от того, что вы понимаете под этим.
Слово «чистый» в отношении качества кода очевидно субъективно и может означать совершенно разные вещи для разных людей, но я думаю, мы все можем согласиться с тем, что суть того, что подразумевается, заключается в следующем:
Код, цель которого понятна большинству прочитавших его.
Если мы оставим его там, то это благородная цель, и она принесет много очевидных преимуществ.
«Чистый кодекс» начинает становиться проблемой, когда его сторонники рассматривают его как набор догматических заповедей, а не как «пиратский кодекс», который больше похож на «руководящие принципы».
Почему это снижает качество разработчиков?
Ну… и это всего лишь моя личная теория — похоже, она создала менталитет, в котором:
Код должен быть понятенсамому младшемуразработчику в команде
Я действительно слышал, как это говорили в некоторых местах, где я работал, и я видел подобные чувства, которые повторяли в Интернете «экспертные» наставники. Но, вдумайтесь… если придерживаться такого менталитета, то все становится гонкой на выживание. Мы бы активно стремились упростить код до такой степени, что он больше походил бы на ознакомительную книгу для пятилетнего ребенка, чем на элегантную, детализированную работу мастера-автора.
Расширенные концепции языков считаются «слишком сложными» или «эзотерическими» без каких-либо объяснений о них — их просто заметают под ковер или помещают в папку «не использовать». '. Общий результат — сужающееся знание языков, а также методов и концепций программирования в целом. Если индоктринированный новый разработчик сталкивается с каким-либо из «запрещенных» элементов, он часто отвергает его как плохой код и может даже попытаться заменить его чем-то «лучшим», который придерживается заповедей чистого кода — иногда невольно жертвуя объективно более быстрым, более эффективный, гибкий код с чем-то более низким.
Самое страшное здесь то, что новые разработчики не знают, чего им не хватает. Затем они становятся старшими и начинают проповедовать тот же «правильный путь» следующему поколению призывников, увековечивая и усугубляя проблему.
Как это исправить?
Я думаю, что лучший способ — это изменить способ, которым люди учатся программировать. Нам нужно отойти от «вы тоже можете стать разработчиком за 3 дня — вот как» напечатать учебники, которые сразу же перескочат туда и покажут вам, как делать определенные вещи определенным образом, и вернуться к обучению людей самим языкам, их особенности и как их использовать для преобразования ваших мыслительных процессов в функционирующие программы. Следующим шагом будет поощрение людей строить для себя — на основе того, что они открыли и узнали. После этого они будут хорошо разбираться в том, как все работает, и в отличный момент, чтобы начать понимать существующие кодовые базы по-своему и оценивать для себя (возможно, с некоторым руководством), какие методы лучше подходят для разных ситуации. Обучение таким образом принесет гораздо более полное понимание, что приведет к более компетентным и, что более важно, креативным разработчикам.
Чтобы провести аналогию, я считаю, что современное обучение разработке программного обеспечения стало слишком похоже на современное Lego; раньше у вас была просто огромная ванна с кирпичами, и вы использовали свою собственную изобретательность и любознательность, чтобы сначала понять, как все части «работают» и сочетаются друг с другом… а затем использовали свое воображение и творческий подход, чтобы построить то, что вы хотели. строить. Сейчас это все отдельные наборы Lego с конкретными инструкциями, привязками к фильмам и т. д. Инструкции соблюдаются беспрекословно, все строят одни и те же «крутые» вещи. Радость и польза от обучения и творчества теряются — их заменяет мгновенное удовлетворение, столь желаемое в современной культуре удобства.
Давайте остановим гниение и вернем в разработку программного обеспечения то, что было утеряно:
- Радость
- Любопытство
- Открытие
Иллюстрация на обложке предоставлена Danny Sapio
Первоначально опубликовано на https://dev.to 25 июня 2022 г.