I developed a Ruby on Rails web portal for a client a few years back. This was a large project that took me and another developer about a year for version 1, then maintained and added to it for 3 years. The project was becoming very large and we felt the client needed more dedicated help than just me maintaining it after my normal work hours, so we recommended they transition to a larger company to maintain their portal. They decided to go with an offshore company that I had a connection to. This transition was pretty smooth and they were able to handle every project thrown at them… until now.
The client tasked this company with a rather large project that they, in my opinion, made a pretty big design mistake while trying to implement it. Basically, the client wanted a second half of the portal that a user can flip back and forth between, that houses different data and different design colors. The developers decided to duplicate the database, and every table in it except for the users table. They also then duplicated every model (except users) and almost every controller and view. In the end, they were unable to comprehend what the client wanted and could not finish the project. They developed 80% of the project before the client came to me asking me to finish the project.
Now I am faced with a decision, and this is where I need advice. I know it’s hard to give advice without seeing the application and knowing the project, but assume I am right and it was unnecessary to duplicate almost all of the code in project. I know the better solution would be to not create a second database and duplicate all of the models, controllers, and views. The “two halves” of the portal are extremely similar, and to continue would mean implementing all new features twice (once in the original portal files, and once in the duplicated other half of the files).
The question: Should I continue developing the way the system was built? Or should I salvage what I can while de-duplicating everything and building it the right way?
I have a very good relationship with the client. I have explained to them the situation and suggested to move forward the way it is, highlighting the fact that it would be easier to make the two halves of the portal different in the future, but a little bit tougher to add features that affect both halves. The client responded in good spirits letting me know that they would allow me to rebuild it if I thought that was the best route instead of moving forward.
Quote from Client: “… Second, I trust your judgement here so feel that I need to ask the golden question. Do you think we should start over on this and build everything out of the one, original [portal] database? If so, how far from a time perspective would something like that set us back and would you be willing to take that on? I know that’s tough to gauge, but I would rather do this the right way now while it’s still early vs. a few years from now running into lots of issues, wishing we would have done it a different way.”
I appreciate any advice on this. Right now I’m leaning toward rebuilding it but I don’t want to charge the client a decent amount more money to do this if it’s not necessary. I’m not overreacting by wanting to redo this, am I?