Why your software will get worse
Friday, September 19th, 2008I keep tabs on the FOSS offerings in a casual way. It’s always interesting to see new projects, new intentions and money being put into software. Take a wider angle with me for a moment. Do we really need it all? Allow me to argue that these intentions are misplaced, and that most software gets worse for a very specific reason.
Axiom: Complexity for the user invites simple competitors
That’s the part that is important. However, the second part could read “those competitors will soon make their user experience complex”. There is more than one thing becoming complex in older software: the user experience and the code. The main reason we train in software engineering is to keep complexity controlled. Complexity, if not controlled, is confusion. So if a user, or an engineer is working with software, and they don’t feel in control of the core functionality of it, they might move on, or companies might re-do the effort to compete with it.
Starting is sexy. Building on a legacy, not.
The company, or individual says to themselves “Why not create this software better”, rather than purchasing/using existing code, and going on from there. Starting, that’s sexy. Remember when you first fell in love? Nothing like it! Until you do it again, right? Taking an old piece of software that does everything you want, just not the way you want, that’ not sexy.
Want proof? Take a look at SourceForge, and the available content management systems written in PHP. See, the user experience of every one on there is really bad, OR, it is quite easy to use, but doesn’t have any power. Think of the reason for this: A single author gets inspired to create a new CMS (because, that’s just sexy and fun), because they think they can do it better. In fact, their thoughts on how to do it better are most likely an improvement over the system in question. So they create it, know it in an out, and it turns out, most likely, alright to lame. We haven’t touched on the problem yet!
Collaborative will and enthusiasm is killed by confusing software
When the next fellow comes along to help with the system, that might work, if they can grasp it quickly. If the system is overly complex, they might create their own system from scratch, just to avoid a confusing experience.
The other part of the problem:
Without a nagging champion for simplicity on your team, software will evolve into a confusing experience
We know that creating software is by nature complex. Also, creating simple, and powerful user experience requires very complex software. Now we have two things going against us: The inherent complexity of software engineering, and, the complexity of engineering it to be simple for the user. Wait, let’s add a third! The complexity of creating a intuitive, and understandable experience for the programmer. That will keep the program moving forward into the future. Build opposite, and all your programmers will treat you like a mean dictator until you allow them to rewrite it.
The answer to the problems above, well, those are tricky I think, and I couldn’t fully answer them. However, if we are looking out for the problems, that’s a good start. We seldom see companies that are willing to invest properly into achieving simplicity. I hope to be one of those.


