Upgrage-VS-Remake - Что предпочесть, если клиент хочет расширение функциональности

syfisher

TDD infected!!
Upgrage-VS-Remake - Что предпочесть, если клиент хочет расширение функциональности

Народ, поделитесь своим опытом вот в каком вопросе.

Допустим был клиент и мы ему сделали сайт. Сайт весьма сложный по функциональности, со всякими сервисами и т.д. Скажем так, технологический уровень выполненной работы нельзя считать идеальным :), так работа была выполнена задолго до того, как мы разработали хорошие практики. Можно даже предположить, что практики-то были хорошими, но проект был сделан на старой программной базе.

Через некоторое время (скажем год-полтора), клиент обращается с просьбой добавить на сайт еще пару-тройку улучшений. Все понимают, что за это время мы в технологическом плане ушли очень далеко. Допустим, что некоторые из тех сервисов, которые он хочет, уже реализованы в на новой программной базе, но интергрировать их со старой базой безболезненно не удастся.

Думаю, что ситуация понятна. Теперь собственно вопрос: что бы предпочтете, сделать полный remake старых сервисов и получить проект, который соответствует вашему текущему пониманию или же по-быстрому налабаете те сервисы, то есть сделаете маленький upgrade, чтобы удовлетворить на время клиента, хотя от старого кода вас будет корежить как от лимона?

Хотелось бы услышать ваши мнения насчет этого, а также реальные истории. На что вы обращаете внимание при принятии таких решений и все такое. Я понимаю, что многое зависит от того, придет ли клиент еще раз или нет, сложность требуемой функциональности и т.д.

От себя могу сказать, что мы пока практически всегда выбирали remake, так как на практике оказывается, что новый программный код значительно легче тестировать, а новые сервисы писать на порядок легче.

Ну как, поделитесь опытом?
 

MiRacLe

просто Чудо
главный вопрос - легко ли перенести данные старой схемы в новую?
если легко я предпочитаю делать "маленькую революцию" как раз в пользу того чтобы разбираться (добавлять и расширять функционал) в следующий раз было на порядок быстрее и легче
а если время переноса данных значительно больше чем на написания костыля-заплатки то "нехай будет костыль"

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

ChesterOne

Guest
Есть даже подходящая фраза:
"Эволюция против революции"
:)
 

IBSN

Новичок
было у меня пару подобных ситуаций, в первом случае переписал всё за копейки (стоимость дополнений), а уже во втором взял по полной.
 

syfisher

TDD infected!!
Автор оригинала: ChesterOne
Есть даже подходящая фраза:
"Эволюция против революции"
:)
Мне больше понравилось: костыли или заново учиться ходить, так как у меня не поворачивается язык назвать эволюцией написанние функционала на старой программной базе, от которой тебя воротит.

Про то, что деньги решают все, это я и так знаю. Мне хотелось бы послушать мнение разработчиков насчет так называемого legacy (старого для простоты) кода. Насколько они терпимо относятся к такому явлению. Согласны ли они ждать, когда проект загниет совсем, чтобы потом делать полный ремейк или же предпочитают поднимать проекты при первом удобном случае, даже если не известно, придет ли клиент за доработками или нет (а практика подсказывает, что обязательно придет).

Если кому интересно, вот ссылочка по теме (правда на буржуйском).
http://www.lastcraft.com/blog/index.php?p=2
 

neko

tеam neko
syfisher
во-первых у тебя противоречие:
> Допустим, что некоторые из тех сервисов, которые он хочет, уже
> реализованы в на новой программной базе, но интергрировать их
> со старой базой безболезненно не удастся.

но в то же время, ты пишешь

> или же по-быстрому налабаете те сервисы, то есть сделаете
> маленький upgrade, чтобы удовлетворить на время клиента,
> хотя от старого кода вас будет корежить как от лимона

тут как бы надо решить
либо это безболезненно, либо нет

о себе:
легаси код, поддерживается только тогда
когда заплачено за его поддержку

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

syfisher

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

легаси код, поддерживается только тогда
когда заплачено за его поддержку
То, есть если клиент пришел через год, вы говорите, что все нужно оплачивать по полной еще раз? Ведь та функциональность, которая была ранее сделана для его проекта - уникальна.

Упростим. Допустим, у вас была CMS верси 1.0. Через год вы пришли к версии 2.0. То, что было сделано для 2.0 несовместимо с 1.0. Клиент хочет довольно значительных доработок в 1.0. Ваши действия?

Да, кстати, никто не читал вот эту книгу?
"Working Effectively with Legacy Code" by Michael Feathers. Может у кого отзывы есть?
 

Макс

Старожил PHPClub
на самом деле вопрос должен быть поставлен так :
как убедить заказчика заплатить за REMAKE проекта ?
 

neko

tеam neko
незнаю
у меня такого не было
никогда не было
либо он вообще не приходит, либо он приходит уже через 2 недели
и потом еще, еще
и это означает, что на поддержку есть деньги
и пока это продолжается, идет работа со старым кодом и все изменения происходят постепенно.

кроме того, на проектах со сложным функционалом, от которых ожидается отдача, всегда обсуждается вопрос бюджета на сопровождение
как правило, если покупатель хочет вбухнуть N тыс., но после этого предпологает что все дальше его будет всегда устраивать, то он либо переубеждается либо уходит
это и есть оплаченная поддержка

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

> Да, кстати, никто не читал вот эту книгу?
> "Working Effectively with Legacy Code" by Michael Feathers.

нечитал
стоит взять?

-~{}~ 25.02.05 16:20:

хотя опять таки это все у всех afaik по разному
у нас есть более-менее четкая система оценки трудозатрат (читай времени)
и от этого пляшет все остальное

поэтому тут никто никого не обманывает
можно потратить время на старый код, можно переделать под новый
на все есть цена

но, дело в том, что я не продаю никаких, cms 1.0
я продаю свое время
 

syfisher

TDD infected!!
Автор оригинала: Макс
на самом деле вопрос должен быть поставлен так :
как убедить заказчика заплатить за REMAKE проекта ?
Нет, вопрос был с точки зрения девелопера. Про менеждеров и так все понятно...

-~{}~ 25.02.05 16:25:

neko
Спасибо за ответ!

"Working Effectively with Legacy Code" by Michael Feathers. - говорят, что нормальная. Надо будет найти...

-~{}~ 25.02.05 16:30:

Я, наверное, кислое с красным перепутал. Как обычно :).

Или вопрос неправильно поставил.

Если у кого будут другие мнения - добро пожаловать. А так, можно тему закрывать.
 
Сверху