Since ’tis the season of Thanksgiving, I wanted to offer up a special thank-you to the unsung heroes of any software development project. They’re vital to a good final product, yet most of the time nobody ever realizes the impact they had on getting your software where it is today. So, in the interest of spreading the thanks and love all around, thank you to all the people who aren’t “dev” or “ops” that make all this possible.
Good documentation is insanely hard to find. Stack Overflow has a good write-up on the issue here (along with their proposed solution). Good documentation is a godsend when you’re working with 3rd-party libraries or external APIs, since it’s the make-or-break factor in terms of how quickly you can get a project using it off the ground and running. Half (OK, most) (OK, pretty much all) the reason I hate Facebook development is that the documentation is spread out amongst several pages and oftentimes seems incomplete. It takes forever to find an answer to a simple question, and even when I think I have everything figured out, I almost always stumble across something else mid-development that wasn’t in any of the documents I read before I started that forces me to go back and completely re-work some part of my application. On the other hand, some services like Flask have very thorough documentation, and RestFB is also a very well-documented Java library for the Facebook REST API. Good documentation helps expose all the good things your library can do for developers – and the easier it is for them to implement whatever it is they want to do, and the better your library seems. In other words, good documentation is a factor in software quality, and to those that put in that effort, thank you. You guys are the reason people like me can get stuff done in a day.
Are you not using crappy software? A good QA team is probably why. Sure, developers can write automated unit tests, but unit testing only covers but so much. There are still several parts of software applications that really benefit from a human being poking around at things, like UI testing and general user experience testing. Unit tests that run during compile time are great things, and they’ve stopped countless bugs in their tracks, but those tests only cover the things you can think to actually write a test against. The issue is that no developer can ever think of all the insane stuff a good tester will actually do to your code. The best tester I ever worked with would spend an hour or 2 doing whatever random stuff to my code she could think of, see it get to an invalid state, then spend the rest of the day finding the set of steps to reproduce the issue consistently. I’ve gotten bugs with a list of steps to reproduce that were so long I couldn’t believe that a human being actually thought to try that particular combination, let alone document every single part of it. Here’s the reason why that was the best tester I ever worked with though – it seems stupid at the time, but then you get reports on what your users are actually doing. And then, all of a sudden, QA doesn’t seem that crazy after all. So to all the testers out there who are finding more and more obscure ways to break applications before the users do, thank you. People have no idea how buggy software would have been if you hadn’t made us fix this stuff before releasing it.
I don’t know if you’ve ever tried to come up with the user interface and user experience of an application, but most developers suck at it. We tried it on our team at Bronto – everything wound up going into a table (what can I say, we like grid lines). The point is, you can very easily tell the difference between applications that have someone focusing on design and apps that don’t. Good design comes down to more than icon layout and a color scheme. It’s about how easy it is to go from your app being installed to people using it actively. It’s about how compelling it is for them to keep logging back into your app to check for updates or keep using it. All of this seems overrated, until you see the difference between an application where people stopped and really thought about the design and user experience, and an application that didn’t. Any time you see an application that sounds good in concept, but is difficult to set up and just plain miserable to use (I’m looking at you, Outlook), that was an application built by people who didn’t have someone on board whose job it was to think about every aspect of the design. To all of the people that take application ideas and feature lists and turn them into something that is not only easy for a user to work with, but also easy to understand and worth coming back to, thank you. You guys are quite possibly the biggest visual sign that a software development team thought their project the whole way through.
Good software is a team effort, including lots of people who are traditionally associated with creating software. The fact of the matter is these people do all the little things that move software from merely “it works” to “good” or even “great”. They all play an important part in building software, and it’s important that we acknowledge everything they do to make sure we’re offering the best possible applications that we can. So to all the unsung heroes of software development out there, thanks for everything you do.