News

A developer Bill of Rights

I've been involved in this nutty business of writing computer software for a quarter century or so now. Over that time I've seen a lot of business practices that seem designed to make sure that developers turn out substandard work. Personally, I've become pretty crabby with employers that won't properly support developers, especially since I'm largely self-employed. So I put together a list of things that I think are worth demanding when you're the developer.

Clear objectives - You can't build the software unless you know what you're supposed to build. This seems blindingly obvious, but more than once I've been dropped into a situation where a project was lurching ahead and no one quite knew where it was supposed to be going. That's a recipe for failure, whether the business users are on board for the train wreck or not.

Reasonable schedules - And in this case, "reasonable" almost always means "with developer input." Reasonable schedules also include the recognition that developers do have a life outside of the office that they'd like to visit once in a while, and a mechanism for renegotiating features and slipping when necessary: this is still an imprecise art.

Explicit quality bars - The bug-tracking and triage process needs to be in place early on, and management and developers need to agree on how bugs will be found, triaged, and fixed. Management will always start out with the position that no bugs are acceptable, but they can be made to see reason - or else you can hunt for another project.

Workable processes - A software developer ought not to have to worry about doing everything "by hand." These days, there's no excuse for lacking a bug-tracking system, an automated build system, source code control, and the other backup processes that make it possible to turn the crank and get repeatable builds out the other end.

Adequate hardware - I've written about this one before, but I'm still surprised when I find out what some people are expected to use to write business-critical systems. You shouldn't expect a $5,000 tricked-out gaming rig, but you ought to be able to sit down to a computer that doesn't make you wait ages for the compiler to finish with your project. A decent monitor (or dual monitors if that's your preference) is another must. And there should be enough money in the budget to cater to individual preferences in keyboards and pointing devices.

Support for professional growth - Wise employers recognize that books, online time, conferences, and other opportunities to learn new things help make developers more useful and productive. Chintzy employers who won't fund any of these things should recognize that their good developers are usually moving to greener pastures. If a company won't trust me to use the Internet effectively, I don't care to work for them.

Finally, it's important that management recognize that there are numerous tradeoffs among these factors. They can't, for example, expect to dictate features, schedule, and quality without any input. Of course, not every management will see all six of these rights as important or worth paying for. But I think they all pay for themselves many times over. With it being a winning situation for everyone, it's hard to see why we have to fight so hard even to get the basics.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.