Software development is a very competitive area and it is at utmost importance to keep the process efficient. When a new project arrives, we take into account our skills and knowledge to analyze risks, challenges and the schedule. Developers naturally assume that they can work as fast as they can think and type, however sometimes your development machine is not so eager.
Do you remember what had happened to Qui Gon when he faced Darth Maul? He was MULTITHREADED by the Sith Lord with his dual-blade. Poor Qui Gon did not stand a chance with that crappy single-blade :(
Whenever I wait more than enough because of a slow computer, I sense disturbance in the force. It causes stress, anger and distorts the groove of development. Not only the work is delayed by x seconds because of the slowness, but also developers:
- loose focus and start chatting, looking out of the window, surfing the web etc.
- get frustrated, and care less about the project
- tend to avoid creating another process in the system that could potentially increase the quality of the work like checking out a document, inspecting another reference code, or testing more just because that would further slow the machine.
- stop doing things asynchronously and wait the build to complete before opening that document or wait idle while running the tests
- make more mistakes because the computer can’t handle the input entered
And your manager will say: “Good, let the hate flow through you”. As we know those kind of empires only last a few episodes.
Buying a better machine, almost in every situation, costs less than missing the deadline, deploying buggy software, loosing developer’s ambition or just the cost of lost developer time. A developer also should be able to select his own keyboard and mouse. 2 monitors are mandatory and 3 is better. A comfortable chair is also very important.
Some of the arguments I hear against this idea:
- “An average computer today is 10.000 TRILLION TIMES THE SPEED OF LIGHT PER SECOND faster than the ones were 10 years ago.” Then go ahead and work on Ms-Dos. The complexity of software systems are increasing rapidly and developer tools demand more power.
- “Renewing computers every 2-3 years would require more IT staff and it costs too much.” An experienced IT professional can assemble and setup more than a dozen of development machines in one day. If the company does not have an IT professional, then it should not be too hard for a developer to do it himself.
- “We don’t always have that much of cash flow”. This maybe a valid argument only if there is no better way to cut down the expenses. You should always keep in mind that your production efficiency can be increased greatly just by upgrading or renewing the hardware.
Keep the developers happy, and they will create better products in less time.
Here are a few links about this subject:
The Programmers Bill of Rights
Hardware is Cheap, Programmers Are Expensive
Stackoverflow-Why Don’t All Companies Buy Developers The Best Hardware