11

Почему говнокодят программисты, объяснение для строителей

В посте "Чужой код" @fentanilgalotan задал вопрос:

почему в программировании так часто говорят о костылях, говнокоде, каких-то велосипедах изобретенных, неужели нет никакого стандарта кодостроения, приемки этого кода?

Первый вариант ответа был недавно уже на Пикабу "Просто оцени правильно время заранее". Разумеется ему там отвечали развёрнуто и интересно и другие пикабушники


Я же предлагаю свою более длинную версию ответа со строительными аналогиями:


Представьте, что проектировщику (инженеру, конструктору) сказали спроектировать 2хэтажный коттедж. Это можно сказать ТЗ на проект и не более. В котором учтены в том числе язык программирования, фреймворки и прочее материалы. Потом его передают разработчикам джамшутам. На этом этапе вроде всё гладко. Джамшуты приступили к стройке. Заложили фундамент, начали выкладывать стены, но тут хозяин говорит: "хочу подземный паркинг". Ну дажмшуты разрыли ему яму, проломили одну стену фундамента и совместили с помощью говна и палок с тем, что было ранее уже построено, в общем наворотили первого говнокода. Выложили стены кое-как. И тут заказчик говорит, что надо подземный гараж на две машины, а ещё дизайнер ему посоветовал круглые окна. Ну джамшуты начали городить костыли, подпирать швабрами гараж, в итоге кое-как расширили. Старые проёмы окно они где-то подломали, где-то подложили но поставили круглые окна. Тут приходит заказчик и говорит, что ему не понравились круглые окна, они не так открываются и хочет треугольные. Джамшутам ничего не осталось, как с помощью опять говна и палок переделать окна. Сделали второй этаж, положили крышу. Заказчик вроде доволен. Параллельно конечно же прокладывали коммуникации: газовую трубу. отопление, проводку. Вроде продолжили всё согласно проекту. Приступили к отделке. Но тут оказалось, что заказчик хочет не люстру в центре комнаты, а по периметру светильники, газ оказывается не получилось подвести к дому и всё отопление надо переводить на электричество. В будущем может и подведут. Но пока дырку от трубы закрыли тряпками, провели временную проводку к бойлеру.

Почему говнокодят программисты, объяснение для строителей

И вот представьте. что такое постоянно, на каждом этапе. С отделкой тоже, то обои не понравились, то проем двери не там, мебель не встаёт, надо переносить. А главное: весь проект должен быть расширяемый, при чём расширяемый и переделываемый не только снаружи, но и изнутри.. Завтра заказчик может захотеть ещё и бильярдную с бассейном под гаражом. Стены дома из красного кирпича окажутся не в тренде и надо будет каким нибудь супер-пупер камнем выложить (не обложить). Потом его жена захочет... в общем в строительной теме даже фантазии не хватает придумать аналогий с теми, что бывают в программирование.


И всё это в один прекрасный момент может рухнуть! Времени и возможностей на переделку обычно нет. А часто ещё и "надо было вчера".


Разумеется в программирование очень много тоже джамшутов, которые криво кладут кирпич. Самоучек с самостроем. Но в программирование часто джамшут сам месит цемент, сам кладёт кирпичи и ставит окна, проводку и отделку дома. Вы часто встречали действительно специалистов сразу во всём? Думаю нет. Чаще всего есть специалист по кладке, спец. по электрике, по воде и так далее. В программирование часто это одни и те же люди. Разделение в основном идёт на фронтэнд (отделочники, они же электрики и прочее по отделке) и бэкэнд (каменщики и прочее по возведению коробки).


А проектировщики (те кто пишет ТЗ) и дизайнеры где-то отдельно и подключаются по необходимости.


Надеюсь понятно сравнил? А теперь вишенка на торте! Все технологии развиваются семимильными шагами. Новые инновационные материалы появляются не раз в год на выставках. А ежедневно! Ежедневно выпускаются новые материалы и инструменты с новыми характеристиками и спецификациями, ежедневно обновляются старые и постоянно надо быть в тренде. За год можно стать мамонтом. Те, кто программировал 20 лет назад - они уже сравнимы со строителями из соломы и глины, кто программировал 40 лет назад - сравнимы с теми, кто жил в пещерах (не в обиду ветеранам сказано).


Думаю хватит.

0
Автор поста оценил этот комментарий

Скинь адрес куда резюме посылать.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


Фундамент, говорите, швабрами подпирать? Не городите ерунды. Если заложенный фундамент по расчётам не потянет подземный гараж, а заказчик сказал: "Сделайте, я так хочу и плачу деньги" - значит, либо он платит мало, чтобы вы переделали с нуля, либо он дебил и на этом можно проект заканчивать, либо, если исполнители согласились, то, в свою очередь, дебилы они, потому что вместо того, чтобы обосновать невозможность непредусмотренных расчётами изменений - с радостью берутся втискивать швабры за долю малую. Есть в программировании одно золотое правило: чем больше костылей - тем больше костылей ;). Посему, если понимаете, что дело идёт к костылям - или уходите с проекта, или гните свою линию, если заказчик адекватный. Ничего полезного с костыльных проектов вы для себя не вынесете, более того, объем вашей работы (за те же бабки) увеличится минимум вдвое.


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


