top of page
Nik Stoltzfus

Good Software... Few Users. Why?

It happens to the best of us. In our darkest hours, with the weight of decisions and deadlines looming, we conclude that if we just had the right app or platform, our problems would be solved. We search, we demo, we pivot, and when we come up short, we incorrectly conclude that the fault lies in the software's limitations or complexity. My name is Nik, and I am a recovering Serial Software Switcher. And I also write software. I should know better.


The problem with the scenario above is that the time to select the right software for a job is not when you’re under pressure. Out of the box, very few applications are a perfect fit, and expecting them to be is a recipe for disappointment.


Digging deeper, the challenge is that good software should feel simple. This is the dream promised by every software sales rep you've ever encountered. But the value of software is that it takes complex business problems and simplifies them so that users can work accurately, safely, and efficiently. It sounds simple, but achieving this is anything but simple.


The secret lies in two software concepts: abstraction and configuration. Software designed to be used by more than a single user needs to be adaptable. We abstract the design so that it can be configured to meet many needs of a myriad of scenarios.


Abstraction allows us to create software that meets the needs of multiple companies without being overly prescriptive. An oversimplification of this concept is that Company A needs to describe its products as "Widgets," but Company B requires "Gizmos." Similarly, if Company X wants to organize users by "Regions," but Company Z must use "Divisions," a decent software application should support this.


Configuration takes the raw abstraction of a software package and tailors it to suit specific needs. Depending on the complexity of the problem that the software is helping solve, this can be a time-consuming, iterative process.


The best relationships between software providers and customers are supported by open communication loops. These loops ensure that the providers are aware of challenges faced by their users and are able to provide immediate support and solutions, as well as iterate on improvements in future releases. This takes time, energy and attention, but is a necessary process… and one that will pay dividends over the life of your software investment.

bottom of page