ASP.NET Security Consultant

I'm an author, speaker, and generally a the-way-we've-always-done-it-sucks security guy who specializes in web technologies and ASP.NET.

I'm a bit of a health nut too, having lost 50 pounds in 2019 and 2020. Check out my blog for weight loss tips!

Why you shouldn't pick your software before you design the solution

Published on: 2013-05-16

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.

This article was originally posted here and may have been edited for clarity.