Defining what great software is, is not a complex endeavor. I prefer to boil it down into two distinct characteristics.
a) Ease of Use
The software solution walks you gently through the process of solving your problems as intended. No distractions, no unnecessary decisions to make, no confusions, always heading towards the goal. In short : A great user experience.
b) Quality of Craft
Quality of Craft means that the software solution is easy to maintain, it’s easy to modify so that it’s always accurate in solving the ever changing problems it’s going after (and by that I don’t just mean in configuration, but easy to change the code of), it’s easy to move about (i.e. from server to server), it performs great, it responds immediately when interacted with and it scales, or can be modified to scale, in order to handle the traffic it will attract.
Photo by toffiloff
Isn’t that an intuitive definition?
The definition is common sense in software product development.
Perhaps a “Software Product 101” should start out with such a definition.
Thus, we should assume that everyone get’s this nailed down from the start, or through a little experience, no?
I’m sorry to report that surprisingly few players in the industry is able to see this.
And even fewer is able to execute it.
It’s always either or, never both. The tendency is quite prominent.
It seems as start-ups create great solution accuracy and a good user experience using customer oriented developmentmethods, and in general a lean start-up methodology. Growth, however, turns them in the direction of stability and the need for predictability. Sadly this usually leads to a loss of the qualities in a) in favor of a few of the more stabilizing qualities in b).
As much as I agree that as a start-up turns into an enterprise, the need for operations stability and predictable performance increase. I do not, however, believe that this is achieved best by sacrificing the ability to adapt and to keep the software usable and accurate.
I believe that while sacrificing qualities in a) might seem to be the easiest path, it is not the only path, not to mention that it in no way is the right path.
I am part of a small, growing, start-up company, and we’re focusing our resources at keeping on the right path, maintaining the agility of a start-up, and the stability and predictability of an enterprise. It is possible — this path exists.
It’s hard to find. But we’ll find it, or die trying.
- A post about buildings (and software quality).