Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What questions should I ask when trying to determine if a system should be redeveloped?

Tags:

architecture

I've been involved in the assessing whether a number of our systems need to be rewritten from the ground up or if they should be partially rewritten, or if they should just continue as is with patches on top.

In order to better assess the situation I was wondering what questions I should be asking myself and others to help determine the appropriate action to take?

like image 399
lomaxx Avatar asked Mar 17 '09 22:03

lomaxx


People also ask

What are examples of processing questions?

' Process questions require more thought and analysis and/or a sharing of opinion. Examples include, 'What skills can you bring to this organisation that the other applicants cannot? ' or 'What are the advantages and disadvantages of asking leading questions to children?


2 Answers

I'd recommend you read Things You Should Never Do, Part I. He makes a strong case for not redeveloping.

Money quote:

It's important to remember that when you start from scratch there is absolutely no reason to believe that you are going to do a better job than you did the first time. First of all, you probably don't even have the same programming team that worked on version one, so you don't actually have "more experience". You're just going to make most of the old mistakes again, and introduce some new problems that weren't in the original version.

Perhaps you should ask yourself if you know the system well enough to fix the problems without re-writing it. If you don't, it might be safe to say you don't know the system well enough to redevelop it from the ground up.

like image 193
Ken Browning Avatar answered Oct 13 '22 19:10

Ken Browning


In general, I've found that re-writing code tends to be trouble (it is expensive, time-consuming, and involves a discovery phase that makes the first system look better).

That said, here are a few questions to ask:

  1. Would core refactoring suffice? You'll know from evaluating the system whether or not the central issues go deeper than the code. If the issues are in the code base (rather than the technology itself), I prefer refactoring.

  2. To what extent is the current system testable? Testability goes a long way toward extending the service life of any system module because testable code generally lends itself more readily to extension and maintainability. This relates to #1 as well.

  3. Lastly, would the value provided from a re-write justify the effort. This is a business question, certainly, but one that the developer can and should help make.

In most cases I've encountered, the answer was no.

like image 22
Lawrence P. Kelley Avatar answered Oct 13 '22 19:10

Lawrence P. Kelley