Today, Apple updated the MacBook Pro line. I’ve been using the same laptop for three years, and it is, in my opinion, time to get a new one. Sadly, my determination to get a new laptop has made every symptom of sluggishness on the old computer twice as noticeable. (Eclipse “Open Type” shortcut, I’m looking at you.)
First, an anecdote from the realm of behavioral economics. In January, a five cent tax on plastic grocery bags went into effect in Washington DC. The proceeds go to cleaning up the Anacostia River. Residents of Washington DC used an average of 22 million plastic bags a month in 2009. In 2010, they used 3 million. As it turns out, people are completely willing to bring their own bags to the store if it means not having to pay a small tax. The radical change in behavior that resulted from this small tax made me wonder about the effect slow computers have on developer behavior.
When Joel Spolsky originally wrote the Joel Test ten years ago, he talked about how developers deal with the performance tax:
Writing code in a compiled language is one of the last things that still can’t be done instantly on a garden variety home computer. If your compilation process takes more than a few seconds, getting the latest and greatest computer is going to save you time. If compiling takes even 15 seconds, programmers will get bored while the compiler runs and switch over to reading The Onion, which will suck them in and kill hours of productivity.
Today, you’d substitute “check their Twitter client” for “reading The Onion,” but aside from that, the observation still holds.
My theory though is that slow machines for developers wind up increasing the workload for testers. Most of the time, a slow computer doesn’t make it harder to write code, it makes harder to test code.
I suspect that most developers have a budget in their mind for how long they’re willing to test each bug fix. I don’t know many developers who can force themselves to do a lot of testing for a one line change, even if that one line change was made to a widely used method or function. So the biggest impact of getting a faster computer is that it would enable me to run more tests within my testing budget, and to iterate more rapidly when the fixes don’t work. In the end, it results in higher quality code.
And that’s why I should have a new laptop. The QA department must surely agree. This is also an argument in favor of automated regression testing.