views:

818

answers:

14

Our team is working on old hardware and trying to justify buying new hardware to improve our productivity. Mainly to improve compile times, better use of Virtual Machines, running multiple instances of Visual Studio, etc. Our app today takes about 1 minute to compile on our current hardware, and from some benchmarking will take about 15 seconds on the proposed machines. With about 20 developers, this adds up to thousands of dollars a month that could be saved. Especially if you compile dozens of times a day.

When proposing this to the executive management team, they asked why we have to compile our code so frequently. Simply compile less frequently and we would not need new hardware. Obviously, there is a disconnect between what the developers actually do, and the management team just simply does not understand what we do.

  • What suggestions does the SO community have to help explain this to our management team?
  • Has anyone seen or read online resources explaining development that is geared towards management that does not have technical or development experience?
  • Are there any books covering these topics?
  • Does anyone have any experience working for a Management Team in these conditions?


INFO:

  • I am referring to local builds during active development, not those on a build server.
  • We do have a nightly build that includes all of our application (local builds refered to above are just parts of it)
  • We do have continuous Integration on a build server.
  • Primarily a Microsoft Stack - VS2008 / .net 3.5 / c#
+2  A: 

What I've done is, I had someone watch me when I hit F5 and waitied for my machine to build the project.

My machine is even worse and sometimes takes close to five minutes. It's pretty crazy.

I've requested a new machine just about every day I've been at my company, and I think that backfired on me. Because they just ignore me now. But when it comes time to deploy and I keep everyone here til 8pm, and they ask "why isn't this faster"? I simply state that the hardware isn't adequate.

I seem to have failed in trying to convince people, but it's pretty sad. The amount of money that developers cost per hour... if you give them a $2000 machine, it will actually save money in productivity gains. People just don't understand why a machine that can run Excel can't run the tools that build Excel.

Jack Marchetti
+3  A: 

"why we have to compile our code so frequently?"

Your response:

How long does management want to wait to find out that the software doesn't work? Continuous integration via frequent builds means up-to-the minute information. Time wasted during the day is lost information. Time wasted reflects something we now don't know about the quality of the software.

If they want to wait a week to find a problem, you could cut back to building once a day. That's an expensive week of rework, however.

And you have to stick to the downside. If you're going to be slowed down, you have to make management feel the pain of your slowness. Every day.

"management that does not have technical or development experience"

Always a problem. But it's as much your problem for not keeping them in the loop as it is their problem for not understanding what you're doing.

Time to end the stoic silence and start providing status reports on a daily basis, enumerating what happened today and why today's accomplishments were below expectations.

Since you're successful, management doesn't want to buy you more stuff.

If you want more stuff, you have to be less successful.

"Are there any books covering these topics?"

Not useful ones, no. The presumption is that managers meet with folks to learn what they actually do. If your relationship is this bad, both of you have failed to make regular meaningful contacts. No book explains that -- they assume you make regular meaningful contacts.

You need to spend more time with managers, whining about your lousy hardware. Doing it once indicates they're not listening to you because you're not talking to them frequently.

"Does anyone have any experience working for a Management Team in these conditions?"

Yes. Everyone who maintains a distant relationship with management has this problem. And that's a lot of people.

You have to cut the distance to management. You have to be less successful and make them feel your pain.

S.Lott
+1 for "distance to management." An important concept not discussed enough.
sstock
+31  A: 

Draw a parallel with something they do understand.

"Imagine it took a minute to connect every time you made a phone call. Your sales staff currently make 10-20 phone calls a day. Would you tell them to just make fewer calls, or would you spend some money to get the phones upgraded?"

Daniel Roseman
+1 Eloquent analogy.
Nelson
+1 - Love the analogy, but everyone can understand why the salesmen need to make phone calls. It's harder for a non-techie type to understand why you need to compile so often though, which I think is the real issue here.
Eric Petroelje
A possible alternative: "Imagine it took a minute for what your salespeople say to reach whoever they're talking to, every time they spoke." Nowhere near as elegant, but maybe a more accurate analogy to compiling?
Meredith L. Patterson
IMO you do not want to get into an analogies game with managers if you can avoid it. Analogies are always leaky, and you will end up with proposed solutions that solve the analogy, not your actual problem. Just explain the problem in simple terms without comparing it to anything physical.Read Edsger Dijkstra's famous 1036 and 854 for an insight into the horrors thinkign by analogy is inflicting upon us.
Ranieri
+1  A: 

I would find something they are familiar with and make a metaphor.

This would be like using excel and everytime you enter a formula, you have to wait 1-2 minutes before editing another cell.

You could work around it by creating formulas for an excel spreadsheet inside a text editor, and copying them into excel only once, but it would be a significant cost to rapid spreadsheet use.

Alex B
I actually told my project manager that "you're asking me to win the Indy 500 with a pair of roller skates"
Jack Marchetti
Jack, that's a great analogy!
Kevin Tighe
+2  A: 

Could there be a pairing exercise of managers and developers so managers experience what developers go through?

Just tossing out an idea.

JB King
+22  A: 

Explain to them why you need to compile so often. Put it in terms they can understand.

You can't see the results of your work until you compile - it's like typing a word doc with your eyes closed. You can do it for a while, but eventually you have to take a look to make sure you didn't mis-spell anything, have your hands on the wrong keys, whatever. That "taking a look" is like compiling your program. If you only open your eyes once a day, you're likely to end up with a pretty messed up document (or program) that's going to require lots of rework.

Eric Petroelje
+7  A: 

