One of the things I have learned in leading an IT department, is that developer productivity is directly proportional to the equipment that you give them. So instead of giving your CEO a new Dual – Dual Core machine with SCSI drives, think about who needs that power the most. Apart from the servers, the most expensive machines in our office are in the hands of developers – Dual 20″ wide screens, SCSI 15k drives, 4 gig ram, Extreme Edition Dual Cores, etc etc. Also, they have full control over those machines (no “you need to be an administrator to install this” here)
Why give them faster machines?
- They need to run services locally (IIS, CMS, SQL Server etc etc) – these hog memory
- They run all kinds of weird and wonderful applications
- They need to compile large amounts of code, and fast
- The quicker they can test a piece of code, the quicker they can fix it
- If their machines are still responsive while performing a complex query, they can still do other things, as opposed to twiddling their thumbs. If that happens to be reading www.reddit.com or www.digg.com all the better – keeping up with technology is what makes being a developer fun
- They won’t get frustrated, leading them to leaving the “zone” / disrupting their “flow”
- Occasionally, for fun, they play games - let them. It’s great for teamwork and communication. In fact, pretty much everyone here has Nintendo DS lites and we challenge each other during lunch time.
The key, to keeping costs down, is to get them desktop machines instead of laptops. Desktops? That’s so 90’s I hear you cry. But desktops provide a lot of good things:
- You can leave them on all the time
- They are much cheaper
- They are easy to backup (centralized)
- They won’t be dropped
- They won’t be stolen
- They won’t be lost
What about working from home? Well, most developers have their own machines at home, and for the ones that don’t, we have a few loaner laptops. Instead of getting people to develop on their own machines / laptops, we get them to terminal into their machines at work (GoToMyPC / VPN & Terminal Services). This way they have all the files they need, and the performance on their desktop machines.
I also strongly recommend putting your dev machines on their own GB network, so that interacting with source control / other services is extremely fast.
If your developers are not complaining about going home to their slow machines, then I strongly advise getting them faster machines now!
July 13, 2006 at 8:05 pm |
One problem with that is that users have small monitors on slow machines. The more the developers diverge from the users, the less whatever they are writing will appeal to the users.
I’ve found that giving developers slower machines mean they write better / more efficient code because (assuming they eat their own dog food) using their own slow code will drive them nuts. They make their UI fit to small screens and make their code responsive on slow hardware.
There is also a fair amount of technology out there (distributed builds, etc) to make up for some of that and make working on slower machines more tolerable. I’m not saying every developer in your group needs to have a slow machine. That is unnecessary, but slow machines with small monitors NEEDS to be on the radar constantly.
And no, giving them both a slow machine and a fast one will not work. They need to be forced to use slow machines, so rotate one slow machine around the office once a month or have the lead developer of the next product to ship use the slow machine (since they are more experienced, they are usually better at profiling and optimizing).
July 13, 2006 at 8:29 pm |
Really good point Ryan – I was going to actually put a caveat in my original post saying that this may lead to inefficient code / problems with resolution (esp for web developers).
There will definitely be cases in development where you are developing for slower machines / smaller resolutions (or in some cases completely different machines such as ATMs or Pocket PCs). However, I believe having a decent testing enviornment would help solve a lot of these issues without having to rotate a “slow” machine.
That said, if you don’t have a decent testing environment, then your idea sounds like a good solution
July 13, 2006 at 8:35 pm |
Haha, you are preaching to the choir. All developers who have worked on slow machines know the huge productivity hit they cause. Only short-sighted managers think they save money by not buying fast machines.
July 13, 2006 at 8:38 pm |
Lets hope more managers read this then / show your managers this post!
July 13, 2006 at 9:03 pm |
Ryan’s comment applies to developers who write applications that run on users machines. I write J2EE software that ends up running on servers more powerful than the one I use to develop against. In my case my users (the quad-processor servers with several gigs of RAM) are much faster than my laptop.
July 14, 2006 at 2:51 am |
one point here is to make the best out of what has been given to you. sure you have all the necessary tools, dual-everythings and all that but productivity really lies … AND STILL is… in the hands of the developer. “Give a man a fish and he will live a day. Teach him how to fish and he shall live forever.”. Give him a dynamite and teach him how to dynamite fish…? sounds awfully absurd but nevertheless effective… but still, its within the bounds of the fisherman himself to deliver up to a certain extent his tasks, regardless of what machine he may use. The resourceful programmer always finds his ways through….
July 14, 2006 at 3:53 am |
“this may lead to inefficient code / problems with resolution (esp for web developers).”
I always adjust my browser window to 800×600 when testing websites.
July 14, 2006 at 8:10 am |
I agree! Definately get the code-monkeys, sysadmins, and sysops the coolest new toys around. The faster they can get out new code, fix existing problems, or re-config your network, the happier everyone else will be.
No, the VP-level staff don’t need the top-o-the-line beasts to check email and look at graphs in PowerPoint. No, the secretaries don’t need a speed-demon machine to do 10-key entry, write form letters, or print invoices. Put the computer where they will be the most efficient, and you WILL save money – by using time more effectively.
Besides – the ones that fix your problems will always play nicer and faster when they’re happier. If they have to wait forever for app “xyz” to load, or for the old machines to be fixed, that means the rest of the office will have to wait even longer…
July 14, 2006 at 9:13 am |
Oh, that old chestnut. It’s just plain wrong. If you take the trouble to glance at the ocean all around you, you’ll see that the correct version goes, “Give a man a fish and you’ll feed him for a day. Teach a man to fish, and he’ll tell his friends. Soon after that there’ll be no more fish. Soon after that, there’ll be no more men. So just give a man a fish.”
July 14, 2006 at 9:37 am |
I do not fully agree with Ryan’s objection.
He is mixing two different parts: development and testing.
As I see, development must have its best tools and testing must have the same environment as the target users (its best tools also). And that’s it. They are simply two different tasks, users do not compile and developers should not be forced to view the world through a 640×480 screen.
Ryan’s point is right in the testing part of the process, but I do not see why his view applies to the development phase.
July 14, 2006 at 11:05 am |
hi !!i m vasee frm srilanka,i m a management student,in my point of view,i m agree with some friends views,bt i cant accept all,management is a wide term,managers r the most impotant part in the m’mnt progress,so in this world ,every one shoud know technology is the key 2development,thts it my friends,send ur views 2 me!!
July 14, 2006 at 11:06 am |
in my point of view,i m agree with some friends views,bt i cant accept all,management is a wide term,managers r the most impotant part in the m’mnt progress,so in this world ,every one shoud know technology is the key 2development,thts it my friends,send ur views 2 me!!
July 14, 2006 at 1:07 pm |
Can I work for you? lol. Where can I find a manger like you?
They don’t seem to exist in Vancouver!
I’m just finding out but that kind of environment would be a dream.
July 14, 2006 at 2:19 pm |
The article is correct. Ryan’s point is off. Since development tools consume resources so heavily, the developers need top notch machines. True, developers could use their super machines to write wasteful runtime code, but that is an entirely different problem.
Giving a developer a slow machine (like 64MB RAM with Visual Studio 2003–it really happended in 2004!) means that you won’t even finish *writing* the application, so don’t worry about it running slow in production.
Test on realistic hardware, both client and server machines, to prevent inefficient programming. Most developers I have know are consciencious enough to distinguish a fast developer PC from a slow basic user PC.
July 14, 2006 at 5:47 pm |
[...] Erudition Ambush » Blog Archive » Yes, I love technology – The key to developer productivity [...]
July 17, 2006 at 7:23 pm |
[...] Yes, I love technology – The key to developer productivity Describes the importance of making sure your developers have fast machines. This is the same as making sure that your car mechanic uses the right wrench, not the one for the car model 20 years ago! [...]
December 1, 2007 at 9:17 am |
You have the natural advantage in creditor debt settlement , which may be appropriate for debtors with …
Great Solution