Software Development: Plan to Succeed, Don’t Plan to Fail!

Custom Software February 12th, 2008

If you're new here, you may want to subscribe to my RSS feed. Thanks for visiting!

When you use the term architect, most people think of people who design buildings or maybe even bridges, but most people don’t think of software. It seems perfectly natural to pay someone a considerable sum to create plans for you new home or office building so why not for the software that runs your business?

All to often organizations large and small believe that software design “Architecture” is a waste of time. It’s so much easier to hire some developers, give them a brief description of what you want and throw them in a room to start coding. Oh, and we can’t forget the age old question “How long is this going to take?”. I love this question.

If you build DVD players, do you think you could tell me how long it is going to take to build one. What if I told you I wanted it to have fast forward, fast rewind and a remote control? Still no? Why? Because you don’t know what your building because I have only told you the most basic, and obvious features. So we clarify some and I want language choice, parental lock, random play and I want it to play my audio CD. So let’s get started and I’ll see you next week to check on your progress.

Next week, we meet and you show me your progress. You have the major components in place and should have it finished by the end of the week. Great news! And then I ask “So, where is the digital video and surround sound output?”. Your heart sinks and you exclaim “You didn’t ask for that!”. But isn’t that a normal feature? Maybe, maybe not. It’s easy to understand that a change to digital video and surround sound will not be easy and cause you to change hardware components. It’s not so easy to understand when the same scenario happens with software. It’s just not as evident.

More often than not, custom software projects are late, over budget and do not meet the requirements. In the DVD example, who is at fault? Did I not tell you what I wanted or did you, as the knowledge expert, not ask enough questions? Usually, it’s some of both, but mostly the developer for not leading the process and managing expectations.

Good design begins with good communication. To “Architect” a successful software solution, everyone must agree upon what is being created. We accomplish this by a few simple steps.

1. Scope of Work - What is the problem to be solved and, at a high level, how do we plan on solving it. What is the purpose of the application. What are the high level goals. What general features need to be included.

2. Requirements - This is a detailed breakdown of the solution including form designs, reports and business rules. What internal business processes and calculations are required. What steps are required to complete a specific process. Architecture provides a well thought out design.

3. Project plan- This is a critical piece of the puzzle which defines responsibilities, Use Cases, deliverables and delivery dates. It will also define procedures for tracking issues during development and testing as well as change control procedures.

You will not get all the questions answered. The users will not be able to think of everything they need, but if you can define 70% of the project up front, your chances of success are greatly increased.

Looking at it from the point of view of someone considering custom development as a solution, how important is design to you?

——————————————————————

Carter Software solutions provides custom technology solutions to solve business problems.

www.carterss.com

Leave a Reply