When buying a new computer, the conventional advice is to buy the fastest one you could afford. That's what I did when I recently replaced an aging laptop with a desktop screamer sporting an Intel Solid State Drive (SSD). But now I wonder, for those of us developing software for others to use, are we doing our users a disservice by always getting the latest and greatest?
My IBM ThinkPad T42 served me well for many years but it was beginning to show its age. For one thing, the 40GB disk drive was always running out of space. I used a great program from JAM software called TreeSize Pro to track down where the space was going, but there was a point of diminishing returns.
I upgraded the memory as much as I could, but the Pentium M 1.7GHz CPU running Windows XP had reached its limit. Rebooting took over a minute, and starting Firefox or Eclipse could take 30 seconds or more. Running the Android development emulator was especially painful: several minutes to start one instance, and don't even think about starting two or more.
After months of reading excellent technical reviews of the Intel Core i7 and Intel SSD's at anandtech.com and other sites I decided to take the plunge...
A brand new dream development box with a quad-core processor (i7 860), 160GB SSD, 8GB RAM, and a fast video card (ATI Radeon HD4670), and 64-bit Windows 7. At first I tried to order it from Dell, but when they delayed my order into January I decided to go with a local company called Intrex. 3 days later (compared to Dell's 30+ days) I had the computer.
This box screams.
Reboots are painless. Firefox comes up instantly, almost before I can take my finger off the mouse button. Eclipse starts in a couple of seconds, and the Android emulator, well that still takes several seconds but it's an order of magnitude faster than before. As a user of this machine, I'm very pleased with it.
Suppose I were a Firefox developer charged with speeding up startup times. On this machine, I'd say it's pretty darned fast and mark it Fixed. But not everyone has a machine like this. In fact, hardly anyone does. My experience is not the same as my users' experience. By buying a super-fast machine have I become disconnected from the people I am writing code for?
Personally, there's no question I can be more productive on this box than a slower one. I can justify the purchase by saying my time is valuable, that I can bring products to market faster, and quit wasting time watching the hourglass cursor spin and the disk drive light flash. The solid state disk drive is so fast that maybe I don't have to spend so much time optimizing seeks and worrying about caching. Now that I have 64-bits and all this memory, I can use that memory for more sophisticated algorithms. Maybe I don't have to be so careful with how big my data structures are. Maybe I can use higher level languages like Python and Erlang to be even more productive compared to C and C++.
Do you see the trap there? As computers got faster, some would argue that programmers got sloppier. For example, Excel running on today's hardware is not really faster than Visicalc on MS-DOS even though the computers are 100 times faster. Like a gas, software expands to fill all available space and use all available CPU and disk speed. Users get more functions, but not better performance. And if they're a little behind the curve on their hardware, they can get much worse performance.
What do you think? Should developers use fast computers for best productivity? Or should we make them use slower computers so that they'll be forced to make their code fast and small?