views:

1561

answers:

12

I am looking after some ways to measure the performance of a software development team. Is it a good idea to use the build tool? Let me explain. We use Hudson as an automatic build tool. I wonder if I can take the information from Hudson reports and obtain from it the progress of each of the programmers. Thanks for any advice.

Miguel.

+4  A: 

I would NOT recommend using build tool information as a way to measure the performance / progress of software developers. Some of the confounding problems: possibly one task is considerably harder than another; possibly one task is much more involved in "design space" than "implementation space"; possibly (probably) the more efficient solution is the better solution, but that better solution contributes less lines of code than a terribly inefficient one which provides many many more lines of code; etc.

McWafflestix
A: 

Check how many lines of the codes each has written.

Then fire the bottom 70%.. NO 90%!... EVERY DAY!

(for the folks that aren't sure, YES, I am joking. Serious answer here)

madlep
I can't tell if you're joking or not, but because people's jobs might be in jeopardy because some manager gets the wrong idea because of your answer, I'm voting this down.
unforgiven3
Take that Peer Pressure badge while you have the chance! 8-)
RichieHindle
LOL, funny man, funny.
Byron Whitlock
that being said, if you are joking, and you edit your answer to make that clear, i'll happily vote it back up.
unforgiven3
I recommend deleting this bad joke while you still have some reputation left...
BoltBait
@unforgiven3: Yow. You have a pretty low opinion of managers.
RichieHindle
@RichieHindle and rightfully so... you wouldn't believe some of the stupid metrics MBAs come up with to judge performance.
Robert Greiner
@RichieHindle, no, not really. I actually have a really high opinion of managers, at least the managers I've had the privilege of working under, but the horror stories of reviews based on things like LOC exist because they actually happen.
unforgiven3
replaced my downvote with an upvote :-)
unforgiven3
+10  A: 

No.

Metrics like that are doomed to failure. Different people work on different parts of the code, on different classes of problem, and absolute measurements are misleading at best.

The way to measure developer performance is to have excellent managers that do their job well, have good specs that accurately reflect requirements, and track everyone's progress carefully against those specs.

It's hard to do right. A software solution won't work.

RichieHindle
agreed, the guy writes the least amount of code could actually be doing the most work.
Robert Greiner
+14  A: 

Do NOT measure the performance of each individual programmer simply using the build tool. You can measure the team as a whole, sure, or you can certainly measure the progress of each programmer, but you cannot measure their performance with such a tool. Some modules are more complicated than others, some programmers are tasked with other projects, etc. It's not a recommended way of doing this, and it will encourage programmers to write sloppy code so that it looks like they did the most work.

AlbertoPL
+2  A: 

You might want to check out

It's very difficult problem!

Paul Dixon
+1  A: 

There are many different ways of doing this. Entire books written on the subject. You could use reports from Hudson but I think that would lead to misinformation and provide crude results. Really you need to have task tracking methodology.

anio
+1  A: 

You would probably do better measuring how well your team tracks to schedules. If a team member (or entire team) is consistantly late, you will need to work with them to improve performance.

BoltBait
or you need to work on improving the performance of the person who does the estimating!
HLGEM
Our team does its own estimating, so in that case it would be one and the same.
BoltBait
+2  A: 

Don't short-cut or look for quick and easy ways to measure performance/progress of developers. There are many many factors that affect the output of a developer. I've seen alot of people try various metrics ...

Lines of code produced - encourages developers to churn out inefficient garbage Complexity measures - encourages over analysis and refactoring Number of bugs produced - encourages people to seek out really simple tasks and to hate your testers ... the list goes on.

When reviewing a developer you really need to look at how good their work is and define "good" in the context of what the comany needs and what situations/positions the company has put that indivual in. Progress should be evaluated with equal consideration and thought.

James Conigliaro
A: 

Typically, directly using metrics for performance measurement is considered a Bad Idea, and one of the easy ways to run a team into the ground.

Now, you can use metrics like % of projects completed on-time, % of churn as code goes toward completion, etc...it's a wide field.

Here's an example:

60% of mission-critical bugs were written by Joe. That's a simple, straightforward metric. Fire Joe, right?

But wait, there's more!

Joe is the Senior Developer. He's the only guy trusted to write ultra-reliable code, every time. He's written about 80% of the mission-critical software, because he's the best.

Metrics are a bad measurement of developers.

Paul Nathan
+6  A: 

The main problem with performance metrics like this, is that humans are VERY good at gaming any system that measures their own performance to maximize that exact performance metric - usually at the expense of something else that is valuable.

Lets say we do use the hudson build to gather stats on programmer output. What could you look for, and what would be the unintended side effects of measuring that once programmers are clued onto it?

  • Lines of code (developers just churn out mountains of boilerplate code, and other needless overengineering, or simply just inline every damn method)
  • Unit test failures (don't write any unit tests, then they won't fail)
  • Unit test coverage (write weak tests that exercise the code, but don't really test it properly)
  • Number of bugs found in their code (don't do any coding, then you won't get bugs)
  • Number of bugs fixed (choose the easy/trivial bugs to work on)
  • Actual time to finish a task based against their own estimate (estimate higher to give more room)

And it goes on.

The point is, no matter what you measure, humans (not just programmers) get very good at optimizing to meet exactly that thing.

So how should you look at the performance of your developers? Well, that's hard. And it involves human managers, who are good at understanding people (and the BS they pull), and can look at each person subjectively in the context of who/where/what they are to figure out if they are doing a good job or not.

What you do once you've figured out who is/isn't performing is a whole different question though.

(I can't take credit for this line of thinking. It's originally from Joel Spolsky. Here and here)

madlep
+1 for you and +1 for Joel. 8-)
RichieHindle
A: 

We get 360 feedback from everyone on the team. If all your team members think you are crap, then you probably are.

+1  A: 

Hi Miguel,

Speaking of KPI in software developers. www.smartKPIs.com may be a good resource for you. It contains a user friendly library of well-documented performance measures. At the moment it lists over 3300 KPI examples, grouped in 73 functional areas, as well as 83 industries and sub-categories.

KPI examples for the software developers are available on this page www.smartKPIs.com - application development They include but not limited to:

% Defects removal efficiency % Data redundancy

In addition to examples of performance measures, www.smartKPIs.com also contains a catalogue of performance reports that illustrate the use of KPIs in practice. Examples of such reports for information technology are available on: www.smartKPIs.com - KPIs in practice - information technology The website is updated daily with new content, so check it from time to time for additional content.

Please note that while examples of performance measures are useful to inform decisions, each performance measure needs to be selected and customized based on the objectives and priorities of each organisation.

Best regards,

Anita Liang

www.smartKPIs.com

smartKPIs

related questions