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
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.
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.