Вот, на мой взгляд, блестящее описание проблемы. Ссылка сейчас недоступна, поэтому цитирую
Г е н е р а л ь н ы й (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!
…спустя три недели новые специалисты сидят на рабочих местах и изучают проект.
J u n i o r d e v e l o p e r (про себя). Как тут все сложно… Жизни не хватит чтобы понять как все это работает… Меня наверно уволят…
S e n i o r d e v e l o p e r (громко и недовольно). Кто учил этих мудаков программировать?!! Нет, ну вы посмотрите что они тут пишут!
Г л а в н ы й а р х и т е к т о р (задумчиво). Если бы это была лошадь, я бы посоветовал ее пристрелить…
T e a m l e a d e r (нервно). Спокойно, мужики. Заказчик хочет чтобы мы просто кое-что тут дописали. Оставим все как есть, просто доделаем то, что требуется.
P r o j e c t m a n a g e r (обращаясь к разработчикам). Проект конечно тяжелый, но мы ведь справимся! Тем более мы будем вести разработку по самой лучшей методологии! Нам поможет XP! Scrum! TDD! (нужное подчеркнуть).
Г л а в н ы й а р х и т е к т о р (поймав project manager-а в курилке). Ты ведь понимаешь, что проект уже бьется в предсмертных конвульсиях. Его нужно полностью переписать.
P r o j e c t m a n a g e r (Главному архитектору). Да все я понимаю, только кто мне это позволит? Знаешь сколько уже потрачено бабла на этот проект? Попробуй объяснить генеральному, что нужно все переделать, я посмотрю насколько быстро ты отыщешь живописное местечко под названием «нах#й».
P r o j e c t m a n a g e r (Оставшись один в курилке, глядя в окно). Вот начнем мы писать проект заново. И облажаемся. Я же во всем виноват буду, с меня же шкуру спустят. Ну его нафиг. А так, если сроки и завалим, то я всегда смогу свалить все на то, что проект уже был полным говном, когда достался нам.
…спустя полгода.
Г е н е р а л ь н ы й (в отдел кадров). Уволить этих бездарей! Найдите мне нормальных специалистов!
Остроумно, но вызывает сомнения "нужно полностью переписать". Как архитектор себе это представляет? Создадим новый, чистый проект и ... что? Откуда новые программисты возьмут имеющийся ф-ционал, о котором имеют слабое понятие (если вообще имеют)? Охаять сделанное и предложить "все с нуля" много ума не надо. Хрен это с бугра, а не архитектор.
Я считаю "прогнуться" под существующий проект придется. Сначала надо научиться делать то что уже делали. Да, это часто будет уродливо, кол-во говнокода будет расти, по крайней мере некоторое время. Хорошо, допустим этот этап пройден. С чего мы начнем реальное переписывание? И как бум переписывать?