Slashdot Mirror


Slashdot Asks: How Do You Know a Developer is Doing a Good Job?

An anonymous reader writes: One of the easiest ways to evaluate a developer is keeping a tab on the amount of value they provide to a business. But the problem with this approach is that the nature of software development does not make it easy to measure the value a single developer brings. Some managers are aware of this, and they look at the number of lines of code a developer has written. The fewer, the better, many believe. I recently came across this in a blog post, "If you paid your developers per line of code, you would reward the inefficient developers. An analogy to this is writing essays, novels, blog posts, etc. Would you judge a writer solely on the number of words written? Probably not. There are a minimum number of words needed to get a complex point across, but those points get lost when a writer clutters their work with useless sentences. So the lines of code metric doesn't work. The notion of a quantifiable metric for evaluating developers is still attractive though. Some may argue that creating many code branches is the mark of a great developer. Yet I once worked with a developer who would create code branches to hide the fact that he wasn't very productive." Good point. But then, what other options do we have?

229 comments

  1. Coffee by Big+Hairy+Ian · · Score: 2

    When the coffee machine runs out :D

    --

    Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    1. Re:Coffee by Xest · · Score: 3, Insightful

      Jokes aside I'd argue there's actually a more fundamental question that stems from the question being asked.

      Why aren't your senior/lead developers weeding this people out? That's their job, they'll spot bad developers by working with them based on a number of metrics from readability of code, number of bugs, performance, amount of useful code produced and so on, not just a single metric.

      If your senior/lead developers aren't doing this then you've probably not paid enough, you've probably paid too little and ended up putting a low to mid level developer in what you've called a senior role.

      If it's your senior/lead you're concerned about then you should just be able to go on track record - do they have a history of delivering high quality software in a reasonable timeframe? Are you confused about what a reasonable timeframe is? Look at other software on the market, how long does it take Microsoft to release a new version of Word? Adobe a new version of Acrobat? and so on. There is plenty of evidence out there as to how long it takes a succesful company to release a piece of software - find something with a similar scale to what you're doing and see how rapidly they release. If you're paying competitively against those companies, and your developer isn't delivering as rapidly then they're underperforming, if you're not paying as much as they are then don't expect them to be able to produce as much quality in as little time. If they're overperforming in quality and delivery speed and you're paying them less than the big boys then thank yourself that you've found a fucking star and spend a lot of time thanking them for giving you more for less money and do everything you can to make them happy and keep them, because if they leave, you might not be so lucky next time.

    2. Re:Coffee by Joce640k · · Score: 1

      When the coffee machine runs out :D

      There's no 'metric' that can't be gamed. If I was being paid to drink coffee I'd be emptying it into secret buckets.

      --
      No sig today...
    3. Re:Coffee by Anonymous Coward · · Score: 1

      Like a toilet? Drinking more fluids naturally makes you pee more, and on top of that, caffeine is a diuretic.

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

      If your senior/lead developers aren't doing this then you've probably not paid enough, you've probably paid too little and ended up putting a low to mid level developer in what you've called a senior role.

      Yeah, just throw more money at them and call them senior developers.

      Somebody has obviously never worked anywhere but a large corporation.

    5. Re:Coffee by iamgnat · · Score: 4, Insightful

      There is plenty of evidence out there as to how long it takes a succesful company to release a piece of software - find something with a similar scale to what you're doing and see how rapidly they release.

      Like all the other measures, it's not that simple. Is it code that the development team wrote themselves or did they inherit it? If they inherited it, how well was it originally designed, coded, and documented? Is the project using the best tools for the job or has it been forced to work around suboptimal tools for various reasons? Does the project have a solid design/direction or is the whole thing made up as it goes along? Are there defined use cases the developers can work against? Is there a clear customer stake that the developer can work with to better understand the needs and adjust the code accordingly? Do they keep getting distracted from the deliverable by support or tasks that should be outside their scope?

      There are many reasons a good developer may be "under performing" through no fault of their own. Measures like lines of code, bugs, delivery time, etc.. rarely take that into account.

    6. Re:Coffee by Xest · · Score: 4, Insightful

      No, stupid. Pay enough to get sufficiently competent people from the marketplace in the first place. People with a track record of leadership in software development sufficient to command good pay because they do a good job. Many companies fail at this, pay below competitive levels and just fill their senior jobs with junior/mid-level staff then wonder why their software development department isn't competitive.

      Of course throwing money at someone who is incompetent wont magically make them competent, why would anyone ever think that would be the case?

    7. Re:Coffee by gweihir · · Score: 5, Insightful

      From what I have seen in the industry, it is very simple: Either there are no senior developers that deserve the name, or they are not asked on anything that is "management".

      I fully agree with you. The job to evaluate technological skills must always be done by a chief engineer (or equivalent). If you do not have a chief engineer, then you cannot evaluate the technological skills of people, and that is it. Other engineering disciplines do understand this. But "coders" are often not even viewed as engineers these days, which is just plain stupid and just another facet of the same problem.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re: Coffee by dougdonovan · · Score: 1

      is there not a *bucks in the area. dont u guys make a min of $50hr.

    9. Re:Coffee by gweihir · · Score: 1

      Indeed. Trying to come up with metrics that people whose primary skill is analytic and secondary main skill is coming up with procedures cannot game is about the most stupid thing possible.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:Coffee by mwvdlee · · Score: 3, Insightful

      "Senior" in most companies literally means whoever worked there longest.
      It says nothing about abilities or quality.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    11. Re:Coffee by Anonymous Coward · · Score: 0

      You seem to think that someone's skill is based on how much they tell you it's worth, while in most of the world that is not the case. Only in a large corporate environment do you have such a discerning talent pool available. In bumfuck, USA, there is nothing but small developers, even the ones that charge 6 figures.

    12. Re:Coffee by Xest · · Score: 1

      That's precisely why you need to find a similar case, or ideally, many similar cases.

      In terms of distractions, if you're in a lead development role then it's your responsibility to raise at the highest levels of management and evidence the fact that your team just isn't being given sufficient time to work on actually writing software and documenting interruptions as evidence isn't difficult. Similarly taking a poor specification up the chain and explaining why it's poor also isn't difficult - explaining where there are deficiencies in a specification is fairly easy to do if they are present. These are all traits in a good lead, and any lead not able to do these things is precisely the sort of junior to mid-level developed wedged into a senior role that I talked about - a good lead has to know how to get things done in the business world as much as they know development.

      But most of these issues aren't about measuring developer competence, they're about tackling fundamental problems within a business - that's a separate issue. If you can't tackle those then you're fucked as a business regardless of how good or bad your developers are. You could have the most perfect measurement of developer competence in the world, but if the rest of your business is broken then you're fucked anyway. It doesn't matter how good the product is if the product is based on a specification too dysfunctional to sell by a sales team too busy pestering development to make any actual sales.

    13. Re:Coffee by Xest · · Score: 1

      No, I think someone's skill is based on how succesful they are at doing the job as demonstrated by their track record. What they tell you is irrelevant, what they've done, and what can be backed up by research, references, and a competent interview process is really what matters.

      "In bumfuck, USA, there is nothing but small developers, even the ones that charge 6 figures."

      I've no doubt, but how is having an effective way to measure competence going to help that? If you don't have the local talent available you either bring it in from outside by paying relocation, you relocate your business, or you open a satellite office for development. Just as you can't build a dev team where there's no talent to do so, you can't run a succesful fishing fleet in the middle of a dry desert. That is unfortunately the nature of reality.

    14. Re:Coffee by Xest · · Score: 2

      The problems you must be having in this industry to be so angry about this topic might be because you don't take criticism well.

      Not sure what gives me that impression but you know, just saying.

    15. Re:Coffee by Xest · · Score: 2

      I don't disagree, I think this is where the problem with most companies struggling with development is - they just don't have the talent sufficient to judge whether they have the talent.

      Time and time again the companies that I've seen excel at development have either found a 1 in 100 developer out of sheer damn luck who just happened to be looking for some aspect of the role in question (i.e. maybe it's a small town and they just wanted to live near their family regardless of career impact), or they've decided to think outside the corporate box of fixed salary bands and have paid for someone at that level even if that meant paying that person more than their boss.

      But what is clear in my experience is that when you get past that point of filling those roles based on ability to blag, time spent at company as you point out, and other such nonsense metrics then the rest sorts itself out. The problem is that most companies like you say fail at this very first hurdle, and so we get questions such as in the summary where they're trying to fight the symptoms, not the root cause.

    16. Re:Coffee by iamgnat · · Score: 4, Insightful

      That's precisely why you need to find a similar case, or ideally, many similar cases.

      How are you supposed to know the intricate details of another company's codebase and development process to be able to judge if they are really similar or not? You can only guess and hanging someone's job on a guess is pretty crappy.

      In terms of distractions, if you're in a lead development role then it's your responsibility to raise at the highest levels of management and evidence the fact that your team just isn't being given sufficient time to work on actually writing software and documenting interruptions as evidence isn't difficult. Similarly taking a poor specification up the chain and explaining why it's poor also isn't difficult - explaining where there are deficiencies in a specification is fairly easy to do if they are present. These are all traits in a good lead, and any lead not able to do these things is precisely the sort of junior to mid-level developed wedged into a senior role that I talked about - a good lead has to know how to get things done in the business world as much as they know development.

      And how many times have we done just that and heard "we hear you, but ..."? I've spent my career jumping into shit projects and making them maintainable and extendable. Luckily I've mostly had managers that understood what I did for them and trusted me, but I've had a few that haven't and those jobs are miserable because they try to grade me like you suggest and it's unrealistic. I fix code and I make users happy (because I fix the code and simplify their interactions), but that all costs time and pain and management typically just sees "not much movement".

      But most of these issues aren't about measuring developer competence, they're about tackling fundamental problems within a business - that's a separate issue.

      It's not a separate issue as it directly impacts how efficient a developer can be. Until those issues are addressed (and they never will be) you can't fairly judge anyone on metrics impacted by those issues.

      If you can't tackle those then you're fucked as a business regardless of how good or bad your developers are.

      Welcome to the world of a real job working for a real company. Most companies have fucked up processes and policies.

    17. Re:Coffee by Anonymous Coward · · Score: 0

      I would be more interested in reading your comment if you didn't piggyback it onto the first post.

      But the fact that you have a +5 shows that it works with the broken moderation system.

    18. Re:Coffee by Xest · · Score: 1

      I think I've always been quite lucky in that respect, whether working at small companies or large, public sector or private, I've always found that development's opinion has at least been deeply respected. We've always been recognised as the money makers so there's always been an inherent fear about interfering with us unnecessarily.

      I wonder what the difference is? I've worked as a developer in a few fields - engineering, defence, medical, and finance so I don't think it's a field specific issue. Maybe cultural or location based?

      I've always looked on in disappointment when I've seen stories here and elsewhere that there is no shortage of companies that treat developers as disposable assets so the problem you describe is certainly an issue in a number of places.

      I'm biased of course, but I've always figured that a company dependent on software treating it's developers as disposable assets is like a restaurant treat it's chefs or an army treating it's soldiers in the same way - a restaurant wont get far with no one to cook, and an army wont win any wars without any soldiers. It doesn't seem like a smart move if you're commercially dependent on a group of people to do anything other than do everything you reasonably can to help them do a good job.

    19. Re:Coffee by Anonymous Coward · · Score: 0

      Lucky? More than that, I think you probably have unicorn farts.

    20. Re:Coffee by Xest · · Score: 1

      "How are you supposed to know the intricate details of another company's codebase and development process to be able to judge if they are really similar or not? You can only guess and hanging someone's job on a guess is pretty crappy."

      I don't think the intricate details matter, I've worked for enough different companies to realise that the idea that some company is a special snowflake is an incredibly rare an unlikely thing. The odds of your company being in such a fundamentally different place that you're talking about drastic differences in delivery time, let alone if you take a number of samples is entirely negligible.

      But apart from that many of the big boys actually do blog about their issues and state of their codebase, so the problems you describe are all incredibly well understood. You wouldn't realistically throw someone onto a project anyway and judge them immediately. There's always going to be a bedding in period with an employee and it's within this period that a lead will be taking on the issues within the team and the business, raising them and tackling what they can - few leads get to jump into entirely problemless companies and can attain maximum efficiency straight away. The question is how are they performing when those problems have been sorted, again, you're really conflating business issues with developer competence here, if you don't get business issues sorted then of course developer competence is going to be irrelevant.

      "I fix code and I make users happy (because I fix the code and simplify their interactions), but that all costs time and pain and management typically just sees "not much movement"."

      I hear you, I'm not pretending all business are perfect, but this wasn't about how do we survive in terrible businesses (hint: you don't, you leave them), it's how do we deal with problems of developer competence in general and my point is that we do that by having sufficiently competent and talented leads to weed out the bad, and help the good rise up.

      "Welcome to the world of a real job working for a real company. Most companies have fucked up processes and policies."

      I've worked in companies like those you mention and as I say, no amount of ability to gauge competence will help them - the fundamental problem you're talking about is not developer competence, it's about bad business practices, in that environment someone will always be looking for someone else to blame and even if they have an objective measure that you're the greatest developer in the world there will still be people who will ignore it because they don't want the latest failed delivery to be their fault. You can't resolve that as a developer, and being measured fairly wont fix or change it. A good lead might be able to change such a company but only if there are people in said company willing to fix problems, you're describing companies though where that's obviously not the case - as you said, "we hear you, but ...", in that case it's a lost cause until they either wake up to this or go bankrupt but realistically even if they wake up it'll be more than just a good lead dev they need to fix this, it'll be a good HR director, a good finance director, and a good CEO.

      I learnt very early on in my career as a developer that you can't sit around in those companies hoping things will magically fix themselves - those companies aren't looking after you so you have no obligation to look out for them, don't feel like you have to stay for any degree of loyalty that they're not willing to pay back, and if you are talented as you believe you are then just move until you find a good employer. Then you can worry about measuring competence, because then you'll be somewhere that wants to get that right, and that's the company that needs the good lead.

    21. Re:Coffee by Anonymous Coward · · Score: 1

      The problem is the HR bullshit. If a manager says that he wants to fire someone, he has to start a time consuming process of proving the person was given a chance to improve performance. You have to put up with a lot of paperwork, meetings, etc. It is easier to just let the bad coder stay in the team and hope that he will either find another job or move to another department.

    22. Re:Coffee by Anonymous Coward · · Score: 0

      There is plenty of evidence out there as to how long it takes a succesful company to release a piece of software - find something with a similar scale to what you're doing and see how rapidly they release.

      You're SO FUNNY!

      Software is SIMPLE! A child can do it! Why little Ronnie wrote a program to make a square bounce around on the screen last week and it took him less than half an hour!

      It's trivial to create a system like Amazon.com.

      It only takes a few days to produce the sample screens. And once we have the sample screens, the rest of it will take less than a week. All You Have To Do Is...

    23. Re:Coffee by Anonymous Coward · · Score: 1

      In many of instances its all of those things or none at all. As a contractor I have really developed a good nose for sniffing out the situation and 99% of the time, under performance is due to all of those things in concert and a lot of the reasons for that is due mostly from a poor work culture.

      And that culture is almost exclusively fostered byt the CEO/Management. These are the type of places where negative re-enforcement is used, bugs go unreported by staff and swept under the carpet, work is hurried to not piss off the boss, people come and go often enough to be demoralizing, ect....

      Even a junior coder left behind after a layoff can do good if given the opportunity to learn and grow, but places like described typically ride people like sled dogs until they are spent.

    24. Re:Coffee by LifesABeach · · Score: 1

      Well, the first ones to weed out are the ones "better" than you. But all joking aside. The theory x ass hat parent of this article is looking for new excuses.

    25. Re:Coffee by fahrbot-bot · · Score: 4, Interesting

      Either there are no senior developers that deserve the name, ...

      I think that is relative within any organization. I once had a junior software developer, who was just a few months out of college, ask when he would be promoted to "senior engineer". I replied, when you don't need another senior engineer to help you with your work.

      Referencing the above, his manager once asked me if an assignment would be too difficult for this junior guy. I replied probably not, but he'll probably need help. I said I would code a working example (that could be used if needed) and mentor the guy through developing his own code. I spent a fair amount of time at the white-boarded over the next 2 weeks helping him work through developing his script. In the end, the junior guy was surprised that I always seemed to have the answers and I told him that I had already written an example program (that actually did more than his). He asked me how long it took me to write the program. I replied 2 hours.

      --
      It must have been something you assimilated. . . .
    26. Re:Coffee by Gr8Apes · · Score: 0

      The job to evaluate technological skills must always be done by a chief engineer (or equivalent). If you do not have a chief engineer, then you cannot evaluate the technological skills of people, and that is it. Other engineering disciplines do understand this. But "coders" are often not even viewed as engineers these days, which is just plain stupid and just another facet of the same problem.

      Most coders are not engineers in any way shape or form. Want to know if they might qualify as an engineer? Ask them how the memory access for an algorithm works. I'll bet you 99% of those you ask today cannot answer that question. Most of the remainder won't know how address space works under the covers nor how processes and threads work. They are nothing more than the mechanics at your local oil change place that don't have a clue about how the engine actually works. They can slap a few things together, change some stuff out, but that's it (just to throw in the car analogy)

      --
      The cesspool just got a check and balance.
    27. Re:Coffee by Anonymous Coward · · Score: 0

      This is insightful, and it's applicable in many areas, not just coding.

      The issue is that a "good" boss has a clue as to what the workers are doing. The boss knows the product and helps the workers produce it. Even if the boss is not a coder, if they are competent then they will learn to understand how to evaluate the results.

      The problem is the business schools and the consultants who make a living peddling business snake oil like 'if you can quantify everything then you manage by the numbers and you don't need smart middle management: You can replace expensive "clueful people who are competent managers" with cheap, fungible "checklist following morons".' Then they spend more time trying to fit in metrics like KLOCs that wind up driving everyone nuts and wasting good productivity on mindless bobo work.

    28. Re:Coffee by rochrist · · Score: 1

      Well that escalated quickly.

    29. Re:Coffee by gweihir · · Score: 1

      Indeed. And that is what a senior developer looks like.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    30. Re:Coffee by gweihir · · Score: 1

      I would go so far to say that these people are not "coders" either, because to me a "coder" is not a technician, but an engineer. An engineer is somebody that solves problems using technology by really understanding both the problem and the technology. The IT field suffers terribly from a large number of people sporting titles that imply competence, when no such thing is true for them. That needs to change before things get better.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    31. Re:Coffee by Anonymous Coward · · Score: 0

      Why aren't your senior/lead developers weeding this people out? That's their job, they'll spot bad developers by working with them based on a number of metrics from readability of code, number of bugs, performance, amount of useful code produced and so on, not just a single metric.

      Every time I've ever seen blatant workplace racism, sexism, agism, etc- it was because the performance metrics were left up to "seniors" exactly as you describe instead of being based on blind metrics applied equally.

    32. Re:Coffee by fahrbot-bot · · Score: 1

      Indeed. And that is what a senior developer looks like.

      Thanks.

      I should have mentioned, to be fair with regard to my speed in coding my working example, I do have 30 years of saved code to pull from. Age, or at least time in the field, does have some benefits ...

      --
      It must have been something you assimilated. . . .
    33. Re:Coffee by prunus.avium · · Score: 1

      ...I've worked as a developer in a few fields - engineering, defence, medical, and finance...

      Well, there's the problem. Most of the complaints come from developers in the "Enterprise" development space. Big Business assumes software development is overhead. As such, it is to be minimized in any way possible. Sales are the important people.

    34. Re:Coffee by prunus.avium · · Score: 1

      And for those of us without your patience, watching the junior guys struggle is so painful. I know, I know. They need to learn but can't they learn a little faster? Please.

    35. Re:Coffee by gweihir · · Score: 1

      Hey, everybody with that kind of experience has this. But it is not only the speed. It is also the willingness to invest a lot of time to help a junior person improve his game.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    36. Re:Coffee by fahrbot-bot · · Score: 3, Insightful

      And for those of us without your patience, watching the junior guys struggle is so painful. I know, I know. They need to learn but can't they learn a little faster? Please.

      I always tell more junior people that they need to *some* research when they have a problem, but that this is work not school and if they can't find a solution in a reasonable amount of time (15-30 min), they need to ask someone for assistance. I'll either help point the way, explain and/or provide an example. In addition, I don't mind getting 50 questions, but they need to be 50 *different* questions.

      Things to remember: (a) Time is valuable, but my time is more valuable than yours :-) (b) Patience is not an unlimited resource.

      --
      It must have been something you assimilated. . . .
    37. Re:Coffee by Xest · · Score: 1

      What would you define as enterprise out of interest? I think it'd be hard to argue that the financial services and defence firm I've worked for aren't big businesses.

    38. Re:Coffee by Gr8Apes · · Score: 1

      I agree, a coder should be more than a low-level technician. Engineer might be taking it a little too far, just for a coder. After all, a master mechanic that can diagnose an engine problem as well as an engineer will still have little ability to design an engine from scratch. I am not sure the coding world would be better with 100% engineers in place. After all, things like commons-digester and struts were designed by a prolific engineer, and the former is an absolutely atrocious solution no one should use ever IMNSHO. The latter was a common target for replacement for years due to short-comings, but sufficed for low-hanging fruit projects so stubbornly clung on for a decade.

      --
      The cesspool just got a check and balance.
    39. Re:Coffee by dataspel · · Score: 1

      +1 Not sure I would want to work with either one of them.

    40. Re:Coffee by prunus.avium · · Score: 1

      By "Enterprise" I was referring more to "Enterprise development" not the size of the company. The enterprise development space is dominated by large corporations that are using the software to "streamline the work flow to achieve synergistic relations with clients and maximize..."

      This field is usually dominated by languages such as SAP, Oracle, Java (EJB), and VB (6 or .Net).

      As the software is defined as overhead (operations) and does not create a product, the developers are hired by cost rather than skill. The Daily WTF has quite a collection from this world.

    41. Re:Coffee by Wycliffe · · Score: 1

      You seem to think that someone's skill is based on how much they tell you it's worth, while in most of the world that is not the case. Only in a large corporate environment do you have such a discerning talent pool available. In bumfuck, USA, there is nothing but small developers, even the ones that charge 6 figures.

      You can't magically make someone a better employee by paying them more. What you can do though is get better people applying if you pay better. If you pay high enough and advertise sufficiently then qualified people will be willing to move there to take that position. You see this a lot in school teachers especially in school computer teachers. School teachers fall into 1 (or more) of 3 categories: #1 they really enjoy teaching, #2 they don't need the money, or #3 this is the best paying job they can find. The ones in category #1 and #2 tend to be ok teachers but a *good* computer teacher can easily make double what most schools pay so if they fall into category #3, then they are almost by definition awful. If on the other hand, a school paid above average wages then they would likely get hundreds of applicants and can have their pick of them.

  2. Irrelevant by Anonymous Coward · · Score: 0

    This occupation is slated for automation.

    1. Re:Irrelevant by Big+Hairy+Ian · · Score: 1

      For desktop apps Clarion (From Softvelocity) has been doing that since the 1980's. Fortunately their marketing Dept Sucks so hardly anyone is aware of it.

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    2. Re:Irrelevant by Anonymous Coward · · Score: 1

      If it was so great, they would have taken over the world by now based on their productivity. Just saying.

    3. Re:Irrelevant by gweihir · · Score: 3, Interesting

      Hahahahahaha, good one. I heard this first for the 5GL language project. That one started about 30 years ago and failed miserably more than 20 years ago. This time will not be any different.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Irrelevant by mwvdlee · · Score: 4, Insightful

      Ah yes, 4GL... where you eliminate the easiest part of what a developer does (write code), make the most difficult part (specifying what it should do) harder and make it the responsibility of people who can't even grasp the easy part.
      And as soon as you want to do something the 4GL language isn't designed for, your only option is porting it to a 3GL (or lower-level) language.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    5. Re:Irrelevant by Big+Hairy+Ian · · Score: 1

      Ah yes, 4GL.

      Actually the Language is irrelevant I know devs who use it to code in Java, C++, C and the current version will do .net out of the box. The 4GL you speak of is just the default because back when it first came onto the scene 4GL's were shiny and new and a lot of folks still maintain legacy apps.

      --

      Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.

    6. Re: Irrelevant by Ed+Woychowsky · · Score: 2

      Me, too. I was in a business computing class taught by an accountant in 1982. The instructor stated that there would be no more programming in five years, because everything would have been written and that would be necessary is to string the components together. He went on to say that we should change our majors to accounting. Karnak, didn't foresee the day when programmers would begin to nibble away at his job. It right up there with the predictions that there would never be more than two million cars because no more than two million people would want to be chauffeurs, or that two hundred computers would be all that's required to handle the needs of the world.

    7. Re: Irrelevant by gweihir · · Score: 1

      Indeed. If anything, writing software is getting harder, not easier. Part of that is the increasingly complex tasks, but part of that is also one too complex tool or language after another, because most of the tool-makers simply are incompetent and to not understand KISS at all. It will take a long, long time to sort this out.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:Irrelevant by david_thornley · · Score: 1

      The hard problem is transforming from informal specifications to adequately formal specifications, such as programs. That transform exists in all software development, somewhere, and for the foreseeable future only humans will be able to do it. Managers have been trying to eliminate programmers, who tend to be expensive and not fluent in manager-speak, since the business started. COBOL was praised as a way to eliminate programmers, since non-programmers could just write what they wanted in this English-looking language.

      There have been other attempts. Canned software and simple report generators let non-programmers do things that programmers didn't really want to do in the first place. Formal specification languages are formal languages, and become computer languages whenever someone writes a compiler for them. The task of writing an informal spec in the specification language is programming.

      With modern techniques, it's become a lot easier to start with something informal and wind up with a formal solution, so it would be possible for this to make the demand for programmers lower. However, we seem to have an insatiable demand for software development, and the ease of use has primarily made it possible to employ less skilled developers and still get some good out of them. Presumably there's some level where the demand would abate, but we haven't seen anything suggesting that yet.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    9. Re:Irrelevant by nasch · · Score: 1

      Are you referring to Informix-4GL, or 4th generation languages generally?

    10. Re:Irrelevant by molarmass192 · · Score: 1

      I'm guessing their website was written with Clarion, it's hard on the eyes and borderline unusable

      --

      Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
  3. In my experience by the_Bionic_lemming · · Score: 5, Insightful

    Judge them on bugs. If they are constantly trying to fix their code then you have a metric on when to seek a better one.

    --
    _ _ _ Go for the eyes Boo! GO FOR THE EYES!
    1. Re:In my experience by Anonymous Coward · · Score: 1

      This. You can also see who is fixing bugs in other people's code. Give them a raise.

    2. Re:In my experience by Wootery · · Score: 1

      But like someone already pointed out, this metric is trivially gamed.

      If I spent twice as long on each feature, I'd be able to reduce my bug-count, but I would probably be unduly costing my employer in the process.

    3. Re:In my experience by the_Bionic_lemming · · Score: 1

      That's assuming that you are the only coder. If 15 programmers are relatively bug free, and you are outputting half of what the other 14 are doing, Well, that's another metric you can use.

      --
      _ _ _ Go for the eyes Boo! GO FOR THE EYES!
    4. Re:In my experience by Anonymous Coward · · Score: 0

      This. You can also see who is fixing bugs in other people's code. Give them a raise.

      "Ok, Joe you leave some bugs in and I'll fix them, then you fix the bugs I leave....."

    5. Re:In my experience by Opportunist · · Score: 5, Insightful

      Juniors write code, seniors fix bugs.

      That's my approach to that problem at least. And so far I've been doing great with it.

      90% of code is trivial bullshit. Anyone can do it, hell, even cargo-cult programming cannot fuck it up. Sitting a senior programmer down to do that is a waste of resources.

      10% of code is insanely difficult to figure out, arcane mystical bullshit. Hard to write, hard to maintain, hard to understand and even harder to get right.

      You could now either spend time and resources trying to identify those 10%... or you could simply hand the whole jobs of "coloring in your code" to the juniors, watch where they struggle and then set your cracks onto those problems. That serves many purposes.

      You eliminate the need to identify those cases.
      Your juniors feel valued because they get to work on nontrivial tasks.
      It's a very good indicator which of your juniors are really GOOD at their job (hint: The ones that don't ask for help AND still deliver in those 10% cases),
      You can keep the amount of high value (and wage) programmers relatively low.
      You don't bore your crack programmers with trivial tasks you misidentified as nontrivial.
      There is an implicit knowledge transfer from senior to junior

      And so on.

      That does NOT eliminate the need for good code design, actually, having a good design phase is absolutely crucial to this approach, since else your juniors have to design. That would be ... let's say sub-optimal. You have to give them the outline picture and have them connect the dot and color it in, so to speak.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    6. Re: In my experience by Anonymous Coward · · Score: 0

      As a product manager and previously support & operations manager I fully agree, with the small exception that bugs during the release do not count unless excessive compared to the team average for the product. Those that are after GA though do count for each one.

    7. Re:In my experience by iamgnat · · Score: 1

      Judge them on bugs. If they are constantly trying to fix their code then you have a metric on when to seek a better one.

      Are they their bugs or someone else's? Are they due to inherited code that was poorly designed and even more poorly documented? Are they because something was forced into a design/architecture that couldn't support it? Are they due to bad tools/frameworks being used (through no fault of the developer in question)? What's a bug versus an unclear/unknown requirement?

      As far as seeking a better one, just how in the process of interviewing someone (even in one of those drawn out all day BS games that are favored these days) are you supposed to determine what their "bug fix rate" is?

    8. Re:In my experience by alvinrod · · Score: 1

      Still not a good metric, unless you assume all work is being divided evenly and is equally difficult or trivial. This is rarely true and good companies often identify who their most skilled employees are and assign them the difficult work that only they may be able to handle effectively. If you produce a small amount of code that only you could have produced because it was incredibly difficult, why should it matter if some other yahoo churned out three times as many features if they're all trivial by comparison.

    9. Re:In my experience by Anonymous Coward · · Score: 0

      Juniors write code, seniors fix bugs.

      My first job was the exact opposite.

      Near indefinitely bug fixes and unit testing.

      Got out as fast as possible.

    10. Re:In my experience by Opportunist · · Score: 1, Insightful

      Run.

      Who in their sane mind sends juniors bug hunting? Especially fresh hires, they're busy enough trying to get to terms with the SVN setup and most likely they are new to the toolchain or at least part of it, too. How the FUCK should these people be qualified to find bugs? They don't even know whether the problem is related to code or the environment.

      Run, run far away from jobs like that.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    11. Re:In my experience by Anonymous Coward · · Score: 0

      This. You can also see who is fixing bugs in other people's code. Give them a raise.

      That's 90% of what I've been doing for the past 3 years. And I think I still don't understand why they did half the shit that's in the codebase. And then there's the continuous changing of business rules where nobody bothers to let IT know until maybe after the fact when something breaks.

      The steering committee decides and app is hopelessly broken and decides to budget a rewrite: ohh that's nice, what are the requirements for fixing it--produce correct results isn't so much a requirement as knowing the business processes to produce the correct results. Without complete and accurate requirements a rewrite isn't going to do any good what so ever.

    12. Re:In my experience by mark-t · · Score: 1

      This has a problem that if the bug is intentionally left there for somebody else to fix then it may be easy enough for another developer other than the one you are cooperating with to fix, so the person you are cooperating with may not get these easy bugs that you leave, and may thus not have any incentive to leave any for you. Further, intentionally leaving bugs in the code might also scream that you do not perform even the most basic rudimentary testing on your code before submitting it into the company's repository, and carries the risk of making you both look incompetent to a code reviewer, regardless of how many of the other's bugs that you fix.

      That said, how would you game (bugs you fix - bugs in your code) /(total bug count)?

    13. Re: In my experience by Anonymous Coward · · Score: 1

      Bugs found in testing - blame the programmers
      Bugs found by customers - blame the testing crew for letting them through.

    14. Re:In my experience by tippen · · Score: 3, Insightful

      Juniors write code, seniors fix bugs.

      I'd expect experienced developers to run like hell from that situation. Who wants to spend the majority of their time cleaning up rookie developers' crap?!

    15. Re:In my experience by Anonymous Coward · · Score: 0

      Judge them on bugs. If they are constantly trying to fix their code then you have a metric on when to seek a better one.

      A friend of mine once worked for a company that rewarded the developers that fixed the most bugs each month. He got really POed because, as he put it, "they were fixing bugs they created" while he had no bugs and so was never recognized.

    16. Re:In my experience by Anonymous Coward · · Score: 0

      That's the point to his process. The new hires who are "fresh" will not be able to complete those assignments without serious help...if they attempt to "cherry pick" those problems in the first place.

      Someone who is actually a "Senior" isn't always seen as the Senior...especially when he's first hired.

      The new hires who, may be fresh to your company's way of doing things, but are "not fresh" when it comes to "telling a computer what to do", will skip the easier shit and "cherry pick" the issues most of the others cant solve; simply because they can, and would prefer to, do the more "rewarding" work. No one, who has "above average" experience in his "trade", wants to do the work they did when they first started out ;)

      I have about 25 years in my field (I'm an electronic engineering technologist by discipline, but usually work as an electromechanic by trade). If you were to ask me about my experience as a "Senior" in my field, when being a new-hire, I would relate something similar to his process and what I've described above.

      The last contract work I did was QA for Huyndai Rotem trains. I inspected 5 trains in 2 months, resolving issue after issue, and being asked how I was able to do what I did with "little" training. By the end of my first week there - I was on the night shift with one other guy who inspected only system that wasn't solely electrical/mechanical (the braking system, while controlled electrically, used air). They had 1 train left when I left. It took them 6 months to inspect the remaining train. They were either milking the clock the entire time, or they had people in positions they shouldn't have been in ;)

    17. Re:In my experience by asylumx · · Score: 2

      Bingo.

    18. Re:In my experience by Anonymous Coward · · Score: 4, Interesting

      I fixed a lot of bugs as a junior developer and try to hand as many as I can to junior guys now, too. Yes, you're throwing them in the deep end of the pool. But understanding that, I've yet to find a better way to learn the ins and out of complex existing systems. Stepping through a debugger shows the execution paths, looking for a bug forces you to read the code _carefully_. Bugs often span neatly defined encapsulations, such that you're figuring out how two disparate systems interact.

      Putting a senior developer on it will fix the bug faster, but you'll get new senior developers quicker by forcing junior developers to act like one.

    19. Re:In my experience by nitehawk214 · · Score: 3, Insightful

      If your junior developers are writing all the new code, they will be causing deep seated flaws that cause your senior developers to perpetually fight fires.

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    20. Re:In my experience by tippen · · Score: 1

      Exactly. It's a great way for junior developers to learn the system and to get familiar with the style and layout of the code base.

    21. Re:In my experience by Anonymous Coward · · Score: 0

      You should always start your juniors out supporting the app if it is already being used. Pair them with a mentor to work with to get the tool chain and environment worked out. Start with them watching the mentor, then slowly give them the reins with the mentor watching, then have the mentor just supervising, till they are independent. I want to develop their problem solving skills more than anything else.

      Even as a senior developer I like to start out supporting a new app I get thrown at if possible. Gives me a better feel for how the app is used in the real world.

    22. Re:In my experience by wisnoskij · · Score: 5, Insightful

      That sort of seems backwards. It is a hell of a lot easier and quicker to not program a bug in the first place, than to find and fix one. Anyone can code, sure, but if you plan on eventfully delivering a bug free program, maybe the poor coders writing poor bug filled code are not really helping with this at all. Perhaps the senior coders, could have written a better functioning, and easier to maintain piece of software alone, way easier than trying to transform a trash-heap of code into something usable.

      --
      Troll is not a replacement for I disagree.
    23. Re:In my experience by Anonymous Coward · · Score: 1

      you just described one of the worst ways to do things, because your senior level guys aren't going to be doing one line fixes, they are likely having to refactor fresh code (i.e. duplicating work).

      Here is a scenario, a junior developer implements poor html with no form ids, uses tables for extensive layout control and copy pastes weak js to achieve validation when you already have something that does form validation behind the scenes....now all that work has to be basically re-factored by the senior developer. ...that is a good way to make someone go postal.....

      You want to do the opposite, the rookies need to do the bug fixes to get familiar with the codebase and how senior developers expect things. If its something that needs expert guidance, pair program.

    24. Re:In my experience by Opportunist · · Score: 3, Insightful

      That's why code design is separate from code implementation.

      Yes, I know it got unfashionable, but there's a reason why that used to be two different steps in the production process.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    25. Re:In my experience by TheRaven64 · · Score: 2

      I don't entirely agree. There are multiple steps to finding a bug. Creating a reduced test case that reproduces it is often the most difficult bit, but once you have that and have turned it into a test, fixing the bug can be a good way of learning about an unfamiliar codebase.

      --
      I am TheRaven on Soylent News
    26. Re:In my experience by avandesande · · Score: 1

      I don't think the OP was suggesting juniors should never fix bugs, hopefully the senior guy would have a sense of what is possible/impossible for a junior to troubleshoot and fix.

      --
      love is just extroverted narcissism
    27. Re:In my experience by TheRaven64 · · Score: 1

      I'd be quite surprised if this is really the case. Fixing bugs is inherently harder than not introducing them in the first place, because in the latter case you're having to pay more attention to the code that you're writing and in the former you have to hunt for an issue over the entire codebase. The only time that rushing will save money in the long run is if there's a big advantage in being first to market, even if it's with a substandard product.

      --
      I am TheRaven on Soylent News
    28. Re:In my experience by Anonymous Coward · · Score: 0

      Then none of this is productive.

      All managers, all sr. leads, all business folks and half of CS grads with big heads ultimately evaluate against the desire of BUG FREE code.
      When in the world of agile... doesn't exist! So 7/8 of all evals are complaints and rants. There are so many attitudes here about ego with bug free code--a masters of the universe attitude. That's not reality.

      That's what irks me all the time when these articles about s/w development efficiency/eval come up. The above folks (who typically authors them) contribute ultimate performance by an individual-independent context, when s/w development is a team sport. If the team gets it done,we should all get credit, yes stars will rise, but not one falls behind. And when the team fails, we all get dinged. You think the Falcons got laid off, fired, or got reduced salaries? Nope, business as usual.

      Instead we look at it person by person and lose content of a situation, like when leads really don't know what their doing, to leads getting zero support or budget from VPs, or leads put on a CEO death march.

      Folks S/W development is a team sport. Don't let the visionaries, HR, finance, or MBAs tell you otherwise.

    29. Re:In my experience by Anonymous Coward · · Score: 0

      AC you replied to here. Unlike seemingly everyone else, I agree with you. What you want to do is find the juniors who are not only writing the new code you told them to, but also finding and fixing bugs in the existing codebase they are extending. And then promote them to seniors. :)

    30. Re:In my experience by phantomfive · · Score: 1

      Judge them on bugs. If they are constantly trying to fix their code then you have a metric on when to seek a better one.

      I would add.....you can often judge the quality of a codebase by looking at the bug list. If it's an overflowing list and always increasing, then you have a bad codebase and bad developers.

      --
      "First they came for the slanderers and i said nothing."
    31. Re:In my experience by Kyont · · Score: 1

      What I came hear to say is a variation on this: ASK THE TESTERS! If your organization is large enough to have full-time system testers separate from the developers, they revel in finding obscure bugs and bringing them back to the dev team. They learn very quickly whose new code is bulletproof and whose is not. And they definitely know, once they've uncovered a bug, whose fixes stay fixed and whose just cause more bugs downstream. They don't a flying fig about lines of code, time spent on Slashdot, or anything else except 1) does the developer's code do what it's supposed to and 2) does the developer treat the testers with professional respect.

      --
      You shall see a cow on the roof of a cotton house.
    32. Re:In my experience by erapert · · Score: 1

      And the army would like all their soldiers to be Delta SEAL black ops operator bad mother fuckers too.
      Meanwhile, in the real world, we recognize that not everyone is a gold medalist and we try to work with the people and resources and money that we actually have available.

    33. Re:In my experience by david_thornley · · Score: 1

      Alternately, the developers are working very competently on a decent codebase and are adding lots of new hard-to-test functionality. Lots of what we do can't be properly tested except by generating gcode and running it, so when we've got a lot of work in that area the bug list grows for a while.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    34. Re:In my experience by Ocrad · · Score: 1

      That does NOT eliminate the need for good code design, actually, having a good design phase is absolutely crucial to this approach, since else your juniors have to design. That would be ... let's say sub-optimal.

      Even more important than good code design is good data format design. No amount of good code can compensate for the defects in a bad format.

    35. Re:In my experience by La+Gris · · Score: 1

      And the army would like all their soldiers to be Delta SEAL black ops operator bad mother fuckers too. Meanwhile, in the real world, we recognize that not everyone is a gold medalist and we try to work with the people and resources and money that we actually have available.

      The army is not cost competitive and its funds are all about political reasons. A private company has to compete on price, and market shares and is funded by investors confidence into profitability.

      The army needs ppls that are: Physically capable, blindly obey rules and hierarchy, accept to give-up their freedom and can adapt predictably uncomfortable and high risk missions. They do provide education for most of it, and the education process is selective enough to have the worst candidates to give-up and quit spontaneously.

      Private companies rarely invest in education or only on their specific tools. They select candidates from a worldwide pool, performs background and interviews, expect their disposable employees/contractors to know their job enough to not invest in education. And hope they got the right person for the job and for the amount they are willing to engage.

      Different purposes, different rules.

      --
      Léa Gris
    36. Re:In my experience by phantomfive · · Score: 1

      That's a possibility but I haven't seen it in practice. Usually a codebase like the one describe is on its way to becoming a mess.

      --
      "First they came for the slanderers and i said nothing."
    37. Re:In my experience by Jake+Griffin · · Score: 2

      Fix one bug without creating any then do nothing for the rest of the year. Guaranteed to be ranked higher than the average developer, because of the zero-sum rating system.

      --
      SIG FAULT: Post index out of bounds.
    38. Re:In my experience by Waccoon · · Score: 1

      It is a hell of a lot easier and quicker to not program a bug in the first place, than to find and fix one.

      Especially over a period of time. Bad coders release faulty code and pledge to fix it later. Good coders know this is insanity and fix it ASAP, because fixing it later is WAY more costly.

    39. Re:In my experience by mark-t · · Score: 1

      That's all very well and good if you get to choose which tasks you do. In my experience, developers on teams often get assigned certain responsibilities by the producer or manager of the project, and failure to complete those responsibilities in a timely fashion results automatically in a poor performance evaluation, unless the developer can readily show during their review that the difficulties they encountered would have equally impaired any of the others on the development team. If the developer took more time than allowed because they were fixing other people's bugs, that can be legitimate as long as they can show that those bugs needed to be fixed for them to complete the tasks that they were given.

      I proposed the above metric on the assumption that all other things were equal, and assuming that all developers completed all of their assigned tasks in the requisite time.

      So your proposed method of trying to game it would not work since the developer who tried it would not even get as far as being able to have any kind of useful metric to compare to others and would likely be let go because of their unproductivity.

    40. Re:In my experience by david_thornley · · Score: 1

      Tech debt can be paid down, as long as it's not allowed to generate too much interest.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    41. Re:In my experience by Wootery · · Score: 1

      It's a tradeoff. Going to either extreme is clearly a bad idea.

    42. Re:In my experience by phantomfive · · Score: 1

      That may be true, but I'd be more impressed if you'd said, "We had a codebase, we added a lot of bugs, then we fixed them all. It didn't get out of hand. So it is possible."

      --
      "First they came for the slanderers and i said nothing."
    43. Re:In my experience by david_thornley · · Score: 1

      Fixing the UI stuff goes fast. Fixing the gcode generation and running it on the shop floor takes longer. I'm currently in charge of bug fixing, and the number is going down steadily.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    44. Re:In my experience by phantomfive · · Score: 1

      Nice. Keep up the good work!

      --
      "First they came for the slanderers and i said nothing."
    45. Re:In my experience by erapert · · Score: 1

      I think you misunderstand what I'm trying to say and focused on a facile reading of the words.

      I'm saying that it's unrealistic to expect all my employees to be at the same level of excellence of skill and competence.
      Therefore it makes sense to set up my environment so that I don't rely upon that unrealistic expectation and can still get good performance out of my team even if they're not all perfect.

      Please think a little deeper about what people have to say.

    46. Re:In my experience by La+Gris · · Score: 1

      I think you misunderstand what I'm trying to say and focused on a facile reading of the words. I'm saying that it's unrealistic to expect all my employees to be at the same level of excellence of skill and competence. Therefore it makes sense to set up my environment so that I don't rely upon that unrealistic expectation and can still get good performance out of my team even if they're not all perfect. Please think a little deeper about what people have to say.

      Dude, I second you entirely on this. Please re-read what I said in light of this. Expectations have to be realistic as much for a private company or for the army. Fact is, it is easier for private companies to be very selective with high expectations in a competitive environment as developers and software engineering. Every company wants the best candidate. Maybe they will get the pearl pristine one treasure. But most likely they will get someone more average in capabilities. And you are absolutely right, that managers have to set the bar at reality to begin with. My point was, that Army may not have as much choice and have to invest much more in education. Also because the kind of education army needs, is not taught in schools or universities. And I am pretty sure an army has more realistic expectations than any coding shop riding technology hypes and expecting junior developers to have unrealistic experience and abilities levels.

      --
      Léa Gris
    47. Re:In my experience by erapert · · Score: 1

      I see. So we're basically in agreement then?

  4. number of mistakes made by Anonymous Coward · · Score: 0

    Does the software work properly in accomplishing its objective. How many failures are observed in either testing or live work.

  5. Hint: It ain't the guy called in all the time by Anonymous Coward · · Score: 3, Insightful

    Here's a clue:

    It's NOT the guy who always gets called in at 3 AM to fix something that HE wrote.

    He's NOT your "hero". He'e the moron you need to fire.

    1. Re:Hint: It ain't the guy called in all the time by Opportunist · · Score: 5, Insightful

      Don't confuse him with the guy that you call at 3am who staggers in drunk and baked, sits down at the terminal and just before passing out and throwing up on the carpet at 3:15am returns your system to a running state despite the problem being in an area he has never worked in nor has any connection to.

      That guy you should keep.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:Hint: It ain't the guy called in all the time by stooo · · Score: 3, Funny
      --
      aaaaaaa
    3. Re:Hint: It ain't the guy called in all the time by mwvdlee · · Score: 1

      So basically I should work on as little code as possible, since fixing bugs in any code I ever touched makes me a bad coder?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    4. Re:Hint: It ain't the guy called in all the time by Opportunist · · Score: 4, Interesting

      I was pretty much thinking of that code. I once has a coworker like that. I remember that one time he got called in during his days off, he looked like he just came from some kind of drug party (and probably did), staggered to his seat, dumped half the coffee all over his shirt, fixed the problem, was told that he can go home now and replied "Sounds too elaborate" before simply sleeping at the desk.

      And yes, he was sleeping. And snoring.

      Such people exist. I have met a few that are like that, not THAT extreme but some rather odd fellows with odd quirks do exist. Funny enough, you can't motivate them with money. But they are easily motivated by allowing them to live out their particular brand of insanity.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    5. Re:Hint: It ain't the guy called in all the time by Opportunist · · Score: 1

      ...thinking of the comic...

      Guess I should get some sleep... someone find me a comfy keyboard, could you?

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    6. Re:Hint: It ain't the guy called in all the time by damaki · · Score: 1

      Jokes aside, the only thing I am good for when I am dead tired is doing my actual software engineering job. Seems like many others parts of my brain shut down, and I even often forget to drink my coffee when tired.
      Doing the same job for years surely optimizes one's brain for a specific task.

      --
      Stupidity is the root of all evil.
    7. Re:Hint: It ain't the guy called in all the time by Anonymous Coward · · Score: 0

      You can always blame the original author, as long as you never offer to rewrite legacy code from scratch.

    8. Re:Hint: It ain't the guy called in all the time by Zeromous · · Score: 1

      I worked with a fella like this when I was still pretty junior, who was a trainwreck, but played the IT game brilliantly. He brought positive influence to our team and taught me a lot in a short time. I do not idolize him but I respect him greatly.

      He also showed me I could do just about anything I set my mind to, including moving a 250lb drunk man to a better spot, after he fixed it.

      --
      ---Up Up Down Down Left Right Left Right B A START
    9. Re:Hint: It ain't the guy called in all the time by psithurism · · Score: 1

      You can try to fire me, but then who're you going to call at 3:00am if no one on the rest of the team is willing to touch my code even with a 100ft USB cable?

    10. Re:Hint: It ain't the guy called in all the time by Waccoon · · Score: 1

      That's the IT equivalent to, "hold my beer and watch this..."

  6. Test Cases by Anonymous Coward · · Score: 0

    I would measure and evaluate the test cases.

    They are easier to digest, quick to summarise and the test case can describe the complexity of the function as well as the failure modes it protects against.

    1. Re:Test Cases by david.emery · · Score: 1

      Agree! And in particular, do the test cases cover both all expected functionality and error situations, particularly bad (user) input?

      (someone please mod parent up).

  7. Work progresses despite managerial interference... by Anonymous Coward · · Score: 1

    If the job is getting done in a timely, not ridiculous timelines put together by clueless pointy-haired-ignoramouses, fashion, even in the face of idiotic interference by said PHI trying to tell a programmer how to program, or how to interpret the design documents even though they have absolutely no clue, then the programmer(s) are damned good.
    It the project is still moving forward with only 1 or 2 American programmers having to decode, debug, and in most cases completely rewrite the absolute crap put out by the outsourced programmer wannabes from who knows where, then the programmer(s) are damned good.

    I think the more important questions are:
    How do you know if your manager is an imbecile that should be fired?
    How do you know if the company you've outsourced your work to is bad enough that you should fire your manager?

  8. Deadlines by Quakeulf · · Score: 4, Insightful

    When he can keep deadlines within reason and deliver something that runs pretty well based on the specifications. Anything else is fluff.

    1. Re:Deadlines by Anonymous Coward · · Score: 1

      sounds like a good way to get buggy unmaintainable software

    2. Re:Deadlines by Anonymous Coward · · Score: 0

      Correct. This is the one thing that matters and cannot be gamed. It is also difficult, since it involves real work. Unfortunately, there's an awful lot of junk like methodologies and expectation based metrics and pure crap metrics clouding the discussion. Fortunately, at a subconscious level at least, delivering is considered effectiveness, even if it is attributed to the wrong causes.

    3. Re:Deadlines by Anonymous Coward · · Score: 0

      > When he can keep deadlines within reason and deliver something that runs pretty well based on the specifications.

      That assumes way too much about the departments around him. Product and marketing in particular.

      In the real world, the best you get is no more than two of "keep deadlines within reason", "deliver something that runs pretty well", and "based on the specifications".

    4. Re:Deadlines by computational+super · · Score: 4, Insightful

      After I graduated college and started working, I began to notice a pattern in the jobs I got: I'd start out doing work and producing stuff, and the people around me would start to notice that I was good at doing work and producing stuff, and that I seemed to know a lot of stuff (I love to study arcane details like how TCP/IP or SSL work, so I can often troubleshoot unusual problems), so they would start asking for my help. I would help more and more with other things, and spend less and less time doing work and producing stuff. So I'd start to get criticism for not doing work and producing stuff ("on time and under budget, you programmer peon, and if you don't like it there's a hundred guys in India who will do your job for half what I pay you!"), so I'd yo-yo back to turning away requests for help so that I could focus on doing work and producing stuff, only to get criticism for not being a good team player. (Funny how "team work makes the dream work" but we're evaluated only on our own individual accomplishments)

      Since being a good team player is the polar opposite of adhering to arbitrary deadlines, I've experimented both ways over the past 25 years and I've come to the conclusion that being ready and willing to drop everything and helping out whoever needs or asks for your help is what makes you "valuable", not slavishly adhering to meaningless deadlines, regardless of how you think the world ought to work.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    5. Re:Deadlines by avandesande · · Score: 1

      Usually these kind of programmers fail QC or production (often) and are easy to identify. I have rarely seen programmers who make un-maintainable code make successful changes on the first try. So it's import to keep an eye on the pipeline....

      --
      love is just extroverted narcissism
    6. Re:Deadlines by Anonymous Coward · · Score: 0

      1) what manager sets reasonable coding deadlines?
      2) what the hell are specifications?

    7. Re:Deadlines by Anonymous Coward · · Score: 0

      Ding Ding Ding! We have a winner!

      Metrics are bullshit invented by MBA programs.

      Results are far more important than metrics.

    8. Re:Deadlines by complete+loony · · Score: 1

      Then you should be able to record your time spend helping other people's projects.

      Management can't see what they aren't measuring.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  9. TPS reports! by Joe_Dragon · · Score: 1

    We have this on guy who we wanted to dump as he just did not file them the right way But he just got pushed up to management. And they one of older guys who got layed off burned the office down.

  10. easy.... by Lumpy · · Score: 1

    When he hasn't murdered the management asking if he is doing a good job....

    --
    Do not look at laser with remaining good eye.
    1. Re:easy.... by Opportunist · · Score: 1

      ...he's not, because he has shown he cannot identify things that lower his productivity.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    2. Re:easy.... by mwvdlee · · Score: 1

      But he has. He even prevented the issue from causing future loss of productivity.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    3. Re:easy.... by Opportunist · · Score: 1

      How? He hasn't murdered management.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  11. depends on how you set goals. by nimbius · · Score: 4, Insightful

    There are a few ways. SCRUM/Kanban is an effective way to inundate your programmers with meetings and conference calls asking and tracking minute status updates for every commit or stash you can find. its perfect to ensure that changes to the codebase are governed by your personal fears and demons, not the best interests of users, because you too have to be fully invested in standing up in a conference room every morning and listening to a dozen or more different and often pedantic events transpiring in the cubes of people that know far more about them than you. Agile can be used to boost your title and sometimes salary while at the same time demeaning a team of programmers into thinking theyve signed on to some late chapter of Orwells 1984.

    Or you can set goals, track them in a ticket system, and evaluate results based on what your users and teesters see and want. Call people in for meetings when there are big events, but otherwise keep your hand off the phone and use something called trust to ensure your programmers are "doing a good job" once the code is ready.

    --
    Good people go to bed earlier.
    1. Re:depends on how you set goals. by Verdatum · · Score: 2
      This sounds like a classic case of doing Scrum wrong. The Scrum process has one informal meeting a day of only around 6 people that should never take longer than 10 minutes, one planning meeting at the start of every sprint (two or three weeks), and one demo/retrospective meeting at the end of every sprint. The entire point of Scrum is to kill off "hour long meetings that could've been done in minutes via email" and allow coders to code.

      Standup is "Yesterday I did story 289, users will be able to customize the color of their bikeshed. Today I'll be Refactoring some unit tests for it. I'm blocked on story 290 because the Tomcat server is down. Done"

      Planning meetings should be mostly prepared in advance by the scrummaster and PM. So the meeting is "here are 12 story points we wanna do next sprint. For each one, I'm gonna describe it briefly and we all come up with an estimate of how many days it should take. Then we work out the first task each person is going to start with, and talk about any potential problems. Let's keep it under an hour if at all possible."

      Demo is: "Story 290: Before, the system did this: (click click click). Now, the system does this: (click click click). Stakeholder, is this what you expected? No? Dang, either explain in a few sentences or get together with me and the SM after this and we'll make a new story to add to the backlog. Moving on! Story 291..." With each demonstration, you have both the old build and the new build set up in advance on VMs so you don't waste any time loading things or doing unimportant lead-up steps.

      And most of the retrospective IMHO is best done via email or app 1-on-1, except for the "we learned as a team that..." type stuff. Such as "Holy crap we take too long on those standups!" It's an attempt to strive towards making every sprint a bit better based on mistakes from previous ones.

      The metrics you get out of Scrum mostly come out of the apps these days. And most of the metrics are only meaningful when viewed over many sprints. They show things like trends. "Each sprint, Developer-A finishing more story-points than the sprint before!" or "a story point for Developer-B tends to take half a day on average, while Developer-C takes 2-days per point." based on that, you can start to make predictions about how much can be accomplished both for each sprint, and for the months and years ahead.

    2. Re:depends on how you set goals. by avandesande · · Score: 1

      I work with an offshore team and there was a 3 month backlog when I took over. We have one less person now and backlog is non-existent after I implement a daily 'scrum' (just a call) to go over tickets. We have started taking over work from other teams. I don't buy into agile necessarily but checking in every day for a few minutes really does seem to help.

      --
      love is just extroverted narcissism
    3. Re:depends on how you set goals. by nasch · · Score: 1

      You seem to know a bit about it, can you explain the point of the daily standup? As a developer, I have never found any value in hearing what everyone else is working on. If it's something I need to know about, I will know about it already through other channels. Is it just for the PM's benefit? And if so wouldn't it be more efficient to just use good PM software?

    4. Re:depends on how you set goals. by Verdatum · · Score: 1

      There's a couple reasons for knowing what the others are up to. You want to avoid specialization, so you want team members to be able to work on as many tickets as possible. By being roughly up to speed on things, you can take over the next story in the path. This means you don't have development held up as much. You might also hear about problems that you might be able to solve (offline after the meeting), or learn about something you didn't know. But yeah, it shouldn't take long at all. "I worked on this ticket, the bug turned out to be someone using a deprecated method. today I'm gonna figure out how to insta-ban the spam-bots via pattern recognition. Done." And then you might go, "oh wait, don't do that, I already started working on that ticket yesterday afternoon, but I forgot to put it into the started state! Sorry about that!" "Oh in that case, I'll do this other story. Also, I'm stuck on this other task because Active-Directory won't let me reach the folder." and before the manager has a chance to look into it, another team member says, "oh I bet I know why that is. I noticed we had active-directory on the machine, and that sucks, so I shut it down. I can fix that right after the meeting." "Oh splendid, i'm glad I brought it up." Sure, much of what gets said is redundant confirmation stuff, but it's useful often enough that it's worth having, just as long as it's kept down to a few minutes, and doesn't drift into some boring bullshit session, or two people discussing an issue, while everyone else has no idea what those two are talking about and are just zoning out until the subject finally changes.

    5. Re:depends on how you set goals. by nasch · · Score: 1

      Thanks, maybe it's not well suited to our extremely tiny company because we are pretty much all specialized. There's no way I will have any contribution for the (only) iOS guy because I'm the (only) Android guy and don't know anything about iOS, and vice versa.

    6. Re:depends on how you set goals. by Verdatum · · Score: 1

      It's not a bad idea to slowly change that so that you do know a bit about the other platform, and can do a bit of work in that realm. It's a good thing to do both for the sake of growing your resume, and so that if your only iOS guy gets hit by a bus, your company isn't dead in the water on iOS for the months it takes to interview people, go through the hiring process, and get the new person ramped up on your codebase. Just something to ponder.

    7. Re:depends on how you set goals. by nasch · · Score: 1

      Bus factor is definitely an issue. The solution may be to migrate to Xamarin for mobile development and then we'd all be using the same technology, but that hasn't been decided for sure.

  12. Evaluate the code by Anonymous Coward · · Score: 1

    Look at what the developers write, evaluate their work. An experienced developer is capable of evaluating other developers. A manager without programming experience may have a hard time though.

    There is the quality of the code written. Beginner code or better stuff? Clever stuff? Handles corner cases well or not? Passes reviews/testing better than others? Good documentation or just some mandatory template documentation?

    How did they handle the unexpected, such as a key library not working as advertised? Fixed it? Made his own implementation? Complained to the vendor and just waited forever? Capable of fixing things when some other developer has made a mess?

  13. No great way by Anonymous Coward · · Score: 0

    For an individual, I don't know if there is a way. But there's some guides. I go off of how frequently do the projects developers work on succeed or fail and how many problems do they tend to have in those projects as well as how far behind schedule do they tend to be. You can't use a single project as a metric, but have to look for trends. For example, you notice that projects tend to do better with certain developers and some do more poorly with others. But again, this isn't fool proof because it's all a team effort and the best and brightest can't pull up a crap team, and a really good team will still succeed even if one member is garbage.

    Really, I guess it's that you really can't judge developers as individuals and instead must judge them as groups.

  14. Simple by bickerdyke · · Score: 4, Funny

    The ones doing a good job are NOT wasting their time on slashdot.

    And now back to work!

    P.S. I'm probably closer to the weekend than most of you :-)

    --
    bickerdyke
    1. Re:Simple by Anonymous Coward · · Score: 0

      So true, brah. Everyone knows the best programmers are butt-fucking the HR ladies in the bathroom stalls during their lunch hour.

  15. Wait, what? by bigdavex · · Score: 3, Interesting

    One of the easiest ways to evaluate a developer is keeping a tab on the amount of value they provide to a business.

    That's easy? OK, problem solved.

    But the problem with this approach is that the nature of software development does not make it easy to measure the value a single developer brings

    Wait, it's not easy?

    --
    -Dave
    1. Re:Wait, what? by mwvdlee · · Score: 1

      That's easy to fix; just make it easy to measure the value a single developer brings.

      Now please hand me my management bachelors' degree.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  16. Creating branches... by Anonymous Coward · · Score: 0

    Doesn't indicate much of anything. Merging them into your release branch does. Branches can be features of bug fixes of course.

  17. Skill growth by Anonymous Coward · · Score: 0

    A developer is doing a good job when you can observe improvement in their skill level every quarter or year. If their skills have stopped growing then they are at best doing an adequate job.

    Manager bros/bras hate the idea that people aren't machines with objective measurements open to checking by someone with zero domain knowledge.

  18. Not Possible to Grade on Metrics by Anonymous Coward · · Score: 1

    I don't think it is possible to grade on any metric.

    Project I am managing now there was a "superstar" programmer - or so it was thought. The project would not have been successful without his work for sure but ... Every line of code he wrote is terrible. It serves the purpose intended but its unreadable and cannot be extended at all. I have yet to find anything he wrote that could be extended to a useful degree and I am not alone. If he had not been a programmer at the time the project would have failed completely yet his work has a super high ongoing cost. Should he be rewarded for pulling a miracle at the time or castigated as a failure now?

    Another developer just starting out. Regular coaching etc. and seemed to be getting the hang of things but ... could or would not take the smallest initiative. Caution is a good trait when starting out but at a certain point the expectation becomes different. You have someone capable of the job but they need continuous hand holding. OTOH Code hygeine was good. I haven't had any problems reading their code or extending it.

    Who gets the glory, who gets the boot?

    1. Re:Not Possible to Grade on Metrics by iamgnat · · Score: 1

      Project I am managing now there was a "superstar" programmer - or so it was thought. The project would not have been successful without his work for sure but ... Every line of code he wrote is terrible. It serves the purpose intended but its unreadable and cannot be extended at all. I have yet to find anything he wrote that could be extended to a useful degree and I am not alone. If he had not been a programmer at the time the project would have failed completely yet his work has a super high ongoing cost. Should he be rewarded for pulling a miracle at the time or castigated as a failure now?

      Are you working on the same code as I am? Sure sounds like it...

      The problem with all these metrics is that there are tons of inherited code bases like the one described and now the poor shmucks that have to pick up the pieces are to be held accountable to these metrics when much of it is out of their control (because how often does management bite the bullet and allow for a complete rewrite?). If the code does not allow for extension and the new developer is tasked with extending it, it's going to be slow and there will be bugs.

      Another developer just starting out. Regular coaching etc. and seemed to be getting the hang of things but ... could or would not take the smallest initiative. Caution is a good trait when starting out but at a certain point the expectation becomes different. You have someone capable of the job but they need continuous hand holding. OTOH Code hygeine was good. I haven't had any problems reading their code or extending it.

      If I had good management that understood what is important, I'd want an army of these people on my team. As an industry we are hung up on rockstars and we want teams to be full of them, but the problem is that rockstars rarely agree and bring a wealth of other issues. Having people that can be given a pre-decided task and get the job done in a clean and effective manner would be worth their weight in gold in a non-"Now! Yesterday! Now!" environment. The ones that have the interest/drive will develop the skills to move up to a lead role over time, but there is nothing wrong with the ones that just want to bang out good solid and clean code day in and day out.

    2. Re:Not Possible to Grade on Metrics by godrik · · Score: 1

      As usual, there is no perfect metric. But there are first cut indicators.
      Things like bug reported per line of code, size of the diff after a code review, simple measures of code readability, how many bugs closed of particular categories, ...
      Metrics never tell you the entire story, but that gives a quick idea of who is doing what kind of code is being written. You'll need to look deeper into particular developers to put things in context.

  19. Management Is Hard by lazarus · · Score: 5, Insightful

    So this comes down to actually being a good manager. It's hard, and lots of people do it wrong / pretend they are good but aren't / etc. Ask yourself what you really want in a developer and then manage your team to that standard understanding that each member has their own strengths and weaknesses. Something like:

    - Elegant and easily understood code
    - Good at estimating and meeting deadlines
    - Productive and participative in scrums
    - Thoughtful and supportive of alternative views
    - Etc.

    Coders are people. They are a unique breed of people, sure, but if you want to gauge their worth, then you manage and treat them like people. Not monkeys at a typewriter. A small group of talented and creative coders can save a company millions in just a day of work. I've seen it. You need to appreciate their value by paying attention, not coming up with some arbitrary metric that makes your job easier.

    --
    I am not interested in articles about life extension advancements.
    1. Re:Management Is Hard by ausekilis · · Score: 1
      My coworker and I were just talking about this yesterday as our group is doing their annual reviews. We came up with the following:
      • DON'T try to find some one-size-fits-all measurement to judge folks by. It's impossible to find a way to compare back-end and front-end developers that is fair to everyone. If the problem space is different, recognize that.
      • DON'T attempt to find some numeric rating scale. Yes, there are a lot of companies out there that do it, but the numbers are completely arbitrary and mostly meaningless
      • DO talk to your employees about what their aspirations are, help them get there, and evaluate their progress. As a manager your job is to enable them to succeed. You should know what they want out of next year, next 2 years, and so on. This gives you a gauge for that person, even if they don't want to climb to the top.
      • DO evaluate them against their nearest peers. It's unfair to compare the college grad to the graybeard, through with the right graybeard you may get a feel for how well the college grad is doing. Use metrics lazarus suggested. Are they fitting in with the team? Are they pushing themselves to get better? Are they fixing their code and making it easy for others to read?
      • DO talk to those that work closely with them. Project Leads, co-workers, managers. These are the folks that know first-hand how involved and productive your guys are

      Of course, all of this is just input to some grander scheme. Many places I've worked have some allocated bonus/leave/raise pool, so the manager creates an average. With all this feedback, you should be able to tell who's above average from who's below.

    2. Re:Management Is Hard by Verdatum · · Score: 2
      A good manager on a software project is an amazing thing. And exactly, gauging a developer's performance is an important part of the job and no trivial task. The best managers have plenty of experience writing code, plenty of experience with higher level theory of software engineering and architecture, plenty of education in general management, and plenty of education in software project-management.

      A bad manager is usually an electrical engineer who has many years of seniority, who got pushed into software by necessity, which he learned by reading "Learn to write C in 21 days!" and upper management finally pushed him up to project manager because of a combination of A) it's the next promotion after "Senior Engineer" on our tree, and B) The guys we've since hired, who are formally trained in software engineering tell us that while he's a responsible hard worker, the code he produces is inelegant, unreadable, and unmanageable.

  20. Good is relative. by Anonymous Coward · · Score: 0

    Good is relative to the other developers on the team and the standards for the company.The Team Lead, PM or in some cases Architect should be competent with the design patterns being used on the project and the performance of the other developers on the team. A developer is doing a bad job when their output isn't matching the output of the other team members in terms of performance or when they are refusing to follow design patterns and other standards set forth by the supervisors... It gets more complicated though, Poor performance and non compliant code could be tied to a need for training the employee didn't receive. It could also be tied to specific time delays/blockers they had to overcome. So all this has to be considered. Once everything that can be done for developer has been and the pattern continues to repeat, you know there is an issue.

  21. The Snazziest Dressed by Anonymous Coward · · Score: 1

    If he's rockin Ivanka's clothing line and buying her stuff like a good citizen, he's clearly a good developer.

  22. Bill Gates said by bigdavex · · Score: 4, Insightful

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

    - Bill Gates

    --
    -Dave
    1. Re:Bill Gates said by UnknownSoldier · · Score: 1

      Lines of Code has always been a bullshit metric.

      -2000 Lines Of Code

    2. Re:Bill Gates said by Anonymous Coward · · Score: 0

      It's a good comparison. Like aircraft weight, you want as little as possible, but not so little that the thing doesn't work.

  23. The moanager has to understand what developers do by Anonymous Coward · · Score: 1

    In other words: You have to be one to know one. A developer knows who is a good, productive developer and who isn't. Be a developer, at least in part.

  24. Some methods I use by CastrTroy · · Score: 5, Interesting

    Here are some methods I use to determine if they are doing a good job.

    1. Defect rate - If they are constantly fixing bugs or you are required to have other developers go over their code and are constant finding basic problems, the developer isn't doing a good job.

    2. Taking more time than expected/estimated to do a job. Obviously there's cases where requirements change or unknown issues pop up in the project. But if it's a constant issue, then there is either a problem with management/planning, or the developer isn't making good use of their time.

    3. They constantly say "I'm (almost) done, just need to test". A good developer will test as they go along. Once the coding is done there should be very little additional testing that needs to be done. You reasonably certain that everything will work by the time coding is completed.

    4. Constant needing to have stuff explained to them. If you constantly need to explain how something is supposed to be done, or have to explain the project 3 or 4 times, then the developer may have a problem. It may also be the case that you aren't explaining the project properly, however, a good developer will ask for clarification up-front instead of nodding yes, and coming back 3 days later with a bunch of questions, no code to show for the passage of time, or maybe even worse, a bunch of code that doesn't do what it's supposed to.

    5. Finally, sleeping on the job, constantly late, or going home early or a combination of the above. You wouldn't think that sleeping on the job would be a big thing, but I've seen it happen more often than not. The causes of this could be anything from just bad time management to other things that are more understandable like a personal illness or a sick child/spouse or other personal problem. But the reason doesn't change the fact that the person is going to have performance problems. The employer should identify the problem and work with the employee to resolve the issue.

    Finally. It's all about taking metrics in terms of defect rates and whether or not projects are completed on schedule. If they are doing well in these areas, they are probably doing a good job. The other stuff like showing up late or sleeping on the job really shouldn't matter that much as long as the person is getting their work done. But I haven't met a whole lot of people who can sleep/slack off at work while still getting the job done.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    1. Re:Some methods I use by Anonymous Coward · · Score: 2, Insightful

      "They constantly say "I'm (almost) done, just need to test". A good developer will test as they go along. Once the coding is done there should be very little additional testing that needs to be done. You reasonably certain that everything will work by the time coding is completed."

      I don't know what you do for a living, but I'm a developer, and I frequently say that. Of course I test tasks as I complete them, but what you say implies integration is trivial and requires little to no testing. This is simply untrue for anything but the most simple of projects. Integration testing is often one of the most difficult portions. Going in to integration level testing I have a pretty good idea of how rough it's going to be, but I never know for sure and sometimes what I thought was going to be simple turns out to be a bloody nightmare. And in almost all of these cases, the feature as developed and tested in isolation works flawlessly. But when integrated into the larger system will introduce some previously unexpected abnormality. If not for NDAs I'd cite some specific examples I dealt with last week. I can say one that I ran in to where on the production machine, things didn't perform the same way as on my dev machine. And yes, developing on production hardware would be ideal, but sometimes it just can't happen.

      Also, late for work, early to leave and sleeping on the job, I've never had problems with. Some of the best devs I've worked with didn't get in till noon and would take off at 4. What you didn't see was when they came back at 8 or were working from home, or coming in on weekends. Also, if they get something done in 6 hours that would have taken me 12, as long as quality is there, what do I care? They get things done in a reasonable amount of time and to a reasonable quality, I don't care if they only work 1 hour a week.

    2. Re:Some methods I use by lordmage · · Score: 5, Insightful

      Sigh. This is how great developers see bad managers and avoid them.

      1. Defect Rate: The more experience, quality developers are given the more complex tasks generally and actually generate a large amount of defects. Defects are also a case of amount of humanity involved in the area developed. More defects in HMI code because of more eyes. Defects are also based on testing, so if a code is rarely used or testing only cursory, defects are not found. This information can be found and highlighted in the FREE Debugging course from Andreas Zeller at udacity.com (Nope not shilling but found this course very informational).

      2. Just because someone is an experienced developer does not mean they can estimate a job. One of the hardest things that developers are asked to do is SWAG a job. The numbers are generally way underestimated due to our human overestimation of time in future (look it up, I dont have the time. heh). These times get filtered back through contracts and customers and come back even less time. Exactly how many projects have you been on that actually made time/budget exactly as estimated? There is a reason developers work a lot of unpaid overtime.

      3. Testing as you go along. Are you stating all developers should do Test Driven Development? Okay, then provide hard, frozen requirements up front. Oh wait, you are AGILE so that cant happen for larger items. Oh.. there we go.. inch pebbles.. I think the best estimate is down to 3-4 hour chunks of time. Okay, so I established that ETC is hard enough, now do it constantly in a changing requirements weekly. Wait, Im almost done here.. give me some time to finish... I thought I would be done before lunch.. but Im not done yet. Management responsibility is to manage the developer to help them and the management to make realistic time.. so "almost done" is not done.
      - Is it Soup? That is what I heard from my bosses when I first started in the game. Is it Soup? 20 minutes from me being first assigned a task. No real concept of the entire task. You learn to answer "Shortly" and they stop asking. 2 weeks if they ask me now.. no matter what it is. They learned to give me real time to get a much better ETC out. One of my early ETC was "3 months" from spending 2 hours on the ETC. When given 3 days, the ETC was a year and it took... a year!

      4. Development and constant need to have stuff explained. Verify they understand the first time. Language barriers exist constantly. Yes, this is a decent enough metric but if they can follow computer language logic, they are not dumb. I am at a place where it is expected for new developers to work 18-24 months before becomes productive. Still.. this is one that I can see if you want to cycle engineers to get better ones and do not have a large learning curve for your products.

      5. This is general employee issue. Not specific to developers.

      KLOC metrics and defect metrics are shown to have real faults when using them to judge a developer.

      Things that managers (or leads, including myself) do that slow down/hurt development:
      1. Not listen. Most of the time, as a lead, we know it all BUT we are NOT listening and not HEARING why some task will not come close to what we think will happen in the project.
      2. Micro Manage. Start the task with a known stopping date and get buy in. Dont go every to them 4 times a day, put them in a fishbowl, look at your watch if they take a longer lunch or go to a doctor, and tell others you dont trust developers as they need to be lorded over (yes, had a manager do this). The developer will come to you when they realize they have issues or need help. You help them by resources, processes, talking, etc but If you then look at them like they are insane.. you will no longer have that trust and you will have way more "Surprises". Here is a metric: If a developer never needs help and has surprises on time and issues... if you are not micro managing them, this issue lies in the developer and they need help on personal time management s

      --
      I can program myself out of a Hello World Contest!!
    3. Re:Some methods I use by omnichad · · Score: 1

      You can't test edge cases along the way, especially if they rely on the finished product. Of course actually testing for edge cases before release will make a developer less "productive."

    4. Re:Some methods I use by Anonymous Coward · · Score: 0

      1. Defect rate
      If they are constantly fixing bugs maybe that they are good at that? Not because they introduced bugs in the codebase.

      2. Taking more time than expected/estimated to do a job
      That may be a defect on the projections and/or training of the developer. Maybe they need coaching / training?

      3. They constantly say "I'm (almost) done, just need to test"
      That is just bad practices. Do any kind of TDD / BDD and that will disapear by miracle.

      4. Constant needing to have stuff explained to them
      Not a problem if they need different stuff explained. It gets into a problem if they are asking the same thing all over again. Some training should fix most of it. If they don't grasp things, then they should be reclassified.

      5. Finally, sleeping on the job, constantly late, or going home early or a combination of the above
      That is a bad one and should produce some sort of warnings.

    5. Re:Some methods I use by Anonymous Coward · · Score: 0

      Great reply. Thanks for posting.

    6. Re:Some methods I use by jb373 · · Score: 1

      Context: I'm a Sr. Software Engineer, and I am currently fighting with management to get them to understand we have two bad devs on our team. This is exactly the right way to judge a developer, you just have to keep in mind that you need to grade all of these on a curve. There will always be bugs, but too many bugs is a problem. There will always be things that take longer than expected, but if it becomes a pattern with one dev you need to look closer. There will always be things you discover that slow down your progress, but if someone has been saying "I'm almost done" for two weeks you need to investigate. Sometimes it is better and faster to teach/explain something, but if one dev keeps taking away other dev's time to have things explained to them then there may be an issue. You can't be productive 100% of the time without getting burnt out, but you shouldn't be wasting time 90% of the time either. There is a balance there. If you are the manager and can't judge some of these things, find someone you can trust. Maybe the person you can trust is on your team, maybe you have to pull in someone else and ask a favor. Ultimately, a good developer is going to want to do good work with as little headaches due to bad devs as possible and ought to be willing to help you out.

    7. Re:Some methods I use by Anonymous Coward · · Score: 0

      5. Finally, sleeping on the job, constantly late, or going home early or a combination of the above
      That is a bad one and should produce some sort of warnings.

      Not putting in the hours is definitely a problem. It's hard to be productive when you're rolling in at 11am, checking your email and surfing the internet for a couple hours, going out for a two hour lunch and then leaving to go home at 3pm. :)

      On the other hand, myself, I roll into work around 8am and leave around 5:30pm. And I find I'm most productive if I do a few hours of intense concentration, and then go out to my car and take a 15 minute nap, and then do another few hours of intense concentration, etc. So I would argue that taking a short nap or two, per se, should not be an issue - and should probably even be encouraged for jobs that require significant mental effort.

      That's not to say that rolling into work and then falling asleep for a few hours in OK, though. :)

  25. You talk to each other. And *BOTH* listen. by Qbertino · · Score: 1

    It's called social interaction.

    A good programmer will be able to explain what he's doing. A good programmer will also be able to tell you that sending out that offer and requirements analysis before showing it to him or somebody else who will do the programming is a very very bad idea. And that you really should have him on board when planning the project. But you do have to listen.

    If there is no social interaction (which may be formalised with Scrum or something), then you will never know what he is doing. And he won't care to do a good job because you don't care about what is required to do a good job.

    Talk to each other. Every day. You learn very quickly how much worth a person is that way, no matter how far away you are from being an expert in the other persons field.

    It's that simple.

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:You talk to each other. And *BOTH* listen. by Anonymous Coward · · Score: 1

      yeah, its frightening how little people value interaction. It also exposes appallingly common delusional thinking, those who think their time is so valuable they can't meet for 15 to 30 minutes per day? It's preposterous.

    2. Re:You talk to each other. And *BOTH* listen. by Anonymous Coward · · Score: 0

      This in a BIG way, where I work we have a system of peer evaluation that is done on a yearly basis and there are plenty of data points collected on various metrics via Likert scales, but the thing is all those numbers and pretty graphs get ignored for the most part compared to the comments, the comments is where the meat is. Honestly, that's all you need.

      If somebody is a problem on a team it becomes apparent through regular, private one-on-one meetings, heck sometimes even just daily stand-ups expose a lot of stuff that may not be apparent when people are hunched over keyboards seething in silence.

      You learn fast by talking to people candidly that Tim is not only a shitty developer but has a bad attitude and is actively dragging others down by causing friction or wasting time. I can look at escape defects all day long and try to evaluate who pollutes more than who but I'd rather take the dev that generates slightly more bugs than the one that forces two other devs to take extended coffee breaks due to exasperation.

      Honest communication, so underrated, so essential to success.

  26. I had top score on bugs by Anonymous Coward · · Score: 1

    Terrific, I had top score on the bugs chart in my office. It got so bad, people would list bugs to be off JIRA so management wouldn't notice and wouldn't sack me.

    Why did they do that? Simple, I was writing 80% of a new product. So a) OF COURSE I WOULD PRODUCE THE MOST BUGS from the volume of work and b) OF COURSE I WOULD PRODUCT THE MOST BUGS from the newness of the work.

    IMHO it's not hard to tell whose delivering, because you have requirements and those requirements are met or not and this is obvious to the people who raised the requirements. And seriously, if you have a business and it has a product and your profits depend on that product, and you're so incompetent you don't know whose delivering your product, the person to sack is yourself. You're out of touch and serve no purpose.

  27. You know by being good yourself by guruevi · · Score: 1

    You have to a) know how to program yourself and b) be a good manager before you can judge whether a particular person is "good". All other 'metrics' whether it's number of bugs created/resolved, time taken, lines of code written, mean time between failures, are useless if you don't know how they relate to your existing code base and impacted the actual work being done. If your software is written in brainfuck (or one of the P's - PHP, Perl and Python) you can't blame the developer for time taken to resolve past mistakes, on the other hand if it's written in one of the C flavors, you can't blame them for writing a bunch of memory management code or having various memory leak bugs, and if any of your tools includes the words Visual, then you got shitty developers to begin with and you can't hire anything better.

    --
    Custom electronics and digital signage for your business: www.evcircuits.com
  28. Successfully Executed Requests by Malggi · · Score: 1

    I don't know about where other people work. But for me the process is, customer requests something, I build the request, customer is satisfied with the result, boss is happy with me. Wash, rinse, repeat.

    Does it really need to be more complicated than that?

  29. Metrics cannot replace understanding by gweihir · · Score: 3, Interesting

    This fact has been known for a long, long time:

            A good decision is based on knowledge and not on numbers. -- Plato

    Yet these morons are _still_ looking for the "magic" numbers that can replace understanding, millennia later. The only thing that works is a "Chief Coder" or "Chief Engineer", who must be very competent, both technologically and with regards to social skills. That person will know. Of course, such people are rare, but nothing else works.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:Metrics cannot replace understanding by visualight · · Score: 2

      Corporations like Rand sold governments and corporations on the idea that you can mathematically model people and their worth. The world has been going downhill ever since. https://en.wikipedia.org/wiki/...

      --
      Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
    2. Re:Metrics cannot replace understanding by visualight · · Score: 1

      oh, just realized the video is on youtube: https://www.youtube.com/watch?...

      --
      Samsung took back my unlocked bootloader because Google wants me to rent movies. They're both evil.
    3. Re:Metrics cannot replace understanding by gweihir · · Score: 1

      I am not sure whether they are the originators of that trend, but that trend certainly is the core problem.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  30. Translation by GrumpySteen · · Score: 1

    "I am a pointy haired boss who wants to treat my employees like I treat my fantasy baseball team. Please give me a stat system so that I can rank them and start abusing/eliminating the ones who end up ranked lowest."

  31. Metrics/Schmetrics by Anonymous Coward · · Score: 0

    Good code and good coders are not simple things to evaluate one a one or two dimensional graph, yet the whole idea of metrics is to simplify the evaluation to one or two objective numbers.
    As already pointed out in this discussion, selection or emphasis of a metric will always change developer behavior. If the emphasis is on the number of tickets I resolve, I'll make sure I write a ticket for every change I submit because I want to get credit.
    So why don't senior/lead developers who are familiar with developers work on a meaningful level weed these people out? I think the choice of metrics is made by managers who aren't hands on, looking for a way evaluate the stuff that they don't interact with regularly. Those senior/leads that are familiar aren't empowered. This also quickly becomes a politics thing. Everyone has worked with 'that guy', who everyone but senior management knows can't do their job.

  32. If you ant to evaluate a developer... by QuietLagoon · · Score: 1

    ...One of the easiest ways to evaluate a developer is keeping a tab on the amount of value they provide to a business. ...

    ... you need to look at things that are under her/his control. If the developer is placed on low-value projects, then the value of that developer is low. Does that mean the developer is no good? Evaluating the value of a developer to the company may be more of an evaluation of management than the developer.

  33. At least two long-running comic strips by Anonymous Coward · · Score: 0

    Were inspired, in part, by this very question.

  34. Hard line between output and 'being one' by adosch · · Score: 1

    I think it's a really hard thing to quantify a 'good job' for a developer? The amount of context and work scenarios would make your head explode, honestly.

    What if we were talking a one to two developer shop where hackish amateurism and 5-minute produced Wordpress sites seems like 'magic' and just 'works'? On the complete other side of the spectrum with your Google, Facebook, Amazon, Snapchat, Instagram, and Microsoft's of the world in terms of fixing an ultra complex situation in 5 minutes that's nearly bulletproof in terms of 'all the bases covered' with minimal room for turnover on not getting it right the first time?

    I'd agree with most on here that, to me, at the end of the day, it takes one to know one --- ESPECIALLY when you've had to do any software development in any context in the real-world, support it and have a business function rely on it. I've had SO many developers try to tell me how 'awesome' they are and say "I have two bazillion lines tied into" and I think with enough experience to sniff that out, it's either _that_ complex or it's bullshit. And I think the other thing is the functionality piece. It has to work, work well and not just accomplish more than the bare minimum (from the start).

    Look what most of us do when we have a car issue and don't know shit about being a auto/engine mechanic? We take their word with whatever shit they tell you is wrong as long as we get a working-like-we-had car back in return? That 'progress' could be that it took 5 minutes to get your car fixed and ran with your 10 hours of labor straight out of your checkbook. But if I was any sort of mechanic, I could rightfully call them out, right?

  35. Big teams vs small teams by cloud.pt · · Score: 3, Interesting

    On team development, it's pretty straight forward, although requires 2 agile tools: daily meetings && code reviews. Even if not using full-fledged Scrum, daily meetings (or at the very least, every other day; weekly defeats the purpose) are essential both to enforcing lazy/demotivated coders to code, and to keep everyone "up to speed" on each devs, well, speed (velocity). Some will argue there are devs that can mask it out pretty well on dailies, but in the long run, it's impossible not to notice when a dev is boasting of things he didn't/won't do, and in that moment, he either self-corrects (he also notices when he gets caught), or he needs punitive action (harsh, but true). Code-review is just a natural iteration to what dailies provide - you complement the generalized opinion with his code - if it was made for general scenarios and considers plausible edge cases (as opposed to solving it for a specific edge-case, which is usually the highest indicator of a bad dev) and the quality of the code overall, although this last part is highly subjective and that's why code review needs to rotate around so a collective opinion around each dev is maintained.

    Now, checking stuff like one-man army freelancers, that's a lot harder. There's no other dev to compare, no other dev to supervise. It's like going out for a meal: you can't really look in the kitchen, you get the dish and that's what you can evaluate. Arguably some might have found better tools for assessing small or single-people projects, but it's just hard. The only thing I can say is: as soon as you get 2 devs that don't happen to be biased (e.g. best friends, family), it is much easier to assess each other's value in the project.

    On the article itself I have to say: LOCs are plain stupid. Some devs don't even write a LOC all week, yet they are more valuable than others that write LOCs efficiently, but simply work on less important features. A "build master" (or whatever u call the guy handling build automation these days) can be months without writting a LOC, yet he's no sysadmin: he finds bugs, he points other devs to code-parts of bugs. He gets to find failing test problems, regression issues among others before it even gets to QA. But that's just an example. Who has never solved a critical issue 3 other competent people had checked with a one-liner (or even a "one-character"). Sometimes luck is part of the job, other times yu simply are the guy who had the correct line of thought to approach the thing. LOCs are irrelevant in most "valuable" scenarios these days, especially in app maintenance, which is 80% of the industry cost.

    1. Re:Big teams vs small teams by Frosty+Piss · · Score: 2

      I stopped reading at "agile". Buzz words put me to sleep even with the amount of coffee I've consumed this morning. Fortunately, "power naps" increase the readability and "weight" of my code.

      --
      If you want news from today, you have to come back tomorrow.
    2. Re:Big teams vs small teams by cloud.pt · · Score: 1

      well, it's a buzzword I learned in college. Sorry if I hurt your self-taught, buzz-immune feelings.

  36. Holism by neoshroom · · Score: 1

    The notion of a quantifiable metric for evaluating developers is still attractive though.

    A metric is attractive to those who like metrics. Typically such metrics are desired by managers and other non-technical folks who don’t actually fully understand what the engineers are doing and so desire to rely on a number to evaluate productivity, because they can't easily evaluate it via other methods. However, that actually isn’t a great idea.

    Holism, combined with developers who can both comprehend and communicate what and how engineers are developing is better than metrics.

    Think about this like you were evaluating painters. Will number of brushstrokes work? No. Will number of paintings work? No.

    Will relying on holism rather than metrics work? Yes.

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
  37. Because HR and lawsuits? by Anonymous Coward · · Score: 0

    God help you if you try to get rid of someone who is doing negative work...when it'd be cheaper to pay them to sit at their desk and not touch anything...if they happen to be in some protected class. Been there, done that.

  38. I know by computational+super · · Score: 1

    Without reading through any of the comments, I predict that 90% of them will be "the only good developer is me, everybody else is an idiot".

    --
    Proud neuron in the Slashdot hivemind since 2002.
    1. Re:I know by Rande · · Score: 1

      Similar to "Everyone who drives slower than me is an idiot...and anyone who drives faster than me is a maniac."

  39. How to weed out your best programmers... by DidgetMaster · · Score: 1

    I once worked for a startup and I was very productive. I build two new products from a remote location for the company that resulted in tens of $Millions in new sales. I would work all day from a quiet place all by myself (no meetings, interruptions, etc.). A few years later, the company changed management and they wanted to 'cut the fat' from development. I happened to be working part-time at the time (recovering from burn-out) but was still very productive. It didn't matter at all to those bean counters that they were getting multiple dollars in value from me for every dollar they paid me, and they let me go. Luckily, I had founders stock and made out pretty well when the company sold. Otherwise, I would have been very ticked. I'm sure they used some meaningless statistic to justify getting rid of some really good programmers.

  40. RFC ProgrammersRank (P-Rank) by Elixon · · Score: 1

    I suggest having standardized JAVA-Doc-like syntax where users can rate functions and add virtual likes/dislikes to whatever code they want.

    Because what is better code then a code that does the job (nobody has to fight with it), is readable, understandable, manage-able... simply code that users (other programmers) like to use?

    S why not to have /**
      * ...
      * @rating elixon +1 Some optional comment.
      * ...
      */

    That way one can even identify problem parts in a code that are difficult to work - that slow down other programmers so it can be refactored... :-) I would love it. I would give my @rating thumbs up and down like crazy...

    --
    Well, I've got to get back to work. When I stop rowing, the slave ship just goes in circles.
  41. As a Professional Devevloper by Murdoch5 · · Score: 2

    It's a multi-state, multi-variable issue and depends what kind of development the developer is doing.

    As an example, when I'm doing low ever firmware development, things I would measure as success:
    1. Robustness of solution.
    2. Efficiency of Code.
    3. Preform a LINT / leak scanner and look at that output.
    4. Speed of module / driver / support coding.
    5. How they handle library and portability in their development.
    6. Security and complexity in terms of O and o.

    Web Frontend Development:
    1. How their work scales across different browsers and resolutions.
    2. Engagment, look and feel.
    3. Lines of code to implement certain aspects, less (usually) better.
    4. Framework engagement, for instance using Angular.JS instead of rolling their own.
    5. Knowing / applying stuff like jQuery or knowing not to.
    6. How they implement REST services.

    If I'm doing Server End work, I'll have a completely different set of requirements, same with desktop frontend, backend and etc....

  42. Please explain the point of SCRUM/Kanban... by Anonymous Coward · · Score: 2, Interesting

    I have never understood the point of SCRUM/Kanban, and the 3-4 hour physical "stand up" meetings daily that go as the following:

    Person 1: "I can't do any work, I'm blocked by so-and-so."
    So-and-so: "You never asked me to do 'x'."
    Person 1: "I am still blocked."
    Person 1 then goes to wring his/her hands about stuff, lash out at others how slow things are going.
    Then the PM starts grilling people about stuff, a clueless person questioning the coders about virtually every pull request. "Why does a typo have to be corrected?", "Who cares about this security thing, we need this shipped, not secure.", and so on.

    Person 2 gets up. Same song and dance, with the PM questioning everything.

    Then after the other people have their tales of woe, the PM starts the lecture about something or the other. People come back to defend themselves.

    Meeting then breaks up into a quibble session, with people pointing fingers. As an IT guy, the DBAs are requesting their dogshit-slow multi-TB tables be on all SSD, and no, they are not going to ever make index tables even when the performance tools show the bottlenecks, because they feel it won't help things.

    I wound up taking lunch at 2:00 to 3:00, come back, maybe get 1-2 hours of actual work in, and that's the end of the day. The next day, I try to slide in an hour or so before the next stand-up meeting.

    Thankfully, I quit that place... but can someone explain the business reason for multi-hour daily standup meetings? They do -nothing- for productivity, and every hour I'm in a meeting room is an hour that nothing is getting done.

    1. Re:Please explain the point of SCRUM/Kanban... by Verdatum · · Score: 3, Informative

      Wow. Those guys were doing Scrum completely wrong. A daily standup is intentionally a "standup" because about the time you get tired of standing means the meeting should be long over. A daily standup should be down to about 10 minutes. If it takes longer, your team is either too larger for Scrum, or people are talking about stuff that should be taken offline. So when someone mentions a block, you don't try to fix it or squabble about it, the Scrummaster (yeah, I hate the term) makes a note of it, and you move on. And when the PM tries to fix the problem, it's the scrummaster's job to cut him off immediately. That's why the SM and the PM are two different people.

    2. Re:Please explain the point of SCRUM/Kanban... by nitehawk214 · · Score: 3, Insightful

      I don't think that place would have been functional with any methodology.

      Though I have noticed that teams where the SCRUM master is a project manager they tend to be filled with useless endless meetings.

      When the SCRUM master has a real job like writing code, the meetings are pretty concise.

      I was at a non-methodology place that was like yours. The manager has 20 direct reports, and never talked to anyone except in the occasional weekly meeting. Each person would go on a 5 minute spiel as the manager asked a ton of questions while everyone else sat around twiddling their thumbs. I would make sure to say as little as possible because I knew nobody else in the room gave a shit about what I was working on most of the time.

      The weekly meeting too so long we started having it once every other week, then once a month. Which of course meant each person had more and more to report.

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    3. Re:Please explain the point of SCRUM/Kanban... by UnknownSoldier · · Score: 1

      > and the 3-4 hour physical "stand up" meetings daily

      Holy shit! No wonder you bitch about SCRUMM. You're doing it wrong.

      Standup meetings shoot take between 5 and 10 minutes; 15 minutes MAX. It is supposed to be a "macro" view -- not a deep dive into the micro-issues. Anything else should be taken "offline."

      --
      Slashtard, Redditard, noun, an imbecile who down-votes everything they disagree. When you stop being challenged, you stop learning.

  43. sleeeeep by stooo · · Score: 1

    Yeah, just make sure to shutdown the computer before sleeeeeeeeeeeeeeeeeeee Filter error: Too much repetition.

    --
    aaaaaaa
    1. Re:sleeeeep by Opportunist · · Score: 1

      Shut ... down...?

      I'm sorry, I don't know that word you're talking about.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  44. Complication == justification by Anonymous Coward · · Score: 0

    It does if you want to justify your entirely worthless "management" position, yes. Just as HR requires stupid and pointless hoops to have been jumped, just as interviewers insist "coding problems" are meaningful, etc.

    IOW, most of the structure of the coding side of operations is redundant, pointless, doesn't do what it's supposed to do and to whatever extent it does anything at all, it's almost universally the wrong thing.

    Find a way to be self-employed. Then you have motivation, sane tasking, and a perfectly closed feedback loop on productivity, quality, maintainability, extensibility, modularity, and income.

  45. This by Anonymous Coward · · Score: 0

    So sad I already used up my mod points above. Virtual +1, insightful.

    1. Re:This by gweihir · · Score: 1

      It is the thought that counts. Thanks!

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  46. Metric by DraconPern · · Score: 1

    Feature importance * lines of code / CPU time required to run code = score

  47. Good. Also specialization and heuristics by raymorris · · Score: 3, Interesting

    That's a pretty good answer.

    I'll add a few thoughts. First, this is a very, very hard thing to do. In all likelihood, there is no truly effective way to "measure" the effectiveness of a programmer, we're looking for hints, traits that good programmers often have.

    You may have much less desire to measure anything about the programmer, though, if each person is responsible for a specific area. If one person is responsible for building and the maintaining the UI for product ABC, while another person does the UI for product XYZ, you can answer a simple question. Does the UI for ABC suck? If the UI he built sucks, he might suck at building UIs. Unless of course he told management ahead of time that no, you can't build a good UI under the constraints he was given (time, tooling, etc.) Of course you can do that only if your programmers specialize in particular areas (which also allows them to become more expert in what they are actually doing).

    Other than that, there are heuristics, hints about who might be good. Does the person ask questions about the requirements, making sure to build what users actually need? A lot of really good programmers spend a lot of time to fully understand and document exactly what is needed. A lot of bad programmers run off and build something that doesn't fit the need. (Obviously this fails if you TELL the programmer "your next raise will be based on how many questions you ask).

    Do other programmers come to this person for advice? If so, not only is that a compliment, but by giving good advice he's probably making other programmers more productive.

    Do they enter useful comments in the ticket system, close issues when they complete them, and generally be a responsible adult about following processes? This *can* be misleading, but generally, people who are careful to do a good job are careful to do a good job. Someone who marks issues as "closed" when they are supposed to and completes their annual compliance training in time *might* be someone who validates their inputs when they are supposed to and completes their coding work on time. (Or not, it's just a hint).

    Even if you're not a programmer, you can actually get a slight hint by looking at the code. When you see a Slashdot comment that is a wall of text with no line breaks, no punctuation, and no capital letters, you might suspect that the writer is less conscientious than someone who uses paragraphs, punctuation, etc. This is even more true of code. If you squint so the characters are blurry, good code tends to look like a diagram of itself. Bad code tends to look like a blob. This is hard to express, though it's easy to do. The Linux kernel source is good example of good code (in most cases). Indentation sets of clear logical blocks, etc, so the code resembles a diagram.

    Heck even without opening any code file, you can look at the names and organization of the files the programmer creates. The newbie/bad programmer may have one giant file, called "myprogram". The expert is more likely to have one small file and two or three subdirectories at the top of the project. He might have directories (folders) called "libs/", "logic/", and "ui/". Under libs/ might be two subdirectories, say network/ and db/. That's a great sign because programming well is largely a process of organizing ideas. If a programmer has organized the task into understandable parts, that is a good indicator.

    I could go on, but the point is there are lots of hints you can look at. Like buying a used car, you can't look inside the engine to see what condition it's in, but you can reason that if someone let the tires go completely bald and the interior is covered with coffee stains, it it obviously hasn't been vacummed in the last six years, they may have also skipped an oil change or two.

    1. Re:Good. Also specialization and heuristics by Foresto · · Score: 1

      Most of what you wrote resonates with me, but the bit about organization of files could use some elaboration.

      A single source code file can work well for many small projects, if the code within that file is well-organized. Meanwhile, spreading a project across multiple files and directories can be done to excess, and become an unwieldy nightmare pretty quickly. (Most Java projects I've seen are in the latter category, in no small part because the language encourages it.) A wilderness of files and directories that require automated tools to navigate can be almost as problematic as a big entangled wall of text.

      As with so many things, someone who is good at this stuff will be able to find a good balance.

  48. Not that difficult by mysterious_mark · · Score: 1

    Not that difficult if your developers work off a bug and feature log. The managers should assign bugs and features to the developers, and over time the daily average of bugs successfully closed, or features accepted for a build per day is a pretty good metric. I don't think it is hard if you have good processes and track everything with a bug and feature log.

  49. assign blame for bugs by buddyglass · · Score: 1

    Every time a "serious" defect is found, figure out who is to blame. It will usually be the person who wrote the code, but may not always be that person. For instance, if he or she relied on behavior from someone else's code that was falsely advertised. Or if he was given inadequate requirements. If a particular developer is disproportionately frequently to blame for major problems, then that person probably isn't a good developer. Also take into account total output and "sensitivity" of what someone's working on. A developer who does a lot is going to cause more issues, simply because he's doing more. Likewise, a developer working on "tricky stuff" (e.g. refactoring terrible legacy code) is more likely to cause issues simply because of the sensitive nature of the code he's working with.

    1. Re:assign blame for bugs by Rande · · Score: 1

      Screw that. Everyone will spend 50% of their time making sure none of their bugs can be blamed on them.
      That would be hugely divisive when you want teams to work together.
      Sure there are some dead weights that need to be culled, but every team is going to have a range of experience and different aptitudes.

  50. How do you know a manager is doing a good job? by Anonymous Coward · · Score: 0

    Seems this question is the one that is rarely asked and even more rarely actually defined. If gathering metrics and making blanket decisions about people from them is the measure of a good manager, I'm positive we can write an application to automate them out of a job.

  51. How to measure a great developer by neurojab · · Score: 1

    Honestly I don't think that being a great developer is quantifiable in the sense that you can feed some metrics into an equation and come up with a number. If you do that, even poor developers are smart enough to work the system.

    Here are some signs of a good developer, IMO:

    * Writes code that can be easily understood, even when the task at hand is relatively complex.
    * Removes code on a regular basis. (Net LOC added might even be negative)
    * Asks good questions to clarify requirements.
    * Produces good tests, uses them to validate the code they've written.
    * Makes proper use of libraries instead of "re-inventing the wheel".
    * Makes good review comments on other developer's code that make it cleaner, more testable etc.
    * Documents complex systems so that the next poor sap who owns it won't be completely lost.

    Obviously if you're measuring by LOC added, stop it. That's in direct opposition to most of these principles.

  52. Define what actually matters to you by Sky+Cry · · Score: 1

    Make sure the measurements accurately reflect what you care about. What is code quality for you? Do you care about customers not encountering bugs? (All bugs? Just critical?) Do you care about development speed not being reduced gradually? Do you care about estimates matching actual time spent, so you can plan ahead? If you don't actually care about how many lines of code are committed to the git repository, then obviously don't measure it!

    And if you can't measure something for each team member individually, make the whole team equally accountable for the end result. They will figure it out themselves and tell you who's bringing the team down. Not just that, once they know what you really want, they'll also be able to suggest how to measure it better, or tell you what you can do to let them achieve greater results. (E.g., faster PC, bigger monitor, fewer distractions, no scope changes, better test environment, specific training, etc.)

  53. Good Job? by Anonymous Coward · · Score: 0

    Define job first, then define the parameters of average, above and below average. Then you may get to a point of defining good.

    In the majority of the cases, "good" is a perception by management for management purposes.

  54. Wrong question by bothorsen · · Score: 1

    If you ask this question, then I would say that you shouldn't have a job where it's necessary to know.

    I'm not trying to troll you, but this is important to understand.

    I'm a developer as well as a business owner. I understand that it would be fantastic if we could have a meaningful set of KPIs on developers. But they do not exist. Sure, you can create them, but they will be wrong.

    For example, bugs. My best developers also create the most amount of bugs. Because I naturally assign them to the hardest part of the application and they usually write the largest number of new lines of code.

    I'll also say that any talented software manager I have met, have not needed a set of metrics on the developers in the teams. They know who is good and who is bad.

  55. Agreed, though even small projects grow by raymorris · · Score: 1

    Certainly one can create a large and unintuitive, meaningless jumble of folders. If just the *names* of the folders aren't meaningful to other programmers, that's a bad sign - even before you know what's in the folders.

    That said, smaller projects have an amazing tendency to grow larger. Programming projects very rarely get smaller (unless a genius points out that rather than writing a new system, you can just transform the inputs and feed the data to an existing system*). Because projects tend to get much bigger over time, I much prefer more organization than less. You'll be very glad for the organized structure as your 1,000-line program evolves into a 100,000-line system.

    While most projects grow, not shrink, I'm thinking specifically of some projects I worked on which ended up being literally 1000X larger than originally planned.

    For the same reason, I prefer a slightly more powerful programming language over a slightly simpler one - a shell script may work for *todays* needs, but next month we'll have to rewrite it in Perl or Python to handle some new requirement cleanly, or else end up with a giant, unmaintainable, fragile shell script. Similarly, a very small shop should start using version control *now*, not *after* they become a big business and much of the history of the code has already been lost.

    1. Re:Agreed, though even small projects grow by Foresto · · Score: 1

      "I much prefer more organization than less."

      I, too, like organized code. I'm just pointing out that dividing code into separate files is not the same thing as organizing it. I can organize code clearly and cleanly inside of a single file, while code split into multiple files/directories can be even harder to understand and navigate than it was in a single file. It depends more on the code structure than the file structure.

      Of course, I also understand that you and I have had different experiences, most likely demonstrating different kinds of awful. :)

  56. Forgot the footnote by raymorris · · Score: 1

    I said:

    Programming projects very rarely get smaller (unless a genius points out that rather than writing a new system, you can just transform the inputs and feed the data to an existing system*).

    I forgot to expand that asterisk in a footnote. When you're planning an eight-week project and one developer says "no need for all that, I can do it in two days by just running Foo on it, then sending it to the existing Bar tool", that person is either a genius who will save you lots of time and money, or a complete hack suggesting duct tape and baling wire, the "easy way" that will come back to haunt you. Figure out which. That person should probably be either promoted or fired, depending on whether their "simpler ways" are actually correct and robust or not.

    1. Re:Forgot the footnote by Anonymous Coward · · Score: 1

      If it's for a one-off application, duct tape and baling wire is perfectly acceptable, as long as it actually works. Even if it's not for a one-off application, the immediate solution might be a good idea anyway, if it allows other things to move ahead while the permanent solution is developed. Finally, a potential simpler way might turn out to not work in practice, but that doesn't necessarily mean that the person who came up with the idea is a dangerous idiot, just that they were wrong in this case.

  57. Umm, peer review? by Jason+Hildebrand · · Score: 1

    A developer's peers will generally know whether they provide good value or not. When preparing to do a performance review of a developer, ask for feedback about that developer from other developers on the team (and other co-workers they interact with on other teams).

    Reply to This

  58. You can always blame the implementation. by Anonymous Coward · · Score: 0

    You can always blame the implementation.

    The classic apologist response is 'you're doing it wrong'.

  59. By Looking at their Design by Anonymous Coward · · Score: 0

    If a developer is not designing and desk checking a design first before starting to code then they're not doing a good job, even if they believe they're skillful enough not to do so.

  60. "Managers" by Anonymous Coward · · Score: 0

    The answer to, "How do you know a developer is doing a good job?", is this mysterious creature called a "manager".

    If the "managers" are themselves doing a good job, that is.

    I think the mania for non-subjective metrics is unhelpful. I could blow smoke up your skirt about function points, adherence to standards, defect rates and all that. The truth is, no one yet has developed really solid, non-gameable, objective metrics for programmer productivity, assessment of skills, maintainability of work product, quality of documentation, code maturity, acceptable performance, and all the rest.

    I am a developer and I view my work like authoring essays or books. No one is really going to know the quality of my stuff unless they read it. Now turn the problem on it's head. Imagine an objective set of metrics for Dostoyevsky, or Shakespeare, or Atwood. Sure, you could come up with some if you had to, but are they useful substitutes for reading the work? No, not even close.

    That's the problem right there. It often feels to me like companies these days, they don't trust their own managers. They keep trying to find metrics, or algorithms, or simple objective tests, to substitute for the qualities a good manager used to have. "Why, the trend line in Google Analytics for Production Unit 83592 is going below the KPI threshold! Call HR!"

    Or how about just talking to Frank, who is Production Un-er, Sally's manager. He'll tell you. "Yes, Sally had a late night out with friends last night and she's suffering the consequences. Leave her alone, she'll be fine by tomorrow."

  61. I totally agree by SuperKendall · · Score: 1

    Sometimes the most productive and useful people are not the ones meeting arbitrary deadlines for ill-defend output.

    I would summarize this as - are people giving you what you need instead of what you asked for. That is a good programmer.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  62. Starts at the top. by pjv936 · · Score: 0

    Is the head of the IT interested in getting things done? And that goes down the line. Fish rot from the head.

  63. THere is none by AuMatar · · Score: 1

    Any "measurable" metric can be and will be gamed. Its a waste of time, and counterproductive. Stop trying to find a magic number, it doesn't exist. Instead look at relative levels of respect by their coworkers, and whether they get what they say they will done (what they say, not what they're told to do).

    --
    I still have more fans than freaks. WTF is wrong with you people?
  64. Features, bugs, and schedule by Anonymous Coward · · Score: 0

    Measure the developer based upon the number of features that are delivered. Measure the bugs of bugs. Take too long to meet schedules then fire them

  65. Peer reviews by Anonymous Coward · · Score: 0

    Peer reviews. Rotate who works with each other and have everyone review each other.

    The idiot programmers cause more work for all the other guys, so their review ratings will be lower. At least that's the theory.

    The first-level manager should be knowledgeable enough about the development being performed to know good and bad code.

    Looking for "productive" programmers is a red herring. Just because someone writes 20K SLOCs of crap code, doesn't mean that same functionality couldn't be done by using a well-tested library and 200 SLOCs of custom code.

    Another answer is to let the QA department provide the answer. Every feature or bug goes into the code under a specific CM number. The QA team tests under that same number and reports bugs. Bugs per developer shows how much time a dev wastes for other people - effectively double or triple whatever is really needed. I've worked places where the devs basically added zero bugs (I'm serious) and I've worked places where 2 devs out of a team of 10 added 80% of the bugs. 1 guy would introduce 2 bugs when he was working on another bug to be closed that he introduced. Seems he had a need to check the "complete" box when it wasn't.

    The real goal should be to get the most bug free software in the least lines of code that other developers can maintain long term. So - with those 3 criteria, how do you reward devs that accomplish that and have those who cannot choose to leave? Peer pressure. It actually works really well, provided anyone on the team really wants to do a good job.

  66. Do you need metrics to evaluate? by manu0601 · · Score: 1

    Each time you introduce metrics to evaluate people, that will distract them from their job in order to improve the metrics.

    In other words, you ruin your business by trying to measure how people work. The alternative is to trust employees for doing their job correctly, and to know well enough what they are doing so that you can identify what is wrong when there is a real problem. Of course that requires experience/

  67. As one of those crazy talented developers.... by Anonymous Coward · · Score: 0

    As one of those crazy talented developers I'd say that you must be careful with any generalized metrics. Sometimes people forget that no matter what happens it only takes one correct answer to steer a room full of 30 people the right direction.

    I've found incredible things that entire teams have done in my absence... then I return and find that I can deliver the final result of what that team of 30 people just spent the last week working on without doing all that work. That is my value..... and yes I expect to be compensated more than those 30 people.

    To generalize it's similar to watching a whole group of people wander around in a dark room trying to find something..... the senior developer sees this and from experience knows where a hidden light switch is immediately saving everyone from hours of pain. No amount of extra head count speeds up the solution but a single highly skilled headcount is all that's required.

    Knowing this a person like myself also doesn't expect to work as hard as everyone else at grunt work.... I'll come in late and leave early because I know in my mind no other soul in the building can chew through a problem as fast or accurately as myself and you will all be begging next time my services are needed.

    As you try to "have your cake and eat it too" by telling me that my advanced skill is no excuse for a bad work ethic, I'll promptly move to helping your competitor and help them otherwise quit both jobs and contract out my services as an LLC. I.E. you won't win I am more powerful and you must appease me and let me do what I want or you won't get the advanced skills I obtained specifically to not be a regular worker bee.

    -Signed, a developer who earned over $250,000 last year in a non-big city.

  68. Re:Deadlines ... and QC by fygment · · Score: 1

    meets the deadline with code that meets specs and QC. Anything else is fluff.

    --
    "Consensus" in science is _always_ a political construct.
  69. You know by looking at the code by PJ6 · · Score: 1

    and being an good, experienced developer.

    This is one of the great diseases of the industry - non-technical management, making technical evaluations and decisions.

    If you have to ask, just stop. Stop right now and get someone competent to do it for you.