Slashdot Mirror


The Futility of Developer Productivity Metrics

snydeq writes "Fatal Exception's Neil McAllister discusses why code analysis and similar metrics provide little insight into what really makes an effective software development team, in the wake of a new scorecard system employed at IBM. 'Code metrics are fine if all you care about is raw code production. But what happens to all that code once it's written? Do you just ship it and move on? Hardly — in fact, many developers spend far more of their time maintaining code than adding to it. Do your metrics take into account time spent refactoring or documenting existing code? Is it even possible to devise metrics for these activities?' McAllister writes. 'Are developers who take time to train and mentor other teams about the latest code changes considered less productive than ones who stay heads-down at their desks and never reach out to their peers? How about teams that take time at the beginning of a project to coordinate with other teams for code reuse, versus those who charge ahead blindly? Can any automated tool measure these kinds of best practices?'"

203 comments

  1. Refactor... by Tsingi · · Score: 4, Insightful

    Refactor, refactor, refactor

    KISS technology, nothing beats it.

    1. Re:Refactor... by ZeroExistenZ · · Score: 5, Informative

      Application design (have someone think about everything in broad lines, set out a main architecture-model in ADVANCE.)

      Iterative design.

      A good project manager prioritizing and communicating current development shielding programmer from clients (who during the "waiting time", are fantasizing changes).

      In contrast, in debugging and QA, free way between the client and the developer (more efficient and gives more motivation to the dev as to slave for )

      Realistic expectations: don't get your devs running around doing "quick" jobs left and right while they're trying to keep a tight schedule.

      Keep everybody current: short standup meeting in the morning

      Motivate communication; devs tend to get absorbed in their coding-problem (nd prioritize being "productive") but forget to be a team

      The right personality on the right segment of a project: developers have their strengths and their weaknesses.

      ...

      --
      I think we can keep recursing like this until someone returns 1
    2. Re:Refactor... by stanlyb · · Score: 1

      I wish i had mod points man. Just, Keep It Simple Stupid.

    3. Re:Refactor... by kkruecke · · Score: 1

      When Paul Allen was doing his book tour, he said something like this, "Today they use the word refactor a lot. We used to just call it rewriting."

    4. Re:Refactor... by Anonymous Coward · · Score: 0

      Mod him even higher ! Insightfull ?

      I would add to this pile of excellent principles:

      - expose principles and examples of methods to your subordinates, help them understand what you want, how you want it, then let/help them find the means to achieve it their way. They will need to team up, make choices, be somewhat free of doing things freely, the way they feel it, be patient and helpful, but stick to the goals you've defined for quality, design, functionality, maintainability, etc... Orders are often counter-productive, wise and steadfast guidance respecting freedom and gifts is fine.

      Another version : define goals, express and enforce principles, then delegate. Main goals : efficiency of what is produced and of the way it is produced. Principles : exigent are we, we want usability, quality and maintainability, we want every contributor to be fine and contribute according to its means (and salary), we want to be able to evolve and survive, we must just consume what's needed. The bigger the organisation, the trickier it becomes to properly delegate, hence the importance of doing it very properly. Big meetings are costly.

      - a communication method between developers (+ system engineers, network guys...) and users, while building a computerized service : have devs interview the client, during all steps of its work. The client must express what he wants and how he works, what he will do with the system. The dev must translate it technically, soundly, and taking into account all aspects. The "dev" must learn from the client how he thinks, what he wants to functionally do, and the client must learn how to express what he wants in a computer-oriented world. The client and the dev must team closely to build the best solution, test it together.
      As said by the parent, the loop must be very close and it lasts long.

      - any Call for tender must be very well thought out if one want it to deliver what is needed to the success of a project. Proper call for tenders are critical to achieving goals, but improper ones should be avoided : for any organisation, relying on subcontractors mechanically induces potential tensions which may be avoided. Rely alternatively on somewhat stable groups of "equals" (i.e. same status, employees) and ad hoc project structures. Lasting and enduring can be among the goals of a project.

      Time to sleep here, j'arrête de pontifier.

    5. Re:Refactor... by sg_oneill · · Score: 4, Interesting

      Refactoring and metrics are often rarely agree. I remember one job I came into, I was given this steaming horrible piece of php (ugh) mess to fix up and add a bunch of features for the client. I took one look at it, and said "I need a good two months to fix this code" and demonstrated a series of horrible vunerabilities and fuckups in the code. Realising the vunerabilities (hint, demonstrating security holes in existing code is a REALLY good way to convince management you need to spend some quality time refatoring it) where just plain dangerous, I got given the go ahead.

      A couple of weeks in, the manager called me into the office asking "Shayne, this is very strange. You know we take a metric of how many lines of code per hour are written into account here?". "Yes" I replied, "You also know I think its idiotic". The guy said "Right , well your registering a highly negative score on this. I dont even know if this is working right?".

      The reality was this code was written by someone who really didn't "get" databases. A table would be loaded in, then iiterated over, and each pass would issue new sql calls for data, which would then be loaded in and iiterated again. I'd just delete all of the twenty+ pages of code, write a half-page winner of an SQL query, drop it into a mysql stored procedure, and select from it, then spending half a page formatting it and displaying it. It was robust, safe, and fast as hell. I went through the whole code like this turning hundreds of pages of code into tens of pages, all neatly commented, scrubbed of nasties, isolating out the design from the logic, putting models into model classes, views into templates and controllers to glue it all together.

      And the end result was every day the code would lose twenty-thirty pages of code and develop 2 or 3 pages of terse, clean, maintainable code.

      And as an end result, my metrics where fucked. I tried to argue that they needed to look at more sane metrics, like what was coming out of the CI software, and if they wanted to be really clever, things like complexity metrics and the like.

      Ultimately however ,they still wanted the "codes of line per day" metrics because as non technical people it made them feel like they understood what was going on, but ultimately they didn't. My suggestion to them however was "When developing fresh new code, that number should increase, when refactoring code, it should decrease. But only if the coder knows what he's frigging doing."

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    6. Re:Refactor... by Tsingi · · Score: 1

      I don't think rewriting is the same as refactoring. Sometimes you need to do a rewrite, when you get it completely wrong the first time, or wrong enough that you can't stand it. Refactoring is less severe, cleaning out dead wood, making things more efficient, removing redundancies and the like.

    7. Re:Refactor... by Tsingi · · Score: 1

      LOL! Yeah, that was more or less the point of my terse comment. Taking code out is quite often the sane and proper thing to do. If it doesn't look good to someone who is clueless and in charge, well, that is a social bug that is more difficult to deal with.

    8. Re:Refactor... by Anonymous Coward · · Score: 0

      There's no reason the standup meetings have to be done in the morning. Just anytime everyone can get together. I wish more people realized this.

    9. Re:Refactor... by MichaelSmith · · Score: 1

      They only really needed to do their slocs thing on the deltas and they would be happy. Lines taken out is still work. I have had arguments with management over sloc algorithms which exclude comments. I think we should be evaluating our developers on the basis of the amount of comment lines they write.

    10. Re:Refactor... by StripedCow · · Score: 1

      Refactoring is "rewriting in steps", that is, keeping your code in a functioning state while you're rewriting it.

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
    11. Re:Refactor... by Anonymous Coward · · Score: 0

      That's a mix of the blindingly obvious and the flavour of the month, and the sooner the latter gets binned the better. For example, iterative (design or development) is akin to starting out to drive somewhere by heading in roughly the right direction, and relying on finding a road going in the right direction when you get closer to your destination (or praying that, alternatively, you'll find an even better destination in that direction). Great for driving across Canada; not so good for from New York to London. Short (whether stand-up or not) meetings in the mornings? Unless everyone's work is overlapping, and they really need to know what sort of problems other people are getting, mostly they rapidly degenerate into simply going through the motions to keep the bean-counters happy, and a waste of time for the people with nothing much to report, but COULD do to be dealing with whatever mess they've arrived at work to find. As for "motivate communication" - management buzz-phrase waffle.

    12. Re:Refactor... by tmortn · · Score: 1

      Hmmmm... sounds like the previous owner of the code may have known exactly what they were doing. Best code for their metrics instead of the best code for the problem.... security issues aside that is. May have just been beat into submission and stopped giving a crap by the apparent culture that requires/values a silly production metric over effective work. I have never understood the thinking behind code productivity being measured by raw quantity of code. It implies every line is equal and ignores the simple fact that it provides a counter productive incentive to produce less efficient code simply as a means to 'game' the system.

      --
      I don't ask you to be me. I only ask you not expect me to be you.
    13. Re:Refactor... by sartin · · Score: 1

      Stupid management does stupid things. Smart management does smart things. Try to work for smart management. I did a project once where I slashed the size of the code base by 50% while adding features and getting rid of some annoying bugs. I was praised for my "negative productivity" because my management understood.

      Metrics and automated analysis are a great tool for looking at what you've done. They aren't a good measure of developer performance by themselves.

    14. Re:Refactor... by Yogs · · Score: 1

      They won't and can't understand the value in improvements in test suite results or complexity measures.

      Explain very simply.

      Features are assets.
      Lines of code are liabilities.

      People confuse the two because you need some code to make a feature, but every line has a finite chance of creating a bug incurring a support cost, and whether it introduces a bug or not it makes for more code to sort through to find the bugs in other parts of the code.

      The only real value of your application is in the features. If that's hard for them to quantify, that's understandable, but if that's hard for them to understand then that's insane. If you like, as a last ditch effort you might go back to the scenario oriented demonstrations that were convincing the first time but if that doesn't work, it's time to look for greener pastures.

  2. Writing for reuse is lacking use case by rednip · · Score: 4, Interesting

    If you don't have a use case for reuse, you shouldn't try to code for it. To many 'interfaces' are single use, see 'servlet' vs. 'http servlet'.

    --
    The force that blew the Big Bang continues to accelerate.
    1. Re:Writing for reuse is lacking use case by Rob+the+Bold · · Score: 2

      If you don't have a use case for reuse, you shouldn't try to code for it. To many 'interfaces' are single use, see 'servlet' vs. 'http servlet'.

      This is an especially good policy if you're a contractor paid by the hour.

      --
      I am not a crackpot.
    2. Re:Writing for reuse is lacking use case by Anonymous Coward · · Score: 0

      You should always give some consideration to reuse when coding, because you never know when it will get reused. To this day I see code I wrote for one-time use four years ago popping up in the strangest places.

    3. Re:Writing for reuse is lacking use case by c++0xFF · · Score: 1

      This is generally a good policy; on the other hand, as soon as a case for reuse is made (such as when new features are added), the shared code should be refactored out. In my experience, the first time I duplicate functionality is never the last time. And don't wait for the thirteenth reuse, either, as refactoring each into a common subset can be just about impossible.

    4. Re:Writing for reuse is lacking use case by DutchUncle · · Score: 1

      I work in embedded code that has to use hard-coded addresses and special references. If you write something once, it's unique. When you have to cut-paste-modify it once, no problem. If you have to cut-paste-modify it a second time for a third purpose, it's time to think about a macro or a subroutine or *something*. I agree if your intent is "don't overcomplicate from the beginning", but keeping things parallel / symmetrical just makes things clearer.

  3. Metrics fail every time by Anonymous Coward · · Score: 0

    Holistic coding is the only way to go.

  4. It's tricky by LunaticTippy · · Score: 5, Insightful

    Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code.

    It almost seems better to measure a bunch of things and use a secret formula to determine productivity.

    --
    Man, you really need that seminar!
    1. Re:It's tricky by abroadwin · · Score: 5, Insightful

      Or you could just communicate with your developers, be aware of the work they're doing and judge their performance based on their effective productivity from your perspective. I've heard this called "management" before, but I know that word has been twisted to mean something more sinister as of late.

    2. Re:It's tricky by ackthpt · · Score: 5, Insightful

      Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code.

      It almost seems better to measure a bunch of things and use a secret formula to determine productivity.

      In my book there are only three ways to measure code:

      • For speed
      • For size
      • For readability

      Emphasis on any one and the others suffer. They're goal should be on bug-free code which meets a spec. Writing code is like practicing medicine, every patient is different and has its own demands.

      --

      A feeling of having made the same mistake before: Deja Foobar
    3. Re:It's tricky by jeffmeden · · Score: 2

      Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code.

      It almost seems better to measure a bunch of things and use a secret formula to determine productivity.

      A secret formula like, oh I dunno, customer satisfaction (maybe "how many bugs make it to the customer")? Every piece of software is written for a customer (of some sort) so maybe time could be spent actually thinking about how effective the code is AFTER it's used. Speaking as someone who doesn't write much code, but lives and breathes the consequences of good and bad code every day, I can say with confidence that quality would go up if the only coding "practice" was severe punishment of anyone who introduced/propagated/failed to eliminate bugs in the code they were responsible for.

    4. Re:It's tricky by icebraining · · Score: 5, Insightful

      So, you want to reward Wally? He probably doesn't introduce much bugs...

    5. Re:It's tricky by Curunir_wolf · · Score: 4, Insightful

      Or you could just communicate with your developers, be aware of the work they're doing and judge their performance based on their effective productivity from your perspective. I've heard this called "management" before, but I know that word has been twisted to mean something more sinister as of late.

      That won't work, because we laid off all the middle managers years ago. Developers are all exactly the same - we just need to know which ones to slot into the critical path.

      --
      "Somebody has to do something. It's just incredibly pathetic it has to be us."
      --- Jerry Garcia
    6. Re:It's tricky by ackthpt · · Score: 1

      So, you want to reward Wally? He probably doesn't introduce much bugs...

      Neither does he produce. If the PHB weren't so inept he wouldn't be there.

      Tell me you've never been in a workplace there didn't have a goldbricker like Wally.

      --

      A feeling of having made the same mistake before: Deja Foobar
    7. Re:It's tricky by jeffmeden · · Score: 1

      So, you want to reward Wally? He probably doesn't introduce much bugs...

      If his projects are rated as satisfactory by management (this "metric" ALWAYS comes first, no matter what the development style is) then sure. Sometimes the zen of knowing what not to do is more effective than having the energy to code 10,000 lines of something that is buggy and ultimately unneeded.

    8. Re:It's tricky by elsurexiste · · Score: 1

      ...and judge their performance based on their effective productivity from your perspective.

      Your perspective will taint those assessments and assign different values to whoever you dis/like most. That's why we use metrics: they are quantitative and objective.

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    9. Re:It's tricky by Anonymous Coward · · Score: 0

      My metric is code separability into mostly independent parts and good interfaces between them. This way, it is easy to fix or change one part without affecting everything else. Speed, size and readability don't matter that much as long as your code is nicely modularised. You can have nice, fast, small and readable code which holds all other parts of your code hostage due to being dependent on too many or the wrong things.

    10. Re:It's tricky by Hognoxious · · Score: 1

      In my book there are only three ways to measure code:

              * For speed
              * For size
              * For readability

      Perhaps you've got a few pages missing. Usability, functionality, reliability...

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    11. Re:It's tricky by nine-times · · Score: 5, Insightful

      Yeah, I've come to realize that nobody understands what a manager is supposed to do anymore. Most people's concept is that managers exist to play the part of the PHB, but they don't do anything useful.

      More and more, I think no one even understands the value of having a knowledgeable person make difficult decisions based on well thought-out judgments. People want procedures that they can just give to anyone and assume that the outcome will be the same, and then they want metrics that they can use to measure the outcome without knowing anything about the situation.

      The proper role of a manager-- aside from particular responsibilities he/she might have on top of this-- is to understand the people working for him and understand his unit's role in the greater context of the company, and then to eliminate obstacles that prevent the people working for him from performing their roles. This might mean protecting the people that work for you from upper management, it might mean recognizing and rewarding good performance, or it might mean all sorts of other things. But to do it right, it takes a lot of work and it takes good judgment.

    12. Re:It's tricky by sjames · · Score: 1

      Coming up with a developer value metric is NP hard. The best you can do is use human intuition (AKA, a formula so secret even the user isn't sure what it is) to approximate a reasonable result and then look at metrics to see why the intuitive approximation is/is not valid. It cannot be proceduralized without hand waving.

      Note to managers?: You don't WANT this proceduralized or YOUR manager will replace you with a spreadsheet. Watching your former employer tail spin into the water might provide some brief satisfaction, but it won't get you your job back.

    13. Re:It's tricky by stanlyb · · Score: 2

      Actually, in my book there is only one feature that i wanna to see in every program/module/library. To.Be.Debugable. If i cannot debug it......sorry, but your code is crap.

    14. Re:It's tricky by turbidostato · · Score: 1

      Yes, they do measure something, the problem being "...if interest".

    15. Re:It's tricky by turbidostato · · Score: 1

      Your policy would certainly render quality code... eventually. In the mean time you would be forgetting that nasty issue called "time to market".

      Remember: if you are not ashamed of showing your code, you waited too much to promote it.

    16. Re:It's tricky by Rob+the+Bold · · Score: 3, Insightful

      Actually, in my book there is only one feature that i wanna to see in every program/module/library. To.Be.Debugable. If i cannot debug it......sorry, but your code is crap.

      Unfortunately, if you can't debug it, it's your source code that's crap. Because if you're debugging it, it's yours now . . .

      --
      I am not a crackpot.
    17. Re:It's tricky by c0lo · · Score: 2

      Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code.

      Two things:
      1. Your point - which is "Tell me how you measure me and I'll tell you how I'll behave" - with the addition that it's so natural/visceral a reaction that one doesn't even need to intend to game the measurement, the behavior of the measured will alter
      2. I'm firmly on the opinion that code is value-spent and is not value-created. From this point of view, seems very strange to me for one to use metrics of cost to measure productivity. Efficiency should be measured in how small the number of lines of code/bug fixes are needed for implementing/maintaining the desired functionality.

      --
      Questions raise, answers kill. Raise questions to stay alive.
    18. Re:It's tricky by Bert64 · · Score: 1

      Yes that's the only effective way, but it doesn't scale to huge numbers and doesn't fit in with the corporate bean counters who like to see graphs and statistics...

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    19. Re:It's tricky by Rob+the+Bold · · Score: 1

      Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code. It almost seems better to measure a bunch of things and use a secret formula to determine productivity.

      The important thing to do before trying to figure out how to measure something is to decide what it is that you want.

      --
      I am not a crackpot.
    20. Re:It's tricky by abroadwin · · Score: 1

      The problem there isn't the performance measurement strategy, it's over-extension of management. If your manager:managed ratio is such that it isn't an effective strategy then you have too few managers for the number of developers you have.

    21. Re:It's tricky by marcosdumay · · Score: 4, Insightful

      Yes, they are objective and quantitative. Managers love that, because being objective excuses them from forming the kind of bias people used to call "leadership", and being quantitative they fit into nice formulas where they can convey no information at all to higher managers that are too insecure to ask what it means.

      Just don't expect those quantitative and objective metrics to be correlated with the overall profit of your business.

    22. Re:It's tricky by marcosdumay · · Score: 1

      "More and more, I think no one even understands the value of having a knowledgeable person make difficult decisions based on well thought-out judgments. People want procedures that they can just give to anyone and assume that the outcome will be the same..."

      Don't you see several complaints around here that managers treat developers as gears in a box or stuff like that? Do you really think that is restricted to tecnicians?

    23. Re:It's tricky by ackthpt · · Score: 1

      In my book there are only three ways to measure code:

              * For speed

              * For size

              * For readability

      Perhaps you've got a few pages missing. Usability, functionality, reliability...

      That's the end product. This is about the actual writing of code. You can apply any or all of those in respect to the end product independently. A coder could write very neat code, fast code, or compact code, which has any kind of interface or performance.

      --

      A feeling of having made the same mistake before: Deja Foobar
    24. Re:It's tricky by Kjella · · Score: 1

      Yes we've tried entirely subjective management, that's why we're trying to find objective criteria. Nothing like a manager that can set pretty much any performance rating he likes, that would surely not be gamed or abused. Combine that with most everybody thinking they're above average software developers and you got the scene set for feeling unjustly passed up. Not to mention the total lack of transparency, ability to compare with other teams or to measure the performance of the managers. Neither side is exactly total bliss.

      --
      Live today, because you never know what tomorrow brings
    25. Re:It's tricky by stanlyb · · Score: 1

      That's why when i try to debug your code (and making it by definition mine), i am using quantum mechanics methods, and the result is that i could tell you that there is a dead cat in your bag, without even opening your bag, and hence, by definition, it is is still your.dead.cat. (now how are you going to beat me....)

    26. Re:It's tricky by smelch · · Score: 2

      It is odd how many code-sharing sessions start with "this is all ugly and I haven't had a chance to clean it up yet but...."

      --
      If I can just reach out with my words and touch a butthole, just one, it will all be worth it.
    27. Re:It's tricky by Anonymous Coward · · Score: 0

      Unfortunately, if you can't debug it, it's your source code that's crap. Because if you're debugging it, it's yours now . . .

      Not if you're working in a team, the writer of the crap code is on holiday, and your boss asks you to debug it . . .

    28. Re:It's tricky by nine-times · · Score: 3, Insightful

      Yeah, that's my point. As a manager, it's your job to learn about the people who work for you, to help them understand what they should be working on, to help motivate them, to judge their strengths and weaknesses, and to coordinate/arrange things so that their weaknesses don't keep them from doing their job well. Then you have to weed out people who aren't going to do a good job, and meanwhile reward, foster, and develop the employees who have potential and do good work.

      That's a lot of work, but that's the work that a manager is supposed to be doing. Too often they shirk that work and instead treat their employees like "gears in a box". Sometimes it's laziness, but a big part of the problem is that our society/culture doesn't recognize the work/judgement of a good manager as valuable. We instead expect people to be interchangeable, which is a problem.

    29. Re:It's tricky by DoofusOfDeath · · Score: 1

      I think you're missing a few:

      Modifiability - This captures the extent to which a programmer correctly anticipates future changes that the code will need. It wouldn't be wise to judge a developer on this track record for just a single program, but with larger sample sizes, it could be useful.

      Time-to-develop - If you ignore this metric, you're unable to distinguish between a program that gets written in a day vs. the very same program getting written in a year.

      Now, you could argue that these two attributes are not purely about the code, but are actually about a code/programmer combination. But I'd say that also holds for your "readability" metric, which is subjective w.r.t. who's doing the reader.

    30. Re:It's tricky by smelch · · Score: 1

      Lines of code doesn't make sense because it has nothing to do with productivity. Some problems are harder to solve than others, some require more lines of code and are harder that way, some require complex logic. Some problems can leverage existing code, some can not. Some features just require a lot of skillful placement within the existing code. On top of that, I could write something with very few lines of code using a very resource-expensive technique, is that better?

      No serious developer thinks measuring lines of code is important. On top of that, it doesn't cost any more for me to write an extra 10,000 lines of code in a week so it isn't more expensive in a "value-spent" kind of way.

      --
      If I can just reach out with my words and touch a butthole, just one, it will all be worth it.
    31. Re:It's tricky by Kjella · · Score: 1

      In my book there are only three ways to measure code:

      For speed
      For size
      For readability

      But not for correctness? Security? Robustness? Scalability? Flexibility? I think a test class I took suggested something like 15-20 separate criteria. There's a reason you can write whole books on what "good code" really is. And none of those really cover if your architecture is borked, even if the code in isolation is pretty well done.

      --
      Live today, because you never know what tomorrow brings
    32. Re:It's tricky by mcmonkey · · Score: 1

      Or you could just communicate with your developers, be aware of the work they're doing and judge their performance based on their effective productivity from your perspective. I've heard this called "management" before, but I know that word has been twisted to mean something more sinister as of late.

      That won't work, because we laid off all the middle managers years ago. Developers are all exactly the same - we just need to know which ones to slot into the critical path.

      Sounds like you did it right. Most places I've seen laid off the developers, out sourced that work, and added a layer of management to manage the over-seas team.

    33. Re:It's tricky by abroadwin · · Score: 1

      The thing is this IS a subjective problem. I can't think of a single quantitative measure that can be used to determine productivity of a developer. Trying to turn a subjective problem into an objective one doesn't really work. Again, if that doesn't work then the problem isn't the strategy, but your management hierarchy itself. You're worried about managers picking favorites and gaming the system to the point of invalidating reported performance? Wow. Sounds like you've got a bigger problem than how to measure the success of a developer. The strategy I've mentioned is used to manage the development team I'm on and I've seen it work wonderfully. Perhaps you need new managers? Managers who actually care about rewarding people for doing work that contributes to the success of the company and, therefore, rate peoples' performance accordingly?

    34. Re:It's tricky by Anonymous Coward · · Score: 0

      Only an idiot would fire Wally. He's the only one who knows how the old mainframe works that runs the entire company.

    35. Re:It's tricky by yuhong · · Score: 1

      The sad thing is to be honest that fear-based management is indeed fundamentally flawed. Next step would be to hire better developers with passion for the job.

    36. Re:It's tricky by elsurexiste · · Score: 1

      It seems you never had to deal with a crappy or unfair boss. Brotip: when you find one, document the crap out of everything. It'll be hard for him not to look like an asshole when you make your point with real data and he ignores it.

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    37. Re:It's tricky by yuhong · · Score: 1

      And probably compensate them using things like options. This way the need for things like lay-offs are reduced.

    38. Re:It's tricky by bickerdyke · · Score: 1

      And useless.

      OK, keep on measuring as much as you want, but don't be stupid enough to believe "measurements" would tell you anything besides the thing you're actually measuring.

      If you want to measure LOC, go ahead. But this will only tell you something about the number of lines of codes. nothing. more. If you believe this tells you something about productivity, you're right out stupid.

      If you want to measure number of bugs fixed, go ahead. But this will only tell you something about the amount of overhead people put into ducumenting small issues instead of fixing them. nothing. more. If you believe this tells you something about code quality, you're right out stupid.

      --
      bickerdyke
    39. Re:It's tricky by Shotgun · · Score: 1

      Yeah, we've got that here. At the end of the year they make us all produce reports, have a bunch of meetings, and then the managers "manage" to rate the people they like highly, and let everyone else fall where they may. It isn't just a popularity contest, it is a "scientific" popularity contest.

      --
      Aah, change is good. -- Rafiki
      Yeah, but it ain't easy. -- Simba
    40. Re:It's tricky by Shotgun · · Score: 1

      My manager is in the process of being replaced, and a big part of it is exactly that.

      --
      Aah, change is good. -- Rafiki
      Yeah, but it ain't easy. -- Simba
    41. Re:It's tricky by c0lo · · Score: 1

      On top of that, it doesn't cost any more for me to write an extra 10,000 lines of code in a week so it isn't more expensive in a "value-spent" kind of way.

      But it is related with a higher "value-spent", my young Padwan, it certainly is!
      Even if not for you (assuming you were "smart" enough to "externalize" it), the cost is still there!! Ignoring this cost pertains to the dark side of the force.

      You see, never a code is written to stay unmodified forever - a code that doesn't need modifications is a dead code (nobody is using it) or an utopia of perfection (the application with a single button labeled "Do it for me").

      And maintaining 10,000 extra line of code (with their own need of being documented and documentation kept up-to-date; with their chance of unique and tasty bugs to be searched in a larger haystack; and so on) comes with a higher cost.

      --
      Questions raise, answers kill. Raise questions to stay alive.
    42. Re:It's tricky by c++0xFF · · Score: 2

      You deserve to be modded up, you do.

      The fallacy is that any metric (lines of code, number bugs reports closed, mean time to complete fixes, etc.) or a combination thereof can differentiate between the programmers that should be promoted and those that should be fired. The assumption is that "good programmers" write more lines of code, fix more bugs, make the code run faster, or even write code that optimizes some arbitrary complexity metric. In fact, a "good programmer" does none of these things.

      A "good programmer" doesn't necessarily create or changes lots of code. This is especially true of older code. Some of the most intricate fixes I've ever had to make only involved a couple of characters on a single line.

      A "good programmer" puts in useful comments, which line of code counters usually exclude.

      A "good programmer" will fix a bug the right way the first time, and doesn't race to close bugs. However, a "good programmer" will close as many bugs as possible, as the thought of an unfixed software bug produces the same emotions as knowing real live bugs live in your computer.

      Well, so much for the objective measures. How about some subjective ones?

      A "good programmer" will write code that others will find a pleasure to work with later. Not necessarily bug-free, but fixing those bugs are simple. Extending functionality doesn't break everything all over again. Reusing functions is a breeze. Everything's well-documented.

      A "good programmer" gets the job done. Easy tasks will be completed quickly, difficult tasks will be completed after some time, but both will be "well done."

      A "good programmer" will test all code as thoroughly as necessary. This means that odd corner cases are considered and accounted for, that error conditions are handled gracefully.

      A "good programmer" will find and fix bugs, refactoring and cleaning up code with each change. Code runs and even looks better after a "good programmer" works with it, even in passing.

      Metrics say absolutely nothing about a programmer. And yet, I can tell you exactly which programmers I work with actually know what they're doing and produce good results. I know which ones will help the company make money. I know which ones will meet deadlines. And I also know which ones I'll be cleaning up after later on. I know of no metric that can tell me this, so yes, it's purely subjective.

    43. Re:It's tricky by Carnildo · · Score: 1

      Efficiency should be measured in how small the number of lines of code/bug fixes are needed for implementing/maintaining the desired functionality.

      You want me to minimize line count? I can do that. I'll probably follow it up by submitting the code to the IOCCC, but you'll get the small codebase you asked for.

      --
      "They redundantly repeated themselves over and over again incessantly without end ad infinitum" -- ibid.
    44. Re:It's tricky by marcosdumay · · Score: 1

      Unfortunately, I've had that experience. He didn't survive being my boss for long, but it is a bad place to be.

      Anyway, I don't get what gave you the impression that I was talking about not documentating things. I just said that bad bosses rely on irrelevant metrics because it both makes them feel better professionals and helps hide their incompetence from the upper levels.

    45. Re:It's tricky by marcosdumay · · Score: 1

      Ok, and mine is that the boss bosses (be them shareholders or executives) think about him as a gear in a box too, and try to take any signal of personality out of his job so that they can measure his perfomance with simplistic metrics and replace him at will.

      Your boss is subject to the same conditions he is trying to impose on you. That is why he can't make a decision, and must do everything following a process.

    46. Re:It's tricky by c0lo · · Score: 1

      Efficiency should be measured in how small the number of lines of code/bug fixes are needed for implementing/maintaining the desired functionality.

      You want me to minimize line count? I can do that. I'll probably follow it up by submitting the code to the IOCCC, but you'll get the small codebase you asked for.

      You stretched a bit what I meant, but you do have a point
      (thanks for reminding about them anyway; made me curious: are they still running the contest? Going to visit their site)

      --
      Questions raise, answers kill. Raise questions to stay alive.
    47. Re:It's tricky by russotto · · Score: 2

      People want procedures that they can just give to anyone and assume that the outcome will be the same, and then they want metrics that they can use to measure the outcome without knowing anything about the situation.

      That's what modern (from 1911) "scientific" management is all about. That's "best practices". That's ISO 9000, TQM, and all the rest of the alphabet soup. You break the work down into a number of tasks. You measure alternatives and find out the best way to do that task. You document that best way, and have all your workers on that task do it that way. When you've done that with every task, you have an efficiently-running widget factory.

      Sounds great and scientific and objective and all. There's only one slight issue with it when it comes to software development, which is that it doesn't work.

    48. Re:It's tricky by Anonymous Coward · · Score: 0

      I can. Number of units sold. ...Unfortunately, this only works for development teams that are also vendors and are also only like 1-3 people.

    49. Re:It's tricky by garaged · · Score: 1

      You can measure by features, bugs, and tickets solved, much like sysadmins are evaluated

      --
      I'm positive, don't belive me look at my karma
    50. Re:It's tricky by chthon · · Score: 1

      You are describing the process as software too, and the weaknesses are in the same place: requirements. When you have a manufacturing or administrative process, there are also requirements to take into account. However, as these requirements change in time, your process should be updated too (that is of course the reason that CMM or ISO9000 certification should be renewed every couple of years).

      Of course, in software, requirements can change much faster.

    51. Re:It's tricky by tbannist · · Score: 1

      The reason it doesn't work for software is that writing software is a creative process. There's a qualitative difference between writing software and putting one piece of a TV together on an assembly line. Many managers try to apply the factory model of management to creative jobs. You can't manage accountants, software developers, writers, graphic artists, musicians, or any of the other host of creative people like they are assembly line workers because the jobs aren't at all the same. Factory workers could be replaced by non-sentient robots that repeat the same task over and over again if the robots were inexpensive enough. The try getting a robot to design an effective ad campaign for a major product. You just can't.

      That's why a lot of modern "management" fails. They keep trying to treat "knowledge workers" like "meat robots".

      --
      Fanatically anti-fanatical
    52. Re:It's tricky by nine-times · · Score: 1

      Do you think you're arguing with me? My original point is that this is a cultural/societal problem of over-valuing procedures and metrics. We should also value judgment/wisdom in decision-making and in performance evaluations. Instead we insist that the only things of value are those which are easy to measure.

    53. Re:It's tricky by nine-times · · Score: 1

      In reality, it doesn't work out very well in most situations. Or rather, here's the problem: it's essentially a good way of creating guidelines, but not a good way to actually accomplish things. In another way of saying it, it's a good way of figuring out how to set up your widget factory, but as soon as you start actually making widgets, you're going to have to constantly keep on top of things and make adjustments, or your widget factory is going to do a crappy job of producing widgets.

      Don't underestimate the complexity of running a widget factory. Even if the widgets themselves aren't complicated, you're dealing with business practices being carried out by imperfect people. Two people following the same procedure will come up with different results, and metrics don't measure everything.

    54. Re:It's tricky by smelch · · Score: 1

      Well what if the alternative is more complex, requires more talented people to maintain? It's not just a given that more code is harder to maintain than less code.

      --
      If I can just reach out with my words and touch a butthole, just one, it will all be worth it.
    55. Re:It's tricky by Anonymous Coward · · Score: 0

      Well what if the alternative is more complex, requires more talented people to maintain?

      Indeed, then what?

    56. Re:It's tricky by QRDeNameland · · Score: 1

      Whatever you measure will be gamed. Measure bugs fixed, and you will find people wasting time listing each tiny variation of a bug. Measure lines of code, you will get spaghetti code.

      If I ever learned one thing on Slashdot, it is that this phenomenon has been codified as Goodhart's Law.

      --
      Momentarily, the need for the construction of new light will no longer exist.
    57. Re:It's tricky by Anonymous Coward · · Score: 0

      > You can measure by features, bugs, and tickets solved, much like sysadmins are evaluated

      You can, but then you encourage people
      - not to help other developers (as that would be time taken from solving tickets)
      - to create bugs that are easy to fix (so you could fix them)
      - to fix bugs poorly (so you can close them fast)
      - to implement features poorly (so you can create many of them)

      I have been in a project where they measure time it takes to close a bug and time it takes to create a feature. And I have seen
      - features that are implemented, fully tested in time. But which don't work at all and tests that test them are broken.
      - tickets about error messages being fixed by removing the code that prints error messages (not just that error message, but all error messages), instead of fixing the actual bug.

      It is very stupid to measure developers like that and anyone doing it, should understand what it will cause to the project.

      There is only one thing you can do to measure people. Tell them, that you need to take people from that project and ask who is the last person they want to be taken out from the project. Then reward those people as those are the people who either do all the work or those are the people who helps others do their work. As no-one wants that those people are removed from the project where they are working.

      But you either need to lie so that developers believe it. Or actually remove people from the project. Because if the developers know or believe that it is just a game, they will play the game and create alliances, and you will just get a list of cheaters.

  5. Short answers by drb226 · · Score: 3, Insightful

    But what happens to all that code once it's written? Do you just ship it and move on? Do your metrics take into account time spent refactoring or documenting existing code? Is it even possible to devise metrics for these activities? Are developers who take time to train and mentor other teams about the latest code changes considered less productive than ones who stay heads-down at their desks and never reach out to their peers? How about teams that take time at the beginning of a project to coordinate with other teams for code reuse, versus those who charge ahead blindly? Can any automated tool measure these kinds of best practices?

    It bitrots. Yes. No. Maybe. Probably. Definitely. Possibly.

    1. Re:Short answers by ediron2 · · Score: 1

      Lets see...

      • But what happens to all that code once it's written?
        It Bitrots
      • Do you just ship it and move on?
        yes
      • Do your metrics take into account time spent refactoring or documenting existing code?
        no
      • Is it even possible to devise metrics for these activities?
        maybe
      • Are developers who take time to train and mentor other teams about the latest code changes considered less productive than ones who stay heads-down at their desks and never reach out to their peers?
        probably
      • How about teams that take time at the beginning of a project to coordinate with other teams for code reuse, versus those who charge ahead blindly?
        Definitely
      • Can any automated tool measure these kinds of best practices?
        possibly

      Possibly?! More like 'Not Very Damn Likely'. Even peer-ratings metrics geared to get a sense of who on the team is most valued get gamed.

  6. Metrics suck in any job by GeneralTurgidson · · Score: 2

    Unless it's your job to make up the metrics.

    1. Re:Metrics suck in any job by guybrush3pwood · · Score: 1

      Bazzinga!

      --
      Perhaps I'm trolling, perhaps I'm not.
    2. Re:Metrics suck in any job by marcosdumay · · Score: 1

      I guess you were never assinged that kind of job.

  7. Problem by bigsexyjoe · · Score: 5, Insightful

    A lot of problems rating developer productivity. First, if a system is that good, then managers won't be able to game it to play favorites. Second, writing code for future use is always harder than writing code specific to the problem. Third, almost any metric is going to penalize a simpler solution. (Keep in mind that once you see a simple solution it seems obvious and everyone thinks they'd think of it. Fourth, evaluating developers well would require making the best coders managers, and that rarely happens for several reasons.

    1. Re:Problem by snowgirl · · Score: 2

      First, if a system is that good, then managers won't be able to game it to play favorites.

      This is the most likely reason I see why no performance metric that works would actually be picked up. The ideal rating system for a corrupt manager is one where everyone is rated poorly, and then you selectively absolve bad performance metrics for anyone you don't want fired.

      Of course, one also has to be careful in this situation and not have employees discuss their performance ratings, and especially don't have anyone else in management discuss performance rating absolutions. Think of the horrible legal shit storm you would get into if you rated one employee really poorly in one area, and then later that employee hears in a random meeting from your boss's boss that no one actually met that rating, and so if we held people to that rating, then no one would qualify as a good employee! Be sure once that event has actually happened though to stop recommending that every employee go to these diverse group weekly meetings...

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    2. Re:Problem by fortapocalypse · · Score: 1

      The first big problem though is lack of metrics and insight into what developers are doing. I worked on a team and helped implement big brother software on a large development team's computers. The problem was that there was too much data and the company that implemented the software then tried to provide inadequate visualization (e.g. 40% of time was spent on JSP/Java editing, 10% on a web browser, etc.) and just knowing *what* people are working on is not enough. You have to have metrics based on the output, so looking at source control has to play a part. The other metric that is important is customer satisfaction, number of customers, and possibly the effect of features/solutions on the amount of money made. That is the tough part to correlate to the work done. But without metrics, surveys, etc. you have nothing. And as Edie Brickell once said, "There's nothing I hate more than nothing."

    3. Re:Problem by MadKeithV · · Score: 2

      Second, writing code for future use is always harder than writing code specific to the problem. .

      It's nearly always wrong, too. YAGNI. You Ain't Gonna Need It.

    4. Re:Problem by c0lo · · Score: 1

      First, if a system is that good, then managers won't be able to game it to play favorites.

      This is the most likely reason I see why no performance metric that works would actually be picked up. The ideal rating system for a corrupt manager is one where everyone is rated poorly, and then ...

      An ugly world (I know it from my past experience)... I mean the world in which a manager doesn't compete with other managers (on budgets, prestige, etc) based on successes, but is "chosen to be a manager because we need one and... let's see who's the most notable and less-covered-by-shit on the floor".
      In the last case, the chosen person will be the most-full-of-shit-and-willing-to-spread it one... you can imagine how the managed team stinks.

      --
      Questions raise, answers kill. Raise questions to stay alive.
    5. Re:Problem by Smallpond · · Score: 1

      On a recent project there were two developerss fixing bugs. "A" would fix a bug in 4 hours rewriting 50 lines of code. "B" would fix the a bug in 9 hours rewriting 1 line of code. They let B go because A was more productive. Funny thing is they never ran out of bugs.

    6. Re:Problem by uncqual · · Score: 2

      If you can't trust your first level managers to understand who is contributing w/o a pile of metrics, there is a simple solution -- get new managers.

      ICs will game metrics much more than managers. Good managers rarely have a vested interest in favoring one developer over another except to the extent that one developer contributes more than another to getting reliable systems meeting requirements to the customer.

      If you have metrics that "managers can't game", it means that ICs can game them because they must be very objective (i.e., your review is 2.954 because your $METRIC1 was 68, your $METRIC2 was 93, your $METRIC3 was 17).

      Once you give anyone a list of metrics they will be measured by for raises, bonuses, and promotions, they will optimize for "good metrics" rather than actually keeping the customer happy. As well, since such metrics must include quite a few "quality" measures, this easily result in in-fighting within the team. Alan will say "No, this bug isn't attributable to me, it's attributable to Jim because the documentation on his method doesn't make it clear enough that division by zero is undefined". Whoever wins this battle (after arbitration is complete and the appropriate developer's $METRIC_QUAL has been decremented) will find it harder to work with the other developer in the future.

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    7. Re:Problem by smellotron · · Score: 2

      On a recent project there were two developerss fixing bugs.

      Gollum, is that you?

    8. Re:Problem by snowgirl · · Score: 1

      Oh, like how I can always spot the women who are full of drama, because they keep saying, "I won't put up with drama!"?

      Seriously, the friends that I've had who have been most vehemently against "drama" have always been the swirling torrent of drama in their own lives.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    9. Re:Problem by TemporalBeing · · Score: 1

      Welll....

      Yes, you have to look at source control; but then you also have to account for: (i) the developers that check every little thing in, and (ii) the developers that check in only the completed work, who may have had 10 different copies of it on their local system in the process.

      Yes, you have to take into account the output - the product, customers, maintenance, etc.

      But you also have to account for the communication - who much communication, how effective was the communication, etc. And that's a really hard thing to do without (i) an AI that can do it, and (ii) recording every kind of communication (email, blog, chat, phones, water cooler discussion, etc.) that happens among the people involved - which is far more important for software than people realize as that's where the solutions derive from.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  8. Project leader responsibilities by Synerg1y · · Score: 3, Insightful

    Wouldn't it be the project leader who monitors these on an individual basis? If a coder isn't pulling their weight its up to the project leader to address it up to the point of termination. Above that you have a suit who monitors the project leader's team performance and decides how well the project leader is doing. Of all the places layered management doesn't work, coding is not one of them. It's a challenge to hold a developer accountable because there are so many different approaches to the same problem in coding and a lot have definitive pros and cons.

    1. Re:Project leader responsibilities by stephanruby · · Score: 1

      If you're holding any IBM stock right now, it's probably time to sell it.

    2. Re:Project leader responsibilities by Hyperhaplo · · Score: 1

      I agree with your statements and sentiments.. but the cold hard reality is that the 6 figure guy I work with hasn't worked a full day in the last 5 years, admits in meetings that he has not done anything, has screwed up royally, dodges time on a regular basis, dodges work on a regular basis, attacks others on a regular basis (passive aggressive), clearly states he is opposed to having policy, clearly states a dislike of source control and release management (this in a ALM team), has formally requested to be removed from the team multiple times - and management has refused to remove him, has extremely poor technical skills (has been spoon fed by experts and supported by technical specialists for years.. now, without them, is next to useless), has extremely poor communication skills... and is still here. They recently made this person a team leader.

      This is Mr "I will write directly to Production whenever I feel like it because I have the access to do so".

      I hear laughing is good for the soul. Better than crying?

      It doesn't matter how productive anyone is in this environment. Any productivity can be undone by this twit in minutes.

      --
      You have a sick, twisted mind. Please subscribe me to your newsletter.
    3. Re:Project leader responsibilities by Synerg1y · · Score: 1

      Lol, and what is managements reason for keeping this guy?

      I'm sure there's coders on the teams who want to be project leaders, a project leader is a bit of a revolving door type position from what i've seen.

    4. Re:Project leader responsibilities by Hyperhaplo · · Score: 1

      1) Management can't tell he is being passive aggressive
      Even when evidence of this behaviour is presented in writing. Yes, he attacks others in writing.. and nothing is done.

      2) Managers who don't know their own jobs
      It's very sad, but the latest response from the manager up was "I'm new to my job.. "
      I must have had a 'WTF' look on my face because the topic was dropped quite quickly.

      3) Makes Friends Fast
      It's strange. This guy is very personable, and gets on everyone's good side, says the right things at the right time, but when pressed can't produce work.
      The problem is that managers give up. See Passive Aggressive above.

      4) Vocal about his rights, avoids responsibility
      Also very good at making others the villain if they complain. That's happened a few times now.
      He is also very good at screwing up royally and passing it off as being a minor or insignificant problem

      5) Passes off violations as insignificant
      I've lost count of how many violations he has incurred.. in public, at work.. yet.. it continues.

      Want to know the best part? Now I am close to being kicked out.. and I am regarded as one of the most knowledgeable, hard working, productive people here. How is this going to happen? Easy. About six months ago I raised a complaint that he, and others, were writing directly to Production (amongst other things). Now, 'management' see me as the one at fault (for raising the complaint), see the others as victims (pure victim mentality) and want to get rid of 'the problem'.

      I don't care any more. Time for a new job / new team.

      Know what really killed me, and why I don't care? I built this system. I brought this team and this system from medieval dark ages to where it is today, and have much more to offer. I've given my time and a good chunk of my life to this place. Does anyone care? No. So neither can I.

      So, my last acts (I'm 1/4 way through this now) are two new enhancements - a literal replacement of one person's job with a 'shell script' (slightly more complicated, but same idea) and a next layer of CM which demonstrates the incompetence of this guy. This will have significant productivity gains.. however, it won't stop this jerk from turning up to work late, running his ebay business from work, leaving early and spending his entire day dealing with emails from his ex-wife, ebay business and kids.

      The sad part here is that when I'm done I have two choices. I can say:
      1) Great news! We now have xxx functionality, for which yyy spends 100% of his time doing. We can now do much more as he has 100% of his time free, and we have a, b and c which really need to be done, isn't it great that we can do this now... or just not say anything to management at all...

      or

      2) Great news! We now have xxx functionality, for which yyy spends 100% of his time doing.

      (out of interest mr yyy - another twit in this team - actually physically threatened me. At work. In front of a room full of people. Was anything done? no).

      If you missed it, in the first instance it is saying "I just replaced someone's job with code, let's get this resource to work on other system projects", and in the second.. "I just replaced someone's job with code".

      Management is keeping these twits because they can't tell how bad it is.

      Time to leave. /RANT

      --
      You have a sick, twisted mind. Please subscribe me to your newsletter.
    5. Re:Project leader responsibilities by Synerg1y · · Score: 1

      I feel ya dude, I work in an IT environment where sales is commission based, it can get annoying very fast. But, I've learned a lot about career and people and the skills I take with me are worth more to me than anything else I'm going to get from this job. So that's how I look at it, I don't try to go above and beyond, I do do a very very good job with what I do take on, but I'm also careful with what I take on so I don't f myself. I can replace a few ppl w code, but will I make more? will I get anything out of it? No, so I don't make it an option, if management wants something though, that's just how it is. In regards to people I don't like I make myself unavailable to them, which in turn makes their jobs harder and more stressful, but hey it's give and take, and if you don't respect IT, better hope you don't have someone like me on that team. I will make it unpleasant for you to contact me on purpose, but I do believe in karma. If it's my boss, same thing but always with room for growth out of the situation, what r they gonna do? fire me? that's what savings is for. If you can't save, you need more income cause in this economy living paycheck to paycheck can be nerve racking.

      If somebody threatens you though, personally I would walk them outside and if they still had shit to say, they'd be hurting for a long time or I would, but that's me and that's probably not healthy, so my advice is to immediately contact HR, name some witnesses or if they do nothing you can file criminal charges, people are obligated by the justice system legally not to lie during a trial.

      In regards to building the system, it's good you take pride in your work, that's a rare trait in IT sometimes, however realize this:

      1. You got paid money to build that system.
      2. The system you built is for somebody else thereby it is not "your" system.

      ex. If my boss says take the system down for emergency reboot, I don't care, down it goes, if somebody has a problem, I refer them to my boss. No sense in taking responsibility for what isn't yours to begin with, I take pride and responsibility in the knowledge of my job rather than the production, nobody shares their commission w me if I give them super features that I work my ass off for, so why bother? My eyes and hands will thank me someday.

      Easiest solution is to just leave, go consult for a while if your any good at business, it's important to recognize when you've outgrown a job, or when the glove doesn't fit don't wear it. However, remember you are at fault here too, no matter how bad your boss seems, establish boundaries and set responsibilities if you haven't done so, try a different approach than what your taking which seems like passive aggressive narcissism. If you want to take credit for your projects that you aren't getting credit for, when you complete, cc your bosses boss, I've never had an issue w doing that, then again I don't have a problem with uncredited work either I guess.

      If you want to get at your bad manager there are techniques for this too, everything you just said with examples, statements and if possible witnesses all compiled into an essay like email tend to get people's attentions.

      I have some life advice for you though, being a great coder is great, but you can't make it on code alone, me? I chose to learn a bit about psychology to bridge the gap between the 0's and 1's and human interaction. Seriously, I recommend stumbleupon > psychology / philosophy as a starting point.

      Because I'm confident in working with people now as much as I am computers, or so I tell myself, I still have a million and one flaws, I am considering consulting and working my own hours because I do not fear that face to face interaction and confrontation with people that happens in business routinely.

      Hope my post helps you, trust me I know the feeling :)

    6. Re:Project leader responsibilities by Hyperhaplo · · Score: 1

      Good advice.

      I have just booked a meeting with a manager in another area, and am researching roles in another related area.

      You are right. It is time to leave.

      The problem with the threats is actually getting someone else to witness and verify. Rather, should I say, I have a list of 10 people .. most of whom know that retaliation will go against them.. and that their job can be on the line.

      Ah yes, HR. Want a good one? From management here: If this goes to HR (as a Code of Conduct or similar complaint) then we will raise a CoC against you.
      I actually fell for that. Yes, I know. I know.
      What I know now is that given that they don't have any basis at all against my conduct.. I should have pushed it. It's in the system.. logged as a Code of Conduct more than once.. and management refuse to take it further and HR want management to deal with it.
      Absolutely lovely.

      For the record, yes, I know it isn't 'my' system. I just have a hard time watching people deconstruct what I have built. You are absolutely correct.

      Thank you for your thoughts. I take your advice on the practical application of karma in the workplace. You have helped greatly. It's nice to know I am not alone with this.

      --
      You have a sick, twisted mind. Please subscribe me to your newsletter.
  9. Pfft by Allicorn · · Score: 5, Insightful

    Can any automated tool measure these kinds of best practices?

    No. The - for the sake of politeness, let's call them "people" - who invested time and effort into devising these schemes have actually built a complete chain of negative productivity by doing so. Remarkable.

    --
    OMG!!! Ponies!!!
  10. Measure the objective not the code by Crashmarik · · Score: 4, Insightful

    Personally I am always happy with the guy who can get things done with one line of code instead of a hundred, but what I really care about is that objective is met and we don't have a host of bugs that require 10 times the cost of the development just to maintain. Its not hard stuff but it does require common sense and a hard nosed attitude both of which can be scarce commodities these days.

    1. Re:Measure the objective not the code by RingDev · · Score: 2

      That's really the key to it. Focusing on objectives.

      Are outputs matching estimates for time? Are programs being deployed/shipped on schedule? Are bug report rates with in acceptable ranges? etc...

      And once you get good at that, start looking for ways to improve on the metrics. Reducing bug counts, getting more accurate estimates, and pushing for shorter (but still reasonable) estimates.

      I knew a programmer who once solved a problem that was going to be addressed with a $100,000 inventory management system, with a piece of cardboard and a black magic marker. No code metric could show that performance. But outcome based metrics were all maxed out for that job.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    2. Re:Measure the objective not the code by TheRealMindChild · · Score: 2

      It isn't that cut and clear. I can write a bug-free one line perl solution, but what happens when someone needs to maintain it? Objectives come from all directions. Your shop wants quick turn around and maximum profit. The customer wants quick turn around , solid code, AND a cheap price. Your goal is to be productive and get home before dinner. Notice the conflicting objectives.

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    3. Re:Measure the objective not the code by MadKeithV · · Score: 5, Insightful

      Personally I am always happy with the guy who can get things done with one line of code instead of a hundred, but what I really care about is that objective is met and we don't have a host of bugs that require 10 times the cost of the development just to maintain. Its not hard stuff but it does require common sense and a hard nosed attitude both of which can be scarce commodities these days.

      I am also REALLY happy to have "that guy" that has absolutely shit productivity, but somehow manages to pick up on every time a "solution" is proposed by the rest of the team to a problem that doesn't exist or doesn't matter, and stops THEM from being really efficient at doing the wrong thing.
      I'm also really happy to have "that girl" that doesn't seem to really be doing anything, but take her out of the team and everyone else starts floundering because she's actually constantly helping them be a lot more productive.
      "Meeting the objective" is actually potentially just as bad as any other metric, because it depends on how you define the objective, and meeting it. What the customer asked? What the customer wanted? Or what the customer actually needed?

    4. Re:Measure the objective not the code by MadKeithV · · Score: 1

      Are outputs matching estimates for time? Are programs being deployed/shipped on schedule? Are bug report rates with in acceptable ranges? etc...

      There is one metric that matters: Is it making money? If you want to get fancy, add Could it be making more money? Everything else is window dressing. (Assuming of course that you're not working in a "cost center" development department, and taking into account regulatory affairs)

    5. Re:Measure the objective not the code by Bucky24 · · Score: 1

      I can write a bug-free one line perl solution, but what happens when someone needs to maintain it?

      If it's in perl? You sacrifice to the voodoo gods whenever you need to maintain it, of course.

      --
      All the world's a CPU, and all the men and women merely AI agents
    6. Re:Measure the objective not the code by murdocj · · Score: 1

      Perl is write-only. You ask someone what the code is supposed to do and rewrite it.

    7. Re:Measure the objective not the code by Crashmarik · · Score: 3, Informative

      Personally I am always happy with the guy who can get things done with one line of code instead of a hundred, but what I really care about is that objective is met and we don't have a host of bugs that require 10 times the cost of the development just to maintain. Its not hard stuff but it does require common sense and a hard nosed attitude both of which can be scarce commodities these days.

      I am also REALLY happy to have "that guy" that has absolutely shit productivity, but somehow manages to pick up on every time a "solution" is proposed by the rest of the team to a problem that doesn't exist or doesn't matter, and stops THEM from being really efficient at doing the wrong thing.
        I'm also really happy to have "that girl" that doesn't seem to really be doing anything, but take her out of the team and everyone else starts floundering because she's actually constantly helping them be a lot more productive.

      "Meeting the objective" is actually potentially just as bad as any other metric, because it depends on how you define the objective, and meeting it. What the customer asked? What the customer wanted? Or what the customer actually needed?

      That guy and that girl are generally called project/team leaders. Don't fret, You raised an important issue. The guy you don't want on the team is the one that comes up with ridiculous edge cases and is needlessly obtuse. Like someone who invents coders that are doing the work of managers and senior managers then complains a measurement tool doesn't capture their contribution, or goes into a recursive loop trying to figure out what the objective should be.

    8. Re:Measure the objective not the code by RingDev · · Score: 2

      At a high level, absolutely!

      I don't know how many project charters have come across my desk that have the project goal as "To create software that..."

      I work at a food company. A multibillion dollar food company. We do food research. We sell food. We do NOT turn a profit writting software. So no project should ever come to me with a goal of creating software.

      You are correct in that the only metric that matters to the business is the profit. But in order to determine individual contribution, you can't just look at the 50,000 foot view. You'll wind up with some rather irate folks if the people who did all the work get the same bonus as the ones who contributed nothing, or negative value.

      There are Objectives, and then there are Enabling Objectives. Enabling objectives are were you can start to compare individual contributions to the outcome of the overall Objective.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
  11. Developers will cook the books anyway by Anonymous Coward · · Score: 3, Insightful

    If they know their productivity is being measured, it becomes a contest to see who can cook the books the best anyway.

    1. Re:Developers will cook the books anyway by inglorion_on_the_net · · Score: 2

      If they know their productivity is being measured, it becomes a contest to see who can cook the books the best anyway.

      Yes. And this would be a Good Thing if the metrics actually measured the right thing. The problem is, the metrics represent something that isn't actually what you want, so developers are motivated to do something that isn't actually what you want.

      So if you are going to be using a metric at all, the first questions you should ask yourself is what the metric measures, and if that is actually what you care about. For example, you could measure how many lines of code people produce, and reward people based on that, but is more lines of code actually better for your business?

      Personally, I don't have a great solution for comparing performance that matters, and motivating developers to increase it. I've seen some bad metrics. I've also worked with people who identified key performance indicators for their work and evaluated everything by them (when asked if they can do something, if it doesn't help them towards their KPIs, they'll say no), and it has been a very pleasant experience.

      I think that if you _can_ find a good metric and motivate people to score better on it, this is a Good Thing. The difficulty is that the things you are interested in are often either fuzzy and hard to quantify, or black and white and only known at the end. In many cases, no metric is better than a bad metric, and your best guide may be your own judgment: make sure you know what people are doing and how they work, interact with them, and you will probably see which ones are great and which ones aren't so great.

      --
      Please correct me if I got my facts wrong.
    2. Re:Developers will cook the books anyway by tbannist · · Score: 1

      This is actually a problem just about everywhere except the factory floor. The 2008 economic collapse? There's a pretty good chance the ultimate cause was poor productivity metrics for investment bankers. They were rewarded for earning high returns, there was no consideration given to the amount of risk those returns generated. When they discovered the magic of the mortgage securities and a housing bubble they found ways to earn higher and higher returns by playing games with the securities, as long as housing prices continued to climb there were few defaults, the bubble hid the risk from the managers.

      Measuring productivity for any creative task is difficult and attempting to reward people based on that measurement is fraught with danger. Often the rewards decrease productivity by focusing people away from the actual goal.

      --
      Fanatically anti-fanatical
  12. Complex things can be measured by davidannis · · Score: 1

    The idea that complex things can not be measured is constantly thrown up by professionals who don't want to be measured unfairly or just don't want to be measured at all. However, doctors, teachers, and programmers can all have their output evaluated. I know that there is more to evaluating a doctor than survival rate and how often he remembers to wash hands between patients, but I know that hospitals that try to measure and improve doctors performance do a better job of helping patients. Reviews by peers and management are a good place to start. Yes, that can devolve into a popularity contest or a blame game but good management can guard against that. When I ran a software company we'd have meeting where we reviewed and discussed sections of code as a learning tool as a small part of our QA process. The end result was better code and a more educated, engaged programming staff. When you combine subjective measures like these with easily quantifiable measures you can get a good idea of how competent a programmer is.

    1. Re:Complex things can be measured by obsess5 · · Score: 2

      But that's the whole question, isn't it? What are the *relevant* "easily quantifiable measures"?

    2. Re:Complex things can be measured by marcosdumay · · Score: 1

      No doubt you can measure quality of code or the competency of a programmer. But can you stablish an objective metric with fast results (remember, corportations are "this quarter" oriented) that gets it right?

  13. We need metric metrics by naroom · · Score: 5, Funny

    metrics provide little insight

    If only we had some kind of.... metric metric.

    1. Re:We need metric metrics by Jah-Wren+Ryel · · Score: 1

      metrics provide little insight

      If only we had some kind of.... metric metric.

      Sounds like ISO9000.

      --
      When information is power, privacy is freedom.
    2. Re:We need metric metrics by Anonymous Coward · · Score: 0

      If only we had some kind of.... metric metric.

      I prefer my metrics to be ANSI metrics the way the supreme being intended, thank you very much.

    3. Re:We need metric metrics by Hognoxious · · Score: 1

      By analogy with metadata - data about data - "metametrics" was what sprang to my mind. And like most things that do after I've had a few jars, it a) already exists and b) is far too shit to deserve such a goshdarn clever name.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  14. What about non-coding time? by slapout · · Score: 2

    What about all the time you spend not coding: meetings, documentation, training users on how to use the system, working out the design before you start coding, answering emails, sending status reports, filling out time sheets, coordinating work with other developers, coordinating things with others in IT so your program will have a server to run from, being the go-between for the IT server team and the customer when the server goes down, creating database layouts and writing SQL?

    --
    Coder's Stone: The programming language quick ref for iPad
    1. Re:What about non-coding time? by lwsimon · · Score: 1

      Surely writing SQL qualifies as coding.

      --
      Learn about Photography Basics.
    2. Re:What about non-coding time? by Anonymous Coward · · Score: 0

      Funnily enough, I'm just introducing the ratio of "time spent on stuff that directly contributes to the customer solution:time spent on anything else" as a metric. Or, simpler: Customer Value Add:non Customer Add time

      Some of the things you list belong in the first number; some in the second:
      * meetings - Depends on the content, but presume non-CVA
      * documentation - Assuming it's for a purpose and not just self-justifying: CVA
      * training users on how to use the system - CVA
      * working out the design before you start coding - CVA
      * answering emails - Non CVA
      * sending status reports - Non CVA
      * filling out time sheets - Non CVA
      * coordinating work with other developers - non CVA (ideal: being co-ordinated without spending effort on it)
      * coordinating things with others in IT so your program will have a server to run from - non-CVA beyond a small amount
      * being the go-between for the IT server team and the customer when the server goes down - non CVA. Better not have it go down.
      * creating database layouts - CVA
      * writing SQL - probably CVA unless involved in defect analysis & fix. Better to have no defects...

      It's not a metric of the individual developers, but of the project they work in.

    3. Re:What about non-coding time? by Anonymous Coward · · Score: 0

      Don't forget screwing around on Slashdot.

    4. Re:What about non-coding time? by EricWright · · Score: 2

      Not according to some of the developers around here. Of course, these are the types that put "select * from table" into their Java code, then try to filter data in the application layer. Then they whine that their application is slow.

      Seriously.

    5. Re:What about non-coding time? by Surt · · Score: 1

      Design is about as clearly non-CVA as it comes. Implementation is CVA. This is pretty much the whole philosophy behind agile.

      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
    6. Re:What about non-coding time? by lwsimon · · Score: 2

      Well, that's just ignorant, then.

      I write SQL most of the day, and in my opinion, it's more difficult to do well than traditional programming. If I'm writing a webapp somewhere, I only have to keep the individual logic i'm working on in my head - with SQL, I may have to know how a single dataset is processed over a half dozen steps to get the result I want.

      --
      Learn about Photography Basics.
    7. Re:What about non-coding time? by corbettw · · Score: 1

      One of the line items I have on my monthly metrics scorecard is an entry for time spent collecting metrics. It's never been lower than 5% and has reached 15% of total time at least twice that I can recall off the top of my head.

      --
      God invented whiskey so the Irish would not rule the world.
    8. Re:What about non-coding time? by uncqual · · Score: 1

      I've heard that claim before by a zealot who was defending not doing design with the absurd justification that went something like "customers don't buy designs so they don't add customer value". Well, guess what, customers don't buy C++ code either so all that time specifying the algorithm in C++ is, like design, non-CVA.

      Even if one wants to count time spent writing C++ code as CVA, it seems clear that most time spent thinking between typing lines of code is indistinguishable from design (since, that's the activity the brain is doing that time if one is competent in the language and tools) so needs to be counted as non-CVA.

      Pedantic agile zealots are among the most annoying people in the world.

      --
      Why is there an "insightful" mod and why isn't it "-1"? If I wanted insight, I wouldn't be reading /.
    9. Re:What about non-coding time? by Anonymous Coward · · Score: 0

      I write SQL most of the day, and in my opinion, it's more difficult to do well than traditional programming.

      I do both, and they both have their moments. The only thing moderately difficult about SQL is figuring out which magic incantation of JOINs and indexes you require to make a complex query execute quickly. Webapps have their own peculiarities that are about as obnoxious.

    10. Re:What about non-coding time? by Anonymous Coward · · Score: 0

      "then try to filter data in the application layer."

      I've seen official "guidance" from microsft suggest this.

    11. Re:What about non-coding time? by Anonymous Coward · · Score: 0

      Have you ever asked whether you're supposed to include the time collecting metrics about the time used collecting metrics? What about the time for collecting metrics about the time for collecting metrics about time for collecting metrics?
      I think I confused myself somewhere there.

    12. Re:What about non-coding time? by slapout · · Score: 1
      --
      Coder's Stone: The programming language quick ref for iPad
    13. Re:What about non-coding time? by dragonturtle69 · · Score: 1

      I've not seen that, yet, but I can easily believe it.

      --
      "What luck for the rulers that men do not think." - Adolph Hitler
  15. lazy management by J-1000 · · Score: 5, Insightful

    This all comes down to lazy, gutless management. Why take the time to get to know Dave and monitor the quality of Dave's work when we can just look at a spreadsheet at the end of the month? Managers prefer to tinker with automatic analysis software rather than manage.

    Which is more fun, getting a better handle on what Dave is doing, or researching fancy new software tools that might get you all sorts of praise from metric-craving executives?

    Dave's job, which was once about creating a quality product, now shifts to merely satisfying the metrics.

    1. Re:lazy management by Anonymous Coward · · Score: 0

      >Dave's job, which was once about creating a quality product, now shifts to merely satisfying the metrics.

      If Dave were the only engineer on it, then I'd agree.

      If it's a complex embedded realtime system with 200 engineers working on it, then no.

    2. Re:lazy management by asylumx · · Score: 1

      I hope it's different where you work, but where I work, the management is lucky if they are truly 100% management. But in reality, the managers of technical teams also have to play the role of project manager, technical lead, and sometimes architect. Yes, it sucks, and I wish it weren't that way, but trying to change that is like pulling teeth.

      So even if Mr. Manager has good intentions, he really is prevented by other duties from doing his job to the fullest extent. It sucks, but I wouldn't feel right calling that person gutless for it and pretending they are a less than useful person.

    3. Re:lazy management by sjames · · Score: 1

      What applies to Dave applies to Bill, Jane, etc just as much. Now they're all more interested in looking good on the metric of the day than on producing a decent product. Any who make the mistake of focusing on the product will be eliminated systematically by the metric.

  16. Coding is an art by Anonymous Coward · · Score: 0

    Coding is somewhere between art and engineering. You can hardly measure art.

    1. Re:Coding is an art by stanlyb · · Score: 4, Insightful

      And every developer starts as an engineer, and ends as an artist. As simple as that. The engineer can do anything, but have not done it yet. The artist knows what to NOT DO, because he has already done it, and does not wanna to repeat all the teenage mistakes again. The artist just gives you the solution. End of story.

    2. Re:Coding is an art by HornWumpus · · Score: 1

      Engineering is the union of applied science, business and art.

      Coding is just engineering. Most coders are bad engineers though. Still an immature field.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    3. Re:Coding is an art by Jeng · · Score: 1

      Yea, tell that to my art teacher that failed me.

      It was the only class where I did actually do the work.

      --
      Don't know something? Look it up. Still don't know? Then ask.
  17. Repeatability by 3count · · Score: 4, Insightful

    Metrics are valuable if you do the same thing repeatedly. If you build a new building that is like the previous one, you can collect metrics and compare your performance against history. If you write the same search algorithm again and again, you can collect metrics and compare to see how your performance changes over time. Of course, with software, you never repeat. Somewhere around the third time, you move it into some form of library, reuse it, and start on a fresh problem. Perhaps metrics are helpful in some situations, such if your team keeps repeating the same mistakes, you might find similarity in those mistakes (code smells.) There are plenty of people working on these problems and tools. But, from a management point of view, if you keep doing the same thing, you are doing it wrong, and code metrics are not going to help much.

    1. Re:Repeatability by gutnor · · Score: 1

      Metrics are important even when you do different thing - they can give the team useful insight with what is happening on the project. Almost all projects I worked on collected some metrics automatically and they get reviewed from time to time, generally spontaneously by members of the team. Metric like "Leader board" type stuff in Hudson are often used for fun.

      Now, if you use the metric for the team evaluation, the team will naturally work to optimize them, as if the metrics were just another very important requirement. Since as you said, you never repeat yourself, good luck to find a set of metrics whose optimisation is not detrimental to the project.

  18. Why are metrics so damn important by Riceballsan · · Score: 4, Insightful

    I don't get the concept of everything needing to be quantified. Does the team accomplish what the goals of having the team are? Does it get developed in a fair timeframe? Is everyone on the team pulling their own weight, or are there complaints of someone slacking off? In the end if the product works then the team is doing well, if the product isn't there should be at least one hybrid manager/coder that actually works with the team members sees who is committing what and can tell off the bat if there is or isn't a weak link dragging the rest down. Actually putting a pen and paper number on a complex project is silly. Do authors get judged by the number of pages they write in a day, no they get paid by the success or failure of the book. You can't judge by the number of lines of code, bugs per line ratio or anything like that, because it is all subjective and has little to no bearing on the end product.

    1. Re:Why are metrics so damn important by Anonymous Coward · · Score: 0

      Management loves metrics because "if I can measure it, I can manage it." It gives them something to point to and say "fix this!"
      It's also a CYA for management. If the metrics are wrong, it's a problem with the tool and not with the manager.

    2. Re:Why are metrics so damn important by thrich81 · · Score: 1

      The most important reason to attempt to quantify the effort which goes into a project is so that you can predict the effort which the next project will require, and have solid numbers to back up your predictions rather than just someone's vague feelings or unquantified remembrances of previous projects. This is true of any engineering project. A second and related reason is to identify efforts in the project which don't seem to justify their costs by their results. This quantification doesn't help the current project as much as it helps the next one. I agree that the measures of "number of lines of code, bugs per line ratio or anything like that" don't work very well but something has to be tried or we are just reduced to art (authors, etc), not engineering, with no predictable product, end date, or cost.

    3. Re:Why are metrics so damn important by Maximum+Prophet · · Score: 1

      ... Do authors get judged by the number of pages they write in a day, no they get paid by the success or failure of the book. You can't judge by the number of lines of code, bugs per line ratio or anything like that, because it is all subjective and has little to no bearing on the end product.

      Many successful novels, started out as magazine serials, which were paid by the word. Usually, though, they are edited before they are put into book form.

      I've seen a bunch of movies, where I thought, "This would be a great movie, if they just cut half of it, then sped the result up by 1.5x"

      I've often thought that coders should be paid by how *little* they write, as long as it does the job.

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
    4. Re:Why are metrics so damn important by Forbman · · Score: 1

      If all the projects were the same (or similar enough), then this would be true. But even if the current project is "customize this website framework for Customer X", which implies that there's a bit of a standardized template, and one makes some educated guesses about what needs to be customized to fit the customer's needs (is it within the framework, e.g., setting up colors, typefaces, etc), or really customizing it (writing custom modules that then interface with the existing framework), there's still too much variation in practice from project to project. It's great if some things can be reused from previous projects, but adding those pieces then again starts to fall into "vague feelings or unquantified rememberances of previous projects".

      In the end, though, we really are more like authors or artists or craftsmen, not car mechanics (if you didn't know, car mechanics do their work estimates from a huge estimate database, sort of like the ICD9/10 for cars, and then work to beat the time estimates that come out of it, so they can do more work... most of them are paid piecework, essentially. For cars, an oil change is basically an oil change, with the major variations being where's the oil filter, what kind of oil filter (and do we have it in stock) and how much oil to add). Not too much in the software development world fits that paradigm.

      As much as people want to put the "engineering" into software development, it's just not going to happen. The architects and structural engineers may come up with the plans, with good estimates, but the plans will not, cannot, take into account any site issues, product issues, or anything else that has to be resolved or figured out on-site by the contractors.

    5. Re:Why are metrics so damn important by Shotgun · · Score: 1

      It is necessary to do all this when you have a management philosophy that developer performance falls into a bell curve, completely ignoring the fact that the left end of the curve should be cut off at the interview process.

      --
      Aah, change is good. -- Rafiki
      Yeah, but it ain't easy. -- Simba
    6. Re:Why are metrics so damn important by mandelbr0t · · Score: 1

      there should be at least one hybrid manager/coder that actually works with the team members sees who is committing what and can tell off the bat if there is or isn't a weak link dragging the rest down

      This is why I want to get into the management side of things. I think my coding experience would make me a good judge of others' work, as well as a difficult person to BS. If more organizations moved actual developers and not PHBs into managing software projects, a lot of money would be saved by putting an end to the gravy trains and weeding out those that lied on their resume.

      --
      "Please describe the scientific nature of the 'whammy'" - Agent Scully
    7. Re:Why are metrics so damn important by Anonymous Coward · · Score: 0

      Alexandre Dumas (The Count of Monte Cristo, The Three Musketeers...) was a master in rigging metrics when writing serials, and the editors were always trying to create a new metric for him due to this.

      When he was paid per word, he wrote long sentences.
      When he was paid per sentence, he used a lot of very short sentences.
      When he was paid per letter, his main character was stuttering.

  19. Hmm by Hognoxious · · Score: 2

    Not everything that matters can be measured; not everything that can be measured matters.

    -- Einstein (or maybe it was Franklin)
     

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:Hmm by Anonymous Coward · · Score: 0

      Measuring programming progress by lines of code is like measuring aircraft
      building progress by weight.

      -- Bill Gates

    2. Re:Hmm by Nedmud · · Score: 1

      Measure what is measurable, and make measurable what is not so.

      -- Galileo

      We should combine that with one one of Einstein's to make the pragmatic rule: Everything should be as measureable as possible, but no more. (Basically, we should try to make things measureable, but we shouldn't measure things that obviously aren't.)

    3. Re:Hmm by Hognoxious · · Score: 1

      Galileo was talking shite. I'd be interested to know how he'd go about measuring the quality of a poem, a glass of wine or a chick's butt.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:Hmm by f()rK()_Bomb · · Score: 1

      Why couldn't you work out metrics for those, it sound easy. For poems there's loads of rules that poetry follows to be considered good or not. Wine you could analyse using robotic noses. For chicks asses you can measure cellulite content, shape, dimensions etc and easily classify asses into distinct groups.

      --
      "The space elevator will be built about 50 years after everyone stops laughing." - Arthur C. Clarke ~1980
  20. Do things right vs. doing the right things by Anonymous Coward · · Score: 0

    While people can certainly game any system that measures how productive they are by analyzing the quality of their code; it certainly doesn't understand whether or not that piece of code actually needs to exist, or that feature, etc. For example, you may construct an office building which is 20 miles from anywhere does it really serve a purpose, should it have been built? The building meets all the criteria for a good building and is functional, has structural integrity, etc, but it's in the middle of nowhere. Software is elastic in that the original code may be great, but overtime the quality may degrade, or the additional code may have solid quality, but the cohesiveness of the code feel is lost. Indeed the soul of the coding becomes convoluted and becomes difficult to maintain given the various signatures that people leave in their wake. Show me software that can measure that.

  21. This is BS by fortapocalypse · · Score: 2

    Measuring developer output/metrics effectively is a tough problem. Developers could solve it, but if they do, then they have to both change the way that they work and possibly work harder. Developers are smart enough to know that the metrics will be misused, even if the logic used to produce them is valid. Therefore, any solution will be ridiculed by the development community as insufficient, but the degree to which it is ridiculed will lessen as the solution improves. A solution though, is inevitable if development continues.

    1. Re:This is BS by DalDei · · Score: 2

      BS

    2. Re:This is BS by fortapocalypse · · Score: 1

      That's what I said, but you said it more concisely. If this were code, your solution would probably have rated higher than mine. But, after many (too many) years as a developer now, I can say that programming is about as much an art as carpentry. You can do beautiful things with both, but in the end it is about the artifacts and how they are used. They *are* measurable, and providing decent metrics for software development *is* possible. The biggest problem is that we don't want to admit that it is just a really difficult problem; instead we give up. And giving up is what is BS.

    3. Re:This is BS by DalDei · · Score: 1

      No I mean real BS. The core problem is not measurement but defining *what* is to be measured. To my knowledge that has never been achieved. Focusing on measurement is BS until we can agree on what is to actually be measured. To use your analogy. What is the measurement of a good cabinit ? How about a good piece of art ? Good in what way ? Value ? Prettiness ? Novelty ? Usefulness ? Uniqueness ? Utility ? Color ? Mass productivity (cabinits built per hour by X technology) ? Weight ? Shipping cost ? Price to produce ? Sales ? Measuring software IS BS until we define what the metrics are.

    4. Re:This is BS by Jeng · · Score: 1

      Before the cabinet was built there was a request for the cabinet that stated how the cabinet should be built including things such as appearance, function, and durability.

      I am not a coder, but I would think that the only metric that matters is does this product meet the specifications that it was intended to comply to?

      --
      Don't know something? Look it up. Still don't know? Then ask.
    5. Re:This is BS by DalDei · · Score: 1

      As A coder I can testify that the metrics have very little to do with the end result meeting up with the specs. What the Managers (aka 'bean counters') want to know is who should be paid more or less for their contribution. You can fairly easily measure code product quality against specs, and there are a million ways to do that. ( and a million different interpretations but its doable) what has NOT been found, to my knowledge, is to measure the developer ... did he do it fast enough ? efficient ? Elegantly, if he spent more time would the result be better or worse ? If you put 10 paid people on it would the results be as good ? better ? Thats the hard part. Measuring the *developer* not the product.

    6. Re:This is BS by PJ6 · · Score: 1

      ... providing decent metrics for software development *is* possible. The biggest problem is that we don't want to admit that it is just a really difficult problem; instead we give up. And giving up is what is BS.

      Who's giving up? You really think you can speak for every one of us? Who died and made you God.

    7. Re:This is BS by fortapocalypse · · Score: 1

      Who's giving up? You really think you can speak for every one of us? Who died and made you God.

      David Carradine.

  22. more reasons than just reuse. by RingDev · · Score: 5, Interesting

    Writing for reuse can be excessive, but there are a number of reasons to move in that direction even if you don't intend to reuse that specific code block:

    1) Unit Tests. If you abstract your functionality in a way that allows reuse, it also abstracts in for extremely easy unit testing. And unit testing will save you an incredible amount of effort in code maintenance.

    2) Consistency. If you follow the same design pattern for all of your abstractions, all of your developers should be familiar with it. This makes it significantly easier for different developers to step into projects as the hopefully don't have to learn another person's style for abstraction.

    3) Replacement and isolation. Need to implement a functional change? If your code is abstracted, like it would be for reuse, the functional change is limited to a single block, which is easily identifiable and if you're doing it right, unit-testable.

    4) Just in case. Most of the time abstracted code doesn't get reused, and event when it does get reused it's usually a copy and paste job instead of a reference. Even so, if anyone ever does need the same functionality, it allows them to quickly rip off the exact piece they are looking for as opposed to trying to strip out your programs logic to get the tiny bit they want.

    -Rick

    --
    "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    1. Re:more reasons than just reuse. by Anonymous Coward · · Score: 0

      I wish there were more old-school programmers who thought this way... They're so good at the pre-refactor phase but don't see the value in doing the other phases then wonder why it is so brittle.

    2. Re:more reasons than just reuse. by Radres · · Score: 3, Insightful

      It's easier to just refactor for re-use after the fact than try to design upfront for something that might someday never happen.

    3. Re:more reasons than just reuse. by c++0xFF · · Score: 4, Insightful

      And the "reusable" version very often isn't reusable at all, since the original coder didn't properly envision what other use cases would look like.

    4. Re:more reasons than just reuse. by TemporalBeing · · Score: 1

      It's easier to just refactor for re-use after the fact than try to design upfront for something that might someday never happen.

      Only if you upgrade the original source to use it as well. The point of designing with re-use in mind is that the original doesn't have to have much work to continue using the same code once its been re-used in something else as well. It may be a pain, but its often very worth the benefit.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  23. Example, please! by Krachmanikov · · Score: 1

    Can somebody give an example of that IBM score card, please? Is it just another Balanced Score Card system, just adapted to software development? The article misses to give that information.

    1. Re:Example, please! by fortapocalypse · · Score: 1
  24. If you need metrics to know who your stars are ... by Surt · · Score: 2

    ... you are already doomed. You've gone so far down the wrong path there's no hope of recovery.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  25. How much time is used on this tps report like BS? by Joe_Dragon · · Score: 1

    This sounds like some PHB how only knows how to be manger wanting numbers and having no idea about how developing works.

  26. What if productivity were easily measured? by Anonymous Coward · · Score: 0

    I suspect that if productivity measurement were so easy it could be automated, that programming would be "done" as a profession.

    Take a look at jobs where productivity measurement is easily automated, and you get assembly line worker, fruit picker, banker. These are all jobs for people that aren't very smart. :)

  27. Seriously by luis_a_espinal · · Score: 1

    Code metrics are fine if all you care about is raw code production. But what happens to all that code once it's written?

    Seriously, does the author has to ask? Or anyone that does software development for that matter? Sadly, apparently they have to ask.

    You never get to a point where you can say "code once it's written". Code changes after deployment, there are new releases, bug fixes, shit like that which crops up in real life.

    So assuming you are gathering metrics the smart way and in a manner that your particular project and organization, then, you simply keep gathering metrics as you re-factor your code, add new features and fix new bugs.

    At the very least once should be running McCabe, SLOC metrics (and LCOM metrics when doing OOP), # of open bugs per component and per release version and man-hours involved for a particular project/component/release. Identify and sort components by the # of open issues (fixed bugs, unresolved bugs, partially implemented features) and see where there is a relation between these issues and any or all of these metrics.

    Project/department/solution stack specific metrics, when done intelligently serve as structural red flags. They help prioritize.

    You can track which components have the highest McCabe metric, for example. Though you should always refactor, metrics like this can flag which part of the software needs more urgent refactoring, that's another example. You can keep track of the # of SLOC changes (additions, modifications and deletions) in a component from release to release (a measure of entropy), as well as the # of bugs detected (also from release to release).

    Then you compute a ratio of entropy/bugs detected per release. And if you find that the ratio of your last release (named A) is considerably smaller to the previous ratio (named B), then you can take that as an indication that there might be B-A undetected bugs in this release. And if after a certain number of releases, the ratio is still small, then you can take that as an indication that your quality control has improved.

    Things like that are what you do with code during development and during deployment and maintenance. It is never over with software. Until you completely decommission a software system, code is never over.

  28. Why any coding metric is futile by MarkH · · Score: 1

    I got first job doing COBOL back in 1995. Second code change I did I got called into managers office.

    He asked how I felt about change. I stated it was easy being only 2 line change to 1 module.

    That change saves us 2 million ukp a year he says.

    Ever since tried to write as little as possible . Amazing what you can do when you understand the problem , understand the code and find the one change that does it.

    Not sure my method of wandering through code, chatting to everyone and then submitting a 4 line commit would fit with IBM

  29. Measure Effectiveness, not Productivity by TheWoozle · · Score: 3, Interesting

    I think the idea of "productivity" is a hold-over of the Industrial Revolution that does not pertain to many of today's jobs; jobs where the unit of work is hard to define, and ultimately irrelevant. Are you telling me you pick your doctor by how many patients he can see in a day? Probably quite the opposite!

    In terms of software development, I find that the *effectiveness* of a developer is more important, where effectiveness considers the following (not an exhaustive list):
          - Appropriateness of solution
          - Thoroughness of implementation (logging, exception handling, graceful failure, input validation, etc.)
          - Well-written, parsimonious code that is easy to read and descriptive of what it does
          - Works right the first time, no kickbacks from QA or end user

    Give me someone who is effective but slow over someone who craps out junk quickly any day of the week and twice on Sunday! In the end, I don't care about productivity metrics, I care that the end users get a useful piece of software that does what they need with a minimum of headaches.

    --
    Insisting on "correct" English is like saying that there is only one, definitive recipe for chili.
  30. Start looking at the big picture and rely on peers by Opportunist · · Score: 1

    Instead of trying to micro manage your devs ("Oh, Frank, you created 10 lines less than Bob, you slacker!"), focus on the project instead. Check whether your teams meet their deadlines. Pit the teams against each other. And rely on peer pressure within teams to keep the productivity up and slackers from slacking. Are you judging your beancounters by the amount of bookkeeping lines they fill out per day? Do you gauge the productivity of your project managers by the amount of meetings they go to? No, you measure them by the cost they produce and the benefit they create. Why the fuck should it be different for programmers?

    Stop that petty micro management crap and start looking at what they accomplish!

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  31. Removing code is most productive by Anonymous Coward · · Score: 1

    I consider my most productive days to be those that I delete the most lines of code.

  32. Coding Metrics by 16K+Ram+Pack · · Score: 1

    Like paying a composer by the number of notes that he writes

  33. Re:If you need metrics to know who your stars are by T+Murphy · · Score: 1

    I've generally assumed that standardized evaluation is pushed by upper management to provide a baseline for the direct mangers to follow. Sure, a manager should know which of his direct reports are capable and which aren't, but how can you compare one manager's "adequate" to another's? A few numbers won't get you a complete picture, but combine those numbers with the manager's opinions and you can better calibrate performance than you could with either evaluation on its own. A PHB will be a PHB no matter what you do, but if you can get some objectivity into his evaluations, you can get a more accurate picture of what kind of talent (or lack thereof) he has under him*.

    *Again, the metrics would need to be taken with a grain of salt, but using feedback from good managers you'll have a better idea what the metrics mean, and how to make the metrics more helpful.

  34. Easy! Inverse of time spent of slashdot by CaseCrash · · Score: 1

    Productivity is just the inverse of the amount of time spent on slashdot, with additional points taken off for posting to slashdot and even more for submitting articles.

    Voila! Productive!

    --
    No, that link you posted to a web comic we've all seen a hundred times is not "obligatory."
  35. Re:If you need metrics to know who your stars are by Surt · · Score: 2

    Yeah, that's an upper management failure in my book. They should be connected well enough to know what is going on at least two levels down, not one (enabling them to check the calibration of their direct reports). If that's not possible, the branching factor is probably too high.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  36. Re:If you need metrics to know who your stars are by Anonymous Coward · · Score: 0

    Answering the question "Who should I fire/promote" is not the only use for metrics.
    You also have the following:

    "How long will this take."

    "How many people do we need."

    "Do our employees need more training/reviews"

  37. the most important things can't be measured by PJ6 · · Score: 2

    This is the guy who first said it.

    Stop listening to the MBA and metrics nutjobs. Don't try to manage your people like the machines they operate.

  38. Re:If you need metrics to know who your stars are by Surt · · Score: 1

    I completely agree, that's why I qualified my statement with the if.

    --
    "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  39. KSLOCs are for managers by Anonymous Coward · · Score: 0

    Bugs per dev/yr.
    If a dev doesn't "produce enough usable code" then they need to be fired.

    I worked on a CCMI-5 project. Bugs were much worse than lower productivity there. Moved out of government software and worked on a team with almost zero process but a huge personal responsibility process. Memory leaks were considered critical bugs on that team. **Any** issue was handled quickly by the individual. It was a point of pride.

    Every software project since those two were probably what most people see. Crap code, no responsibility for bugs. Perception of the manager mattered more than anything else at raise time. If you looked stressed and said "cross platform thread safety" enough, people thought you were brilliant. That's how I became "employee of the year" at that job.

  40. Hooray to PHBs! by Anonymous Coward · · Score: 0

    We had a VP come in from IBM, and the first thing he instituted were daily timesheets for developers. I wrote a script to fill them with random but reasonably looking numbers, then started shopping my resume. Now I work for Google and say: Hooray for PHBs from IBM, I didn't know developers could be treated well.

  41. I've Contracted At IBM And Sun by Greyfox · · Score: 1
    IBM typically got shit done, stayed focused on what the customer wanted and didn't put too much stock in metrics. They did pay some lip-service to CMM while I was there. My last project there was rated CMM 5. It was actually CMM... around -1 when I started and around 3 or 4 when I left. Took the team about 5 years to get it to that point, but it was generally a useful effort.

    All I ever heard while at Sun was the six-sigma blackbelt one cube over talking on the phone all day about how he was a six-sigma blackbelt, a bunch of guys lamenting the passing of the "good old days" when they'd have magicians and jugglers in to entertain the employees at lunch, and a few engineers badmouthing open source software quality.

    One of these companies is still very successful. The other one was acquired by Oracle.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  42. The appropriate use of metrics by RandomStr · · Score: 1

    If a company needs metrics to evaluate their employs, then the company is barely functioning, on a communication, collaboration and management levels; interpersonal knowledge and cohesive employees always produce better results than a company that is myopically focused on the numbers.

    Metrics should only be used to make projections about reimplementation of a project, i.e. highest level if estimation, but having said that, if the person responsible for that estimation, cannot make it off the top of their heads(relies on metrics alone), then the company has bigger problems...

    Where a metric makes developers competitive, to the point where they are working against each other, rather than together, the metric is actually damaging the project; how many of us have worked on a project like that?

    Any good metric requires each objective to be weighted based on size and difficulty, factored by the experience of the resource with the domain and code-base, a lot of hard work, but if the initial estimations are inaccurate or deliberately favour certain resources, it collapse like the house of cards that it is...

    My advice take metrics with a grain of salt, especially on the macro level; its rare for the keystone developer to be the best performing in the eyes of the metric...

  43. I hope... by Anonymous Coward · · Score: 0

    I never work at a larger software company where they feed programmer metrics into a program and expect to come up with "answers"

    I'm not saying I am against Scrum, Agile, TDD, XP, Kanban, pair programming, whatever - just that if as a manager/leader you don't talk to your team over time, observe their efforts and have no idea as to who contributes what that you need to use a fracking program like that - please step down or at least split yourselves up into smaller teams.

  44. Six-Sigma by dave87656 · · Score: 1

    My recent experience and a previous experience with large corporate software efforts showed me how counter-productive such metrics are:

    I used to work for a computer company with over 100,000 employees which used six-sigma to measure programming effectiveness. So, what the developers did, was to create a lot of programs from templates rather than creating common libraries and to put as little code on one line as possible. Getting the number of lines of code up was the goal so that the errors per lines of code would look better. Completely counter productive at the development level.

    Recently, at the management level, in preparation for a presentation with top management, metrics and results are simply manipulated at the tool reporting (jira) level to get the results you need.

    To get good quality software, you have to have good technical people managing the process and promote people based mostly on that ability but that's not the way corporate America works.

  45. When dealing with people by wye43 · · Score: 1

    there is only one metric: demand and offer.

    The HR/performance appraisals "techniques", "metrics" and "S.M.A.R.T." commitments/goals are there only to shield you from the truth: that salary/benefits/promotions are a function of market demand/offer, influence and leverage. It has nothing to do with merits. NOTHING.

    The sooner you realize that, the less you will suffer and the more you will gain :)

  46. IBM = Bureaucracy by freudigst · · Score: 1

    This is the sort of role IBM has stamped out for itself in the 22nd century: that of the BS'ing bureaucrat.

    The irony of using an almost completely unstable Rational Software Architect product, heavily-burdened bloatware, to develop robust software was not wasted on me.

    They do have a kick-ass online help system, though, I gotta give 'em that. Bureaucracy can work in open-loop systems.

  47. The only working method to measure a developer by Hentes · · Score: 1

    is Lines Of Code, obviously.

  48. Ignorance runs rampant by lwriemen · · Score: 1

    The article's author and many of the posters would benefit by reading Capers Jones' books on the subject of software metrics. Yes, the software industry does need them, and yes, metrics will prove a lot of developer's ideas on how to build software wrong. Right now the software industry is flailing around; spitting out new languages like monkey's typing at keyboards hoping to reproduce Shakespeare.

  49. the only important "metric".. by greywire · · Score: 1

    I think the only real "metric" is, at any given point:

    "How much of what I said I could get done, did I get done?"

    This applies at the highest level of the project, from the team to the entity its being delivered to,
    all the way down to the lowest level, from the developer to his lead.

    I think this is the most important aspect of so called agile development.

    1. Estimate how long it will take to complete x features.
    2. Review progress at a non-annoying/non-production killing interval.
    3. Revise the next estimate based on how accurate you were on the previous estimate.

    This has to be done on a person by person basis. Every person gets things done at his/her own rate. You can't have a manager estimate the task hoping (or trying to enforce) the creative person will meet that expectation. You can't have the person pitching a client making the total project estimate, it has to "trickle up" from the people doing the work.

    I've seen all these mistakes made. The company salesman/owner/whatever tells the client we can do it in 30 days. The project managers try to push this deadline onto the developers. The developers then go WTF there's no way we can do it that fast... dev a over here is a good programmer but he's kinda slow, and dev b is really fast but he sometimes makes mistakes, and dev c is really great at solving problems in general but isn't a great programmer or fast.. etc.

    You have to go by the word of your developers, not bean count on their "output". Yes, this puts the dreaded task of Estimation upon your developers, but its better than the stress of being told how much they are expected to churn out. Its up to the managers to then efficiently assign tasks to the right people and track estimation accuracy etc.

    --
    -- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
  50. Gaming the system by Anonymous Coward · · Score: 0

    The real danger of using such systems is that developers will game them, which happens with any process or system anyway. For example, if writing more lines is seen as higher productivity by the metrics and manager's interpretation, that will happen; which in turn may lead to lower software quality.

  51. Welcome to 1982! ;-) by KlaymenDK · · Score: 1

    Welcome to 1982! You can tell your boss I said so. ;-)

    Bill Atkinson, of early Apple fame, also "struggled" (too strong a term, really) with the lines-of-code metric. "He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code.", as the story goes.

    www.folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt