As someone who has worked almost my entire career in
technology with consulting firms that specialize in software implementations,
I’ve seen a number of approaches in creating software. Some companies have only
a vague idea what they want to implement, while others know exactly what they
want to implement and how they want it done. The most painful implementations
almost invariably come from companies that have a software platform in mind,
but only have a vague idea how that software will solve their problem.
The most extreme example I’ve seen of this came a few years ago. One firm I was working with wanted to create a web site that would showcase
their products to their resellers. They had decided that they wanted to go with
a leading Content Management System provider and had already bought a license
when they came to use for implementation. Unfortunately, we had to bend that
CMS almost to the point of breakage in order for the system to function when we
could have gotten the same functionality out of an e-commerce system with lower
costs and less frustration on everyone’s part.
How do you get around this problem? First, each and every
software project that you expect to be successful needs to start with a
thorough understanding of the business problem at hand. Know what your users
want to accomplish and their general skill level. Find out the root cause of
the problem at hand, don’t just address the symptoms. Give some serious thought
into how the usage of the application might grow as your company grows.
Next, design a solution that solves the business problem and
meets the user’s needs. Very likely this solution will include new software,
but if you designed the solution right, very likely part of this solution will have nothing to do with this new software. You may find
that you need a new training system, a new feedback mechanism, etc. along with
your new software. Always keep in mind that you are designing a solution to a
business problem and don’t limit yourself to what can be done with computers.
Finally, once you’ve done the work, you are finally able to
choose a software platform that best fits your needs. To do so before you’ve
gathered your business requirements almost always results in, at best, a sub-optimal solution.