Why Is This IT Project So Expensive?
June 4, 2004 (Computerworld)
It never ceases to amaze me. A company will start a new software project only to find out that it will be much more expensive and take a lot longer than expected. Or a huge IT project is needed to add or discontinue a product or change pricing.
Why? Because years earlier, the software wasn't designed with the future in mind and wasn't designed for any flexibility -- it was hard-coded to handle only the current business environment. True, when systems are written, it's not known what the future holds -- what bank accounts will be opened or what products will be added, changed or discontinued. However, it seems like most software products are designed with the assumption that the business environment and/or the world around us won't be changing.
For example, a few years ago, I was involved in a project to change an accounting system to interact with a different bank and different bank accounts. It should have been an easy task to change the banking information -- via a control card, a preferences file or some other user-maintainable mechanism. Unfortunately, to my surprise, the software handled only certain hard-coded bank accounts. That meant extra programming and testing time we didn't expect.
Why was the software designed this way? How many other systems were designed without thinking about the future? How much time and money is wasted each year by organizations on projects like this one? Why do organizations settle for software that is hard to change and adapt to easily foreseeable events, such as changing banks; adding products, companies or regions; or changing report headings?
Software products should be designed for maximum uncertainty. Why? Because in business, nothing ever stays the same for very long. The world is much more competitive now, requiring our software systems to be more flexible than ever before. The above-mentioned software should have been designed or enhanced to interact with any user-definable banks and bank accounts, requiring no programming changes when banking relationships change.
IT project managers and software designers need to think ahead and design systems that will work in a constantly changing business world. I'm convinced that at least 50% of all IT projects wouldn't be needed if the original software designers and/or developers had been a little more forward-thinking and asked themselves the following questions when designing the software:
Will this software need programming changes if
- Business conditions change?
- Business partners change?
- Economic conditions change?
- Vendor relationships change?
- Banking relationships change?
- Products or services are added, changed or discontinued?
- Business activity increases or decreases dramatically?
- The timing of how quickly information is needed changes?
- The source or destination of information changes?
By asking these types of questions, software designers can uncover some of the potential situations they should want their software to handle without requiring expensive and time-consuming programming changes. By spending a little more time thinking about what might be needed in the future, we in IT can be of greater value to our organizations. We can deliver software systems that are more flexible and able to handle more of what the future brings to our organizations.
In the meantime, I'll be busy planning that new six-month IT project to change some report headings.