Quality is Not Job 0xff: There is No Good Enough

Anyone who's worked with me knows I hate bugs, crappy design, crashes, lousy performance and other broken stuff. Sometimes I think it's a disease, but if I'm around things that don't work right, I pathologically have to find a way to make them better.

Sometimes it works and sometimes I might miss the politics and piss people off. If you try to fix stuff that's broken, usually it's best that the people responsible for breaking it aren't around and in charge!

One of the last things my dad told me before he died was "always do everything zck zck". That last bit was slang from his youth in a small German town which meant "just right"; i.e. whatever you do, do it the right way. I've always taken that to heart in every piece of software I've ever written. What's tough is when it's not my code or project or whatever.

After so many years in the industry, I still hurt when I see what passes for quality get shrugged off as "good enough". To paraphrase Yoda "there is good and bad; there is no good enough". So much software reeks of a willingness to accept second rate work, poor quality, terrible performance and other ills and then find a way to excuse it. I can understand a tiny startup releasing early and often, but I can't believe a big company shipping crap. I can't accept people who deliver garbage and then expect people to deal with it. I find people who focus on features and fail on everything else to be the ultimate in incompetence.

If your software crashes all the time, who cares what features it has, no one can use it. If your service runs in geological time, no one will wait that long. If people can't figure out how to operate its impenetrable interface, it won't be useful to anyone.

Living around crappy software is one thing but with my terrible need to make things better it can get to me. I have been able to fix things in some places, fail in others and even lost a job once when I tried too hard. I've found ways to bring attention to broken stuff that people finally realized and put effort into fixing things but often the Good Enough mentality is a hard one to change, especially if you are not the ultimate authority.

What really galls me is when people take Good Enough to extremes and destroy their business in the process. I worked for a game company for two years (a game I played for nearly 10 years) despite their lack of money to pay me much because I got sick of all the online friends I lost who couldn't play the game anymore because it crashed all the time. I was able in my two years to fix nearly everything that was broken but it was too late and the company, while still in business, is really dead. The PC game client crashed on average every 30 minutes of game play, and for several years it actually ran out of virtual memory addresses (and thus died). But they put all their emphasis on new features and nothing on making the game stable and ultimately lost 80% of their income by the time I started working. I was able to pare the PC client to a reasonable memory budget, fix performance issues and longstanding bugs (some of which went back 10 years). But it was too late. Not only that, but it cost me so much in income I may feel the pain for years. But it made my fixit brain happy.

Even at my current job I've been able to improve things a lot. I've shipped two new iOS apps with few bug issues and good ratings, and helped repair our other iOS app which had woeful quality and ratings. I managed to fix 500 analyzer errors and 300 code warnings which had not been important before. Now the app is solid and is getting good reviews. But our mobile offerings are built ultimately on web services we don't control, and their performance and quality is pretty bad. Politically I can't do anything about that which is pretty irritating.

Just about every place I've worked has had quality issues of one sort or another, whether it was poor design/architecture, terrible crashes or other malfunctionality, or lame performance. Sometimes I wish I was a better salesperson, I'd love to just work on fixing horrible problems in different companies. Of course figuring out how to make something better can be easy, or it can be impossible, and often people don't like to hear suggestions so maybe it would be frustrating. So far I've never seen a problem that didn't suggest a better way but some things aren't fixable without major work and that's a tough sell. People prefer Good Enough because it seems safe but eventually it bites them in the ass.

I really think I would have gotten along with Steve Jobs because we both can't stand imperfection. Of course I've never been a CEO of a major company who could make people do it his way so I have to work with what I can do.

Of course you might think I just complain all the time but that's not the point. I always try to make everything I can control work well (but never overtime!) and then find ways, hopefully friendly or at least subtle, in guiding other people or projects or situations to be more quality oriented. Every once in a while I screw up and wind up pissing someone off (often the folks who messed things up in the first place) but no one is perfect (I should fix myself!).

Fighting Good Enough is hard work and may take patience and sometimes you can't win. Of course you can also go overboard and never ship anything because sometimes the differences between Good Enough and Good and Too Perfect can be hard to see. In the end, if what you develop or write or ship or publish makes people not only like what you offer but delight in its usability, stability and functionality then you've found that Zck Zck point.

If what you work on or offer is instead Suck Suck then make it better, whatever you have to do. Maybe not everyone can have a "fixit or suffer" brain like mine, but no matter what's broken, there is always a way to make it better.

Or wait, and maybe I'll come work on it because it hurts me not to!