Здравствуйте, De-Bill, Вы писали:
C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку?
DB>Такие слова разрешено говорить вслух только программистам-новичкам.
Наоборот, новому ведущему программисту, это хорошее основание для дальнейших отмазок.
DB>Опытные программисты понимают, что практически любой промышленный код — полное говно,
+1
DB>и что надо всё переписывать. Но это стоит дороже, чем поддерживать.
Зависит.
DB>Хороший код встречается либо в программках на 1000 строк, которыми никто никогда не пользовался,
Когда как.
DB>либо в компаниях, куда стоит очередь 20 программистов на одно место.
Очередь легко организовать, с качеством кода она не связана.
DB>Не хватает квалификации, чтобы попасть в такую компанию — будь готов работать с говнокодом.
Квалификация нынче измеряется олимпиадными задачами, и из качественных ингредиентов запросто получается тошнокод.
V>В ИТ около 15 лет, был ~6 конторах, ни разу не слышал чтобы хоть раз чей-нибудь код называли хорошим, только и слышно здесь говно, там говно.
V>Даже нет у него в отличие от говнокода названия своего, там вареньекод, медокод.
V>Если знаете какой-нибудь опенсорс или есть свой код в интернете пришлите ссылочку посмаковать, хоть раз взглянуть на это чудо которое не назовут говном.
Видел, в основном нормальный код, был так же код сваяный на скорую руку, тк пму/сейлзам/левойпятке/хзкому надо быстрее хуякхуяк(да простят меня модераторы) и в продакшн. Но так чтобы совсем говнокод, да весь проект/продукт — ни разу.
Здравствуйте, consign, Вы писали:
L>>И правильно не дадут, потому что знают, что "день" — это обычно где-то полгода
C>Не суди всех по себе
Делаешь просто: создаёшь проект, пишешь там всё заново. Через день если твой новый проект лучше, чем старый, то заменяешь.
Начальству говоришь, что работаешь над старым проектом.
Только ведь что-то пойдёт не так.
Здравствуйте, landerhigh, Вы писали:
DB>> либо в компаниях, куда стоит очередь 20 программистов на одно место.
L>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем.
Получается, такие компании держат ненужных программистов? Слава богу, есть еще в мире альтруизм, грязная зеленая бумажка еще не все умы зохавала.
Здравствуйте, landerhigh, Вы писали:
DB>> либо в компаниях, куда стоит очередь 20 программистов на одно место.
L>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем.
Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
mgu>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
Чтобы набрать хороших программистов, нужны хорошие деньги. А когда есть хорошие деньги, очереди сами выстраиваются. Невозможно написать такое объявление на большие деньги, чтобы шли только подходящие кандидаты.
Здравствуйте, landerhigh, Вы писали:
L>Здравствуйте, alpha21264, Вы писали:
A>>Почему обгадить-то? Кто наваял, тот и поддерживает — вполне нормальный подход, который применяется всегда и везде.
L>Не всегда и не везде. L>Более "везде" используется другой подход. "Наваял — сделай так, чтобы саппорт мог поддерживать".
Так тоже можно. Но в данном случае и это условие тоже не выполняется..
Здравствуйте, De-Bill, Вы писали:
mgu>>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди. В общем, какой стол, такой и стул какой отдел кадров, такие и работники.
DB>Чтобы набрать хороших программистов, нужны хорошие деньги.
Сплошь и рядом примеры, когда и за хорошие деньги нанимают чёрт знает кого. Так вот, хороший специалист (и кадровик в частности) -- это не тот, кто зазывает на хорошие деньги, а тот, кто сумеет нанять за плохие.
Ещё аналогия -- чтобы программа работала быстро, нужно мощное железо...
DB>А когда есть хорошие деньги, очереди сами выстраиваются. Невозможно написать такое объявление на большие деньги, чтобы шли только подходящие кандидаты.
У Паркинсона всё разжёвано. Да, и если есть хорошие деньги и запахнет очередью, то можно указывать меньшую зарплату. Неблагородно? Во всяком случае, это честнее, чем выдавать объявление без зарплаты, издеваться над толпами, и в конце концов выбрать того, кто лучше всех ответит на вопрос "сколько вы получали на прежнем месте работы?"
Здравствуйте, AlexRK, Вы писали:
L>>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем. ARK>Получается, такие компании держат ненужных программистов?
Они исповедуют подход — незаменимых у нас нет, мы просто не будем никого заменять
Здравствуйте, mgu, Вы писали:
L>>К сожалению, в компаниях, где водится действительно хороший код, никакой очереди нет. При уходе программиста его просто не заменяют. Незачем. mgu>Иногда есть зачем. Просто в компании, где пишут хороший ход, набирают подходящих программистов, а для этого составляют хорошие объявления о найме, которые исключают очереди.
Это в эльфландии, наверное.
А чаще всего им просто везет, что сквозь гномо-фильтр пролез человек, которому не пофиг, что он делает и который способен заражать своим непофигизмом окружающих.
Что характерно, это далеко не всегда идет на пользу собственно данному конкретному инженеру.
Здравствуйте, De-Bill, Вы писали:
C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку?
DB>Опытные программисты понимают, что практически любой промышленный код — полное говно, и что надо всё переписывать. Но это стоит дороже, чем поддерживать.
Ааа... вспомнил историю из жизни
Было это уже 13 лет назад (охренеть как много) — в 2003 году. Работал я в компании одной с у нее был флагманский продукт (у которого сотни клиентов, который разрабатывался 10 лет и содержит куски на делфи, с++, кучу оракловых процедур и т.п.) на .Net'е! И вот там появился сеньер dotnet'чик который на все это посмотрел, сказал что все это говнокод и в идеале все надо переписать. Гендир ему поверил и открыл большой проект по переписыванию флагманского продукта на dotNet.
Наняли команду толковых c# кодеров, написали ТЗ. И вот задача была переписать продукт. dotNet'чики радостно заявили что за 6 месяцев все перепишут, и еще за 6 — все отладят, сделают необходимые вспомогательные модули и продукт можно будет продавать.
Угадай, что было дальше?
В 2006 они сделали первый работающий прототип. (3 года прошло)
В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
Что же имеем сейчас, по прошествии 13 лет с момента решения "переписать продукт"? Компания продолжает успешный бизнес со своим флагманским продуктом (тем самым, который на делфи, c++, и оракловых процедурах).
Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
Здравствуйте, consign, Вы писали:
C>И снова мне подкинули проект "совсем немного доработать". C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули. C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее. C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь. C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.
C>Теперь сижу, не могу определиться — ржать или плакать. C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Если выделенное болдом верно, весь функционал ложится в одну-две функции. Плюс парсинг конфига, который можно зареюзать. (Подозреваю, на него приходится изрядная доля имеющегося кода). Можно написать эту функцию(ции) сбоку и передавать управление ей, а вызовы имеющегося кода закомментировать. Когда наглядно будет видно, что за месяц (полгода, год и т.д.) мегабайты кода не понадобились ни разу, их можно взять и выкинуть. Если окажется, что они решали реальную проблему, значит это не говнокод, можно откатиться к исходному состоянию. А если начнутся тупые наезды по поводу замены тихой сапой, всегда можно сказать, что это был временный костыль на период освоения сложного проекта, в крайнем случае, получите немного по голове.
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>#define _15_ 15
Ой, да ладно... ещё терпимо. Я видал такое:
public class Constants
{
public static final int ONE = 1;
public static final int TWO = 2;
public static final int THREE = 3;
...
public static final int FIFTEEN = 15;
...
}
И всё потому, что правильно поставленный процесс разработки — запускается checkstyle и ругается на magic constant.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, sharpcoder, Вы писали:
S>В 2006 они сделали первый работающий прототип. (3 года прошло) S>В 2008 прототип так и не начал стабильно работать (всего 5 лет прошло), и проект закрыли!
S>Что же имеем сейчас, по прошествии 13 лет с момента решения "переписать продукт"? Компания продолжает успешный бизнес со своим флагманским продуктом (тем самым, который на делфи, c++, и оракловых процедурах).
S>Гендир там был веселый человек. Помню как он сказал в момент получения работающего прототипа "поздравляю всех вас с тем, что вы научились использовать современные технологии"
А как сложилась судьба вдохновителя переписывания? Ушёл на повышение?
A>Конечно, каждый день его пишу. Да и разве может свой код быть плохим? Конечно нет, иначе зачем всякий новый участник проекта старается все переписать с нуля?
Своё говно не пахнет?(с)
"For every complex problem, there is a solution that is simple, neat,
and wrong."