My boss walked up one day wanting something quickly. I took to the task immediately, while he waited. He suddenly saw first-hand the delays I experience regularly, and his having to wait (with me) got his attention in a way I'd be challenged to convey in writing, I think. It was very refreshing to see how similar his reaction (to the delay) was to mine.

lance
I wish more managers experienced this. Unfortunately, since this is an anecdote and not an answer, I don't feel right upvoting it.
rmeador
+1: this points the way to an answer, based on the anecdote.
S.Lott
+1  A: 

Fight excel with excel: make a spreadsheet. Show how many times developers compile daily and how much time will be saved.

Now, that said, you'd better have good justification as to why you compile so often, because the question has already been raised. So, how often do you compile daily? Are these compilations used as a substitute for writing code correctly in the first place? Are these compiles forced by rapid/continuous integration of others' work?

Are you currently able to meet management's deadlines? If so, then there is little justification for them to spend money on new hardware. I'm not suggesting that you should slip your deadlines, but that in order for you to "sell" your management, you need to be able to think about it from their perspective.

If you really think that a $2000 machine will have a payback, then demonstrate that using a small spreadsheet or graph. Show how far out the ROI is. For examples of where this is already done, google some sites for high-efficiency climate control systems for the home. Often they will have some kind of graph to demonstrate how far out in time the break-even point is. You can do the same thing.

If they still don't get it, then you're likely fighting a losing battle on this front, and need to shift gears to another tactic. But you'll have learned more about what makes them tick.

Chris Cleeland
+4  A: 

Unfortunately from a management perspective your claims don't quite add up to any real cost savings.

Old Systems: 20devs * 24compiles/day = 480min/day -> 7.5H

New Systems: 20devs * 24compiles/day = 120min/day -> 2H (A savings of 5.5H/day)

Now take an estimated wage of $25/hr that 5.5h savings equates to $137.50/day or $6.87/dev

At an estimated cost of $2000 per machine it would take 290(full development) days to pay for itself.

Now if you take into account the amount of time employees are not working on their paid time, figure into it that some of this not working time would overlap with the compile time it would likely take almost 2 years per employee to pay for itself.

I agree with your assessment for this particular scenario. At my company, full builds used to take 2 hours, so it was a bit more justifiable :) Also, we didn't buy $2k machines, but $1300 machines.
rmeador
How do you get this? Saving four minutes a day twenty-four times a day is about an hour and a half per day, or slightly under 20% of the development time. That means you can spend $2K to get 15-20% more productive time for a guy you're spending maybe $100K/year on. (Employees cost a lot more than their pay alone.) That's payback in months, not years, and that's considered an excellent use of money.
David Thornley
Consider also the intangibles: give a developer a third rate machine and he feels like the company does not value him and his contribution. Once he decides the company does not care about him, he stops caring about the company. Then he spends all day on SO rather than working. That yields a much more significant productivity hit than a handful of slow builds
rotard
Nitpicking: 480 minutes is 8 hours, not 7.5 hours. And there is a 360 minute difference, which is 6 hours, not 5.5. And, as David notes, employees cost a lot more than their pay, so the $25 figure is probably also low.
Jason Creighton
@David: An hour and a half per day per developer? The OP says that compiles take 1 minute now, and they could take 15 seconds with new hard. So if there's 24 compiles/day (which is, of course, an arbitrary number) that's 6 minutes compiling instead of 24 minutes, for a savings of 18 minutes per developer per day.
Jason Creighton
@rotard - I'm coming close to being in that position. I should've known something was up when i showed up and they gave me a Mac and when I asked 'oh are you using bootcamp or parallels' they looked at me like i was from Mars.
Jack Marchetti
@David -- Are you a developer? it doesn't seem like it. Seriously, if you have to wait around for the machine, your mind wanders, you start thinking of other things and all that lovely data in my brain, gets completely flushed.
Jack Marchetti
A: 

In my experience talking about cost savings will not be taken seriously because management often thinks, developers just want to have better toys. You have to be sure to be not vague. Provide examples like "Joe has problem xyz that has lead to #n hours of productivity loss" that are taken from the real life in your team.

Then provide information how much it will cost (as exact as possible) to show that the new hardware is really much cheaper than the missed productivity.

Patrick Cornelissen
+7  A: 

Problems arise when programmers spend more time waiting on their computers than their computers waiting on them.

If you're sitting around waiting for code to compile, a non-developer might think it's a good break anyways. But in reality it's a good way to lose focus. Because after all, anytime you compile your code what you're really trying to do is test that your code works. And if each compile is a minute wait, you can forget exactly what you were about to test while taking your 1 minute break. And that in turn wastes even more time.

Slow compilation is an unwelcome interruption to a programmer's flow and productivity.

Steve Wortham
I couldn't agree more. This happens to me ALL the time at my current company. I hit F5 then go grab coffee, or a smoke. Bullshit with someone, then i come back and sometimes can't remember what the hell I wanted to check hah
Jack Marchetti
+1  A: 

Think about this carefully before trying it; it may be something of an all-or-nothing approach:

In your next conversation about the issue, try waiting a minute before you answer. Or half a minute. Or even ten seconds. Your manager will either simply get annoyed (which is entirely possible), or will get the point within about three minutes of discussion.

Dan Breslau
A: 

I agree with a lot of people have already said, however everyone is focusing only time lost in build times but what about loss of concentration?

EG:

sometimes when developing and working on hard problems, one of worst thing that can happen is the computer slow you down, it can even break you train of thought, waiting for the computer to keep up with is not just frustrating but potentially a BIG impact (negatively) on code developement.

Faster computer => Faster/smoother development => more productivity.

Darknight

+1  A: 

Stop worring and start swordplay with your collegues: http://xkcd.com/303/

ZeD