If there's one thing we like to talk about on this blog, it's great software. But unfortunately most software isn't great. Most software is overwhelmingly mediocre. The world has an abundance of great programmers and graphic designers. Put them together and you should end up with awesome software, right? Well, apparently that's not quite how it works. In this post, I want to examine why talented designers and talented developers often combine to make really crappy software.
There's not one all encompassing reason for the lack of truly great software, but I think the major issue is that the people creating software aren't good consumers. There are many different programs used to create software. From designing mockups, to writing code, to managing databases, everything is done with the help of software, and the products used by designers and developers are without a doubt the worst types of software I've ever seen.
Let me repeat that: The most consistently terrible category of software is the kind used by the creators of software. Despite their incredible understanding of how software works, programmers and designers can't even build good tools for themselves. How can we possibly expect them to build anything decent for the average user?
You may be interested in some specific examples of really bad software that many designers and developers rely on. Ok, here goes: Adobe Photoshop, Adobe Illustrator, Eclipse, Netbeans, Emacs, vi, PHPMyAdmin, SQLYog, Subversion, Git, and pretty much anything else software creators regularly use. If you're familiar with any of the programs I just mentioned, you might be thinking to yourself, "But Tyler, I use ______ and it works just fine." If you're thinking that, you're right. All of those programs work. They are all capable of performing their intended functions, but not a single one of those programs takes the next step. The step from functional to acceptable (which is about five steps short of great).
All of these programs I've mentioned are complicated. They have annoying quirks and unresolved bugs. They've had the same clunky user interfaces since the 90's, and they weren't even good in the 90's. They're hard to learn and hard to use, but they're functional. And that's the problem. Programmers are good enough with computers that they don't need simplicity. When there are problems, they can find workarounds. They don't demand great software because they don't need great software. Unfortunately this also means that they don't know how to build great software.
So this is a call to programmers and designers out there. We all need to do two things. 1) Start expecting better software. I want better version control, better code editors, better database managers, and better design tools. I'm willing to pay for all of those things, and there will come a time when I'll build them myself if no one else will. 2) We need to build software for other people, not for ourselves. Just because you know enough about computers to find workarounds, that doesn't mean your customers want to put up with the hassle. Assume that your customers want a great experience, not just a functional one.