Slashdot Mirror


Avoiding Mistakes Can Be a Huge Mistake

theodp writes "No doubt many will nod knowingly as they read Paul Graham's The Other Half of 'Artists Ship', which delves into the downside of procedures developed by Big Companies to protect themselves against mistakes. Because every check you put on your programmers has a cost, Graham warns: 'And just as the greatest danger of being hard to sell to is not that you overpay but that the best suppliers won't even sell to you, the greatest danger of applying too many checks to your programmers is not that you'll make them unproductive, but that good programmers won't even want to work for you.' Sound familiar, anyone?"

10 of 268 comments (clear)

  1. Perhaps by Thelasko · · Score: 5, Interesting

    Perhaps programmers that have consistently good code should have some value placed on them. We'll call it "Karma". Programmers with good Karma get audited less often than others. If they fail an audit, they loose some "Karma" and have to write a bunch of excellent code to get it back.

    --
    One of our competitors trademarked the term "hypothesis". From now on, we will call them "boneheaded ideas".
    1. Re:Perhaps by Anonymous Coward · · Score: 5, Insightful

      Code reviews teach the reviewers as much as they check on the author. Why would you deny the lesser programmers the joy and experience of looking at good code?

    2. Re:Perhaps by YourExperiment · · Score: 5, Funny

      Do programmers also loose karma for being fast and lose with their spelling?

    3. Re:Perhaps by enjo13 · · Score: 5, Interesting

      How do you identify "good code"? That's one of the great problems we have as software developers. Quantifying 'good' code is extraordinarily difficult. Code reviews do an excellent job of identifying clever code, but rarely capture the full utility of what is being written. You may think you know good code when you see it, but over the course of my career I've become convinced that is not true at all.

      Really the problem is that the only way to truly measure code quality is by seeing how it runs in a production environment. Even then I can easily quantify the quality of the teams overall output (does it work? does it work consistently?), but tracing that back to an individual programmer is often nearly impossible. Systems tend to interact with each other, and placing blame is not an exact science. The gulf between 'good' and 'good enough' is not nearly as wide as it seemed when I was a novice programmer.

      Great code almost never breaks. Good code works most of the time. Poor code is another matter.

      Poor code is easy to spot. Poor code never works. It's ugly. It's complex. It's stateful. It's jump off of the screen and practically begs to be put out of its misery.

      That's precisely why companies have processes and checks. They are an attempt to catch marginal code and make it 'good enough'. The problem, as the article points out, is that in the process they often inspire great coders to deliver marginal code themselves.

      The secret is to spot (through some mixture of science and art) great programmers and provide them with the freedom to write great code. If circumstance requires you to hire marginal programmers, then by all means put the process in place to make sure that what they do doesn't detract from the work your best and brightest are doing. Separate them as best you can. Limit how their systems interact.

      But whatever you do... don't limit your best programmers, as they are far more valuable than hundreds of poor ones.

      --
      Turn s60 photos into awesome videos with mScrapbook for all S60 3rd edition phones!
    4. Re:Perhaps by ChromeAeonium · · Score: 5, Funny

      Do programmers also loose karma for being fast and lose with their spelling?

      /irony

      They can be docked karma that way, but when they're not sure about something, they can cover their asses and submit anonymously. That way, if something totally whooshes over their heads, they're in the clear. They can later correct their own dumbass mistakes unanonymously and whore karma instead of losing it. What a perfect system!

    5. Re:Perhaps by sammyF70 · · Score: 5, Funny

      Google is evil incarnated, Apple is style-over-function overpriced junk, and "The Year of The Linux Desktop" ain't coming soon.

      Microsoft, on the other hand, has some really funny employees (and Reversi).

      /em ducks

      --
      "DRM is like the Ford Pinto: it's a smooth ride, right up the point at which it explodes and ruins your day."-C.Doctorow
    6. Re:Perhaps by kbrasee · · Score: 5, Funny

      /irony

      /woosh

      /irony

      Error: Cyclic Dependency

  2. More checks! by I.M.O.G. · · Score: 5, Insightful

    From the article:

    Whenever someone in an organization proposes to add a new check, they should have to explain not just the benefit but the cost. No matter how bad a job they did of analyzing it, this meta-check would at least remind everyone there had to be a cost, and send them looking for it.

    So bureaucracy has a cost in that it places lots of checks on things, and the solution to that is adding more checks?

    Sounds like solid bureaucracy to me!

  3. Agreed, Too Much Oversight Kills by cgifool · · Score: 5, Interesting

    My group is a prime example. We all worked for a startup that generally released a new version of our application about 3 times per year. Over a few years we had developed a nice lean development process that involved documenting our design, but only in enough detail to be able to fairly accurately estimate the development effort (in X days, X weeks, or X months).

    Based on the estimates, the biz dev group would then pick and choose features to make up 3 months dev + test time.

    This worked great, and we pretty much never had a late shipment and few bugs.

    Then we got acquired by a giant 3-letter company with huge amounts of development process and tons and tons of "standards", and immediately were ordered to begin a 16 month release consisting of removing all open source and complying with standards. All their architects routinely veto our decisions and our design documents must be very very detailed and approved via heavyweight process before implementation can begin. 24 months later we're still in development, only recently the last design document was finally approved; at the moment it seems we'll be about 12 months late in total.

    Now they're asking us why we have so many tests planned, and making us remove half of them. Supposedly quality is a major priority, but they have no testing group; only people to enforce standards. All tests and test cases are written and implemented by the developers themselves.

    Dont even get me started about the outsourcing issues.

  4. Nothing changes. Really. by onescomplement · · Score: 5, Interesting
    Paul, as usual, backs into the key argument.

    This keeps coming up in various shapes and forms but the fact of the matter is that brilliant, high producers aggregate in places; and so do idiots.

    Tom DeMarco ran a study of this in the 80s wherein teams were asked to solve the same problem. He expected a scatter-plot. It was a 45 degree line between the people who knocked the problem off and those who were clueless.

    What didn't matter:

    Platform. Language (except assembler, those folks were _lost_.) Operating System.

    What did matter:

    Team coherence and capability.

    Design and planning; raw ability to design and plan as a coherent team. And not just a bunch of losers following a Pythonesque "Book of Common Knowledge."

    (I have been to many "Does the witch weigh less than wood" meetings...)

    Look at the back cover of Boehm's "Software Engineering Economics." What he _measured_ was that team capability overarchs everything. Period.

    I would also ask you to look at the surface exposure of development. Folks who develop on the shoulders of many giants can and should be trying lots of stuff, because that's why platforms are built.

    Folks working closer to the core (the OS, drivers, fundamental code) don't change as quickly, nor should they.

    I've worked as a hatmaker (sheer, unbridled creativity with fancy ribbons and flowers and such) for high-end ladies and I've sat, confounded by bad documentation for UARTS.

    Two different regimes.