И вот ещё интересная какая штука...

Дело не в том, что люди самоучки. Не в том, что у них две вышки по разработке прикладного ПО. Не в том, что они ежедневно мониторят топ-20 новостных сайтов по теме. И даже не в том, что требует заказчик.


Проблема заключается в том, что многие из тех, кого считают быдлокодерами - такие только потому, что забыли: с их кодом после них будут работать другие.


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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Это вы так теоретизируете или уже достигли черного пояса в программирование?
0
Автор поста оценил этот комментарий

"То есть вы не хотите устраиваться в нашу молодую, динамично развивающуюся компанию с очень интересными проектами?"

Обычно это пирамида.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нет

lurkmore.to/Молодая,_динамично_развивающаяся_компания

показать ответы
1
Автор поста оценил этот комментарий

А ещё я вменяемый. А ты видно реализовывал проекты в натуре.

А ну да, ты тыж только вышел из института. Ну бывает.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
То есть вы не хотите устраиваться в нашу молодую, динамично развивающуюся компанию с очень интересными проектами?
показать ответы
0
Автор поста оценил этот комментарий

В чем то согласен, в чем то нет. Те же самые костыли, изобретение велосипеда, хаки (не направленные на вскрытие систем) иногда приходится делать изза обновления CMS, версий PHP, версий MySQL. Представим что все прекрасно работало на PHP5.0 и MySQL версии 4... тут оп вышел PHP7.0 и часть модулей установленных в СMS уже не работает... вот и придется программеру писать костыль чтоб это заработало. Но это отнюдь не всегда "говнокод". поскольку иногда обновление модулей поддерживающих нужную версию php ждать долго а сайт не должен простаивать

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Это один из вариантов, где-то между моими "Стены дома из красного кирпича окажутся не в тренде и надо будет каким нибудь супер-пупер камнем выложить" и "Ежедневно выпускаются новые материалы и инструменты с новыми характеристиками и спецификациями, ежедневно обновляются старые и постоянно надо быть в тренде".


Я конечно подразумевал именно изначальное написание, но бывает, всё верно вы сказали, обновление системы.


Это не противоречит сказанному мной, а дополняет.

показать ответы
0
Автор поста оценил этот комментарий

Как человек который технодзорил скажу просто. Технадзору нельзя вмешиваться в решение проекта.

Как человек который проектировал скажу, мне похер что там у вас, у меня есть нормы СниП.

Что касается дизайнеров, те ещё мудаки.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


И это только проект (ТЗ), без реализации! А потом это всё должны реализовать джамшуты!

показать ответы
Автор поста оценил этот комментарий
Комментарий удален.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я постарше тебя будут. Если ты присосался к маме с бабушкой, это не значит что все так же сиську чемурлызгают.


В ответ приводишь единичные случаи. Ты ещё скажи "программистом можно легко стать миллиардером, дядюшка Билл вон смог". Вот у тебя аргументы такого плана.


На фортане сейчас тоже есть программисты и они где-то требуются. Что касается swift, то это современный ЯП.

Автор поста оценил этот комментарий
Комментарий удален.
раскрыть ветку (1)
Автор поста оценил этот комментарий
"много?"

Одного знать - это не много.

А главное, опять мимо моей мысли: много языков программирования своей молодости он использует, парадигм тех времён и прочего? Думаю из тех времён у него остались только основы, то что проходят на первых курсах вузов. Остальные знания (думаю они примерно составляют 90-95%), которыми он пользуется - он получил за последние лет 15.

Автор поста оценил этот комментарий
Комментарий удален.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Основы это одно, а программировать на Фортане, Паскале или даже Бейсике - это другое.


Читаем внимательнее. Повторю ещё раз: я говорю про мертвые языки и программистов тех времён, многие из которых уже не в состояние программировать. Ты много знаешь охуенных программистов лет по 50-60? Не думаю.


Даже многие парадигмы, паттерны и прочее уже другое. Несколько языков только остались востребованы, но они притерпели множество изменений. Взять даже ООП, без знаний которого сейчас тебя на хуй пошлют в любой конторе. А 20 лет назад о нём знали и его использовали только избранные. Хотя методология достаточно старая, но многие ЯП к нему просто не были готовы.


Хорошо передёргивать конечно, но ты ещё про азбуку забыл!

1
Автор поста оценил этот комментарий
Комментарий удален.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Там ясно написано "программировал". В прошедшем времени.


Большинство языков того времени умерли или развились до не узнаваемости. Скил того времени на ЯП того времени сейчас нахуй ни кому не всрался. Только в единичных проектах они нужны, чаще всего поддержка проектов тех времён.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества