Slashdot Mirror


Are Code Reviews Worth It?

JamaicaBay writes "I'm a development manager, and the other day my boss and I got into an argument over whether it's worth doing code reviews. In my shop we've done both code reviews and design reviews. They are all programmer-led. What we've found is that code reviews take forever and tend to reveal less than good UI-level testing would. The payback on design reviews, meanwhile, is tremendous. Our code is intended for desktop, non-critical use, so I asked my boss to consider whether it was worth spending so much time on examining built code, given our experience not getting much out of it. I'm wondering whether the Slashdot crowd's experience has been similar."

85 of 345 comments (clear)

  1. Synergy, leverage, low hanging fruit, etc.. by Anrego · · Score: 5, Informative

    Having worked on life critical type systems where every line of code was reviewed before making it into the product, I have to say that I've seen them add a lot of value when done properly.

    They also cost a lot.

    The first question I would ask in your situation is: are you doing them right?

    Do bugs get discovered later after deployment? Are the bugs in areas of the code that were supposedly reviewed? If so, you might be doing it wrong.

    And as much as we _hate_ the word... I have to say it...

    METRICS!

    If you truly want to make a decision on whether code reviews are worth it.. you need to know:
    - how much does it cost to conduct the reviews
    - how many defects are discovered in the review versus how many make it out the door (in other words, how good are you at it)
    - how how much more does it cost you when a bug gets discovered after deployment? In a life critical system, it costs a fucktonne.. in a desktop app.. it may not be that bad.

    Once you know these, the picture should be clear

    1. Re:Synergy, leverage, low hanging fruit, etc.. by Tx · · Score: 4, Funny

      If you truly want to make a decision on whether code reviews are worth it.. you need to know[...]

      So what you're saying is we have to have a review of the reviews...we're going to be here a while aren't we?

      --
      Oh no... it's the future.
    2. Re:Synergy, leverage, low hanging fruit, etc.. by Anrego · · Score: 2, Insightful

      Oh calm down..

      it's a pretty easy thing to track.. most shops already have a bug tracking system.. you just need to add in a way to track how much stuff gets discovered in code reviews.. then have some intern hack out a spreadsheet in leu of getting valuable job experience.

    3. Re:Synergy, leverage, low hanging fruit, etc.. by Skuld-Chan · · Score: 2, Informative

      Sadly every security vulnerability on the products I've worked on were found after shipping in code that was reviewed (and not only that - sometimes very obvious bugs - like treating strings as fixed values, and not checking or sanitizing inputs).

      So I guess they either have to be done right, or they aren't all that useful.

    4. Re:Synergy, leverage, low hanging fruit, etc.. by piojo · · Score: 4, Interesting

      how many defects are discovered in the review versus how many make it out the door?

      I don't think defects are the only metric. Code reviews can result in a cleaner codebase that's easier to understand. Everyone occasionally writes bad code. A reviewer might say, "I see that it works, but I don't like it..." and mention an alternative solution. A reviewer might suggest that something is non-obvious and that a comment is warranted. Code reviews aren't just for bugs, they are to get better code.

      --
      A cat can't teach a dog to bark.
    5. Re:Synergy, leverage, low hanging fruit, etc.. by Bill,+Shooter+of+Bul · · Score: 4, Insightful

      Exactly. Its also a great way to mentor newer developers and teach them the tricks of the trade. There is always more than one way to do something, but often they vary greatly in their performance and readability.

      --
      Well.. maybe. Or Maybe not. But Definitely not sort of.
    6. Re:Synergy, leverage, low hanging fruit, etc.. by MrMista_B · · Score: 2, Funny

      Well, in that case, we should do a thorougly review of the reviews of the reviewed review reviews.

      BUFFER OVERRIDE

    7. Re:Synergy, leverage, low hanging fruit, etc.. by cetialphav · · Score: 2, Insightful

      you need to know:
      - how much does it cost to conduct the reviews
      - how many defects are discovered in the review versus how many make it out the door (in other words, how good are you at it)
      - how how much more does it cost you when a bug gets discovered after deployment?

      The great thing is that none of these metrics are that hard to collect. You should already know the cost of production bugs because that is just a basic component of your business.

      To collect the cost to conduct reviews, you just need to ask everyone who does a review how long it took them. You can store this on paper or in a simple little database. Reviewers just need to remember to look at the clock when they do the review. Some computerized review systems can collect this for you automatically.

      To track the defects, you just need to track when someone says "You need to change this because ...". Assigning someone as a secretary in a meeting works well (assuming you have a meeting). Or you can just collect this in the emails or other online system that you use. The harder thing is to estimate the value of these found defects, but it isn't too hard to come up with some simple heuristics that serve as a reasonable approximation.

      Clearly, many organizations collect this in a way that is painful and intrusive and that gives these metrics a bad name. But it doesn't have to be that way. I have seen this done in simple ways that flow easily with the rest of the development process. Having this information is extremely powerful because without it everyone is just guessing and you become subject to the hunches of middle management because their guesses have more weight since they are the boss.

    8. Re:Synergy, leverage, low hanging fruit, etc.. by hplus · · Score: 3, Funny

      Wait, so you are reviewing somebody else's review of the comment talking about reviewing reviews?

    9. Re:Synergy, leverage, low hanging fruit, etc.. by Unoti · · Score: 5, Insightful

      So what you're saying is we have to have a review of the reviews...

      Actually, it's reasonable to periodically review and improve and streamline all of your processes. Any part of the process that takes time or money should be justified by an improvement in the metrics after adding that part of the process. if the metrics don't improve after adding that part, then that part should be removed from the process. This can help lead to less busywork and less paperwork, rather than more, as it sounds at first blush.

    10. Re:Synergy, leverage, low hanging fruit, etc.. by DMeans · · Score: 2, Insightful

      I work for a very large software company, on a mission critical module used by very many companies. - How much do reviews cost? We don't care. - How many defects are found? Sometimes none. - How much does it cost when a bug exists? What you said. Code reviews are mission critical to my team. Software doesn't ship without them. Sometimes the code review finds the bug, sometimes it doesn't. But in the end, we have the check-box marked and it saves our bacon.

    11. Re:Synergy, leverage, low hanging fruit, etc.. by Carewolf · · Score: 2, Insightful

      Well, code reviews are boring to do, but has to be done be the best and most experienced developers usually the senior or lead developer. Some places doesn't understand that and just delegates this menial task to lower developers, or a team of inexperienced developers. Other places the top developer assigned the task, just skips through the code, because he thinks he has "better things to do".

  2. Yes! by Omnifarious · · Score: 5, Interesting

    Code reviews have a lot of value in two ways completely independent of how good they are at catching errors. First, they are a way to enforce various stylistic guidelines on code that make future maintenance much easier. Secondly, they are a tool for spreading knowledge about the code around to other members of your development team.

    They can also catch some errors that are very hard to catch in any other way. I recently worked on a project in which I found an error that would've caused code to only fail in a very limited and non-obvious set of circumstances. The thing is, somebody would've almost inevitably encountered those circumstances and the phantom and nearly unrepeatable bug reports resulting from this would likely have never been solved.

    I fear code ever stepping off into the land of incorrect behavior as there are few corrective mechanisms that will cajole the errant program back into doing something sane. The longer it goes without abject failure, the more weirdly wrong it will be. Therefore I think any and all measures to keep it from ever going there and making sure it dies as quickly as possible if it does are useful.

    1. Re:Yes! by Gorgeous+Si · · Score: 2, Interesting

      Where I work, we have code reviews before checking in non-trivial changes. We don't have design reviews though, which I think are more worthwhile. If a problem is found pre-checkin, then it's usually too late to go back and re-code the work - meaning that these issues are recorded by the coder and should be looked at again when possible; however, with the constant deadlines we work to, there often isn't time to go back and make the improvements. I think design reviews are worthwhile for verifying the work that's going to take place, and a code review should be used to see if it matches the design (and find out the reasons if not), as well as making sure that the checkin isn't going to screw up the build (check for warnings, files missing from changelist etc).

    2. Re:Yes! by ers81239 · · Score: 2, Interesting

      I just want to highlight your second point. I believe that THE most important thing gained from code reviews is the spreading knowledge and gaining understanding. New development is always great, but most programming is maintaining/fixing/improving existing projects. A code review is a great way to really learn about code readability. You actually get to see other people read your code and you get to read other people's code. All of this code is fresh in someone's mind so it can be explained, and how to make it more readable can be discussed. I learned a ton about writing maintainable code at my first job where we did regular code reviews.

      On the more technical side, often once the code is discussed much simpler ways to solve the problem is discovered. It isn't about the individual bug fixes/improvements that can come from a code review. Its really a way to improve your programmers.

      --
      there are 2 kinds of people. those who divide people into 2 kinds, and those who don't.
    3. Re:yes! by GeckoAddict · · Score: 2, Insightful

      Your last part I think is one of the most important. Making sure at least two Full-time employees (not contractors, not interns) know the code is extremely important in making sure that someone can answer questions should one leave/be out sick/etc. You also ensure that any assumptions you made about other parts of the system or other libraries are indeed correct, and you ensure code is using best practices for both performance and language standards. The key to code reviews is making sure it's a quick iterative diff of a few files, and not a room full of engineers looking at 50 files on an overhead projector. Our workplace recently instituted a new policy of 'every task/commit must have a code review' (it's actually a property of the task in our code management tool so it's easy to query), and it's helped us catch a lot of bugs before test ever sees it. A 5 minute fix from a code review is a lot better than finding it in test: spending 2 hours trying to dig through the logs to find the bad code, fixing it, and rebuilding everything so test can continue. Not to mention the code is a lot cleaner and a lot more optimized with a few people looking at it.

  3. In a word, yes by iamdjsamba · · Score: 3, Insightful

    Where I work we have code reviews at various degrees. I find someone else just reading over my code and emailing suggestions helps tons; It spots obvious errors, ways code could be done better, and just a ton of other things. It helps improves my own coding style too.

    --
    http://studentseeksnoodles.blogspot.com: General thoughts of an
  4. When done right by El_Muerte_TDS · · Score: 4, Informative

    Code Reviews are useful when they are done right. But before you start using code reviews you should introduce automated static analysis of the code during the builds. A lot of crap can be discovered by static analysis. This saves you a lot of effort on the tedious parts of code reviews.

  5. If you're code review is taking forever... by ciroknight · · Score: 4, Insightful

    then you're doing it wrong. Plain and simple.

    Code reviews shouldn't be a "full stop, let's go over this" event. Code review should be a part of the every day workings of the development team. Nothing should go into version control's master/trunk/HEAD until it has been reviewed.

    Sometimes you'll find that stopping to review a single module is helpful, but most of the time it's actively harmful to the team, since it takes developer's concentration off of what they're currently working on to review things that they half-don't-remember, which then makes the code review take forever.

    Review and document inline with your coding, and you'll find you'll never need a "Full Stop" review.

    --
    "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
    1. Re:If you're code review is taking forever... by pankkake · · Score: 2, Funny

      Grammar Nazi to the rescue: If your code review

      --
      Kill all hipsters.
    2. Re:If you're code review is taking forever... by SixAndFiftyThree · · Score: 2, Insightful

      If I'm code review is taking forever, it's because I haven't documented I'm code. So in a culture of constant code reviews, I remember to document. Adding comments no longer wastes time; it *saves* time in the pretty near future. I also write fewer lazy hacks than I used to, because of the fear of having to explain them. And my code gets better for other reasons mentioned on this thread.

      The OP didn't explicitly say that they were reviewing code months after it had been written, but no, archaeology and programming don't mix any too well. OTOH in a company where Hitting The Release Date is all-important, there is certainly a temptation to postpone until after that Date everything that can possibly be postponed, and pointy-haired types do think code review (and documentation) can be postponed.

      What would you say to a teenage boy who thought putting on the condom could be postponed until after the ... release?

    3. Re:If you're code review is taking forever... by ciroknight · · Score: 2, Funny

      Nobody was talking to you, Skynet.

      --
      "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
    4. Re:If you're code review is taking forever... by ciroknight · · Score: 4, Insightful

      Small projects in the stage of trying things is roughly the definition of drafting a design.

      And quite frankly, if you don't draft the design correctly from the beginning, it can cause huge problems later. Some projects can skip this step and do iterative design (most open source projects, software libraries, e.g.), but commercial products typically don't have the luxury of having a product delayed by a huge amount because someone's design was wrong and it is now a burden to remove and replace.

      Not stopping to design for the future early on is the reason Xorg is a complete and absolute clusterfuck today, for example.

      --
      "Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is." G.W.Bush
  6. They sometimes find really difficult problems by Anonymous Coward · · Score: 3, Interesting

    When we did code reviews at DEC, they were done with several people generally familiar with the code, required considerable advance prep by the reviewers, and went over code basically line by line. This was not done for all code; nobody had time or resources. However, when a piece of code was doing something weird, it was a pretty effective way to figure out what might be wrong, where the programmer had been having trouble finding a problem. The one area where it tended not to work well was where the software was a driver that talked to some piece of hardware, and the programmer was the only one who really knew what the hardware was doing. The fact that the reviewers didn't know that hardware made finding bugs most difficult...

  7. U R DOIN IT WRONG :) by RealTime · · Score: 5, Insightful

    What we've found is that code reviews take forever...

    Ugh. Are you reviewing each individual commit (where code reviews are quick and very effective), or are you rounding up a bunch of developers in a conference room and reviewing an entire module using an overhead projector?

    Peer-to-peer reviews of individual diffs using good workflow tools have been very effective at several places I have worked and in open-source projects to which I have committed.

    Some of the fastest team development velocity I have experienced has been with peer code reviews within the team.

    A good style guide also helps...

    --

    Yesterday it worked; today it is not working; Windows is like that...

  8. Line them up by Anonymous Coward · · Score: 5, Funny

    Have each developer line up with his/her/its code printed out on a cue card board and stand in a line up. Execute the least likely to make it to the compiler, then you will "motivate" the rest to write better code..

  9. Re:Are they worth it? by Timothy+Brownawell · · Score: 4, Informative

    http://en.wikipedia.org/wiki/Code_review

    There are apparently a couple different kings of things that are both called "code reviews", which one are you talking about? There's also the issue that they're supposedly (as in, according to actual studies) pretty good, so maybe you could do them slightly differently and get much better (more in line with the study results) effects.

    More details on what your version of a "code review" and a "design review" are would probably get better answers...

  10. Depends on what you're looking for by ipoverscsi · · Score: 4, Interesting

    Design reviews are useful to catch problems early on, particularly the selection of poor algorithms or data structures. However, in the the software shops I've worked nobody does any documentation, which makes it particularly difficult to do a design review. So, as you can imagine, I haven't got much experience with this area.

    Code reviews, on the other hand, are more about auditing code to make sure that people are following the coding standards and policies. After all, if you've got coding standards, how are you supposed to tell if anybody is following them without reviewing the code? Once your coding standards have been institutionalized -- that is, most people have internalized them and following them -- then what's the point of a code review?

    So your best bet, then, is to reserve code reviews for junior developers until the coding standards are internalized; and use design reviews for the architects.

  11. Yes, yes, and then some by QuoteMstr · · Score: 5, Informative

    Even the best programmers make mistakes. Having another set of eyes is invaluable for detecting bugs before they become problems. Having to explain in words the rationale for a design decision often helps you better understand your own design, and to see potential problems with it. Sometimes you come up with something better on the spot. Also, if you get hit by a bus, your fellow programmers can take over without having to reverse-engineer your thoughts. Please, more code reviews.

    1. Re:Yes, yes, and then some by readin · · Score: 2, Insightful

      Also, if you get hit by a bus, your fellow programmers can take over without having to reverse-engineer your thoughts.

      But if I get hit by a bus, I won't care whether my fellow programmers can take over without having to reverse-engineer my thoughts.

      --
      I often don't like the choices people make, but I like the fact that people make choices. That's why I'm a conservative.
    2. Re:Yes, yes, and then some by paazin · · Score: 4, Insightful

      But if I get hit by a bus, I won't care whether my fellow programmers can take over without having to reverse-engineer my thoughts.

      But the company that gives you that paycheck does, and that's all that really matters. :)

  12. Depends... by cdrguru · · Score: 4, Insightful

    As someone else noted, badly-run code reviews aren't worth much, if anything.

    There was a lot written about code reviewing in the late 80's and early 90's that makes sense. If a review is conducted as a lesson in coding to others, nobody is going to get much out of it. If it is done as a last-ditch design review, that probably isn't going to work out well either.

    If the staff is all people with lots of experience, it may not be that valuable. Alternatively, I see it as an extremely powerful tool for a staff that works mostly independently to come back together periodically and make sure everyone is on the same page. Especially when some team members have less experience.

    Trying to bog it down with formality is pointless. But the early guidelines about "egoless" are right on target.

    1. Re:Depends... by Cyrano+de+Maniac · · Score: 2, Insightful

      I pretty much agree with the parent.

      When I was fairly new to my company code reviews were reasonably helpful, as I was certainly not an expert in the areas I was fixing bugs, and there was a lot of undocumented knowledge of how various components interacted with eachother. As time went on and I became more proficient in these areas, code reviews began to be less useful.

      I then moved on to taking primary responsibility for an important system library whose original developer left years earlier, and the current maintainer had been layed off. A year into that effort I was effectively the only person in the company who understood how the library worked, and as such was the sole expert on it. Code reviews for checkins were still mandatory, but about the only thing any other reviewer would ever find were minor stylistic issues -- the real bugs went undetected because the expertise required to detect them just wasn't reasonable to expect of anyone else.

      Today I find myself working on deep close-to-the-metal code. Due to economic conditions it's just not feasible to have any overlap between engineers in the areas they're deeply familiar with (yes, that's a management issue -- city bus syndrome is a very real risk). For all but the smallest changes, others cannot fully understand the implications of my changes when they review my code, and I cannot understand the implications of the changes when I review their code. We still keep at it, but the effort rarely catches real problems.

      Alongside those issues, I have been with this company for more than ten years, yet in my particular group I'm the youngest person with the least experience. With such a mature and historied team, significant mistakes are exceedingly rare, and even minor mistakes are uncommon. The most common thing we catch is someone forgetting to update the current copyright date in a file's comment block.

      For the stated reasons, I currently view code reviews as generally just an extra hoop to jump through in the checkin process. If I should ever change jobs, I'm sure I'd once again appreciate having more experienced developers double-checking my efforts.

      --
      Cyrano de Maniac
  13. They are worth it by Stevecrox · · Score: 4, Insightful

    Where I work we do code reviews and they are definitly worth the time. 60% of the time the review doesn't flag anything. But by having anouther coder look at the code you can find those points when a comment would be very usefull, where an algorythm might break down to simple typo's , complexity issues and general readability

    Code reviews are as much about code maintainability and ensuring the code follows standards then finding bugs.

    1. Re:they are worth it by cetialphav · · Score: 5, Insightful

      If you are shipping bugs your problem is testing, not code reviews.

      No, no, no. If you are shipping bugs the problem is that the bugs are introduced in the first place. Blaming testing is not getting at the root cause of the problem. You cannot test quality into a product. I've worked on products where tons of bugs were shipped and people wanted to blame the test group, but the fact is that the test group wrote tons of bug reports that no one had time to look at much less fix. Pretty much every bug report that came from the field had already been found internally. When testing started, the product was already so crappy that a few bug fixes just were not enough.

      As a CS person, I view the Software Engineering research discipline with quite a bit of skepticism. But one thing that the research is pretty clear on is that code reviews do work. If the submitter is not seeing that, then he is either on the verge of a major research breakthrough that invalidates decades of SE research or he is doing them wrong.

    2. Re:they are worth it by Matheus · · Score: 5, Insightful

      I'll add a few more.. no, no, no, no, no...

      Your argument is valid but does not actually counter the original statement. The testing team apparently did their job and found the bugs in the system. Yes, it would be nice if the original coders hadn't done such a great job of creating these bugs BUT this is not the problem (and in reality tends to not be feasible at least in total.. you can minimize bugs but rarely if ever eliminate their creation)

      The problem is that the testing wasn't utilized! If the sole job of a testing team is to submit bug reports that can be ignored then why have your testing team? Save the money and just ship the first raw release. This product should have never made it out the door until those bug reports were resolved in some fashion (even if that "resolution" is marking the bug as "release acceptable, fixed in next version/patch"). In this case I would say it is the release team OR probably the management's fault that these bugs made it to the consumer. They paid a lot of money on a testing team and then ignored their feedback and cost themselves even more in customer dissatisfaction and support calls for bugs *they already knew about*.

      Wasteful.

    3. Re:they are worth it by cetialphav · · Score: 2, Insightful

      What I am saying is that you cannot just throw some sloppy code together and expect to fix everything up in the test process. When you try to do that, you get an endless mountain of bugs. Since the code is so bad, each bug fix just causes additional bugs because new test cases get opened up (or because of unexpected code interactions). When you plan on 2-3 months of testing and it is 8 months later with no end in sight, you start to understand why people just hold their nose and release to customers.

      If you want a quality product delivered on time, you have to start by constructing the code with quality in mind and code reviews are an important part of that.

    4. Re:they are worth it by Dragonslicer · · Score: 2, Funny

      No, no, no. If you are shipping bugs the problem is that the bugs are introduced in the first place.

      Can I come live in your fantasy world where programmers write perfect code every time?

    5. Re:they are worth it by Tanktalus · · Score: 2, Interesting

      Just because it's fantasy (and it is) doesn't mean that's not the best/cheapest way to quality. The cost of fixing something in QA vs the original development is significant. Depending on who you believe (which study), it can be 2-10 times the cost. We'll be pessimistic(ish) and say 3x. That's basically enough to pay for pair programming, actually, which probably would be as cost-effective at producing quality as having the QA team. A bit of usability testing is about all that's left that developers are no good at (you've spent months focused on the problem, of COURSE it looks intuitive to you!).

      Not that we do this at $work, of course. That's crazy talk.

      /me sighs

    6. Re:they are worth it by cetialphav · · Score: 3, Insightful

      Why do you think I live in a fantasy world? I'm just talking about the root of the problem. The root of the problem is that writing software is hard and programmers are human and make mistakes and those mistakes result in bugs. If you can reduce the rate at which bugs are introduced, you gain a huge increase in quality and a huge reduction of cost because fixing bugs after they are introduced is very expensive.

      It is a fact that there are known practices that result in better code in the first place and code reviews are one of them. It is also a fact that many companies do not use these practices and hope that the testing team can pick up the slack.

      So the management question is where to spend resources to improve quality and meet deadlines. Do you just add more and more testers so you can find the bugs faster and faster? Do you throw more coders at the problem so you can get the crappy code to the testers earlier? Do you adopt some of the practices that are known to work like reviewing code even though it means some of your coders will have to spend their time not actually writing code?

      Since most companies continue to do stupid things that don't work, you tell me who lives in a fantasy world.

    7. Re:they are worth it by murdocj · · Score: 2, Interesting

      I don't disagree at all. But my experience is that pretty much everything depends on the attitude of the overall organization. I worked at a company where we developed individually, with some consulting back and forth. We'd pull people in to try to diagnose problems, but generally not what you would call pair programming or code reviews. The product was solid... not 100% bug free, but certainly a quality product that was enhanced over many years. That was the result of an organizational attitude that we were going to ship a quality product.

      Eventually we got bought out by a "we are hot java programmers, unit testing rah rah rah" company, and they shipped utter crap. They always had the attitude that "hey it has to ship, we'll just stay up late and jam all nite and ship the disk, and by the time they load the disk, we'll have a fix version". I was actually on a call where people were laughing about how the contract said we had to ship a disk by a particular date, but didn't say it had to work. No technique on the planet could have saved their product.

  14. PCI-DSS Code Reviews by Anonymous Coward · · Score: 3, Interesting

    Part of the PCI-DSS (Payment Card Industry Data Security Standards) security requirements is to conduct quarterly code reviews of applications that process credit card data, or put an application firewall on your network to monitor these applications.

    Like most companies, we spent about 10 minutes working out how much time our developers would have to spend on this per quarter - and then we decided to drop $30K on the firewall.

  15. yes! by piojo · · Score: 5, Insightful

    Well, my last workplace had code reviews for everything, and I found them tremendously helpful. They accomplish a few things:

    • catch basic errors (second set of eyes)
    • get new people up to speed (e.g., a more experienced dev says "actually, we have a library that would help here..."). Also, reviews can help an inexperienced engineer become a better developer.
    • keep employees abreast of new development (at least two people know about every commit in detail)

    Furthermore, if I edit code that was written by (or is owned by) Bill, I'll ask him to review it so he'll know about the new feature I added (which is good, if he ends up having to support it).

    --
    A cat can't teach a dog to bark.
  16. Re:Are they worth it? by Anonymous Coward · · Score: 3, Interesting

    I did a code review once at a previous job. It consisted of a bunch of people saying it looked good and one person giving wrong advice. I later found a bug in the code that everyone had missed. One person did comment afterwards that he learned a new trick reading my code.

    I think a code review at hire time, as part of the interview process, might be good... hell mandatory. I certainly wouldn't have hired the other developers in my group given the quality of code they produce (they were hired before me by someone who wasn't particularly competent himself)

  17. Coding standards by readin · · Score: 4, Insightful
    The value of the code review depends on several factors, the most important being the coding standard against which the code is being reviewed. If the coding standard has a lot of hard and fast rules about what goes into the comment block, where variables should be declared, whether brackets go at the end of a line or on their own line, and how many returns a method can have, then the code review will be mostly about religious issues and petty formatting. On the other hand, a coding standard with many "should"s instead of "shall"s that allow the developer, combined with reviewers and especially review moderators who know what is important can what isn't, can make code reviews very useful, especially early in a project and especially with junior developers.

    A code review is unlikely to uncover many errors. Most code is just too complex for another developer to spot errors. Unit testing is much better at that. What a code review can do is
    • 1. Coach new developers by helping them learn and/or remember best practices: "Please use "literal".equals(variable) rather than variable.equals("literal"), just in case the variable is null."
    • 2. Remind people to follow the important standards, or recognize that you're missing important standards and need to set one: If your DAO "find" method doesn't find the expected record, do you return null or do you throw an exception? Both have strengths, but everyone on the projct should be doing it the same way. Code reviews will help uncover discrepancies.
    • 3. Uncover future maintenance issues. The code may be too complex for reviewers to find bugs during the review, but they should at least be able to follow what the code is doing. If they can't, the code either needs restructuring or better commenting.
    --
    I often don't like the choices people make, but I like the fact that people make choices. That's why I'm a conservative.
  18. they are worth it by acidrain · · Score: 5, Insightful

    no

    You often *have* to review a entry level programmer's work until it reaches an acceptable quality. I consider code reviews as a method of improving the programmer more so than the code. One an engineer is producing generally acceptable code it becomes safe enough to treat their code as a black box and wait for problems to be unearthed by testing. If you are shipping bugs your problem is testing, not code reviews. Finally, the cheapest way to do code reviews is for a manager to just scan submitted code from time to time and send out polite emails if they see something amiss. On the other hand getting five senior guys in a room to discuss the work of another senior engineer is a just going to result in unproductive, cranky engineers.

    --
    -- http://thegirlorthecar.com funny dating game for guys
  19. Re:If you did test-driven development by hedwards · · Score: 2, Insightful

    Stupid question, but doesn't that miss things which are technically OK, but likely to lead to problems down the road? Things like poor naming conventions, improperly formatted or under documented code.

  20. Delusions of grandeur by Anonymous Coward · · Score: 5, Insightful

    My working life has been spent in projects developed by individuals or small teams (less than six programmers). I would describe my working environments as "CMM level 1 and damn proud of it." The teams I have been on have been consistently successful without having a consistent methodology. The success is the result of having a bunch of competent people who respect each other, and are motivated by the idea of producing something that customers will pay money for, because it works. And by the knowledge that they'll stick with the project for a while, and if they make any messes they'll be the same people who have to clean them up later.

    I've suffered throughout my working life from inexperienced managers and programmers who suffer from what I call delusions of grandeur. 90% of the stuff that people learn about project management seems to me to be intended for use in projects with fifty programmers or more. Projects where the manager can't get a grasp of the project by walking around and schmoozing with people. Projects that are big enough that there are constantly people leaving and joining them. I don't know about projects like that. I'm inclined to think that formal management processes may be useful, even essential there.

    But on small-team projects, it just gets in the way.

    The problem is that the books that explain the capital-M Methodologies and the code review process and so forth never say, in so many words, that these are management procedures for projects with more than fifty people. They just say, "this is how you do it." And people come out of courses believing that "doing it right" means applying all this stuff. And that anything else is unprofessional.

    The hidden assumption is that everyone wants to follow a career path where they manage more and more and more people on bigger and bigger and bigger projects and make more and more and more money. When I worked at a Fortune 500 company, people were very frank about it. It was a waste of time proposing or working on small stuff. You had to "think big" or management would never take any interest in what you were doing.

    Well, I'm here to say that if you want to think big and manage like the big boys do, fine. But don't try it on a small-team project where the team members have gelled into a coherent unit, and know each other and work well together, and plan to stick around for a while.

    Code reviews? Gimme a break. In the natural course of events, other team members are going to have to work with my code. If I don't care about what they think about it _when they're editing it to get their job done,_ I'm sure not going to care what they think about it in some room with a whiteboard. And we're effectively eviewing each others' code in the natural course of getting our jobs done, then sealing ourselves into a room with a whiteboard and no debugger, isn't going to be any better than what we naturally do without any formal process.

  21. Depends what you are reviewing by grahamsz · · Score: 4, Insightful

    Quite simply, code reviews cost money and production bugs cost money.

    We do code reviews for anything where it'll either be devastating expensive if we encounter a failure or if it'll be very hard to detect a failure. Otherwise, in my particular line of work, it's more economical to accept a lower cost and faster pace of development at the expense of dealing with a few bugs that are discovered in production.

    1. Re:Depends what you are reviewing by DrLang21 · · Score: 2, Interesting

      This is the most reasoned response. I would think that, like validation, code review activities should be appropriate to the level of risk involved. I also believe that good reviews, be it design, code, or documentation, should be kept on the topic of acceptability, not perfection. Code can very easily suffer from the word-smithing problem. If you start talking about a problem in code that really does not have a significant impact on quality, it's time to move to the next item. This is easier said than done however.

      --
      I see the glass as full with a FoS of 2.
  22. Re:If you did test-driven development by radtea · · Score: 3, Interesting

    then code reviews would be redundant.

    Err... no. Testing is not a replacement for code reviews, which do a variety of things, including enforcing coding and commenting standards, act as sanity checks in implementation of design, etc. They also find the bugs that you never thought to design tests against.

    Test driven development is a good way of capturing requirements in testing up-front, rather than leaving that as a downstream activity the way conventional testing is done. Doing test-driven development will not cause your test set to be any more thorough than a properly done V&V test set.

    A while back on /. we had a story about a serious bug in a major product (can't remember what it was) and someone commented that "this seems like the kind of thing that test-driven development would have caught" as if the tests the developers would have thought of doing in a test-driven environment would have been any different than the tests developers would have thought of doing in an environment with sane down-stream testing. There is absolutely no reason to believe this.

    --
    Blasphemy is a human right. Blasphemophobia kills.
  23. "Take forever" by shutdown+-p+now · · Score: 3, Insightful

    What we've found is that code reviews take forever ...

    In one place where I worked in the past, we had a very simple rule: if you are doing a code review, and it takes longer than 10 minutes, then you stop it right there and return the whole thing marked as "overcomplicated" - if it really takes that long, then either the code is written in non-obvious ways and/or poorly commented (which will result in poor maintainability anyway), or the change is too big for one source control commit. By and large, it worked, even if you have to make exceptions occasionally (but at that point you know it's not a typical review, and pay more attention).

    In addition to that, you might want to consider better tooling. If you're doing reviews by sending .diff files over email, you're doing it wrong - there are many specialized tools out there that will do automatic and smart diffing (including between rounds in a multi-round CR), notify people responsible for affected files, allow to set up the workflow according to your needs, enable attaching review comments and conversations to particular files and lines of code, and so on. The shop I was working for used Code Collaborator , and I found it to be pretty good, but there are plenty other similar tools out there, and you might even be able to find some good free ones.

  24. Code Reviews for the lulz by CuteSteveJobs · · Score: 2, Interesting

    When I was working as a trainee, I was invited to the code review of a mediocre programmer. A bunch of people were there including a senior A/P who was my boss. My boss started ripping into it and I quickly realized the mediocre programmer - who couldn't code his way out of a wet paper bag - had taken one of my programs and tried changing it (including my name). It didn't work and the senior A/P was asking him 'WTF does this do?'

    Oh the dilemma. Do I take ownership and defend "my" code, or say nothing and enjoy watching him squirm? I did the latter watching him go "ummmmm ummmmm ummmmm". Finally medicore programmer admitted he copied it and it was really mine. I said "Well it was working when you copied it off me."

    Needless to say he ended up being promoted to manager. Not even a PHB which requires a bit of cunning, he was just a flat out idiot. I keep in touch with some of my coworkers to this day and whenever we want to describe a certain type of idiot we use his name. Duuuuuuuuuuuuuuh.

  25. Re:If you did test-driven development by Jane+Q.+Public · · Score: 2, Interesting

    Naming conventions are overrated. Most programmers outside Microsoft have thrown Hungarian notation out the window, and other forms as well. If your code is well-written in the first place, most naming conventions are simply verbose redundancy. It's an old-school habit that is largely no longer necessary or followed. (Of course, that does depend on what kind of coding you are doing. If you are still doing C++ in Visual Studio 3 you might want to stick with it.)

    Second, modern tests are documentation. For example, if you were using rspec for tests, you can do (this is pseudocode):

    Method "MyMethod" should do {this}.

    Method "MyMethod" should do (that).

    Method "MyMethod" should not do (something else).

    Method "AnotherMethod" should do (yet another thing).

    This is very straightforward, and does not tend to "lead to other problems down the road".

    Having said that, these kind of tests are for code, and often not for overall user experience. If you want to test your interface, you might want to use other tools. And nothing replaces a good QA person or team to test the final product.

  26. Re:Are they worth it? by Kjella · · Score: 4, Interesting

    There are apparently a couple different kings of things that are both called "code reviews", which one are you talking about? There's also the issue that they're supposedly (as in, according to actual studies) pretty good, so maybe you could do them slightly differently and get much better (more in line with the study results) effects.

    Formal reviews is only meaningful if you have an equally formal specification that is unlikely to change often or at all. A lot of heavy backend systems could benefit from that, but this isn't one of them they should definately stop. Of the lighter:

    Over-the-shoulder One developer looks over the author's shoulder as the latter walks through the code.
    Email pass-around Source code management system emails code to reviewers automatically after checkin is made.
    Pair Programming Two authors develop code together at the same workstation, such is common in Extreme Programming.
    Tool-assisted code review Authors and reviewers use specialized tools designed for peer code review.

    First one nearly never leads to good code in my experience, unless you manage to get just the right mix of writing code and helpful conversation, it's way too easy to zone out, take over, turn it into a lecture or whatever. Second one sounds like SPAM, who reads those? Pair programming can work, but I'm not sure it's worth the overhead.

    Tool assisted is definately my favorite. Clone and branch then make your changes and request that they be merged back. You have to say something sensible about what you're doing as a whole, at least two people will look at it, they can comment or reject it. Not according to guidelines or design or whatever? Fix and resubmit. That, together with design meetings I think is the way to go.

    --
    Live today, because you never know what tomorrow brings
  27. a fucktonne? by grahamsz · · Score: 4, Funny

    Damn europeans and their metric system.

    How many shitloads are in a fucktonne?

    1. Re:a fucktonne? by jhd · · Score: 2, Funny

      How many shitloads are in a fucktonne?

      Wolfram Alpha knows ;-)

  28. Re:Are they worth it? by man_of_mr_e · · Score: 5, Interesting

    Pair programming can work, but I'm not sure it's worth the overhead

    By "overhead" I assume you mean the cost of two developers to write one piece of code. In my experience, Pair programmers are more than twice as productive as a single developer when you factor in all the errors and bugs prevented by having two sets of eyes on the same problem. Of course this only works when you have a pair that can work together, which can be hard to find in some environments.

    The other advantage you get from pair programming is that you have two people familiar with the code, not just one. Thus if one leaves the company, or goes on vacation and problem needs to be fixed, you always have another person (at least until both of them leave the company).

    Even if you do nothing else that XP advocates, pair programming can really be worth it.

  29. Re:Are they worth it? by Glonoinha · · Score: 5, Insightful

    Pair programming is the most effective in the circumstance that makes the best use of it - two circumstances to be exact :

    1. Pair an experienced programmer with an inexperienced programmer.
    2. Pair an experienced programmer with strong subject matter expertise on one domain with an experienced programmer with a completely different domain of experience.

    The first is highly effective in getting the weaker guy up to speed on the first guy's domain. The second is effective at solving a set of problems that eclipse the domain of either developer.

    --
    Glonoinha the MebiByte Slayer
  30. WTF does maybe mean? by lalena · · Score: 5, Interesting

    Are code reviews useful?
    Lets see. Right click -> View source this web page. In the first 10 lines I see a variable called maybe with no comments as to what it means.
    Yes, code reviews are useful.

  31. Re:Are they worth it? by ivan256 · · Score: 4, Insightful

    In my experience, Pair programmers are more than twice as productive as a single developer when you factor in all the errors and bugs prevented by having two sets of eyes on the same problem.

    In my experience, pair programmers are only more efficient than each programmer working on their own when both programmers are bad.

    Bonus: Most development managers that like pair programming have hiring practices that find the worst programmers (but they're generally fairly well dressed and always show up to meetings on time).

    Good developers paired with over-the-shoulder code reviews produce code that is just as good (or better), and is far more productive.

  32. Bad Analogy Guy where art thou? by linzeal · · Score: 2, Insightful

    Best code reviews I have seen cost a lot of money in man hours and are usually are done by an in house group that specializes in it. For the last firmware review (2048k ASM) we had 3 salaried guys making over 120k a year spend 3 months on it to find 4 critical bugs and dozens of lesser ones. Shipping that firmware would of made us liable for over 2 million dollars worth of hardware. So if you look at it another way ~1/20th of the cost of the product was invested in the final code review.

    Having the same group review their own code is like the fox guarding the hen house, he might be a vegetarian but I doubt it.

  33. Re:Are they worth it? by DrLang21 · · Score: 2, Insightful

    Running good code reviews are like running any good meeting. It's difficult and often requires special skills that most people just don't have. Keeping people on track and on topic is difficult. Especially with us technical types.

    --
    I see the glass as full with a FoS of 2.
  34. Not much, it doesn't by Anonymous+Brave+Guy · · Score: 4, Insightful

    If it's ever not more economic to do code reviews, then I respectfully submit that You're Doing Them Wrong(TM).

    The improvements in the general standard of code, and consequently its maintainability, should easily outweigh the modest time spent on reviews. Likewise, the efficiency benefits just from sharing basic awareness of how various systems work and useful coding techniques around a development group should be enough to justify the time spent. And those are both without allowing for any actual bugs that would have been observed by your customers but got fixed much earlier and cheaper because the review caught them.

    Incidentally, if you don't think it's worth getting even a quick glance from a second pair of eyes on even a small bug fix, you should look up the research on how many bugs originate from a one- or two-line change to the code. It's a staggeringly high proportion.

    Now, a lot of places have tried full, Fagan-style, heavyweight reviews, and yeah, those pretty much suck for most software development groups. But that doesn't mean you can't employ a lighter process with the same goals. With the kinds of tools available to co-ordinate reviews and annotate code these days, your overheads should be near zero and you can do a lot of the work on-line rather than shoving everyone into a room for a few relatively unproductive hours.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  35. I think they can be good by jonwil · · Score: 2, Insightful

    As a programmer, having someone else look at my code is good since there will always be mistakes I just cant see from looking at it. Someone else looking at it might pick them up when I cant, especially if they have more knowledge of bits of the codebase than I do.

  36. I like having my code reviewed by HomerJ · · Score: 2, Insightful

    Which goes against the thinking for a lot of developers. They seem to take reviews of code personally, and believe everything they did is correct.

    I go the other way. If my code is good, it will stand the test of a review. If one or a group of my colleagues looks at my code and doesn't find a fault then I KNOW it's good. I don't have to just THINK it because I believe so. If I can't explain why I did something in a review, it shouldn't get into production code.

    Sometimes it's even simple stuff. I Do X, and someone goes "oh, we had to do it too, and wrote this bunch of code for it. Maybe we could combine the code into one usable module for both". It's stuff like that you can only really do in a good code review. It shouldn't JUST be done at a commit. It's something that should be part of the development process.

  37. I want ALL my code reviewed... by MadShark · · Score: 2, Insightful

    My company has a pretty rigid set of processes and we find that we catch approximately 25% of our defects in code reviews. This doesn't count minor things like not following the coding conventions or bad comments, those are logged separately. We have reviews where we hand them off to just one other engineer as well as the Fagan style of reviews, depending on what we feel is appropriate for the particular piece of code. In our industry(embedded software), it isn't exactly easy to push out a patch once the code is released so that plays into how/why we do it the way we do. I wouldn't say the review process is cheap, but neither are warranty campaigns. Pay it now or pay it later I guess...

    Even the best people occasionally typo, put in a bad/wrong comment or just flat out make a mistake during coding. Personally, I'd love it if we had the resources to review every single line of code I write.

  38. Re:Are they worth it? by halcyon1234 · · Score: 3, Insightful

    Pair programmers are more than twice as productive as a single developer when you factor in all the errors and bugs prevented by having two sets of eyes on the same problem.

    Also, having someone watch over you makes it harder to slack off on Slashdot. Harder, but not impossible, of course.

  39. Re:Are they worth it? by imasu · · Score: 2, Insightful

    The first case is canonical and often pointed to, but I find it problematic in many cases. Mentoring is always a good goal but I think that for real development work, if there is a large disparity between the skillsets it can lead to the more experienced engineer becoming frustrated and essentially feeling less productive (as the mentoree is not contributing much in the way of actual implementation). Similarly, it can be like drinking from a fire hose or the less experienced person. So while it is an effective technique in some cases, it is (in my experience) quite domain and problem specific, and if the gap in skills is too large, it simply does not work well. The second example you give is where it really can stand out though, in the spirit of the first example as well; bringing a second experienced dev up to speed in the first dev's domain.

  40. Hire programmers who don't get hit by busses. by N3Roaster · · Score: 2, Funny

    I keep hearing about these programmers getting hit by busses. In fact, I think I hear about programmers being hit by busses more than members of any other profession. Now, the busses that I've seen tend to be rather large things that stop frequently, and usually aren't going very fast. The generally poor quality of code suddenly makes a lot more sense when you consider that it is being written by a class of people who are so fatally inattentive as to be struck by busses with such improbable frequency.

    --
    Remember RFC 873!
  41. Re:Are they worth it? by mr+exploiter · · Score: 2

    If my boss paired me with another programmer so he can learn from me then I'll expect him to pay me extra. No way I'm doing free teaching. I was hired for programming not mentoring. Stop trying to get free work from your employees.

  42. Re:Are they worth it? by wisty · · Score: 2, Insightful

    Pair programming is good for coding and software design (if you have a UI cases design), but crap for "UI, and model design by prototyping". If you want production code, you should use pair programming, design reviews, and code reviews. If you want to hack up a protoype (which you then refactor into a proper design, using pair programming, design reviews, and code reviews), then one person can be more creative than 2.

    Of course, some managers don't believe that development is a creative process, and think that they are the designers, but that's another problem.

  43. Re:Are they worth it? by wisty · · Score: 2, Interesting

    It also depends on the personalities. Some programmers are too egocentric to be useful in pair programming. They aren't too good in other contexts either though.

  44. Re:Are they worth it? by shentino · · Score: 2, Interesting

    Except that the company pays the opportunity cost of having you mentoring instead of coding, as you're on the clock either way.

    Unless of course he wants to have his cake and eat it to and have you programming and teaching simultanously.

  45. Security Camera Effect by zuperduperman · · Score: 3, Insightful

    The primary effect of code reviews has nothing to do with finding problems during the review itself. It improves quality before the code ever gets to review, because people care far more about what they do in the first place if they know there is even a chance others will see and criticize them later for doing it wrong.

    This is why stores put up fake security cameras. The notion that they have someone sitting there watching the camera continuously is ridiculous, yet a camera has a huge effect on people's tendency to commit crimes nonetheless.

  46. Re:Are they worth it? by Dahamma · · Score: 2, Interesting

    Good developers paired with over-the-shoulder code reviews produce code that is just as good (or better), and is far more productive.

    This I agree with wholeheartedly - a relatively quick over-the-shoulder review before a checkin provides the advantage of the extra eyeballs in pair programming/code reviews without the ridiculous disadvantages of redundancy and annoying meetings. Though as you said, it does assume good developers...

  47. Re:Are they worth it? by sodul · · Score: 2, Informative

    Google is using a code review tool called Mondrian. It was originally written by Guido van Rossum (Python's creator).
    He created an open source clone to be used with Subversion, Rietveld:

    http://google-code-updates.blogspot.com/2008/05/guido-van-rossum-releases-mondrian.html

    http://codereview.appspot.com/

    These tools are great but they are only as good as the guidelines for the reviews. Some reviewers will always say yes to requests, while others will be too anal. What happens? Most people will avoid strict reviewers and send their code to the easy ones. Doing a good review takes time so there need to be incentives to give good reviews: if you spend 2-3hs doing reviews in a day you just lost 25% productivity on your code, while helping an other developer write better code. Overall it's better for the team and the company but can actually hurt the perceived performance of your better developers while in fact they're pulling everyone else up. Just make sure good reviewers are getting as much recognition as good/productive code writers. Same thing goes with lenient reviewers, they should share the blame when bad code they reviewed brake the build. If you don't understand the new code, then it needs to be re-factored by the submitter to improve readability or you are not the right person to do the review.

  48. Re:Are they worth it? by man_of_mr_e · · Score: 3, Interesting

    Good developers paired with over-the-shoulder code reviews produce code that is just as good (or better), and is far more productive

    My experience differs. Most people that say they're "good developers" aren't. What you really mean is "People that hate having someone watch them don't do well in pairs", and that's true.

  49. Re:Are they worth it? by man_of_mr_e · · Score: 3, Insightful

    Everyone on the team found that they were more productive if they were just let alone, had people to talk to if they had an actual problem, and just emailed each other their patches for "review".

    I've had numerous 4-6 hour pair programming sessions that churned out more well written, largely bug-free software than most people write in a week.

    The problem is, when pairs are mandated, you end up with a situation where you write code for 5 minutes, then one guy gets up to go to the bathroom for 15 minutes (the other guy surfs the web waiting for him to get back). Then they write more code for 5 minutes and the other guy goes to get a can of Dew, stops and chats with someone, etc.. comes back and they write 5 minutes of code and then the first guy goes to lunch... etc..

    You need two people that are a team, working together, who want to be there and doing it. Otherwise it's just pointless. In most cases, I like to find an unused conference room or office to allow us to be completely "in the zone", and we generally don't come out until we're done for the day.

    Occasionally you get into a disagreement about how to go about things, and that wastes time. But more often than not, a pair that's "in sync" churn out amazing amounts of good code.

    The fact that you talk about mailing each other patches seems to indicate to me that you're talking about a maintenance situation. Pair programming does not work well for small patch change situations, or rather it's a waste of time.

  50. Design != Coding by Anonymous Coward · · Score: 2, Insightful

    Until this is understood, additional discussion is futile.

    If pair programming is cost effective, you've hired the wrong programmers - pay more and get good developers (and, as a manager, set priorities to reward quality). Teach developers to desk check their own code -- every true "bug" found by your "pair" or missed by them but found by QA or the Customer should be viewed as a humiliating embarrassment by the coder - something that happens every few 10K of code but really requires a humble round of beer for the entire reveiw/QA team.

    Yes, part of Development is a creative process - but that's not an excuse for eliminating accountability or responsibility.

  51. Re:Are they worth it? by Hognoxious · · Score: 4, Funny

    In my experience, Pair programmers are more than twice as productive as a single developer when you factor in all the errors and bugs prevented by having two sets of eyes on the same problem.

    In my experience, unicorns are 2.7 times better than mermaids at debugging.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  52. Gods yes! by Fastolfe · · Score: 2, Insightful

    Just do them right:
    1. Each commit should have an explanation of what the change does, and should be small enough that the reviewer can do it quickly.
    2. Your organization should prioritize code reviews over other work; in many cases the review is blocking something.

    If your reviews are kept small, and are a high priority, they add enormous value and shouldn't negatively impact your work.

    Code reviews have the following perhaps non-obvious benefits:
    - They ensure the implementation does justice to the design
    - They help pass institutional knowledge to the developer ("This function has an existing implementation over here...")
    - They ensure code readability (especially when used with a formal style guide)
    - They help keep the developer honest, when he or she might take shortcuts or be lazy with a certain function.
    - By mandating code reviews, you have a pressure from the reviewers to keep each commit small, which encourages incremental development, which discovers design flaws early rather than after 10,000 lines are written.

    Code reviews aren't really a great place to FIND bugs. Yes, obvious bugs will stand out to an experienced developer, but the reviewer is another human, and he or she can easily miss the same bugs the developer missed. Really, unit tests are where you catch bugs, and a reviewer is usually in a better position to identify incomplete unit testing.

  53. Re:Are they worth it? by Your.Master · · Score: 2, Insightful

    have no idea what company you work for but normally compaines don't hire inexperienced programmers.

    Where do you think experienced programmers come from?

    Yeah, yeah, cue the litany of Open Source projects. There's more than one kind of inexperienced, and Open Source doesn't prepare you for all aspects of business programming (nor vice-versa).

    Lots of companies have internships, hire kids out of school, hire experts in one domain to help bring their skills into another domain, etc..

    Also, near the end:

    We fire poor performers, we do not waste time and money on them.

    He said inexperienced programmers, not poor performers. There's an enormous difference. The concepts are almost orthogonal.

    I get a project specification on Jan 3rd and it needs to be in production in 13 weeks. I don't go out and hire inexperienced programmers for 13 weeks.

    So you do contract work only? Nobody is suggesting you do charity work on these cases. But it kind of answers your beginning question: "Why the hell would anyone in their right mind in business pursue #1"? Because they hire for a much longer term than 13 weeks. 13-week terms: that actually sounds like an educational stint.

  54. Re:Are they worth it? by Profane+MuthaFucka · · Score: 2

    I agree. But...

    Mr. Exploiter obviously thinks the practice is stupid. Now,

    a) try to convince him that it's not stupid
    or
    b) explain that he makes the same money for jerking off as he does for programming

    I think I took the easier path.

    --
    Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
  55. Re:Are they worth it? by Profane+MuthaFucka · · Score: 2

    I telecommute from home, so yes I rub one out on the clock every day. I'm sticking it to the Man. So to speak.

    --
    Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!