Should programmers have a fast PC?

After reading Jeff Atwood’s post The Programmer’s Bill of Rights, where Jeff suggests programmers should have a fast PC, I checked out the comments. Of course I found a lot of people agreeing but some disagreed with that specific item. They suggested that a programmer should have a slow PC in order not to write bloatware. Excuse me?!

Having a slow machine is a punishment, not a means to write better software. If you need to build an application that performs well in a certain PC configuration, then you build exactly that configuration as a separate computer and do your testing, debugging, optimizing, profiling or whatever the hell one should do to a piece of software for testing, in that computer.

You, as a programmer, should have the fastest PC available. Why? Because, almost every freakin programming tool nowadays is dead slow and if you don’t have THE PC, you will soon get sick of waiting for the designers to draw themselves or for a project to finish loading. Your programmers will soon prefer the browser to hang around while their customer-optimized PC tries to build 10 projects.

The comment list of Jeff’s post is not the only place I have been introduced to such suggestions. It has also been suggested to me recently by a manager. This is getting worrying. For once and for all, repeat after me:

I will not punish my programmers by giving them a slow PC, in order to force them write faster applications. Instead, I will pretend I have a working brain for 5 minutes, which is enough for me to order a separate slower PC for testing and optimizing purposes.

If you think it is expensive, then you should close your company because obviously you are not able to calculate the ROI for actions you make.

Technorati Tags:

5 thoughts on “Should programmers have a fast PC?

  1. I agree 100%. It really makes no sense to have a slow development machine – or a slow development/database server in this respect – as a programmer’s primary goal is to DEVELOP; and not to wait for the XYZ IDE’s interface to refresh or finish compilation of source code.

    Now, making your application backwards compatible with the various CPU generations, different OS flavours, low memory configurations etc. is a separate issue. As the author of the post mentioned, testing environments do exist for this reason. Quality assurance staff will also assist in achieving such goals. If your application is not correct according to the expectations, it will return back to you with the necessary feedback (response time measurements, abnormal behaviour conditions etc.). You will alter your code as needed – and if that is doable and realistic.

    If making your application run on a really crappy machine is absolutely essential to you or your employer (it is hard to think of a reason..) then I guess you will have to work a bit closer to the testing department and possibly request to have you assinged a dedicated testing box with the appropriate specification, so that you will be able to immediately run your executables and see results.

    Having said all the above, can anyone find a reason to justify why a programmer has to work on a slow machine?

    Thanks for reading 🙂

    Ilias

  2. I just wonder why “almost every freakin programming tool nowadays is dead slow” I guess they were developed on super-strong machines and their authors didn’t care whether plain developer will need similar demon to run their software.

    OK. I’m joking. Actually the real problem here is poor quality of applications, especially in terms of memory usage they need. If having a strong PC isn’t an excuse to ignore this issue (“Hey, on my machine it works great“) that’s OK, you can have your speed demon on your desk. Unfortunately oh so often resources are over extensively used and we end up needing better machines for anyone using applications. By the way a developer is just a user when he works with IDE.

    There’s one more thing – I believe you’re way too optimistic when you talk about testing on the separate (crappy enough) machine and, more generally, about developers’ will to make much testing. The reality is developers often consider testing as a task for quality assurance team, not for them, and they barely go further than through some basic tests with optimistic scenarios. There’s also a tendency to have the best possible machines in testing environment (“Hey, the customer has pretty strong servers there – we need similar machines in a testlab“).

    Now if a developer doesn’t even pretend he has a working brain to take care about computers users work on he should be punished this way or another. After a second thought I wouldn’t like to have the guy in the team anyway.

  3. @Pawel: You are right about testing. I don’t agree with programmers that are arrogant when it comes to this issue. I wouldn’t keep a programmer who demanded a fast PC for doing their work but then refuse to do performance testing.

    On the other hand I wouldn’t like to work for a company that demands programmers do their work on slow PCs, because they can’t establish a testing work flow that includes the performance factor.

    About the tool developers that don’t care about their user developers: Apart from joking, I have thought about this. Sometimes I am even attracted by other tools just because they don’t have the IDE overhead. But again, if we asked tool developers why the IDEs they build are such power hungry beasts, they would probably tell us about the hundreds productivity features the IDEs give us and how difficult it is for them to keep them fast.

    Finally, I think all these are related: Users want quick results so companies also demand fast results from their programmers. Programmers have to use super IDEs and super-abstract frameworks to be productive, but all these have to run on fast PCs.

    We have to find the right balance in order to keep everyone happy.

  4. I read someones opinion somewhere related to a specific IDE (VS2008), that the reason it is sometimes slow comes from unoptimized (or poorly optimized) disk IO. It actually made sense to me. If you think about it, most projects contain hundreds of files and the IDE has to work with all the files, to support intellisense, display errors while writing the code etc. And of course the windows forms and WPF designers use a lot of other files on top of your files to be able to display the controls and forms etc.

    Being a programmer, I would like to have the fastest available machine. It can really kill productivity when you have to wait 5+ seconds for the designer to load (and working in XAML, I don’t use the designer much). I know you can disable loading the WPF designer, and I did that after I got that suggestion from someone, but it’s still has some latency when tabbing from one source file to the next.

  5. @Dragoljub: I agree. My focus and productivity are ruined whenever VS or any other IDE I am using decides it has to temporarily go to happy land. I am sick of the IDE’s designers forcing the hard disk go wild for 30 seconds before they load.

    Unfortunately or not, these IDEs give you a lot of benefits by being the beasts they are. I am sure you couldn’t do much using Notepad to develop a .NET or a Java application. Although sometimes I get so angry, that I start googling for alternatives. 🙂

Leave a Reply to Pawel Brodzinski Cancel reply