Knowing When It Is Time To Start Over


Perhaps you have been in IT for a long time or perhaps you are just getting started.  In either case, one of the hardest things to learn is knowing when to start over.  If you have been in the business for any reasonable amount of time, you probably had the misfortune to take over someone else’s project after they left the organization.  Maybe they left on their own.  Maybe they did not.  Maybe the application was written by a consultant who came in and just took the money and ran as soon as the last line of code was committed. Maybe the code has been all yours from the very beginning but due to a lack of planning, the software tends to meander around with a lot of excess code, obsolete routines, and poorly written code.  Maybe it is not your fault.  Maybe the client could not make up their mind about what they wanted and had you re-writing the same modules over and over with different changes.  Maybe the code was well written in a language that is no longer available or multiple versions behind the current release and even though you have the source code, there is no way to compile this old code using modern language compilers without substantial changes.

All of these scenarios and probably more should make you stop and at least consider whether it is a good time to abandon the old system and start anew.  This is often not an easy decision especially when management uses the argument that they cannot afford to abandon the old system because they stuck so much money into that system, that they would look foolish to just walk away from it.  However, they may look just as foolish if they continue to throw good money after a system that  may not be worth salvaging in the first place.  The point I want you to consider is that any decision should not be based on what has happened in the past, on how much money was spent on a system that is now floundering, or on personalities that may have been involved in that project.  The decision must be based solely on the current value of all future costs of each possible project path into the future.

Suppose you had a program that was costing you $12,000 a year to maintain this year, but the cost of contracted labor to support that program is expected to go up by 5% a year for the 10 years of the project’s expected life.  Suppose that instead of maintaining the existing application, you could totally rewrite the application for $100,000 and that it would be ready in 1 year.  You would still have to contract for support for the old program for the first year for $12,000.  However, your expected support cost for the new application would be only $2,000 per year with an expected annual increase in cost of only 2.5% because the new system is written in a very common program language for which there is a large number of developers available for hire.  Which project would you choose?

One way to determine the answer to this problem is to calculate the workflows for some amount of time.  The following table shows a project with an expected 10 year life.

 Project 1

 Project 2

Year

 Annual Cost  Annual Cost

1

 $     12,000.00  $   112,000.00

2

 $       12,600.00  $          2,000.00

3

 $     13,230.00  $        2,050.00

4

 $       13,891.50  $          2,101.25

5

 $     14,586.08  $        2,153.78

6

 $       15,315.38  $          2,207.63

7

 $     16,081.15  $        2,262.82

8

 $       16,885.21  $          2,319.39

9

 $     17,729.47  $        2,377.37

10

 $       18,615.94  $          2,436.81

You could just add up the cost for the first 10 years to see which has the lowest overall cost.  That would be ok if your money had no other potential for gain.  However, that probably is not true.  At the very least, you invest in some money markets or government guaranteed bonds to earn at least 3%.  Therefore what you really need to do is to discount those future costs using the opportunity cost of money (what you could earn from some other investment).   This is called calculating the present value of each annual cost value.  Summing these up over the life of the project results in the net present value (NPV) of the cash flow stream.

Now if we had a project that was making money, we would probably look which project option would result in the highest NPV.  However, because we are dealing with costs displayed as positive numbers, we want the project with the smallest NPV cost.  (Of course, to be proper, we probably should display all costs as negative values.  In that case, we still would want the largest value or the closest to zero when both projects have a negative NPV.)

The following table shows the addition of a Present Value column for each project along with a sum of all the present values at the bottom of the table.

 Project 1

 Project 2

Year

 Annual Cost  Present Value  Annual Cost  Present Value

1

 $     12,000.00  $          12,000.00  $   112,000.00  $       112,000.00

2

 $       12,600.00  $            12,233.01  $          2,000.00  $              1,941.75

3

 $     13,230.00  $          12,470.54  $        2,050.00  $            1,932.32

4

 $       13,891.50  $            12,712.69  $          2,101.25  $              1,922.94

5

 $     14,586.08  $          12,959.54  $        2,153.78  $            1,913.61

6

 $       15,315.38  $            13,211.18  $          2,207.63  $              1,904.32

7

 $     16,081.15  $          13,467.71  $        2,262.82  $            1,895.07

8

 $       16,885.21  $            13,729.22  $          2,319.39  $              1,885.87

9

 $     17,729.47  $          13,995.80  $        2,377.37  $            1,876.72

10

 $       18,615.94  $            14,267.57  $          2,436.81  $              1,867.61
 $       131,047.26  $       129,140.21

In this case, it actually will cost us less over a ten year period if we spend $100,000 today to rewrite the application and thus reduce the annual support costs than to continue to support the old system at its higher annual cost.

While this was a simple exercise to show you the basic concepts of how to determine when or if it is time to throw out an existing application and begin a new one, the concepts apply no matter now complex the cost structure may be.  The key is to not get distracted by the money spent in the past on an application.  That cost is not recoverable no matter what you do.  In economic terms, that is called a Sunk Cost.  Therefore, keep your eyes on what is important, the future and let only the future costs and benefits guide your decision.

Why is this the Tuesday rant?  Too many times I have read stories of companies and management who become so caught up in the money spent in the past for a project, that they refuse to consider the possibility that it may be time to cut their losses and try something else.  As a programmer, deciding to start over is almost like admitting defeat which is definitely not the nature of most programmers.  Do you know any cases where starting over can help you or your organization?

C’ya next time.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s