Over the last couple of weeks I have been trying to formulate a law based on my experiences over the last 8 or so years writing software for companies.  I think I have almost nailed it.

The Keyboard Law
(or The New Keyboard Law):

The total amount of unnecessary time elapsed between a developer requesting a new keyboard, to the time when it arrives in their hands, is directly proportional to the amount of bureaucracy within the department or organization he/she works for. As a corollary, this time is inversely proportional to the amount of influence software engineering experience has within the upper management of said company.

[Warning, below I go on a long rant explaining this law, feel free to skip it and just use this law in practice and give me credit,fame and fortune in the future. Also skip to the end and add your comments too ;P]


This is loosely based on Conway’s Lawy and Parkinson’s Law of Trivialty (aka the Bikeshed Example), and while it hasn’t been proven with empirical evidence, it humorously captures a common theme in the software industry.  If any University Soft Eng profs want to fund me to do the research, give me an email ;).  This is an issue of micro management on how to keep software developers happy.  It is just a small piece in the puzzle that I think can keep a growing company run smoothly.  The second you find yourself coming up on the bad end of the Keyboard Law, it’s likely because the company is still trying to micromanage things like a purchase of a $40 keyboard.

Why I think this Law is important
The fact that it is humorous (to some people at least) is a problem on its own.  Does it have to be  a keyboard? Of course not, it could be a mouse, software license, monitor, chair, etc… it doesn’t really matter.  What does matter is that the item must come with a reasonable justification of why or how it could improve the productivity of the developer.  This doesn’t apply to a developer requesting a 42″ screen, but it does apply to one who was given a 15″ CRT and is struggling to have 4 terminal windows open on top of their IDE.  Any unnecessary obstacles put in the path of a developer will cost a company money, and often more money than it would have taken to eliminate these obstacles in the first place.

A Potential Solution
First off, a developer should be managed by someone aware of this problem, and that manager should do everything in their power to minimize the negative effects.  Knowing to escalate justifiable hardware requests, or having a very efficient procurement process in place is a start.  A more general rule suggests that managers should always hide/minimize the amount of visibility of any bureaucracy which may provide unnecessary distractions to the development team.

The next suggestion is to create a slush fund.  That’s right, I said it.  Per team, per group, whatever, just have a tech manager, or operations manager (thank you Byron, the Tech Operations Manager who got me a testing netbook in less then 2 hours of requesting it) properly manage a fund specifically for dealing with this kind of stuff.  If a proper, efficient process isn’t in place, a small on-the-books fund is a quick and easy solution.  If a proper process is in place, make sure the managers streamline this process to make it as painless as possible.

Approving the slush fund is another story, but we aren’t talking about the $80K “entertainment” fund the sales guy gets to take clients to shows and steak dinners.  I am talking $5k for an entire team, for essentials, like a proper orthopedic chair for the guy who can’t work for more than 1 hour due to back problems, or the extra monitor for the guy who is always remotely monitoring 10 different servers.  Cheap stuff.  Make it simple, cut out the BS and let developers  do their jobs.

This is a CHEAP Fix for a Major Problem
Whether your fund is $5k or $20k, that solution is CHEAP.   Developers don’t want more money.  Repeat, developers don’t want more money.  They want enough money, a competitive salary for instance, but not basketball player kind of money.  This is not an issue of money, this is an issue of how much bureaucracy a developer can stomach in order to get his/her job done.  Joel Spolsky said this 4 years ago:

‘No dysfunctional politics’. Programmers have very well-honed senses of justice. Code either works, or it doesn’t. There’s no sense in arguing whether a bug exists, since you can test the code and find out. The world of programming is very just and very strictly ordered and a heck of a lot of people go into programming in the first place because they prefer to spend their time in a just, orderly place, a strict meritocracy where you can win any debate simply by being right.

If a developer is going to pull an all nighter to finish a project that was mis-scheduled by you (the manager), then you’d better get him that 12 pack of Mountain Dew he asked for.  And you’d better make sure as hell that the bill doesn’t end up in his lap at the end of the quarter.  If a developer is blocking on a software license, and literally can’t work without it, the company is losing money every hour until that license is purchased and the developer is back to work.  If there is actually hesitation behind buying the $500 license, think about the money being lost over the 2-3 days of deliberation.

This should also not be confused with frivolity.  This approach should also not be confused with an incentive option.  “If I don’t spend it this year, I’ll lose that on my budget for next year” completely misses the point.

Lastly, Software Developers Are Weird
Read, WEIRD, not SPECIAL.  There is a common misconception that developers demand to be pampered or privileged.  In my experience, Software Developers have strange and unconventional motivations.  Giving them more money will not result in better, faster results.  This has been proven true for all types of people, not just developers.  Some developers like staying late in the office to play board games, or go straight home only to remote in and continue working.  Sometimes, a 6-pack of Code-Red Mountain Dew will be more valuable than a $15K incentive bonus, because developers are that weird.The motivation of many great developers is to solve hard problems, and contribute, not to wrestle with politics, budgets, and red tape.  Now on that, nobody likes that stuff.  But continuing from saying that developers are WEIRD, they are the types to get exceptionally mad or overly frustrated about these things.  If the focus and attention is shifted away from a real problem at hand, to a 3-page hardware request, the cost of that mental context switch will be astronomical.  If the hardware approval finally goes through, and the CC chain goes 5 layers up in the organization to a Sr. VP approving a $100 monitor, there is a problem.  By the time it goes that far up, a request for a monitor seems like another expense, and it is very unlikely that this Sr. Manager will get why it is a necessity.  To a developer, explaining 2 weeks later that the request for a mouse was denied by the President of the company is like secretly inserting a printf("Segmentation Fault"); exit(0); into their source code somewhere.  Its just a totally unnecessary slap to the face.

On the Corollary
I threw that in there to show an exception to the case.  You can have a large company, with a lot of bureaucracy, but still have a short turn around on these types of expenses.  If the structure of the department has an experienced operations manager keeping the train moving, then the developers won’t get distracted, and progress will be made.  If a flexible spending budget exists for a team, it is probably because who ever requested it, or approved it, knew that these things need to be accommodated for.  If every hardware request needs to pass by a VP who doesn’t understand the technical justification for a purchase, it should be realized that it is probably for the same reason they hired technical developers to implement solutions they can’t solve on their own.

Take the Test!
I’d love to hear feedback, have you ever experienced this?  How big is your company? And how long did it take you to get what you really needed?  How long did it take to get that keyboard with Chinese characters because you are doing translations, or a license to Windows7 because you are doing platform testing?  If you don’t even know who to ask within your company…  the Keyboard Law clearly defines your organization.