Отсутствие тд ни как не повлияло на замес в 4к игроков и их было внезапно больше чем после всех бустов производительности серверов, время идет, прогресса нету, ТД костыль ибо наилучшие специалисты в ССР не умеют в оптимизацию кода, распаралеливание процессов, просто тыкаем костыль да такой который ограничивает игроков их не желанием лагать пол дня, да еще и железо разгружает в обмен на жопочасы пользователей, это как написать программу калькулятор, но тригонометрические функции заставить считать пользователя в ручную, как еще проще описать подход нынешних программистов к разработке ПО я хз.
Сразу видно юного, инициативного, энергичного девелопера. Такие, на словах горы сворачивают. Всё знают, всё напишут жутко параллельно, гибко, расширяемо.
Да что там на словах, если им дать задачу с нуля, они действительно напишут лучший для своего уровня код. Вообще все девелоперы с нуля пишут хороший для своего уровня код. Это не сложно. Другое дело, когда их садишь на поддержку старого проекта. Который писало несколько волн разработчиков.
Если у первой волны была какая-то общая картинка в голове, то следующая пишет, зачастую, разбираясь только в коде на своём пятачке, а общая картинка у них, как в тумане, и постепенно заменяется на свою, идеальную, как оно должно быть. К ней они и тянут весь код. Забавно, что у разных новичков в голове образуются разные идеалы, и они как лебедь рак и щука растягивают код, архитектуру и стиль проекта в разные стороны, порой несовместимые.
Следующие волны приходят и уже совсем не понимают что это и куда, так как общей единобразной картинки уже просто не существует. Тут уже только свой пятачок, а всё остальное - legacy код, который трогать нельзя, так как "коробка с чудесами".
А ещё у старых проектов обычно нет TDD/BDD тестов. Потому что тогда это было не модно. Так что о рефакторинге можно забыть навсегда. А ещё есть ошибки, которые заложили в самый фундамент, который уже никогда не исправить в старых проектах. Потому что весь код должен был писаться в другой парадигме.
А писать новый проект параллельно нет смысла, ибо новый код под старую базу вынужден наследовать старые архитектурные решения. И писать полностью новый, это всё равно что создавать конкурента самому себе.
И мой опыт говорит что невозможно написать решение которое бы не скатилось в этот legacy код через 2-3 года. Как бы идеально оно не выглядело вначале, потом придут другие, или поумнеют старички, и они дружно всё "исправят".
И ещё, опять же из моего опыта, такое решение как Eve Online надо переписывать на лету, а это как пересобрать шестёрку в тойоту на ходу. Надо рисовать будущую архитектуру, сравнивать с текущей в мелочах, писать многолетний план миграции, разбивать его на шаги и переписывать подсистему за подсистемой каждый раз сохраняя совместимость со старыми модулями. Тот же brain in the box как раз яркий пример того, что именно это и происходит. Переписывание на ходу. В конце-концов, правда, всё равно всё устареет.
Ах да, к чему это я. Хорошее ПО бывает только в головах юных девелоперов. В реальности такого нет. Есть бесконечное движение от плохого и старого к приемлемому. Когда набирается критическая масса эморейджнутых новичков они могут начать писать с нуля "идеал", потом, конечно, свалят на пол пути, и когда "идеал" допишут другие, окажется что это не "идеал" а старье, и опять начнётся движение от плохого к приемлемому.
Это всегда так. Всееегдаа. И Стар ситизен это ждет. И любой другой проект. Ева, как 10+ летний проект, ещё хорошо развивается, я вам скажу. И хорошо работает.
Сообщение отредактировал хомосапиенс: 16 October 2015 - 0:02