Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!


Не знаю, откуда авторы берут рассказы про проекты, в которых код либо изначально правильный, либо становится таким эволюционно. Не бывает таких.
Вася и Петя одновременно начали писать один и тот же продукт.
Вася был «ориентирован на результат» и начал сразу писать говнокод не продумав толком архитектуру. А Петя начал решение задачи с описания продукта со стороны пользователя, потом сделал тесты, и только потом начать писать. Писал не больше и не меньше, а ровно столько, чтобы все тесты прошлись.
Чтобы выйти на рынок раньше, Петя выделил необходимым минимум и сконцентрировался на нём, в то время как Вася говнокодил без плана в голове.
На удивление Васи, Петя вышел на рынок раньше. Во-первых, autotest сэкономил Пете дни, которые Вася тратит на ручное тестирование после каждого сохранения. А, во-вторых, упавшие тесты и незачёркнутые пункты в туду чётко показывали Пете где финиш. Поэтому он двигался намного быстрее, чем Вася, у которого постоянно то там, то там что-то отваливалось, света в конце тунеля не видно, и от того опускались руки и запускался контр-страйк.
Оба ошиблись в архитектуре, оба справились за одно и тоже время, только Петя просто переписал часть, а Вася приставил костыли, боясь регрессий (и всё равно две появилось, только он про них ещё не знает, потому что уже давно перестал охватывать весь код целиком).
Они вышли на рынок с небольшой разницей, несмотря на то, что Петин интерфейс был более продуманным и привлёк больше пользователей, оба не угадали, и пошел фидбек.
Петя стал просто переписывать куски и добавлять тесты, публикуя релизы раз в неделю. Вася стал достраивать костыли, потом месяц бороться с ошибками, потом ещё пару недель тестировать вручную. В результате чаще, чем раз в полгода, релизы не выходили. Пользователям это не понравилось.
Вот уже третий год Вася пытается начать заново, но всё ещё не может, потому что вся прибыль, которую приносит говнокод, уходит на его поддержку. Пользователи уходят. Наконец Вася бросил проект и ушел в маркетинг.
Нет, Вася не винит себя, он винит судьбу. Ну почему ему не попался тот «Петя», который перфекционист и идеалист, с которого все ржут? Почему ему попался практичный Петя, который с умом и в меру использовал известные практики, тем самым оставив говнокод Васи далеко позади?
Сразу скажу — не моя идея, в статье «Проектирования больше нет?» сам Мартин Фаулер писал об эволюционном рефакторинге.
У практик, с помощью которых осуществляется сглаживание, есть множество составляющих. В основе всех их лежит Тестирование и Непрерывная интеграция.
Затем мы делаем сводный отчет за час руками в phpЯ тоже раньше так делал, а потом открыл для себя сводные таблицы в Excel! На удивление «GROUP BY» в сводных таблицах в Excel во многих случаях работает даже быстрее, чем в MySQL.
Невозможно получить качественный продукт, постоянно экономя на качествеПока вы делаете качественный 3 года, конкуренты сделали «средненько» за год. Да много недовольных, но паровоз уже поехал. Через 3 года вы закончите первую итерацию, а ваш конкурент, делавший «ширпотреб» прошел уже 3 итерации, и бабок нарубил и клиента лучше понимает.
Но тратить золото (время программистов и других специалистов) на задачи, которые решает пластилиновый протип, имхо неверно.
мегасвязанный zend, когда ООП ради ООП, и на простые операции 100500 вызовов функций плюс сверхвысокая связанностьАвтор покусился на священную корову Zend Frameword, критиковать которую, во многих кругах считается опастной ересью. Но я с автором полностью согласен.
Почему-то часто встречаю альтернативы — сделать «неправильно и быстро» или «правильно и долго». На практике же это часто выглядит как сделать «неправильно и долго» или «правильно и быстро».
В итоге получилось быстрее, но хуже тестируется.Вы же не забыли прибавить время отлова багов в условиях отсутствия теста ко времени разработки?
И вот если все это посчитать, то может оказаться, что в итоге-то вышло дольше.
говнокод может быть приемлем только там, где он может быть локализован
У конкурентов начинается срач между ведущими, которым жалко менять спроектированное меню и две недели крутого правильного программирования, плюс у них замылен глаз. В итоге мы получили две недели времени.
Вопрос, сколько изменений можно вносить руками, чтобы это наконец стало затратным? Ответ: 234
1. Я в эти 10 минут включил и смену потока. Скопировать одну строчку и поменять два значения в новой строчке не занимает более 1й минуты работы
Зачем такие дорогие технологии используете? :)
Классическим решением является свой NuGet-репозиторий.
Потеря 2-3 минут единоразово не критична.
То-то вы выше на это жалуетесь, да.
А вот в вашем проекте сколько времени уйдет на передеплой старой версии с мелким изменением и ручным тестированием?
А вообще — в пределах 15 минут, из которых 10 — это пречекин и деплой
Ну вот видите: 10 минут. Никак ни одна минута
Я пишу код в измененном состоянии сознания, в своего рода трансе. Могу и просто писать, но эффективность во много раз ниже.
А я и не утверждал, что одна минута. Но по факту, как раз в 15 минут можно уложить правку и смену контекста.
А у вас 10 мин. + 5 мин. на переключение.
У вас сшилком быстро происходит переключение контекста, у большниства программистов займет значительно больше 5 минут.
Я для себя вывел формулу: не более 5 переключений в день.
Сочувствую вам. У меня переключений контекста в день десятки.
что человек реально за рабочий день не больше пяти раз отрывается от работы на что угодно
Так вот, я таких никогда (!) не видел.
Я могу повторить еще раз: я таких никогда не видел.
Сколько в среднем в день ваши коллеги решают задач (посмотрите выписку из Jira)
И не ставьте знак равенства между отвлечением на просмотр новостей/статей и выполнением работы.
А вот это как раз неверно. Потому что смена контекста-то происходит, просто вы отказываетесь ее признавать.
Но в момент отдыха я могу продолжать думать о прерванном деле и решать проблемы в фоновом режиме.
Просмотр новостей/статей — не отдых.
рутинная работа («добавить строчку в меню»), ничем не отличается от чтения статей на хабре по нагрузке на мозг
В итоге ваше «правило» обрастает таким количеством оговорок, что в практической жизни становится неприменимо.
Мой же критерий доверия остается очень простым и прямолинейным.
Доверия к утверждению «у большей части людей переключение занимает значительно больше времени».
Соцопрос бессмысленнен, потому что опирается на внутреннее предубеждение.
Я могу повторить еще раз: я таких никогда не видел.Бывает, исправил одну строчку и не можешь о ней забыть 30 минут.

В php примером является ранний мегасвязанный zend, когда ООП ради ООП
Говнокод или суперархитектура? Сначала говнокод, а потом эволюционный рефакторинг!