Slashdot Mirror


Ask Slashdot: Should Developers Fix Bugs They Cause On Their Own Time?

Bizzeh writes "Today my boss came to me with what he thought to be a valid point and analogy. A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher. In most cases, he would have to replace those lower bricks at his own expense and on his own time. Comparatively: A software developer writes a piece of software. When bugs are discovered, the developer is paid to fix them by the employer and on the employer's time. I didn't know how to refute the analogy at the time, but it did make me think: why are bugs in software treated differently in this way?"

716 comments

  1. what if... by Chadster · · Score: 5, Insightful

    developer's B bug only existed because of developer's A bug? Who fixes B's?

    1. Re:what if... by TechyImmigrant · · Score: 5, Insightful

      The brick builder charges accordingly. Since 90% of programming is debugging and testing, you could concur and demand a 1000% pay rise.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    2. Re:what if... by fl!ptop · · Score: 2

      developer's B bug only existed because of developer's A bug? Who fixes B's?

      This is what I was thinking - what if the builder's bricks were falling out because the mortar he used was bad?

      --
      When you recognize love in another and realize how precious it is, everything else seems so insignificant.
    3. Re:what if... by Anonymous Coward · · Score: 0

      If the wall sags because the foundation is bad, you sue the guy who screwed up the foundation. It's not really a mystery.

    4. Re:what if... by Anonymous Coward · · Score: 0

      What if the bug was the result of bad or incolplete requirements? Does the BA or business user not get paid for the time it takes to fix the requirements and subsequent code?

    5. Re:what if... by DaveAtFraud · · Score: 4, Interesting

      or the design of the foundation is incorrect, or the client wanted a wooden wall instead of brick, or the brick manufacturer changed how the bricks are made becuase of a change in the brick standard, or the bricks had to be changed because they were found to be vulnerable to attacks by clay termites, or ....

      Bugs are rarely just he result of a programmer screwing up.

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    6. Re:what if... by Anonymous Coward · · Score: 5, Funny

      The builder was probably commissioned specifically to build the wall, as well.

      The developer was probably commissioned to build something with nebulous requirements like "keeping the Huns out", and this was the only idea his boss could understand to sign off on.

    7. Re:what if... by SJHillman · · Score: 1

      It's also not really that simple. You can't always tell if the foundation is bad because of the materials had poor QA, the guy who poured it is incompetent, the guy who designed it didn't know what he was doing, or there was an as-yet undiscovered sinkhole right underneath the house. There's even times when everything is in spec, but it still doesn't work like it should.

    8. Re:what if... by asmkm22 · · Score: 1

      I wonder if his boss would be willing to hire and train new employees that are replacing old employees, since he obviously didn't hire the right people the first time?

    9. Re:what if... by asmkm22 · · Score: 4, Insightful

      ** on his own time, that is.

    10. Re:what if... by rmdingler · · Score: 1

      This is what I was thinking - what if the builder's bricks were falling out because the mortar he used was bad?

      It's still his baby. Chances are, the bricklayer or his general contractor provided the mortar, and a majority of the serious masonry outfits mix their own with Portland cement and truckload sand because it's much cheaper than the homeowner store bagged premix.

      If there is a common quality amongst successful contractors, it is that they share a general presumption that things will seldom ever go perfectly. The folks who continue to stay in business learn to factor things going wrong into the costing process.

      As covered earlier in this thread by another, coders are not paid a reservoir wage.

      --
      Happiness in intelligent people is the rarest thing I know.

      Ernest Hemingway

    11. Re:what if... by Impy+the+Impiuos+Imp · · Score: 1, Funny

      To all programmers out there, I'll fix your bugs at 5x the rate you do, for a mere 2x your salary. I specialize in array overruns because you're an idiot, pointer misalignments throwing low-level hardware exceptions because you're an idiot, calculation errors due to incorrect operator precedence and casting at inappropriate stages because you're an idiot, and multithread bugs because you're an idiot.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    12. Re:what if... by DriedClexler · · Score: 1

      Well, why didn't he test the mortar against every every brick he'd be using in the wall before he put it up?

      Er, I guess bricklayers don't have some of the luxuries programmers do ...

      --
      Information theory is life. The rest is just the KL divergence.
    13. Re:what if... by Anonymous Coward · · Score: 0

      The brick builder charges accordingly. Since 90% of programming is debugging and testing, you could concur and demand a 1000% pay rise.

      There is no regulation in the software industry.
      The players are allowed to produce shit software and be off the hook for whatever consequence the use of that software may have.
      The time of "hackers in the basement" is over, at least it should be over for the big corporations (microsoft, Oracle, IBM etc...) that produce commercial software and should be liable if a user's system is compromised because of shitty software engineering practices.

    14. Re:what if... by Darinbob · · Score: 2

      Brick builders charge according to the job, not how long it takes (though workers themselves may be on the hour, it's the contractor who eats the price of redoing the work).

      Developers don't typically get paid per job, except maybe some contractors. A salaried developer at a corporation however doesn't have to work on their own time to make up for defects, as fixing defects is a primary function of the position.

      5% of my coding time is spent on new code, 95% if coding is spent fixing defects. That's been somewhat typical through my career. If I were only paid for new code I'd be homeless and destitute.

    15. Re:what if... by RabidReindeer · · Score: 3, Funny

      To all programmers out there, I'll fix your bugs at 5x the rate you do, for a mere 2x your salary. I specialize in array overruns because you're an idiot, pointer misalignments throwing low-level hardware exceptions because you're an idiot, calculation errors due to incorrect operator precedence and casting at inappropriate stages because you're an idiot, and multithread bugs because you're an idiot.

      Well, I'm an idiot, anyway. None of the sins you listed are commonly committed by me, however. In some cases they're impossible using the language and tools I'm presently using, but in most cases, because I've always been rather paranoid about the low-level stuff since I did a lot of OS internal work where that sort of thing could send an entire company home for the afternoon.

      Not to say that I do bug-free work, just am more subtle in my bugs.

      However, the last major corporate job I had, didn't want that level of quality and frequently dinged me for it. All they wanted was for me to "Git 'R Dun!"

      It's not like they were a major financial institution or anything. Oh wait...

    16. Re:what if... by Anonymous Coward · · Score: 0

      developer's B bug only existed because of developer's A bug? Who fixes B's?

      This is what I was thinking - what if the builder's bricks were falling out because the mortar he used was bad?

      You mean because he's a Turkish building contractor?

    17. Re:what if... by Anonymous+Brave+Guy · · Score: 2

      Bugs are rarely just he result of a programmer screwing up.

      That's rather kind. Bugs happen all the time just because programmers screwed up.

      The difficulty with the software industry is that we have not yet developed good objective criteria for saying which bugs are really down to a specific programmer's error as the root cause and which could instead be attributed significantly or entirely to other causes. What's more, we have even less ability to set criteria that are still useful if you're a lawyer or manager or client rather than a technical expert who understands how things actually work.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    18. Re: what if... by Anonymous Coward · · Score: 0

      Or if the client changed the design specs halfway through the project without changing the deadline...

    19. Re:what if... by ToasterTester · · Score: 1

      Apples and oranges comparison brick building is manual labor task. My grandfather was a brick mason and he learned the skill, and worked his way thru the ranks apprentice and journeyman, etc. If a wall started falling apart it was probably bad bricks, or the mortar wasn't mixed right. Two thing out of his control on a construction job with a team of brick masons. Last if the person hired didn't have the skills.

      Software development a person can be unqualified for the job, so you don't want them fixing things. Then most real world app's are large team projects and side effects for other people's code is part of the process so who fixed what? Then bugs or code not functioning as expected just part of developing code for a project and that has to be factored in to the time and cost of development. I a company told me to fix bugs on my time (which they usually have a chunk of anyway) I'd be looking for another gig. Only time I would fix bugs on my own if I was sick or distracted and knew I wasn't working up to par. Unless its one of those bosses who says "sick or not get in here" then its their fault I raised the red flag and they ignored it.

      Start getting your resume out.

    20. Re:what if... by Anonymous Coward · · Score: 0

      A salaried developer at a corporation however doesn't have to work on their own time to make up for defects, as fixing defects is a primary function of the position.

      Never heard of Electronic Arts, have you?

    21. Re:what if... by MrBigInThePants · · Score: 1

      It is a naive discussion and not a uncommon or even interesting one. The analogy used actually fits very well but only if you use a comparable wall and not a naive wall such as the one implied in the article.

      The main reason you don't do this is because you would incur a massive and wasteful overhead arguing backwards and forwards over things such as what was a bug or change request, who was to blame and by how much.
      In addition you would have the developers being forced to spend many hundreds of hours in bugs that the customer would not want to fix if they were paying for them but since they are free they do.

      Thus the upfront cost of development would soar and/or contracts would reflect (as many of them already do) the standards expected and what to do about bugs. This would hurt everyone. (and has already done so on countless projects who had contracts that used this methodology - typically "waterfall" projects)

      The analogy with the builder is in fact EXACTLY THE SAME if you use a SENSIBLE comparison:
      e.g.
      A wall that has hundreds of pages of complex requirements and rules surrounding how it gets built. Also the wall would have to be long enough to cut Mexico off from the USA. And then, as the wall was built, the customer would change their mind about what they wanted the wall built out of and attached to it.

      And (to be analogous to most software projects) government officials were managing the project and brought all their politics, backhands and inability to do their jobs with them.
      Also their naive and shallow thoughts on how writing code is the same as building walls.

    22. Re:what if... by viperidaenz · · Score: 1

      If you wrote defect free code, they'd pay you a lot more.

    23. Re:what if... by viperidaenz · · Score: 1

      Its easy. You find the cause of the bug and ridicule the coworker who made the mistake.

    24. Re: what if... by Anonymous Coward · · Score: 0

      A builder gets a contract to build a wall. He tells his employees to start building it. He tells them do no worry about the loose bricks we will get back to them later. Oh and we need to change the wall a little bit.

      Now who pays the builder or the employees?
      The issue is your boss is the builder not you. He is suppose to insure the wall is built right.

      Plus it is a poor analogy. It is easy to see problems in a wall. No so much with code.

    25. Re:what if... by Nyder · · Score: 1

      developer's B bug only existed because of developer's A bug? Who fixes B's?

      This is what I was thinking - what if the builder's bricks were falling out because the mortar he used was bad?

      All brick layers I have ever seen made their own mortar. If you have a brick layer who makes shitty mortar, get a new brick layer.

      Much like if you have a coder who produces crappy code, get a new coder. If you have a compiler that makes errors, get a new compiler.

      But what you are doing here is taking an example and trying to make it related when they aren't.

      Developer A = Brick Layer 1 Developer B = Brick Layer 2.

      Brick Layer 2 isn't responsible for Brick Layer 1's work, any more then Developer A is responsible for Developer B's work.

      This is why you pay Brick Layer 2 money to fix the crap Brick Layer 1 did, and why you pay Developer B to fix Developer A's stuff.

      If Developer A did a crappy job and you can't get him to fix his crap, you are Shit out of Luck, you are going to be paying Developer B to fix it regardless. You might later, be able to get money from a court settlement, just like you could might if you sued Brick Layer 1 because he did a substandard job. But unless and until that happens, you paid 2 developers/brick layers, or you have an unfinished project sitting there.

      --
      Be seeing you...
    26. Re: what if... by Elfich47 · · Score: 1

      That means the builder deviated from the design and has shoddy construction practices. The builder would be fired from the job and back charged for the work that has to be ripped out. The employees would not be punished by the owner/architect/engineer or CM.

      --
      Architectural plans are like computer source code with a couple of differences: You only compile once.
    27. Re:what if... by ttucker · · Score: 1

      No, the contractor charges accordingly, and eats the loss for the wall not being built correctly. Most laborers will not work for free.

    28. Re:what if... by ttucker · · Score: 1

      They also know that skilled employees are hard to find, mistakes happen, and that forcing good employees to be slaves will make them quit!

    29. Re:what if... by noh8rz10 · · Score: 5, Insightful

      If the builder has a fixed price or not to exceed contract, then he has to deliver the goods at that price, and anything else is out of pocket. Same for contract work for software. But also note the difference between a builder company and an independent contractor. If the building company goes over, it still has to pay its employees.

      The submitters analogy sounds like bull poop.

    30. Re:what if... by Belial6 · · Score: 2

      An even bigger problem is that with software, we don't get to just say "Close Enough". If you look at any building, bridge, wall, whatever, you will find huge numbers of defects. If the bridge doesn't fall down we say "Close Enough". With industries like medicine, standards are even looser.

      Software development is just about the only industry where perfection is expected.

    31. Re:what if... by Darinbob · · Score: 1

      Doesn't matter, I'd still spend 95% of my time fixing other people's code.

    32. Re:what if... by ATMAvatar · · Score: 1

      Perhaps, but the bricklayer doesn't have to worry about gravity suddenly reversing.

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    33. Re:what if... by Anonymous Coward · · Score: 0

      Or suggest that programmers unionize under Tony Soprano ..

    34. Re: what if... by Anonymous Coward · · Score: 0

      Impossible! It would lead to an endless loop... Who would mediate the arrangement... The dev would take on the responsibility of tester by default, so that role would then be be duplicated. This is where a bonus incentive comes into play, get paid to work, but also get paid an additional bonus for bug-free code; if such a thing even exists? Agreed, my rate would increase to cover my possible losses! Zero-sum game... In closing, if I'm to assume 100% of the risk, I want 100% of the reward!

    35. Re:what if... by rtb61 · · Score: 1

      The bricklayer is a contractor not a employee. So you tell the boss that if he wants you to fix the bugs in your own time to hand over the contract to you and you'll take all the profits and the boss, well, there is no need for them. The difference is between being an employee and a contractor, the difference between charging for a finished product including bug fixing and charging for coding work. In the example case taking the risk of wearing a brick when telling a bricklayer that a standing well built wall is not good enough and that they must knock it all down and replace all the materials at their own expense and rebuild the wall, because a couple of the bricks are wrong. Seriously I would pause and think deeply before telling a bricklayer that, I been out there in the hot sun laying bricks, mixing the mortar and you don't want to fuck around with a person holding a brick and a full sized bricklayers trowel with which bricklayers can readily cut a brick in half with one quick stroke. Remind you boss there is a world of difference between coding and laying bricks and he is seriously delusion if he thinks he can get away with instructing bricklayers in so whimsical a fashion.

      --
      Chaos - everything, everywhere, everywhen
    36. Re:what if... by Anonymous Coward · · Score: 0

      A salaried developer at a corporation however doesn't have to work on their own time to make up for defects, as fixing defects is a primary function of the position.

      Never heard of Electronic Arts, have you?

      Labor Laws do not allow you to work off the clock, ever. The ONLY way you can legally ask someone that kind of thing is if they are a Contractor, not an employee, in which case you're paying for something specific, and if you did not include some kind of fitness/acceptance process then you're stuck regardless.
      Even Salaried employees cannot be forced to work more than 40 hours a week, but when you're Salaried the employer is allowed to average it over a year. So if they want you to work 80 hours one week and give you the next week off it's OK. If you average over 40 per week in a year then they DO have to pay you Overtime rates for the excess.
      As a side note, most states have some pretty specific rules about compensation for being "on call" as well. But those are more complex so check with your local Wage & Labor board for the specifics of your job.

    37. Re:what if... by AK+Marc · · Score: 1

      The builder is commissioned for a work. The programmer is paid per hour by their employer, regardless of work. If you buy a wall, and the wall is sub-standard, you return it (on brick at a time through the home window of the bricklayer). If you pay an employee for an hour of time, and it's sub-standard, you pay him for another hour, and hope it's less sub-standard.

      If you bought a program, and it has a bug, you expect it to be fixed free of charge. If you are a construction company and your bricklayer lays something sub-standard, you pay him to fix it.

      This just seems like a question from someone that doesn't understand hourly pay, vs commissioned works.

    38. Re:what if... by Anonymous Coward · · Score: 0

      Ah yes, the old "regulation will fix everything" axiom. If things went your way, we'd still be using an Intel 4004 because changing to a new architecture would result in a learning curve, buggy (unacceptable) code until people figured everything out 15 years down the road, and therefore no upgrade would happen.

      You would live in a world of 1970's software and wonder why computing wasn't going anywhere.

      No thanks. I'll take a few bugs here and there as the price to be paid for all the great advances we got.

    39. Re:what if... by DaveAtFraud · · Score: 2

      Bugs are rarely just he result of a programmer screwing up.

      That's rather kind. Bugs happen all the time just because programmers screwed up.

      The difficulty with the software industry is that we have not yet developed good objective criteria for saying which bugs are really down to a specific programmer's error as the root cause and which could instead be attributed significantly or entirely to other causes. What's more, we have even less ability to set criteria that are still useful if you're a lawyer or manager or client rather than a technical expert who understands how things actually work.

      Having spent about one-third of my career in software QA, it's really not that hard to tell which bugs are programmer screw-ups and which ones have a deeper cause. Although there is that grey area where the programmer didn't understand the underlying system or some interfacing system because the documentaion sucked.

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    40. Re:what if... by dudpixel · · Score: 2

      I think the analogy is flawed.

      Software development is probably more like engineering and building a bridge.

      You need to compare with something where not everything is known at the outset.

      I'm sure that bridges sometimes have "bugs" - problems that were not though of in the planning phase. I'm sure no one fixes those for free.

      Is the construction of the bridge equivalent to the software development? or the software release and implementation?

      I think you could perhaps design a model where developer fix their own bugs on their own time, but don't expect the model to look like the current one. Developers will want more, and the work will take longer, as testing now takes a higher priority (in my experience many companies only give lip-service to proper software testing because it's difficult to quantify how much money it makes).

      It's a valid question, but let's not expect we can just stop paying developers for bug fixing and have the world continue on otherwise unchanged...

      --
      This seemed like a reasonable sig at the time.
    41. Re:what if... by dudpixel · · Score: 1

      Suppose another programmer capably issued the same challenge to you...

      --
      This seemed like a reasonable sig at the time.
    42. Re:what if... by sjwt · · Score: 1

      Tell the boss he is free to higher as many brick layers to help him as he wants?
      Ask the boss how being out by 0.0001mm causes the whole building to fail?
      Ask the boss how in the construction industry can they estimate the production time of the wall excluding weather events to 99.5% accuracy?
      Ask the boss how often does the building change after the first brick is laid?
      Ask the boss at what point does the wall fail because the client forgot to advise what they where doing with it afterwards?

      --
      You have 5 Moderator Points!
      Which Helpless Linux zealot/MS basher do you want to mod down today?
    43. Re: what if... by Anonymous Coward · · Score: 0

      That means the builder deviated from the design and has shoddy construction practices. The builder would be fired from the job and back charged for the work that has to be ripped out. The employees would not be punished by the owner/architect/engineer or CM.

      You can't fire a contractor because you never hired him. You signed a contract and if you want to "fire" him you have to break the contract. Hopefully you made sure there was a breakout clause written in there, otherwise you're probably SOL.

      The analogy sucks because if he has a "boss" then he's not a contractor, he's an employee, and he MUST be paid for work. Or else the "boss" will be having a chat with the IRS and Wage & Labor, and possibly ending up on the receiving end of a lawsuit over unpaid wages and taxes.
      What happens with a Contractor all depends on what is written in the contract.

    44. Re:what if... by rhodium_mir · · Score: 1

      Software development is just about the only industry where perfection is expected.

      Software development and astrology...

      --
      You can't spell "oneiromancy" without "roman".
    45. Re:what if... by gl4ss · · Score: 4, Insightful

      contracted vs. employed.

      if you're employed to do the job, then sure as fuck you don't fix them on your own time.

      if you were contracted, then it'll depend on the contract. governments seem to be fond of making contracts where the government pays for the fixing though...

      if the guy has a boss - then the boss should understand that he is asking his employees to work overtime for free.. if he wants that, then maybe he should start just contracting people to deliver a product(versus delivering work hours).

      --
      world was created 5 seconds before this post as it is.
    46. Re:what if... by Anonymous Coward · · Score: 0

      No. Clearly the boss is a nitwit. This isn't going to stop and he can't be argued with.
      The only right approach is to start looking for a new job, but don't leave until you have found one.
      If the boss is so out of touch with the field the company won't be in a better state ten years form now.

    47. Re:what if... by mcvos · · Score: 1

      The brick builder charges accordingly. Since 90% of programming is debugging and testing, you could concur and demand a 1000% pay rise.

      Exactly. The one who carries the risk gets the extra pay.

    48. Re:what if... by Big+Hairy+Ian · · Score: 1

      Bear in mind most bugs are actually caused by the inadequate or poorly documented specifications given to the programmer. Not to mention that the sales man promised the earth. Also what kind of bugs are we talking about? Functional or Non-functional as the latter would normally come down to either the whole team or getting experts (Performance testers, Pen Testers, Usability Testers) in from outside to identify issues.

      --

      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.

    49. Re:what if... by StripedCow · · Score: 1

      Programmer doesn't get sufficient time to perform maintenance and refactoring (*)
      That's where the root cause of most bugs lies.

      (*) necessary because of changing and/or growing specs, or even because programming is not a straight path from start to end; these things should be considered as a fundamental part of the development process

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
    50. Re:what if... by Courageous · · Score: 2

      Yeah. This guy's boss is an ass hat. The analogy involves a contractor. If that contractor wall-builder has employees, no, they don't actually work for free. Meanwhile, in addition to the labor rates the contractor charges, they'll have overhead for business operation, risk, and profit margin. So if this guy's ass hat boss is expecting that, then he should expect to pay a lot more for the work. Idiot.

    51. Re:what if... by Andrewkov · · Score: 1

      Hmm, I wonder if the brick manufacturer is changing the specs of their bricks every week. Of course brick v8.12 is not compatible with brick v7, and currently there is no compatible mortar for 8 series bricks.

    52. Re:what if... by Anonymous+Brave+Guy · · Score: 1

      it's really not that hard to tell which bugs are programmer screw-ups and which ones have a deeper cause

      I don't entirely agree, because for example as soon as there is any doubt about the spec or the intended architecture coming down from above, the situation is ambiguous.

      But even if we accept your premise, for the idea we're discussing to work, you have to be able to identify exactly which programmer is responsible. Was it the guy who called the wrong function, or the guy whose API wasn't clear enough to use properly? If the API was part of the problem, was it really the API developer's fault anyway, when he wrote it three years ago to cater to other use cases before the offending requirement was even conceived, and five other people have hacked parts of it around since then?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    53. Re:what if... by mjwalshe · · Score: 1

      yeh I worked for one of the top 5 consulting engineers in the world and we had one of our bridges fall off its supports :-) I helped prove it was the contractor (aka the navvies) that messed up not our design.

    54. Re:what if... by Anonymous Coward · · Score: 0

      If the builder has a fixed price or not to exceed contract, then he has to deliver the goods at that price, and anything else is out of pocket. Same for contract work for software

      Many individual software contractors work hourly, and in that case they are paying for your expert time as a professional. They're paying for you, not for a hypothetical superhuman professional who never commits a bug. But if the government hires a "systems integrator" to install an entire software system for you, it will come with a "software warranty" which addresses this: bugs are free, and "change requests" are not free and are where they make their real money. This is why the "request for proposal" documents become thousands of pages long and eat up a major portion of the entire project's cost. You may wish for the hourly deal back by the time the lawyers and businessmen are done with you.

    55. Re:what if... by david_thornley · · Score: 1

      Actually, we say "Close Enough" with most software we write. Only in certain narrow fields is there enough QA and process support to avoid that. What I should be doing rather than commenting on Slashdot is investigating a bug or something in a program in production.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    56. Re:what if... by Belial6 · · Score: 1

      Lucky you. I have never gotten that luxory. If my software is supposed to supposed to output then gross revenue from a product, close enough isn't close enough. If my software is supposed to have a button that is 100px wide, 98px isn't going to cut it. I'm not going to say that "Close enough" never happens in software, but it happens a lot less often than in something like home construction.

    57. Re:what if... by lennier · · Score: 1

      Software development is just about the only industry where perfection is expected.

      And required.

      There's also nuclear reactor design, unexploded ordnance disposal, and fugu restaurants which are almost as unforgiving as the development of mass-deployed Internet-connected software.

      Almost.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    58. Re:what if... by DaveAtFraud · · Score: 1

      Real example:

      I was working on a radar project. The spec for the tracker had an error in one of the equations used for converting from doppler shift to actual velocity. The programmer coded it as it was in the spec. We didn't discover the error until testing showed some simulated tracks zooming off at mach 10. First thought was that the programmer made a typo. Programmer showed that the implementation matched the spec. No doubt about the spec until the test results showed a problem.

      Programmer scew ups are usually met with an "Oh shit. I can't believe I did that." Other bugs usually take significant effort to uncover what's wrong. It remains an open question as to who is responsible when something like an API is part of the problem. My take is that if the programmer chose to use a particular library to solve the problem at hand then the programmer has a responsibility to confirm that the code plus the library actually solves the problem (e.g., unit test). If the API is inflicted on the developer by management then management has a responsibility to ensure that the API does what is claimed.

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    59. Re:what if... by DaveAtFraud · · Score: 1

      An even bigger problem is that with software, we don't get to just say "Close Enough". If you look at any building, bridge, wall, whatever, you will find huge numbers of defects. If the bridge doesn't fall down we say "Close Enough". With industries like medicine, standards are even looser.

      Software development is just about the only industry where perfection is expected.

      You don't use many Microsoft products...

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    60. Re:what if... by Belial6 · · Score: 1

      The fact that you would say that proves my point. I can walk into any house and point out ten times the number of flaws that you could find in a MS product in 10 years. Heck, it is so bad that we don't even try to fix the flaws in houses. We have just figured out way to make them less noticable. Why do you think we texture walls? It's because no one is going to spend the time, effort, and money necessary to make a flat wall. The texturing is there to camoflage the massive amount of "Close Enough" work that is done on walls.

    61. Re:what if... by DaveAtFraud · · Score: 1

      My wife and I have been remodeling our house one room at a time so I know exactly what you mean about houses, cars and any number of reasonably complex consumer products. On the other hand, Microsoft is a company that has perfected "close enough" in software. I started off working in the DoD software world where a much higher standard was expected of any product and don't even get me started with regard to "man-rated" software where a failure could mean loss of life.

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
    62. Re:what if... by Anonymous Coward · · Score: 0

      governments seem to be fond of making contracts where the government pays for the fixing though...

      That's because the person handing out the contract isn't spending their own money.

    63. Re:what if... by cwsumner · · Score: 1

      Since my son-in-law is a master mason (senior bricklayer and other things), I can answer this.
      The brick layer can't charge more because there is competition. So they just don't make mistakes. That requires a lot of knowledge, to work, but it does.
      If the wall falls down, even if no-one is killed, it can be the end of their career.

      Companies can hire cheap workers and then eat the mistakes, but even for them it can mean the end.

      I think someday software will be like this. Prepare yourself!

    64. Re:what if... by lsatenstein · · Score: 1

      If the builder has a fixed price or not to exceed contract, then he has to deliver the goods at that price, and anything else is out of pocket. Same for contract work for software. But also note the difference between a builder company and an independent contractor. If the building company goes over, it still has to pay its employees.

      The submitters analogy sounds like bull poop.

      Do I have to give more than a one day(24hr) guarantee&

      --
      Leslie Satenstein Montreal Quebec Canada
    65. Re:what if... by noh8rz10 · · Score: 1

      If it's in the contract. In some industries there's a norm of implied quality or guarantee in order to be successful, but that's not required..

    66. Re:what if... by nobodie · · Score: 1

      Calling BS (after 25 years as a building contractor/job superintendent and project manager). Straw Man> The mason works under contract to build a wall. The nature of bricks, and mortar, and the process preclude the possibility of "bricks falling out the bottom."

      Now, if the dev was hired on contract and found, on testing, that his work had a bug then it should be in the contract what the devs responsibility should be. Exactly and clearly what his responsibility is.
      Now, if the dev is hired as an employee, then they are working on the clock and their work on the clock is based on their employment contract. Nothing more and nothing less.

      What other world is there? Oh yeah, the world where you fools accept a contract that doesn't have a 40 hour week or over time compensation or all the things that protect a brick mason from being raped by their employer. So you have gladly accepted an employment contract that lets your employer treat you like crap and all you can do is write in to a forum and risk getting raped for that too? Too bad, just too bad.

      Why did you let yourself get into this?

      --
      Subversion of spatial scale luxury decoration ideas.
    67. Re:what if... by Anonymous Coward · · Score: 0

      People have been building walls since neolithic times. That's around 5,000 years+ experience in this task. It's a well understood problem set.

      I'd suggest that if I write a 'hello world' script I will fix any bugs in this script in my own time.

      If this guy wants something for nothing, I suggest he listens to the sound of his own voice.

    68. Re:what if... by mtthwbrnd · · Score: 1

      A "consultant C" hired at 5x the rate.

  2. Bad Analogy by rjstanford · · Score: 4, Insightful

    If a bricklayer, working for a wall-building company did this, then he'd be paid his normal wage to fix the wall (or fired if it was an egregious enough problem).

    The wall-building company itself may indeed fix the wall gratis, but a certain amount of re-work is already baked into their bids. That's one of many, many reasons why companies bill out workers at 2X-3X the amount that they pay them (see also taxes, offices, holidays, paid downtime, &c). Its a cost of doing business for the company, not the employee.

    If you're a 1099 contractor then I'd say that if you were working hourly it'd be the same situation as if you were an employee; if you'd bid the project as a project then I'd expect you to deliver it properly functioning, but again I'd also expect that your bid would have accounted for some possible rework.

    --
    You're special forces then? That's great! I just love your olympics!
    1. Re:Bad Analogy by rjstanford · · Score: 1

      The word "builder" in the summary is more than a little confusing, since it may refer to anything from a large company responsible for developing raw land into finished houses to a single person responsible for putting bricks on a foundation. Colloquially the latter may be more common, and indeed I believe that the summary is written in that way, however in the industry I believe the former would be the assumed definition (its short for "homebuilder").

      --
      You're special forces then? That's great! I just love your olympics!
    2. Re:Bad Analogy by Anonymous Coward · · Score: 0

      A bricklayer is a bad analogy. But the quality of software has been a topic of discussion before. The question is why there is not the equivalent of a professional engineering license for software. A PE in another field would have to be tested to show that they are competent, would sign off on their work, and if it breaks they're liable.

    3. Re:Bad Analogy by tthomas48 · · Score: 2

      It's a bad analogy because non-software engineers who do really creative work generally do have similar failure rates to software engineers. If you look at builders of original architecture they have to deal with fixing a lot of problems. Petroleum engineers have all sorts of inefficiencies and failures. Bridges that are in any way original are frequently known to fail. Let's stop comparing complex software applications to incredibly standardized roads.

    4. Re:Bad Analogy by rjstanford · · Score: 1

      There is, at least in Texas: http://www.tbpe.state.tx.us/do...

      However, the vast majority of software will not need a PE license, just as the vast majority of construction does not need to be sealed. Its likely to be mandated in the future for things like avionics, control software, or large projects such as state level payroll systems, which will be interesting to watch.

      --
      You're special forces then? That's great! I just love your olympics!
    5. Re:Bad Analogy by Anonymous Coward · · Score: 5, Insightful

      This is Insightful, not "Interesting". In most sane nations, there are things called laws that govern how employers must treat employees. In almost all cases,

        1. mistakes by employees are owned by the employer
        2. the employer must pay employees for their time, irrespective if they are correcting their mistakes, others, or whatever.

      If the employer does not like the work of an employee, they can fire them. But they cannot demand employees work for free. Money flow is always one way, even if employees were negligent.

      The sad thing is, there are plenty of shitty employers that take advantage of complicit or mostly ignorant employees. The bottom line, if there is an employment contract and there is employment law that can trump contracts. Employees would be well advised to understand both.

      So for the original question, if an employer is telling you to "fix problems for free",

        1. start looking for a new job
        2. document all time you've spent fixing stuff on your own time (or better, refuse to work for free)
        3. after you get new job, contact a lawyer regarding local labour laws.

    6. Re: Bad Analogy by Anonymous Coward · · Score: 0

      It's mandated NOW for avionics software. If you haven't worked on certified safety critical software you have no idea how onerous certification of code is.

      Stuff that might make the plane crash requires 100% of all software paths to be tested, 100% of code to trace to design requirements and it all has to be done using certified tools and it's all done independently (usually by a 3rd party) and all overseen by an FAA reviewer.

      The average slashdotter would shrivel up and die if they tried to write FAA certified avionics code.

    7. Re:Bad Analogy by s.petry · · Score: 1

      Add this:
      -1. Request all demands for "Free Work" in writing. This will make 3 easy if it's needed, and may excuse or exclude 2 (these types of demands). 1 is probably a good idea, rarely does a company change enough where this nonsense will not happen again.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    8. Re: Bad Analogy by rjstanford · · Score: 2

      That's not the same as requiring a PE to seal it though, mainly because software PE licenses are a new concept (I'm not actually sure that any have been granted yet to be honest, although they certainly will be granted this year). Even that's going to be interesting, because PE's typically seal a design, never an implementation - and its still a little grey as to which category software fits into. Are the specs sealable? Is the code? Its hard to see how the deployment of code could be, but I guess we'll find out over time (and a few lawsuits).

      FWIW, I'm in software, my wife is a civil PE focusing on construction. Makes this an interesting thread :)

      --
      You're special forces then? That's great! I just love your olympics!
    9. Re: Bad Analogy by rjstanford · · Score: 1

      Should also add - sealing something as a PE is a really, really big deal. There are substantial penalties for companies trying to "force" a PE to seal a design when they don't want to. Even though most engineering firms provide insurance, when a PE seals something they're taking personal responsibility, legally, for the documents that they seal - if any issues come up that are determined to be faults in the design, its the PE who's legally on the hook, not their employer.

      --
      You're special forces then? That's great! I just love your olympics!
    10. Re:Bad Analogy by Anonymous Coward · · Score: 0

      Sadly, I've met managers who believe the employee should fix bugs on their own time. I even worked at a company (which I would *love* to name but can't) and thank God I don't work there anymore.

      Get out of there as soon as possible!

    11. Re: Bad Analogy by Anonymous Coward · · Score: 0

      Should also add - sealing something as a PE is a really, really big deal. There are substantial penalties for companies trying to "force" a PE to seal a design when they don't want to. Even though most engineering firms provide insurance, when a PE seals something they're taking personal responsibility, legally, for the documents that they seal - if any issues come up that are determined to be faults in the design, its the PE who's legally on the hook, not their employer.

      To add to this... my old boss had signed off on something for a building, back in the beginning of his career in a different field. There was an accident, like a decade later. He was in another country, but still had to get into town overnight for a meeting the next day.

    12. Re:Bad Analogy by dnavid · · Score: 1

      It's a bad analogy because non-software engineers who do really creative work generally do have similar failure rates to software engineers. If you look at builders of original architecture they have to deal with fixing a lot of problems. Petroleum engineers have all sorts of inefficiencies and failures. Bridges that are in any way original are frequently known to fail. Let's stop comparing complex software applications to incredibly standardized roads.

      Not even close. Yes, the farther you venture from standard building codes or standardized engineering, the more likely it is that novel designs will have flaws prior engineers did not have to deal with. However, the failure rates outside of software are probably several orders of magnitude less frequent on average, and generally at least an order of magnitude lower in severity.

      Yes, occasionally something spectacular happens and you have something like the Tacoma Narrows bridge. But then everyone learns from that disaster, and almost no one anywhere makes that same mistake again. If they do, they often go to jail or face severe penalties. In software, a spectacular crash caused by a particular kind of bug isn't publicly analyzed and the entire software development industry doesn't pass new standards that proscribe avoiding that error in the future. In engineering, the saying goes that code is written in blood. A mistake happens, people die, and building codes are changed to prevent that from happening again. Its often spoken about in engineering circles with a fair amount of derision: people actually have to die before we decide to change the rules. But in software its far worse because NO AMOUNT OF PEOPLE DYING would eliminate a class of bug. Because software is just this crazy complex beyond human comprehension thing we can't make rules about because its all voodoo and chaos theory.

    13. Re:Bad Analogy by tthomas48 · · Score: 2

      "In software, a spectacular crash caused by a particular kind of bug isn't publicly analyzed and the entire software development industry doesn't pass new standards that proscribe avoiding that error in the future"

      What is a spectacular crash in software? I hear what you're saying, but you're basically defining why we haven't had this level of introspection. Software just doesn't fail that catastrophically. Being unable to load the healthcare.gov website does not in any way compare to a bridge collapsing killing hundreds of people. If you really think about it a pretty good case could be made for roads being just as buggy as software. Thousands of deaths in my state alone each year? Perhaps it's just that the bar for software "working" is quite a bit higher in software than for many other bits of engineering. Software needs to be innovative, aesthetically pleasing, easy to operate, functional, highly available, and more.

    14. Re: Bad Analogy by hermitdev · · Score: 1

      Residing in Illinois, I've yet to hear about anything resembling a PE for software/computer science. I did, however, take and pass the EIT (the Engineers Internship Test - or something resembling that) for electrical engineering. I've not tested for the PE, because I've not met the requirements: minimum "apprenticeship" working underneath a licensed PE for 2 years in your field (I've been working the last decade as a software engineer).

    15. Re: Bad Analogy by hermitdev · · Score: 1

      It should be said that there are personal & legal responsibilities that PEs & licensed engineering interns hold above and beyond a normal employee. It doesn't just extend to quality of design, but also ethics.

    16. Re:Bad Analogy by hermitdev · · Score: 1

      You're an AC, spill the beans, just don't say anything that could tie it back to you as an individual.

    17. Re:Bad Analogy by Belial6 · · Score: 1

      On the other hand, in engineering if no one dies, the defects will continue forever, whereas in software development, lawsuits can result from minor cosmetic problems.

    18. Re:Bad Analogy by DMUTPeregrine · · Score: 1

      Also, quite a lot of software is under active attack. Civil engineers don't design their bridges to resist being dynamited, because to do so would require ridiculous amounts of extra work. Software engineers DO need to design their applications to be secure, and when they don't they have to go back and try to fix things. Either way it takes much more work. The environment is much more hostile.

      --
      Not a sentence!
    19. Re:Bad Analogy by Anonymous Coward · · Score: 0

      For any bridge that fails 20,000 don't, this not in the ballpark, it's not even in the same state. Ditto for buildings.

    20. Re:Bad Analogy by Mr.+Freeman · · Score: 1

      That's yet another terrible analogy! Dynamiting a bridge is akin to an IT administrator sabotaging a system from within. That's also a terrible analogy, but at least it's closer than your comparison.

      --
      -1 disagree is not a modifier for a reason. -1 troll, flaimbait, redundant, overrated are NOT acceptable substitutes.
    21. Re: Bad Analogy by Mr.+Freeman · · Score: 1

      You did not pass the EIT, you passed the FE exam. That's the Fundamentals of Engineering Exam. Because you passed it, you are now an Engineer In Training (EIT) or an EI (Engineering Intern). (Those terms both mean the same thing and are entirely interchangeable.)

      --
      -1 disagree is not a modifier for a reason. -1 troll, flaimbait, redundant, overrated are NOT acceptable substitutes.
    22. Re:Bad Analogy by Anonymous Coward · · Score: 0

      Request all demands for "Free Work" in writing. This will make 3 easy if it's needed, and may excuse or exclude 2 (these types of demands).

      Sane people don't bother with a lawyer. What's the point? What's the damage? If the employer doesn't like your work, he can just fire you. Well, at least in sane nations he can.

    23. Re:Bad Analogy by crutchy · · Score: 1

      in engineering if no one dies, the defects will continue forever, whereas in software development, lawsuits can result from minor cosmetic problems

      i think you'll find it's the other way 'round

      engineers don't have the luxury of disclaiming away liability

    24. Re:Bad Analogy by Half-pint+HAL · · Score: 1

      That's yet another terrible analogy! Dynamiting a bridge is akin to an IT administrator sabotaging a system from within. That's also a terrible analogy, but at least it's closer than your comparison.

      It's a perfectly good analogy. A bridge is on public land and you can get to it dead easily, and you don't have to be an insider. His point is that you don't have to design impenetrable fences to prevent people accessing the bridge stancions, and you don't have to build in dynamite detectors just in case the impenetrable fence fails, and you don't have to make the bridge extra strong in case the dynamite detectors fail to alert you in time to stop the attack. All the integral security that you have to factor in makes a computer system very complex indeed....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    25. Re:Bad Analogy by dcw3 · · Score: 1

      Unless you're this guy, who's done the same shit twice now.
      http://idle.slashdot.org/story...
      http://www.bbc.co.uk/news/maga...

      --
      Just another day in Paradise
    26. Re:Bad Analogy by Anonymous Coward · · Score: 0

      NO AMOUNT OF PEOPLE DYING would eliminate a class of bug

      That is simply not true. The fact that you believe this tells me you've never worked with software, or you've worked with software and you're blind to industry standards. There are standards in the financial industry that must be upheld(I don't have the document numbers on me, but they exist if you search for them), which have been created to prevent monetary loss.

      Others have been created to prevent loss of life(people dying). In aviation, the one I know for sure is DO-178, as well as other DO documents(there are several that are closely knit due to the nature of embedded systems). DO-178 outlines the requirements placed on software. For the highest certification, you have to do an incredible amount of testing on your code. To name a few things you have to do: you have to prove every single line of code can be executed, and you have to prove that all functions will work for all inputs(whether that means fail gracefully or return the correct value). This is not something that is easy to accomplish. Not only do you have to write the software, but you have to prove every single line is correct. For systems that are in the 100,000s of lines of code, this becomes a huge issue(and is a main reason why most critical avionics run on proprietary, embedded software rather than Linux or Windows).

      I'm sure there are similar standards for water craft, automobiles, medical equipment, and anything else that can cause people to die.

      The vast majority of software does not require this amount of scrutiny, because the vast majority of software is not running on equipment that can kill you or otherwise ruin your life. If your Angry Birds crashes, is the developer liable and owe you money? If Excel crashes while you're working and you lose data, is it Microsoft's responsibility to pay for the damages? The answers are no and no. Restart the app, and save often.

    27. Re:Bad Analogy by 3.5+stripes · · Score: 1

      So all those saboteurs during WWII who dynamited bridges were actually the people responsible for the bridges? :|

      --


      He tried to kill me with a forklift!
    28. Re:Bad Analogy by Anonymous Coward · · Score: 0

      Yes, because we need more incompetent engineers that raise the costs of projects to dramatic affects. If you're into any construction, you'll see how ridiculous it gets to the point of requiring a PE to stamp literally everything, including putting a desk in an office. And if your project is in an area where they lack PE's (Which is a lot of areas lately, to the point that some states have allowed PE's from other states to stamp drawings), you're pretty much screwed with idiot inspectors.

    29. Re:Bad Analogy by grantspassalan · · Score: 1

      ..."Because software is just this crazy complex beyond human comprehension thing we can't make rules about because its all voodoo and chaos theory."

      It is not so much that software is crazy and complex, although it is, but the fact that computers are dumb machines that somewhere along the line have to be told every little step along the way.

      Humans are not like that and even small children learn from their mistakes. In information science, terms like artificial intelligence and machine learning are often bandied about. The problem is that computers don't really "learn" the way people do and fix their own mistakes. That was illustrated to me some years ago by watching my son-in-law, who is a skilled software engineer, train his firstborn son how to walk. He simply helped the little tyke to stand up and then moved back a step or two, holding his arms wide and let the little one take a step or two and then of course fall down. Daddy helped him stand up again and repeat the procedure. Pretty soon the little fellow was taking three or four steps before falling.

      This procedure is far different from programming a computer, in that nowhere did the father make an attempt to teach the boy how to move his leg muscles to maintain his balance. The kid learned that all on his own, but no computer is capable of learning a thing, unless first instructed in the minutest steps. The little boy did not need to be instructed in the details of which muscles to move when and how and what the response to the signals from the balance sensors in the ear should be. Computers are complex yet unbelievably dumb machines that have to be told every little detail of a procedure to achieve a given goal. Humans are not nearly as detail oriented, therefore we often miss communicating the minute details that computers must have. As they say, the devil is in the details and that is especially true when it comes to instructing computers how to accomplish something useful.

      --
      A sufficiently advanced simulation is indistinguishable from reality.
    30. Re:Bad Analogy by Idbar · · Score: 1

      Bad analogy also because bricks have a single shape. Now go ahead and give the builder many different shapes that they have to use in a particular order so the wall actually holds together in the best way. Then ask them to put those bricks in such a way that the end result is the one the customer required.

      Or maybe, you can just ask your manager to provide you only one line of code you can use and you'd glue the many lines with semicolons. (I guess you can do anything you want with just NAND gates, but it may turn fairly unmanageable rather quickly).

    31. Re:Bad Analogy by Belial6 · · Score: 1

      That's not true. If my house burns down, no engineer is going to be sued. If my car crashes, no engineer is going to be sued.

    32. Re:Bad Analogy by david_thornley · · Score: 1

      Failure rates outside software are far less because the engineers are working with less complex and better understood materials. A program generally has far more "moving parts" than a machine of the same scale, and they can interact with each other in more unexpected ways. Similarly, we've been building machines and bridges for millennia, and software for decades.

      Moreover, a brick wall is just production. The appropriate people understand how to mix the mortar, how to lay the bricks, the dimensions of the wall, etc. The corresponding act in software would be compiling and/or making additional copies. Building bridges is somewhere in between, but building a bridge like the last one is better understood than writing a program like the last one.

      In order to make software more comparable to bridge building, we'd have to do several things. We need better ways to control complexity and reduce interactions between nominally unrelated parts of the software. We need a century or three of experience. We need to establish better ways of developing software that management will go along with. We need more objective measures of software quality.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    33. Re:Bad Analogy by Anonymous Coward · · Score: 0

      Software just doesn't fail that catastrophically.

      I present to you the Therac-25 radiation therapy machine. It's worth mentioning that the government and industry did respond with new rules and standards regarding the development of software used in medical devices.

    34. Re:Bad Analogy by crutchy · · Score: 1

      If my car crashes, no engineer is going to be sued.

      engineers are responsible for design, not generally construction... if the cause of the car crash is found to be a design flaw, the engineer could (and probably would) be sued... even if not by the passengers, by the insurance firm.

      but what would i know... i'm just an engineer

    35. Re:Bad Analogy by lennier · · Score: 1

      What is a spectacular crash in software? ... Software just doesn't fail that catastrophically

      Wut.

      Oh yes it does. If you don't realise that Internet security is already a catastrophe then I just don't... you really really need to get out more.

      We're living through the biggest security and privacy disaster in the Internet's short history. We don't yet understand the full dimensions of the damage, but we understand this: it was almost entirely preventable. Inexcusably shoddy software workmanship, defended with exactly the argument you're making, is what caused this.

      We won't progress as an industry until we learn the meaning of "first do no harm". First, deploy no root exploits to your customers. Then we can talk about efficiency, productivity, market forces, and what colour the fifth pixel from the left on the splash screen should be.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    36. Re:Bad Analogy by Belial6 · · Score: 1

      In software, it is considered a design flaw if the software CAN crash. The fact that my car can crash at all is a failure at the design level. It has just been decided that we won't count that. We will just blame it on the driver. With software, we don't get to blame the user for putting text into a date field. In software, that is considered a flaw in the software.

    37. Re: Bad Analogy by hermitdev · · Score: 1

      Correct, it's been so long that memory was fuzzy on the terms.

    38. Re:Bad Analogy by crutchy · · Score: 1

      you are obviously not an engineer

    39. Re:Bad Analogy by Belial6 · · Score: 1

      In other words, you agree completely.

  3. It's called being an employee by Anonymous Coward · · Score: 1

    When a bricklayer who is an EMPLOYEE builds the wall, even if it's defective, he fixes it on the company's time. If he's a contractor, then yes, he fixes it (depending on the contract) on his own time.

    bottom line: if you're in California at least, you could probably sue for your boss just THINKING about having you do work (whether new work or fixing your old own work) off the clock.

    1. Re:It's called being an employee by SecurityGuy · · Score: 1

      Exactly. $BOSS is an idiot. Everyone and everything has an error rate. Software development is well known not to be a perfect process. Even the very best developers create bugs. Your boss didn't hire some theoretical perfect developer, he hired you. If he's not happy with your error rate, he can fire you, but he can't require you to work for free just because you aren't as good as some theoretical perfect developer.

    2. Re:It's called being an employee by indeterminator · · Score: 2

      Everyone and everything has an error rate. Software development is well known not to be a perfect process.

      Building a wall (or a better analogy, designing the house the wall will be a part of) is no perfect process either.

      I just recently thought about why software is so difficult, compared to physical engineering tasks. A big difference I found (aside from the obvious practicalities, such as lacking proper specification and resources) is lack of tolerance in how software is being built. When you're designing a supporting wall for a house, you calculate how much weight it needs to be able to carry. Then, you multiply that weight by a safety factor, adding tolerance. Similarly, when actually constructing the wall, the bricks don't need to be perfectly aligned, good enough is good enough, the final adjustment can be fixed with bit more or less mortar.

      A lot of software is built with low tolerance. Part of it is cutting costs, part of it is just immaturity of the industry. There are already known good practises for increasing tolerance of software development process. Worried about buffer overflows? Use a language that makes them impossible. Data loss? Use a known good DB (and learn to use it) instead of inventing your own storage. Developers writing bad logic? Require proper testing and code reviews. All of the previous requested, but not happening? Bring in a competent project manager.

      Then there's the whole other unique issue that software development faces, changing requirements. Construction workers will likely give you the finger, then go drink some beer and laugh about it, if you tell them that the garage they have built half-way actually needs to be a cathedral by the end of the month. In software, that's business as usual.

      And then, every once in a while, walls collapse too. Sometimes they find someone who had not done his job properly, sometimes it's just written down as a sum of consequences.

    3. Re:It's called being an employee by mysidia · · Score: 1

      If he's a contractor, then yes, he fixes it (depending on the contract) on his own time.

      If he's a contractor, then he probably BOTH builds AND fixes it under most likely the same terms, because a self-employed contractor would be paid for building the wall: not paid for spending X hours building the wall.

    4. Re:It's called being an employee by lucm · · Score: 1

      When a bricklayer who is an EMPLOYEE builds the wall, even if it's defective, he fixes it on the company's time. If he's a contractor, then yes, he fixes it (depending on the contract) on his own time.

      The wall builder analogy is flawed. The only wall builders who will actually fix things on their own time are those who entered in a "turn-key" agreement, which is typically a lot more expensive than an hourly rate because the client is buying results, not labor. Usually those wall builders are very careful about what is covered and they end up charging a fortune for extras. Ask any company who outsourced anything to IBM.

      --
      lucm, indeed.
    5. Re:It's called being an employee by DMUTPeregrine · · Score: 1

      There's also the security aspect to software. Unless you're designing army bunkers you probably aren't trying to make the walls bulletproof. But if you're designing software that interacts with networks, well, you have to consider security.

      --
      Not a sentence!
    6. Re:It's called being an employee by gnupun · · Score: 1

      When a bricklayer who is an EMPLOYEE builds the wall, even if it's defective, he fixes it on the company's time. If he's a contractor, then yes, he fixes it (depending on the contract) on his own time.

      This analogy shows how non-software developers view developers -- same as every other skilled labor. Except a developer is beyond that -- not only is the wall he is building a different shape each time (not flat), the bricks needed also have to be designed specific for each construction. In other words, even after gaining programming skills, it's not a repetitive job, unlike real wall building.

      When you're creating a new type of wall with a new type of brick, it's bound to fail and will need additional time to fix the defects -- paid of course by the boss/company of the employee.

    7. Re:It's called being an employee by Anonymous Coward · · Score: 0

      Hell, even if the employee the boss hired is perfect, they have to use other libraries/code and other tools which are probably not perfect or else reinvent the wheel a million times which takes time.

    8. Re:It's called being an employee by twrake · · Score: 1

      I say the $BOSS is an idiot, too because his analogy only applied in his mind.

      Lets complete HIS thought experiment.. He changes policy and requires all software developers to fix their own bugs on their own time. I think most would quit, some would argue that but is really caused by a programmer who quit last week. Some will question who fixes the bugs introduced by the fix. Other will argue the whole project in the source of the bugs. None of this will produce less bugs in the future or hire better programmers. In the end the smarter programmers will likely quit first.

      Or tell the boss to start a construction company because that is so easy. If the boss already has a construction company let him hire some of the labor to do his programming jobs.

      Tell the boss to get a clue!

    9. Re:It's called being an employee by Boronx · · Score: 1

      Software is difficult because it's hugely complex. Any mechanical component has about as many degrees of freedom as two or three lines of code. That means designing a 1000 line program, which is pretty small, is about as complex as designing a 300-400 part mechanical device. You just can't do that cheaply and get a result that's going to work perfectly the first time.

  4. Your boss knows fuckall about construction by Anonymous Coward · · Score: 5, Insightful

    "In most cases, he would have to replace those lower bricks at his own expense and on his own time."

    LOLWHAT. What construction company says "turns out there was a flaw in our design, or maybe you made a mistake. Come back after hours and fix it on your own time." I'm pretty sure that has happened 0 times in legitimate construction. It would be chalked up to a mistake and would be rectified by the construction crew, not one dude with a bucket of bricks and some concrete at 8pm the following night.

    1. Re:Your boss knows fuckall about construction by Anonymous Coward · · Score: 1

      I don't know much about wall builders, but I've worked with more than a few pipeline companies (admittedly, only doing field tech work, but I've seen quite a bit). If, say, they told a welder to work for free to fix a bad weld or joint of pipe, I bet that everyone on the jobsite would quit (after their next paycheck).

      Also, advice to the submitter: don't stick around a boss with ideas like that popping into his head.

    2. Re:Your boss knows fuckall about construction by phantomfive · · Score: 1

      The closest I've ever seen is threats to take the cost out of my paycheck if I accidentally broke a foundation.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Your boss knows fuckall about construction by DoofusOfDeath · · Score: 3, Insightful

      The closest I've ever seen is threats to take the cost out of my paycheck if I accidentally broke a foundation.

      I believe that in the U.S. that would be illegal. In fact, if he was threatening to commit an illegal act against you, you may have the grounds for a lawsuit already.

    4. Re:Your boss knows fuckall about construction by AK+Marc · · Score: 1

      So negligence resulting in damage is *never* the responsibility of the employee? What if when I worked retail, and I was on the clock for dropping money in the deposit box at the bank, if I robbed the bank while on the clock, the bank could sue my employer for robbing the bank?

      I don't believe that such protections exist everywhere, even if someone else pointed out it works that way in California.

    5. Re:Your boss knows fuckall about construction by Anonymous Coward · · Score: 0

      Only in some states... other states allow pay docking for damages as long as it's in the contract and doesn't result in a fall under the minimum wage. (I am not a lawyer)

    6. Re:Your boss knows fuckall about construction by DoofusOfDeath · · Score: 1

      You're talking about a willful act (and a crime, in fact) vs. accidental damage. AFAIK those are two very different categories as far as criminal- and labor-laws are concerned. But IANAL, so feel free to hire one or use Google.

    7. Re:Your boss knows fuckall about construction by AK+Marc · · Score: 1

      So now, you are saying that if the employer believes (or proves) the act was willful, that they can force an employee to work for free?

    8. Re: Your boss knows fuckall about construction by DoofusOfDeath · · Score: 1

      Google is your friend. Go have an argument with it, not me.

    9. Re: Your boss knows fuckall about construction by AK+Marc · · Score: 1

      You are disagreeing with me. My argument is with the argumentative person disagreeing with me. Asserting something, then crying about how I should prove it for you (when you are wrong in the first place) seems a colossally stupid stance, so I was presuming I misunderstood. Apparently I didn't.

    10. Re:Your boss knows fuckall about construction by cryptizard · · Score: 1

      That's an easy one, you cannot trip and accidentally rob a bank. That requires intent and malice aforethought.

    11. Re:Your boss knows fuckall about construction by AK+Marc · · Score: 1

      Nope. If you went to make a deposit and noticed that the previous deposit was improperly secured in the back (perhaps still being counted), making gun silluattes in your pocket and threatening someone is still "armed robbery" and could be quite spontaneous.

      But, aside from the comments about the analogy, taking the analogy back to the original issue means you are asserting that if the employee had malice aforethought before damaging something, then the employer could make them work for free. That still doesn't sound right. And note, pursuing them for damages in court is not forcing them to "work for free" to fix it.

  5. Nonsense by Anonymous Coward · · Score: 1

    If I'm a doctor, and patients dies, should I return the money?

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

      No, you get sued for everything you are worth, and your insurance company settles, so your rates go way up next year.

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

      Nonsense. If this happened no doctor would treat anyone with any kind of serious wounds.
      They'd simply say, no he's likely to die and I don't want to take him as a patient.

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

      Nonsense. If a doctor refused to treat someone with serious wounds, they'd get sued for everything they were worth, their insurance company settles, so your rated go way up next year.

    4. Re:Nonsense by elloGov · · Score: 2

      Where is my ever lasting car? Why am I paying all this money to mechanics over and over again. Only if I had gotten a brick wall to get me to and from work.

    5. Re:Nonsense by Oligonicella · · Score: 1

      Depends on the circumstances. Doctors indeed get sued for malpractice - leaving surgical instruments inside, prescribing the wrong drugs, etc. It's not at all an uncommon occurrence either.

    6. Re:Nonsense by AK+Marc · · Score: 1

      You've never heard of "malpractice"?

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

      and if I'm a veterinarian?

  6. simple by Anonymous Coward · · Score: 0

    Because the market says developers don't have to. Supply and demand. If there were developers in supply than the current demand then pay would decrease and developers would need to start doing things like this. As it is developers are in a good position... obviously better than builders.

    1. Re:simple by Anonymous Coward · · Score: 0

      btw, it's not clear if you're an employee or contractor. In the US, employees are never supposed to work for free. Even if they screw up. It's the law.

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

      No, it's because labor laws don't allow employers to make you work for no money if you're not, for example, in a legal, unpaid internship. This is obviously different than being an exempt employee and being asked work overtime with no extra compensation as they are still paying you your salary.

  7. No... by Anonymous Coward · · Score: 0

    If a contractor is paid hourly, it is pretty common that they will count the hours it takes to fix any screwups that occur during the building process.

    Shit happens, that's part of the job.

    However, if they make many mistakes and cost the employer more money than other similar contractors, then they may not get the next job... or they may have to take a lower hourly pay due to their lesser quality workmanship.

    If, on the other hand, the job is bid at a flat amount, the contractor eats any extra time it takes to fix the problems. Same applies to software development.

    The real problem here is people who hire exempt, salaried software developers - and then expect them to work extra hard to "do their job"... If you, as a salaried employee, claim it will take you X number of hours to do a job, and fix the bugs, then it's your job to try and hit that schedule - just like the guy who bid the flat rate.

  8. Must of been a non-union builder... by JDAustin · · Score: 1

    ...if it was a union job, the employer would be paying twice.

    1. Re:Must of been a non-union builder... by rmdingler · · Score: 3, Insightful
      While influential unions are infamous to a near mythical degree for protecting mediocre tradesmen, their real strength lies in the ability to bottleneck the number of skilled tradesmen for a particular task in a given location.

      There were a couple of generations after WWII where one could argue they became unnecessary, even tainted by organized crime in some circumstances. Current trends toward employment in jobs with subsistence wages, like any job in retail, make a case for the resurrection of worker's unions. These days, I am afraid the manufacturers of the World have virtually collectively decided the Western standard of living has become unacceptable to them.

      I find it funny (funny strange not funny ha-ha) elite earning athletes have collective bargaining agreements, and people who work at Walmart qualify for government benefits.

      --
      Happiness in intelligent people is the rarest thing I know.

      Ernest Hemingway

    2. Re:Must of been a non-union builder... by Anonymous Coward · · Score: 0

      I find it funny (funny strange not funny ha-ha) elite earning athletes have collective bargaining agreements, and people who work at Walmart qualify for government benefits.

      Spend a few seconds thinking about it and you will figure it out. Here's a hint: people watch professional sports because of the superstar players, not for the billionaire owners. People shop at Walmart for convenience, selection, and prices, not because they love the easily replaceable cashiers and clerks.

    3. Re:Must of been a non-union builder... by Anonymous Coward · · Score: 0

      It really depends. The teacher's unions in my area are choking the residents to death with tax raises. We fund schools via property/school taxes, so everyone pays, either directly or via rent to a landlord that pays. A small house is 2,500 a year, something larger is easily $7,500-10,000. The majority (90%) goes to the school. The school district can almost unilaterally raise rates. Back in 2009-9, when the stock market crash, the pension fund they gambled with went to shit, and instead of teachers eating it, they just raised rates on everyone else. Teachers here already make much more than median when benefits like health care are included in calculations.

      Even Roosevelt was against public unions:
      http://www.politifact.com/wisconsin/statements/2013/aug/13/scott-walker/Did-FDR-oppose-collective-bargaining-for-governmen/

      I'm okay with unions outside the public sphere under certain conditions, such as them and corporations (only individuals) not being allowed to give money to candidates or to spend money on lobbying on any level of government. Unions and corps should not be operating as PACs.

    4. Re:Must of been a non-union builder... by lwriemen · · Score: 1

      Wow! What an amazing load of ignorance. Obviously you should go get your teaching certificate, so you can become one of the chosen few.

    5. Re:Must of been a non-union builder... by lwriemen · · Score: 1

      Professional players unions arose from a need, even if they seem laughable now. One reason athletes should get higher pay is that they have much shorter careers. i.e., 15 years vs. 40 years.

    6. Re:Must of been a non-union builder... by Whorhay · · Score: 1

      rmdingler wasn't objecting to the high salaries paid to professional athletes. S/He was just saying they thought it is funny that those athletes are essentially unionized.

  9. Builder = Business != Individual by shri · · Score: 4, Insightful

    The analogy is incorrect. The builder is often the business owner and it is the business that is paying to remedy the defects. If the mechanic at a car dealer got something wrong, it would be the car dealership's problem, not the employee's problem (he could get fired .. but he would not have to pay for the replacement - assuming this was a sanely run business).

    Costs of bugs / fixes etc are built into the product development cycle.

    Would be another story if you came into office drunk and added a whole lot of code that then needed to get fixed. i.e. You were personally negligent and should be held liable for your actions (in my opinion).

    1. Re:Builder = Business != Individual by Anonymous Coward · · Score: 0

      I don't know about others - but I tend to write OK code when drunk ;)

    2. Re:Builder = Business != Individual by nospam007 · · Score: 2

      "The builder is often the business owner and it is the business that is paying to remedy the defects. "

      I don't know how it is in the US, but where I live, builders have to have an insurance that guarantees free repair for faulty work for 10 years, even if the company goes bust.

    3. Re:Builder = Business != Individual by rjstanford · · Score: 3, Informative

      I don't know how it is in the US, but where I live, builders have to have an insurance that guarantees free repair for faulty work for 10 years, even if the company goes bust.

      And its often the case with software that a large sale will include items such as insurance requirements, performance guarantees, and even source code escrow, to help provide a similar level of assurance.

      --
      You're special forces then? That's great! I just love your olympics!
    4. Re:Builder = Business != Individual by magarity · · Score: 1

      The analogy is incorrect.

      It's incorrect all right, but not for the reasons you mentioned. If a software developer sees the problem with the proverbial bricks at the bottom and wants to fix them, the manager will say there is no time for that right now and get to on with the project plan.

    5. Re:Builder = Business != Individual by Anonymous Coward · · Score: 0

      Good luck forcing a builder to work when he goes bust and works for another company. There are laws against that as well. Do you honestly believe that someone is going to come down and fix everything messed up after 10 years? Such guarantees are just feel good guarantees and really offers no guarantees at all but makes the peasants settle down. I've yet to see anyone enforce such a rule onto anyone unless the company that went bust still exists in some form, other wise you're SOL.

    6. Re:Builder = Business != Individual by Anonymous Coward · · Score: 0

      A little alcohol takes the edge off (i.e. reduces stress) and can be good for writing code. A lot of alcohol makes me slow & stupid.

      Otoh, I write nice code while smoking/vaping sativa strain cannabis. Indica tends to have roughly the same effect as too much beer.

    7. Re:Builder = Business != Individual by NoOneInParticular · · Score: 1

      And we charge 20% maintenance fee to cover the cost of bug fixing.

  10. Building code is not the same as building a wall. by Timmmm · · Score: 1

    Correct me if I'm wrong, but wall-building happens pretty much the same way every time. There are building codes and whatnot. The builder has built the exact same wall many times before.

    Code is usually the opposite. It is more like building a bridge or a skyscraper. They're generally all different and involve architects. I'm pretty sure if there is a budget over-run when building a skyscraper the common practice is for the client to pay. Actually in some cases it is the contractor who pays, but the key point is that is negotiated in advance, and no sane programmer would agree to fix all bugs for free.

  11. developers don't cause bugs, QA does by RichMan · · Score: 5, Funny

    Bugs are escapes from the QA process. The QA people can fix them on their own time as the fault is in the QA process not the developer. :)

    1. Re:developers don't cause bugs, QA does by DERoss · · Score: 1

      Wrong! A good QA process prohibits the QA team from changing anything. QA can either approve the product or else send it back to the developers. In the end, QA is paid the same. Thus, QA has no vested interest in either approving or rejecting the product.

    2. Re:developers don't cause bugs, QA does by Anonymous Coward · · Score: 0

      I will happily fix this bug in my free time. change: FROM: "i >0;" TO: "i>=0;". In your free time please provide formal RCCA action documentation including the following: Root cause, as well as processes documenting your root cause analysis, at a minimum fishbone and four corners, corrective action to assure similar bugs occur in no future instance, objective evidence that corrective action has been implemented, and objective evidence that no further bugs will be introduced to validate this RCCA. With kindest regards, your software QA dept.

       

    3. Re:developers don't cause bugs, QA does by Anonymous Coward · · Score: 0

      I know what you mean. I want Norton to fix my computer because suddenly I keep getting viruses ever since I installed it. It's their fault after all! Now don't get me started with my dentist...

    4. Re:developers don't cause bugs, QA does by Anonymous Coward · · Score: 0

      The creation of the QA dept was approved by management. So management approved a faulty QA process. The company hired the management, and therefore the company created the bug and should be the one paying to fix it!

      So, tell your boss that you expect the fix by CoB Fiday.

  12. The Builder is working for himself presumably by SocietyoftheFist · · Score: 1

    If he is the amount he is charging doesn't change, he just ends up earning less per hour. If the builder is an hourly employee he will be getting paid hourly but the company he works for will make less money or even lose money. You are an employee, you receive an hourly wage or a salary for your efforts. If the company finds your efforts lacking they can fire you.

  13. Fire your boss by Anonymous Coward · · Score: 0

    Not only is it unethical to fix a bug on your own time, it's also illegal as well. Unpaid work is unpaid work, regardless of how you try to frame it.

  14. Analogies by Anonymous Coward · · Score: 0

    Bugs are not always due to coding, incomplete requirements etc. Building a wall would regularly be looking to achieve the same result, using same tools with little variance. This is not the same as software development. As analogies go it's pretty bad.

  15. not quite a direct analogy by Isara · · Score: 1
    Unfortunately, most software is so dependent upon other code that it's pretty difficult to find out where the problems lie before they get into a testing (or deployment *gulp* environment).

    So, in this case, the wall-builder would have had to have known that the bricks at the bottom were rotten at the core and couldn't handle the strain, or that there was a cavern in the earth underneath the wall, or that the mortar was bad. One could argue that it's the builder's role to know these things in advance, but it gets more complicated if the landowner's environment is the one causing the problems.

    --
    BOOP!
    1. Re:not quite a direct analogy by Half-pint+HAL · · Score: 1

      Indeed, and when dealing with B2B software suppliers, contracts will typically quote high investigation rates for bug reports, to be charged if and only if the "bug" is no such thing (most are user errors or problems with the underlying platform).

      Perhaps the OP should suggest the same thing to his boss...? I'll investigate in my own time, but if I determine the bug was A) a specification problem, B) a platform problem or C) someone else's bug, I'll be billing $200 an hour....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  16. We're in the pre-industrial era.. by MpVpRb · · Score: 2

    ..of software development, and even the best of us aren't very good at it

    If there was a foolproof procedure to guarantee bug-free code, and only the lazy or incompetent produced bugs, things would be different

    Unfortunately today, a talented, competent developer, using best practices, always produces bugs

    1. Re:We're in the pre-industrial era.. by Alef · · Score: 1

      Unfortunately today, a talented, competent developer, using best practices, always produces bugs

      As is the case with builders of pretty much any sufficiently complex system. The number of decisions and assumptions going into any reasonably advanced software is astounding, and the time spend on each of these is comparatively rather small. Furthermore, compared to other disciplines, I'd say software development man-hours usually involve a significantly higher ratio of "novel" solutions, since reuse of program logic through libraries is fairly easy. If you are an architect drawing a house, or a lawyer writing a contract text, much (though certainly not all) of what you do is repetition of something you have done a hundred times before. By the time a good programmer has solved the same programming problem twice, he/she has already made a library routine out of it. As long as there are humans developing the software, we can't expect perfect code, not today nor tomorrow.

    2. Re:We're in the pre-industrial era.. by Anonymous Coward · · Score: 0

      No, software development is in the industrial area all right. The problem is that wrong analogies are used to describe it.

      I saw a documentary once about how a production line for a new car model (the design for that had already been done) was developed. It was a lot like developing software: they designed, prototyped, tested, found and fixed bugs, ran into problems, redesigned parts, gradually improved the result. The process was far from predictable, and far from error free, even for people who were experienced, who knew what they were doing and who had a structured approach. Even in an industry with decades of experience in quality control this was not routine.

      Developing software is not like a production line that churns out cars (although many managers like to think it is), it is like building the production line itself. The resulting program is the equivalent of a production line processing raw data into something useful, in a repeatable and reliable manner.

  17. The client wanted it that way by codegen · · Score: 3

    What if the boss told him that he had to use these cheap thin bricks. He told his boss the bricks wouldn't work but the boss insisted that he use the inferior bricks. What then?

    --
    Atlas stands on the earth and carries the celestial sphere on his shoulders.
    1. Re:The client wanted it that way by Anonymous Coward · · Score: 0

      got this documented?

    2. Re:The client wanted it that way by shess · · Score: 1

      What if the boss told him that he had to use these cheap thin bricks. He told his boss the bricks wouldn't work but the boss insisted that he use the inferior bricks. What then?

      Then the boss would have to fix things on his own time. Duh.

  18. False analogy by Anonymous Coward · · Score: 1

    If a builder builds a wall that falls apart his company will cover the cost of rebuilding the wall.
    Maybe that specific builder will get fired.
    No one will work on their off time and everyone still gets paid.
    So suck it managers. In some countries they probably wont even replace the wall for you. (a certain country in south america where I lived comes to mind)

  19. Maybe yes, maybe no? by Tvingo · · Score: 1

    If you are salaried then no, you shouldn't have to stay late or work weekends to fix bugs. If they aren't satisfied with your work production in your 40 hour work week then they should let you go and try to find someone better.

    If you get paid hourly then perhaps. If it is irrefutable that its your fault/bug then you should feel obligated to fix for no extra charge/hours to them. If there is any doubt on the source of the bug (multiple developers) then you should be paid to fix it.

    If you are a contractor then almost certainly it should be fixed for free. You are paid to do a job and if it wasn't done right the first time then you need to make it right or expect not to get many more contracts if you leave behind in your wake bugs that either go unfixed, or you charge additional to fix.

    --
    Nothing i have to say is worth saying.
    1. Re:Maybe yes, maybe no? by Anonymous Coward · · Score: 0

      Sounds like you're saying "yes, bugs should be fixed free of charge by the person who created them" in all 3 cases... you provided 3 scenarios where the developer gets the short end of the stick if they created the bug.

    2. Re:Maybe yes, maybe no? by Fallen+Kell · · Score: 2

      If you are a contractor then almost certainly it should be fixed for free. You are paid to do a job and if it wasn't done right the first time then you need to make it right or expect not to get many more contracts if you leave behind in your wake bugs that either go unfixed, or you charge additional to fix.

      I disagree with this blanket statement. If you are a sole contractor who bid on a contract to produce software that does XYZ and it was a fixed price contract, than yes, I would say you need to fix the bugs. But that typically isn't the case for contract workers. They are contracted to fill required services, including development, and code debugging. If they are not satisfied with the level of code produced by the contractor, they have every right to end the contract, but asking for code debugging to be done off the clock is outside the scope of work.

      --
      We were all warned a long time ago that MS products sucked, remember the Magic 8 Ball said, "Outlook not so good"
    3. Re:Maybe yes, maybe no? by penguinboy · · Score: 1

      If you get paid hourly then perhaps. If it is irrefutable that its your fault/bug then you should feel obligated to fix for no extra charge/hours to them.

      Currently illegal in most if not all US states. When an hourly employee does work, they must be paid for all of their time.

      I certainly wouldn't want to see this change. Way too much room for abuse on the employer side. I think the current remedy is sufficient (if any employer thinks someone is screwing up too much, they can fire them).

    4. Re:Maybe yes, maybe no? by Desler · · Score: 2

      If you get paid hourly then perhaps. If it is irrefutable that its your fault/bug then you should feel obligated to fix for no extra charge/hours to them. If there is any doubt on the source of the bug (multiple developers) then you should be paid to fix it.

      With very few exceptions, having your employees work for no pay is illegal in the US. And, no, fixing a bug that you created is not one of those exceptions.

    5. Re:Maybe yes, maybe no? by Kjella · · Score: 1

      If you are a contractor then almost certainly it should be fixed for free. You are paid to do a job and if it wasn't done right the first time then you need to make it right or expect not to get many more contracts if you leave behind in your wake bugs that either go unfixed, or you charge additional to fix.

      That depends entirely on the contract form, most of my contracts have been "time and material" which in essence means you're buying hours, not deliverables. You may get estimates, but they're not in any way binding. The good news for those that hire me is that I'll work off anything, I've literally had a single post-it note as a "requirements document" for a report. If you want it yesterday and want me to rush it through testing and mostly skip documentation I will. The bad news is that I'll bill you for every hour no matter whose bug it is. I suppose if my entire performance was sub-standard given my title and pay grade I'd consider it, but not for just being less than perfect. You can terminate the contract if you're unhappy, but hours spent are hours paid.

      If I'm hired to do a "job" then I want a requirements phase with sign-off on exactly what I will be delivering. Any ambiguity in those specifications are your liability meaning if I implement it the "wrong" way you will have to pay to change it. Any decision formally asked for must be taken within specific time limits, your inability to decide will not hurt my schedule. If the requirements change, there will be formal change orders that may incur additional hours and costs. There will be documentation describing how the requirements are solved and a test plan wth an acceptance test and a sign-off that the work is delivered. After that, yes you'll get a limited warranty period where I'll fix any hidden bugs (that are actual bugs, not flaws in the spec) for free. And yes, for taking that risk I'll bill you more.

      --
      Live today, because you never know what tomorrow brings
    6. Re:Maybe yes, maybe no? by Anonymous Coward · · Score: 0

      Indeed, otherwise it would be far too easy for it to be irrefutable that it is your fault, lest you lose your job and are forever burned by the employer as a reference.

      I shudder to think what precedent that would also create for scapegoating the illegal stuff as well...

  20. Just a quick thought... by Anonymous Coward · · Score: 0

    Writing code is developing (almost like R&D) something new, where as with building a wall is just copying something that has already been developed. The process, materials, etc for building a wall are all predetermined, and the final result should be of a certain known quality. If it is not, then it was most likely the builders fault, or faulty materials. If the materials were faulty, the supplier may actually be just as liable as the builder.

  21. because it's not work for hire by hguorbray · · Score: 3, Insightful

    if you pay someone by the hour (or month) to write a document and there are typos, mispellings or factual errors you pay either the writer or an editor to take more time to make corrections.

    An exception would be if they are being paid solely upon the delivery of piecework(work for hire), in which case they would still not be liable to to fix if it were signed off (accepted) by the purchaser as having met the agreed upon criteria...

    The building analogy does not hold because writing and coding are(hopefully) iterative processes and some times you have to rip up or shift the foundations

    -I'm just sayin'

  22. The Contractor by Anonymous Coward · · Score: 0

    This is a bad analogy because the contractor would be required to fix it on his own dime, but the guy laying the brick would be paid.

  23. I'm no programmer, but... by arashi+no+garou · · Score: 1

    Aren't bugs impossible to avoid in programming, especially in complex projects? There's no such thing as a perfect programmer or perfect code; things can always be fixed, optimized, debugged, and improved. The brick wall analogy simply doesn't apply.

    1. Re:I'm no programmer, but... by rjstanford · · Score: 2

      I've yet to see a building project as complicated as a garden shed that's perfect either. That's why everything is measured to "within tolerance," where the tolerance is either implicitly (through industry norms) or explicitly (through contract) agreed upon by both parties.

      --
      You're special forces then? That's great! I just love your olympics!
    2. Re:I'm no programmer, but... by RabidReindeer · · Score: 2

      Aren't bugs impossible to avoid in programming, especially in complex projects? There's no such thing as a perfect programmer or perfect code; things can always be fixed, optimized, debugged, and improved. The brick wall analogy simply doesn't apply.

      It's worse than that. Writing a program is like writing a contract with the Devil. You'll get exactly what you asked for, not exactly what you wanted.

      Very few people have mastered the incredibly subtle art of knowing what to ask for in that much detail. And it really is true that one person's bug may be an incredibly useful feature to another person.

    3. Re:I'm no programmer, but... by xaxa · · Score: 1

      Aren't bugs impossible to avoid in programming, especially in complex projects?

      No, you just need to pay a lot. Examples: railway signalling, air/spacecraft, industrial control equipment, ...

      Not complex, but low-margin high-volume equipment -- a recall is very expensive. One of my tutors at university had worked for NASA, proving some systems on the ISS worked correctly, and an appliance manufacturer, proving washing machine software worked.

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

  24. Contractor vs employee by Anonymous Coward · · Score: 0

    You do not employ the builder as an employee - there is a contract to deliver a specific output within cost, scope, and quality requirements. The relationship between an employer and employee is different - an employee operates under the direct supervision of an employer.

  25. Think of authors and journalists by Anonymous Coward · · Score: 0

    Successful authors and journalists have (or used to have prior to the gutting of the newsprint industry) a number of editors and copy editors look over their work prior to release.

    Mistakes are inevitable in print media. Serious mistakes have corrections issues in subsequent revisions or in the "corrections" section of the paper. This is somewhat analogous to patching software.

    Rather than building a wall, a development team is closer to running a newspaper.

  26. Context by Anonymous Coward · · Score: 2, Insightful

    Well, this case requires a lot of context. The phrase, "bugs" in software can be very ambiguous and can have many meanings. At the end of the day, it means the software isn't working the way someone thinks it should. However, the route that was taken to this moment can be widely varied.

    Some short examples:

    * working under deadlines, developers complete products they know are not thoroughly tested and may have side-effects and bugs that they are not aware of. Being unable to take the time to do the necessary investigation, due to business constraints, these engineers ensure that the "most common case," of the system works; later, some small side-effect or edge case is discovered, which needs fixing...

    * using a 3rd party library that is documented to behave in a specific way, a team of developers build their own product, which effectively plugs into the original 3rd party mechanism. Unfortunately this 3rd party component does not behave the way it was documented to. Now we have to figure out who decided to use this library, who authorized the team of developers to build on it, and the reasoning behind the research that went into this decision (or lack thereof...)

    Point is, I've never written software in an Ivory Tower. All of the code I write is constrained by time and cost-effectiveness. Within that framework, which involves forces entirely outside of the developer's control, I write the best code I can. Often, developing software is an exploratory process.. with a goal in mind, and a set of tools to reach that goal, but without a clear set of specific and tried and true techniques.

    This is significantly different than building a wall, which is a well documented process and can be repeatable. Your example is inherently fallacious, I would say, because in reality you're performing a set of steps (an algorithm) that has been defined for you - when building a wall. While, when writing software, one is actually defining and testing those steps. Totally different things.

  27. Hmm... by tthomas48 · · Score: 1

    If your boss makes foolish comments that show a fundamental lack of understand of the complexity of real world problems should he forced to return to elementary school on his own time?

    That is a hard question. Where would he find a suitable school?

  28. The Pay Structure by Anonymous Coward · · Score: 0

    A coder is paid [essentially] by the hour to develop code. You don't own the code. You don't get paid by the job, line, or anything else. The same is true of the brick layer. His boss may be getting paid by the job, but not the guy laying bricks.

    Mike

  29. follow your analogy ALL the way by Anonymous Coward · · Score: 0

    A single thread / request would be a single brick. Then the wall you build would be, say the size of a region, if not a state. This wall requires regular maintenance in the form of tuckpointing by an entire full time team. The analogy stands, and technology, as usual, is just optimization of the same processes in the rest of the world, with small improvements in efficiency.

  30. No. by Anonymous Coward · · Score: 0

    a) Your boss is wrong, the fault is with the shitty bricks the client specified and it's his cost and if he doesn't like that he can sue through small claims court and have a structural defect while he waits.

    b) Code is far more complex than bricks, less interchangeable with far more interaction between it's parts. Brick 2 doesn't fall out because brick 65535 became lose, and no one ever asked you to change the colour of the bricks at the bottom of the wall or knock 4 more doors through the bathroom wall in case you really need to pee (but at the same time remove the toilet).

    In short, due care and attention and a basic knowledge will allow you to build a wall that will remain unchanged for hundreds of years. Do the same thing with software and you would be a unique individual unlike any that have lived on earth before, and that's without taking into account a lot of bugs are failings in the compiler or libraries that you're building on top of, or the chip it's run on, etc, etc, etc.

  31. Design Development by Anonymous Coward · · Score: 0

    It is called Design Development. If you boss does not understand this, then there are bigger issues at hand.

  32. Time to polish up the old resume by The_Wilschon · · Score: 1

    Guess you should be looking for a new job. No point in sticking around to work for such a terrible boss.

    --
    SIGSEGV caught, terminating

    wait... not that kind of sig.
  33. Contractor vs Employee by Anonymous Coward · · Score: 0

    If the bricklayer is a contractor and is being paid by the job then his statement is correct. If the bricklayer is an employee then he gets paid to fix the wall.
    If a developer is a contractor being paid by the job then the fix should be at his expense. If the developer is an employee then he should get paid to fix the software. Note that being paid by the job is a bad idea for a single developer who does not have the resources to spec the job and all the change requests and estimate and bill each.

    Beta = bad - why do I need to enable JavaScript?

  34. It depends by evil_aaronm · · Score: 1

    Granting the base premise, like a lot of other situations, it depends. Is this a syntax bug, or a semantic bug? A syntax bug should be caught in testing, unit or validation. A developer should be conscientious enough to avoid those. Semantic bugs are going to be more difficult. Did management or the customer change the spec after the code foundation was laid? If so, that can't be held against the developer.

    1. Re:It depends by Monoman · · Score: 1

      This was exactly my first thought. My second thought was "good luck getting the truth".

      --
      Keep the Classic Slashdot.
    2. Re:It depends by kmoser · · Score: 1

      If the client is willing to write a sufficiently detailed spec on their own time, I will be more than happy to fix any of my bugs for free. That being said, I often don't charge clients for easy bug fixes and bug fixes which I should have caught, i.e. which by my own judgment were stupid mistakes on my part. I like to think I'm good enough not to make too many of those stupid mistakes, else I'd be out of business by now.

  35. Malpractice by Anonymous Coward · · Score: 0

    Call it what it is, malpractice. If you CAN sue, SUE! If you can't, get even. Too bad it goes against labor laws to do what you think would be fair.

  36. You're only liable for avoidable problems by Anonymous Coward · · Score: 0

    The law doesn't compel you to do the impossible. Flawless software is science fiction, not state of the art.

  37. Code is not Bricks by Herkum01 · · Score: 1

    To use the building analog, did they use an architect to design the building? Did they have engineers inspect the drawings to ensure that it won't fall down? Did they inspect the quality of their materials to ensure that could support their specifications? Or he just ask you to keep piling bricks and was shocked that bricks were falling out at the bottom?

    Is code just a bunch of bricks? Bricks are pretty simple, they don't have to do anything but exist. Code is logic, and given some specifications you write something and hope the specs were close. Should you be blamed if we ask you to add 2 numbers together and complains about errors when he uses strings instead?

    If your boss is asking you to work on your own time because of something like this, I would find a new boss. He is just trying to pass the blame and you would be a sucker to accept it.

  38. Fucking Stupid by cosm · · Score: 4, Insightful

    Either your manager is an idiot or you are misinterpreting his analogy. The business entity that causes the defects pays for the defects if they are within the terms of the contract. The builder is a business entity (S Corp or LLC, etc), just as much as XYZ Co. selling Desktop Bullshit 5. The employees of the business are generally shielded from mistakes the business makes. This is not unique to software development. A flaw in a Boeing 777 does not come out of the paychecks of the engineers that built it. They are either fired/retrained/retained for the re-engineering project, management is fired (or today promoted), or contracts are dropped/re-worked, and the work is redone on company/business entity dime. The same company that built it will be the same company that pays for fixes.

    If I paint 'ole Ms. Gladys fence and miss a post, going back and "doing it on my own time" is trivial in terms of time-cost. But if my corporation writes an enterprise HR system for managing her egregious cat collection, it is my corporation that will fund the bug fixes for an erroneous bug that miscounts turds per feline. That cost of doing business will come out of my corporation's margin, not my employees paychecks.

    In enterprise environments there are SLAs that cover this sort of thing. Why is this drivel on the front page? Somebody's first time discovering they can email scripts for their Joe's Home Programming business or is the editor-community here (he said sighing...) that detached from how enterprise development works?

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
    1. Re:Fucking Stupid by DoofusOfDeath · · Score: 1

      But if my corporation writes an enterprise HR system for managing her egregious cat collection,

      Not to nitpick, but wouldn't that be an FR system?

  39. Warranty? by Neruocomp · · Score: 0

    Following the builder analogy, at my university, there were issues with a new building's facade, so the builder came back and repaired it. But warranties also expire. This sounds a lot like maintenance contracts used when buying servers/software(eg Oracle). But as for 'blaming' a particular developer for the issue, couldn't you also argue that the QA team is at fault? What about those who wrote the spec? There are many people involved in building software and this is where the analogy breaks down.

    --
    Physics is like sex. Sure, it may give some practical results, but that's not why we do it
  40. Nothing would get done by subanark · · Score: 1

    Assuming you could implement this policy, people would spend so much time trying to ensure that it works properly that they would be take far too long to complete it.

    If someone is releasing buggy code, they will have a poor performance review. This should be enough to ensure that code is of high quality. If this isn't a good enough motivator, then simply emphasize more in the performance review, and if necessary, indicate the possibility of an early performance review.

  41. Just tell him... by steve.cri · · Score: 1

    ... to hire a bricklayer to finish his project.

    1. Re:Just tell him... by Anonymous Coward · · Score: 0

      Yeah, time to ask your boss if he is bringing up these irrelevant ideas in an attempt to lower your pay or is he serious about firing you and hiring builders to write code.

  42. Paid Software? by Anonymous Coward · · Score: 0

    What about Open Source Software? Simply reporting bugs is a thoroughly unpleasant experience. Some projects take months to acknowledge there even is a problem, and in special cases they spend a few more months passing the buck (blaming it on system/hardware/whatever). One of the reasons I stopped using Arch, bugs only get fixed when they hit all the major distros and their users file reports en masse.

  43. No way by Anonymous Coward · · Score: 0

    This analogy stinks because software is far more complex than building a wall. Besdies the whole issue of what constitutes a bug, a deep and difficult question, in software, situations arise that cannot reasonably be anticipated like bugs due to external changes in the environment.

  44. Brick walls are expensive by Anonymous Coward · · Score: 0

    That's why they use facades. Bricklayers are also independent contractors with insurance and licensing requirements. Not any jackass can build a wall, but I'm sure your manager doesn't see or respect your colleagues in the same way.

    Wall builders are typically smart enough to join a union.

    Your manager is an idiot and has no reason to manage anything more than a fry-basket.

  45. False Equivalency by Anonymous Coward · · Score: 0

    Building physical structures, and writing code are not as analagous as they seem.

    Gardening is a more apt analogy. If you paid qa gardner a flat rate to plant a flowerbed, you wouldn't hold that gardener responsible for future weeds unless that gardener were contracted to do the maintenance.

  46. Not quite true in either case ... by Old97 · · Score: 1

    If you are an employee, you don't have to fix bugs or bad walls on your own time. If you're are a subcontractor that may be expected by some. At my company when a contracting company (including a 1099 or individual corp) is on T&M and screws up - terrible design, incompetent programming, etc., we still pay them until we decide to end the relationship. The alternative is fixed price contracting or a form of "piece work", but that puts a big burden on our own incompetent and clueless managers. They'd rather keep paying than be exposed as useless overhead. Building contractors can't get away with that so easily and they have inspectors to assess quality so they can hold their subcontractors accountable for the quality of the work. Software is rarely developed using rigorous engineering methodologies and documentation, especially in business IT.

    --
    Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
    1. Re:Not quite true in either case ... by rp · · Score: 1

      There is no such thing as 'on your own time' when you're doing work for a company: they are responsible for the results and the working conditions (proper payment, working environment, insurance, supervision, etc.) Not living up to those responsibilities is illegal. The company can ask you whether you're willing to put in more hours at the same salary, and if you agree, that arrangement may be legal. They cannot ask you to do work 'on your own time'.

  47. YES by Anonymous Coward · · Score: 0

    And also, they have to pay the company, for the opportunity to be part this great community. And do night shifts too.

  48. Easy by The+MAZZTer · · Score: 2

    Make an analogy about how politicians don't fix any of their problems and get paid to make more, and ask why you can't do that?

    1. Re:Easy by x0ra · · Score: 1

      Or managers !

  49. Says who? by WalksOnDirt · · Score: 1

    A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher. In most cases, he would have to replace those lower bricks at his own expense and on his own time.

    If the builder is an independent contractor it will depend on the bid. If it is time and material he won't, but if the contract is for the job he will. If the builder is an employee he is never responsible: He either learns not to do that or he should be fired.

    It is the same for software development.

    --
    a,e,i,o,u and sometimes w and y (at be if of up cwm by)
  50. Re:Building code is not the same as building a wal by fl!ptop · · Score: 2

    Correct me if I'm wrong, but wall-building happens pretty much the same way every time. There are building codes and whatnot. The builder has built the exact same wall many times before.

    Sort of. If the wall is built in a cold weather climate, the mortar mix is different than that of a warmer climate. Some walls are built to hold a load from the top, others may be built to hold back a load from the side. In the latter case, you'd probably want to use rebar and concrete to fill the voids (assuming it's block and not bricks). The differences may be more subtle than code, but my point is not every wall is built the same way.

    --
    When you recognize love in another and realize how precious it is, everything else seems so insignificant.
  51. no analogy needed by phantomfive · · Score: 0

    There's no analogy needed. Tell your boss to find some other programmer who's willing to work for free; he won't be able to.
    There's a big enough supply of programmer jobs in the world that no programmer needs to submit to that kind of work condition.

    Really. Don't argue that one. Glare at him for a bit, then return to your computer. Distracting by things that matter in life, like programming.

    --
    "First they came for the slanderers and i said nothing."
  52. Not a wall you're building by Anonymous Coward · · Score: 0

    Depending on your project, you're building anywhere from a building to a city, and a screw is bound to be misplaced. When that happens, the person who paid for the building can either sue (the equivalent of making too many mistakes and getting fired) or they can hire someone to fix it. If he feels otherwise, you can compel him to write a full program without any bugs on the first try.

  53. Problem is with resource allocation / estimation by pipedwho · · Score: 2

    The problem isn't that the developer has created a bug that he has to fix. It's that the cyclic process of development / debugging / testing are not being correctly accounted. Or more than likely, the second two phases are being ignored as part of the accounting.

    If the developer were to be responsible for his bugs, then his time must have already included the debugging and testing phases. By the time the process is complete, there are a number of people in the loop who are 'responsible' for the remaining bug. If the process has not been correctly established, then the problem isn't with the developer, it is with the management. Therefore, the management should be paying out of their pocket for the developer to fix the bug.

    There is no inherent reason why an employee that is part of a much larger process is somehow responsible for the entire process. Even the bricky isn't responsible that someone else gave him a bad batch of cement. The company should have planned for this and padded their estimate with appropriate margin to mitigate expected (and to some degree unexpected) risk.

    Too many 'managers' do not understand that debugging and testing take more resources than that required to write the initial lines of code.

  54. Tell your boss to suck it by Anonymous Coward · · Score: 0

    Maybe you should use a little construction analogy of your own.
    Schedule in more time for project delays and more costs for potential bug fixing.
    If everything is done on time you get to keep the difference in time and money.
    That's the way it works in construction after all.

  55. Uhm. That's a bad comparison by Anonymous Coward · · Score: 0

    How can someone compare a brick layer to a programmer? Programming is an act of invention. The process of invention is a cycle of trial and error and you are paying someone to solve a puzzle. Solving a puzzle implies there will be problems along the way. Brick laying is a well known simple work type and very easy to estimate. I was actually a brick layer and then later in life switched to be a software developer :) As a bricklayer, I worked for a larger construction company and I would get paid hourly even to fix problems that happened as long as they were within the normal limits of expected problems. The construction company I worked guaranteed their work to their customers. A more accurate comparison would be: the builder being 'microsoft' building windows vs a company like 'granite construction' building walls ;-) Both guarantee their work and pay their employees to fix problems whether they are code-related or structural. I get free updates for problems in either case.

  56. many reason by n1ywb · · Score: 2
    1. Most software projects are reasearch and development; buiding something new that's never been built before; hence there's a lot of risk. It's not like a wall that people have been building the same kind of wall for thousands of years. Risk costs money. The only question is who's going to pay for it. Hint: the boss, unless you're stupid, or you have some sort of equity you want to protect.
    2. If you're an employee, the boss has two choices; pay you to fix it, or fire you. Construction and programming are the same in this regard. Maybe he can take it out of your salary, I dunno, might depend on emplyment terms or state law. But typically he cannot compel you to work for free; that's called slavery.
    3. If you're on contract, you're only obligated to fix your mistakes to the extent that the warranty clause demands it. No warranty clause no fixie. The boss may be able to terminate the contract or just not contract with you again, his choice. Your choice if you want his buisness bad enough to fix it for free. Again, construction and programming are the same in this regard. If you do have a warranty clause you will typically bake your own cost of fixing your own bugs into your bid and or hourly rate so it's still not really free for the Boss, your bugs still cost him money.
    --
    -73, de n1ywb
    www.n1ywb.com
    1. Re:many reason by n1ywb · · Score: 1

      Of course if you're OT exempt salaried then you get to work as many hours as your boss says, or quit, or be fired. But market rules still apply in the big picture.

      --
      -73, de n1ywb
      www.n1ywb.com
  57. Employee or Business? by el+jocko+del+oeste · · Score: 1

    The analogy is seriously flawed.

    If the builder is running a business and has contracted to build a wall, it may be that the business is obligated to fix problems at no additional cost (depending on the terms of the contract). But the situation is entirely different if the bricklayer is an employee. I don't think that many builders can get away with forcing their employees to perform work on their own time and at their own expense.

    Similarly, if a software developer is running a business and has contracted to build a piece of software, there may be contractual obligations for the software business to fix errors at the business' expense. But I'm unaware of any instance of a software developer who is an employee being required to fix errors on the employee's time and at the employee's expense.

  58. It depends, but I say Nope.. by bobbied · · Score: 2

    If you where working in any other industry, you'd get paid to do rework. Programming *should* be the same.

    Problem is that it sometimes doesn't work out that way. Programmers are usually "Salary Exempt" in the USA, which means that if your bug breaks something and schedule is suffering, guess what? You fix it but you don't get paid more to do that. Sometimes that means burning the midnight oil during the nights and weekends. The same thing happens if you fall behind schedule. More hours, same pay.

    This is the same question as "Should programmers get paid for over time?" Should employers be allowed to expect their salary workers to put in more than the standard work week? And for me, the answer is "it depends". If an employer is being flexible with me and my hours, I'm going to be flexible too. If you demand I'm in the office from 8 to 5 without fail, or suffer the consequences, don't expect me to stay outside those hours. If you are flexible about arrival and departure times, I don't mind working a extra, especially when you reach the critical phases of some project. But this should be the rare exception, and not the rule. When it becomes the rule, I'm going to start looking for other work if they do not cough up some kind of reward for extra hours.

    You can do what you want though.

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    1. Re:It depends, but I say Nope.. by TapeCutter · · Score: 1

      Their right not to not pay me overtime is counterbalanced by my right to refuse. "If an employer is being flexible with me and my hours, I'm going to be flexible too" is precicsely how unpaid overtime is supposed to work.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    2. Re:It depends, but I say Nope.. by Anonymous Coward · · Score: 0

      no... that's not what salary exempt means. At least in California, exempt means that you cannot collect hourly wages or overtime. Because of that, you cannot be required to work off-hours even on-call without changing your contract and being paid bonus time (taxed at 50% bonux tax rate) for the hours you have agreed in addition.

      it certainly does not mean an employer can force you to work for more hours than you are paid.

    3. Re:It depends, but I say Nope.. by gnasher719 · · Score: 1

      Problem is that it sometimes doesn't work out that way. Programmers are usually "Salary Exempt" in the USA, which means that if your bug breaks something and schedule is suffering, guess what? You fix it but you don't get paid more to do that. Sometimes that means burning the midnight oil during the nights and weekends. The same thing happens if you fall behind schedule. More hours, same pay.

      The only problem with that is that everyone except some idiot managers know that working overtime doesn't solve any problems; it creates problems. After more than 40 hours a week concentration suffers, absolute productivity suffers (not just productivity per hour which would be expected, but productivity per week), employees are unhappy, and all that just to stroke the ego of an incompetent manager.

    4. Re:It depends, but I say Nope.. by bobbied · · Score: 1

      I'm not going to argue with you. Overtime for extended periods is a really BAD thing for all the reasons you outline. It is generally a great way to spend more, get less and loose your best and brightest employees to your competitors. Problem is that it is all too common for MBA's to buy into the "Mythical Man Month" farce and bow to the short sighted "manage to quarter" tactical approach in their management. After all, stock price what they generally get bonuses on either directly (as in stock options) or indirectly (though measures of how they contributed to stock price). Few look beyond the fiscal year but most are consumed by the next quarter. Almost every place I've worked in 30 years suffers from this to one degree or another.

      I would advocate you start looking for another job if you are faced with a continued requirement to work overtime. If they are doing this to you, it proves they are short sighted, tactical thinkers, or are being managed by short sighted tactical thinkers and you will likely be better off elsewhere. In EVERY instance where I was *required* to work overtime by management order, either the company failed, the project was way over budget, finished way behind schedule, or was outright cancelled by the customer. I've never seen a successful conclusion. Get out, get out while you still have a job and it's easier to get another.

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  59. If... by Anonymous Coward · · Score: 0

    If I'm an employee that's not getting paid to work for the company, I find a new job.

    If I'm on contractual agreement, I already provide bugs guarrentee, but I usually charge more then the "real" hourly rate to cover for that.

  60. Why is not there liability for programming errors? by mi · · Score: 1

    A wider question is why is not there any liability for programming errors? All end-user licenses (both free and otherwise) explicitly renounce any such — and we accept it. Maybe, we should not...

    --
    In Soviet Washington the swamp drains you.
  61. Q. What time is it? A. Time for a new boss. by theodp · · Score: 1

    Unless he/she can be educated. Presumably this is coming from a non-progammer type. You'd think this person might question why none of the world"s greatest software companies have adopted this practice for their employees (at least I hope they haven't).

  62. When it comes to code, it's usually more like... by Max+Threshold · · Score: 1

    If the boss demands that the builder builds the Great Wall of China in a week, he has nobody but himself to blame when it falls over.

  63. Dilbert - "I'm gonna write me a new minivan..." by thejonz · · Score: 1

    This reminds me of one of my favorite Dilbert cartoons - "I'm gonna write me a new minivan this after-noon!" http://dilbert.com/strips/comi...

  64. huhwhaaaat? by Anonymous Coward · · Score: 0

    The analogy is pretty stupid, if you ask me. Perhaps the better analogy is a writer - and an editor. The editor makes more for fixing the mistakes (at least in a news/magazine setting) than the writer may make for the original authorship.

    And, the bricklayer is not going to repair work on his own time. They may sue the mortar company, or the brick manufacturer, but GIGO still applies.

  65. Clause in CGI's contract by Anonymous Coward · · Score: 0

    "Work submitted is deemed accepted if not rejected within five days in writing."

    They did the ObamaCare site that has brought healthcare to millions, and are the absolute best at writing contracts to protect themselves. All of their contracts with my employer contain the phrase above. It's brilliant. They shovel so much crap at us so quickly that there's no way for us to reject within five days so we always have to pay for rework.

  66. A wall is easy to define, but software is not by Brama · · Score: 1

    A wall is precisely defined by the one who gives the builder the order.

    If this analogy would work, then your boss would have to hand you the EXACT specifications, to the very minute detail, before you start implementing anything. Something tells me that is not what your boss does.

    So, as your average software developer, your task isn't to implement a system that is 100% specced out. Your job is also to spec that system, based on ambiguous and incomplete specifications. And to make matters worse, the specs will likely change while you are implementing it.

    In short: Complexity is several orders of magnitude more difficult. If it were as easy as brick laying, you'd be replaced by a machine by now.

  67. re by skyeagle53 · · Score: 1

    In that case the employer would be the builder and you would still be the hired help.

  68. Guarantee by Roger+W+Moore · · Score: 5, Insightful

    The brick builder charges accordingly. Since 90% of programming is debugging and testing, you could concur and demand a 1000% pay rise.

    Actually the builder offers a guarantee that the wall will be built to industry standards. Since there are lots of people who can build walls without serious flaws the industry standard is that the wall has no serious flaws and the builder will usually offer a guarantee to that effect - or at least the contract will not contain any exceptions for serious flaws. Indeed nobody would hire a builder who's contract stated that they offered no guarantee.

    In software it is not possible in practice for someone to write a non-trivial program without any bugs. Hence it is not common practice to expect completely bug-free code and contracts usually have stipulations to that effect - just look at all the exceptions and explicit non-guarantees in your typical EULA. Essentially the cost of offering a guarantee like the builder's would be so astronomical that nobody would hire you.

    1. Re:Guarantee by msauve · · Score: 4, Funny

      "Mother did it need to be so high?" - Roger Waters.

      --
      "National Security is the chief cause of national insecurity." - Celine's First Law
    2. Re:Guarantee by phantomfive · · Score: 2

      In software it is not possible in practice for someone to write a non-trivial program without any bugs.

      I will do it for you. It will cost you an astronomical amount. You won't be able to afford it, but if you can pay, I will do it.

      If you are wondering how it can be done, it will be an extremely well defined specification, a formal verification (partially automated), combined with a penalty-per-bug that is cheap enough for me to handle (this is similar to the SLA for many companies that guarantee 99.999% uptime).

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Guarantee by NoKaOi · · Score: 5, Insightful

      Actually the builder offers a guarantee that the wall will be built to industry standards.

      Actually, if you want to follow the analogy, the employee is not analogous to the builder. The employee is analogous to the builder's employee, while the builder is analogous to the company, and the homeowner is analogous to the company's customer. The builder would be paying his employee by the hour. If the employee messed up, whether it was a reasonable mistake or even if he was negligent, when the employee fixes his mistake he'd still be on the clock, getting paid by the builder. Of course, the builder could fire the employee and hire another employee to fix it, but he can't make the first employee fix it off the clock.

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

      Following further, the employee is supervised by a manager and the project, warts and all, is generally not completely designed by one person. Bugs can be of various types-- the bugs that can't be put to a developer include misunderstandings of system design, incomplete knowledge at dev time, etc. There are only "dumb" bugs that could/should fall into the category.

    5. Re:Guarantee by dnavid · · Score: 1

      In software it is not possible in practice for someone to write a non-trivial program without any bugs.

      To be precise, most people believe its impossible to write a non-trivial program without any bugs. Its a belief most programmers have no interest in refuting, because it eliminates accountability.

      In reality, the truth is its impossible for most people to write non-trivial programs without bugs. Just like its impossible for most people to consistently land airplanes without crashing. In air travel, 99.9% of those people are weeded out of pilot programs. In programming, they move on to the next project.

      Part of the problem is that the programming profession hasn't had its professional renaissance like the medical profession had in the twentieth century. We don't train programmers to be skilled, efficient, and above all conform to an agreed to set of professional standards. There's no such thing as programmer malpractice. Basically the software development industry is exactly where the medical profession would be if everyone owned a medical text from ancient Greece and treated themselves and their friends based on guesswork and late night infomercials.

    6. Re:Guarantee by Anonymous Coward · · Score: 0

      And you will deliver a product with bugs, because -- no matter what you think -- you're not God, just someone with a breathtakingly deluded sense of their own inerrance.

    7. Re:Guarantee by jythie · · Score: 4, Insightful

      The builder (or builder`s company) is also generally licensed and bonded. Most modern software shops have pretty much given up on software engineering and jump randomly from fad practice to fad practice with almost no maturity or consistency. Something as rigorous as following standards, licensing, carrying insurance... their heads would explode.

    8. Re:Guarantee by RabidReindeer · · Score: 2

      How about a car analogy.

      I bring my card into the shop. Mechanic says "needs X", installs new parts, gets paid.

      I drive back in. Same problem. Mechanic looks again. Says "needs Y". Installs new parts, gets paid.

      No refunds or free rework there, even though it's obvious that the initial diagnosis was faulty. And, alas, sometimes the second diagnosis as well.

    9. Re:Guarantee by I-am-a-Banana · · Score: 0

      This is what I wanted to say.

    10. Re:Guarantee by viperidaenz · · Score: 1

      I like the doctors from the 14th century.
      If you're sick you need to be bled.
      The bleeding will draw out the toxins.
      If it doesn't work, it was God's will.

    11. Re:Guarantee by Dunbal · · Score: 1

      "dumb" bugs are usually the easiest ones to catch and fix anyway.

      --
      Seven puppies were harmed during the making of this post.
    12. Re:Guarantee by Anonymous Coward · · Score: 0

      In software it is not possible in practice for someone to write a non-trivial program without any bugs. Hence it is not common practice to expect completely bug-free code and contracts usually have stipulations to that effect - just look at all the exceptions and explicit non-guarantees in your typical EULA. Essentially the cost of offering a guarantee like the builder's would be so astronomical that nobody would hire you.

      The software industry has existed for the last 60 years. You would think that in that time we would have improved how to write correct bug free code. Yes writing code is complex, but it is no more complex that building a rocket carrying people to the moon (and not exploding in the process). Or no more complex that building passenger airplanes, or boats, or bridges etc... Somehow we have all been conviced that software is innocuous, that its use cannot damage anything. Wrong, the more our society relies on software the more our systems become more vulnerable. And they become more vulnerable because in this day and age we still understand and write software like 6 decades ago.
      The software industry unlinke any other engineering industry is basically a free for all. You want to write shit code and sell it ? You can and you're not in the least liable for the damages it may create to your customers. This is simply insane. And since change cannot come from within the industry (what advances have we had in the last 6 decades ?) the government has to intervene and slap very hard introducing regulation that puts commercial software on the same level (mutatis mutandis of course) of other engineering practices. So no more bullshit EULAS that give corporations the right to absolve themsleves of any wrongdoing with respect to software. Will software cost more ? Definitely but it is a necessary step. We can't have entire systems relying on frameworks writen in 5 minutes by joe six pack and then used on the web etc... On the other hand you want to write shit code, ok but then you can't sell it or use in production systems. Just give it away.

    13. Re:Guarantee by jrumney · · Score: 3, Informative

      Your using the wrong mechanic. I've had free labour, and even free parts from my regular mechanic after he's realised he misdiagnosed a problem originally.

    14. Re:Guarantee by Belial6 · · Score: 1

      That is the correct answer. The Bizzeh's employer is trying to steal from Bizzeh. There is no industry where employees are expected to work for free. It is likely that Bizzeh's employer was actually in violation of the law by even suggesting that Bizzeh work for free.

    15. Re:Guarantee by ngc5194 · · Score: 1

      ... and he'll fix it for free. That will be taken into account in the initial bid, as the author suggested.

    16. Re:Guarantee by Anonymous Coward · · Score: 2, Insightful

      Bricks are fairly well-understood, as is mortar, the brick-laying process, and so on. You can fairly easily standardise the process. Nonetheless, basically all branches of construction are known for nickling-and-diming, fraud, shenanigans. Hence the licences and bonds and so on.

      Software won't stand up to standardisation so well, for if you could you only needed to modify some existing software package a bit and all is well. "Engineering" software the same way you'd engineer hardware... doesn't work so well. Thing is, nobody knows how to do it instead. So, enter the fads. You could say there's charlatans at large, and no doubt there are. But that's not the whole story.

      This isn't to justify the fads, but to illustrate that their existence isn't without reason. We've been building in stone and wood for a lot longer than we've been writing software. If anything, a model like the Germans have for engineering in general --a licensed engineer must sign off on the design, and he's personally liable for provable factory defects-- might work eventually... once we figure out what reasonable standards for software engineering would be.

      In the meantime, it's all speculation. And the market reflects that.

      On the other hand, it's certainly true that large amounts of people are in no hurry whatsoever to figure out what solid engineering would mean for software. There's much more money to be made in prolonging the problem. You see that everywhere in software, from large ERP software to even operating systems that require an entire security industry to keep somewhat afloat.

    17. Re:Guarantee by Jane+Q.+Public · · Score: 3, Interesting

      "Part of the problem is that the programming profession hasn't had its professional renaissance like the medical profession had in the twentieth century."

      No, it isn't.

      The current state-of-the-art is such that programming is still as much an art as it is a science. If/when it ever gets to the point you can test and certify programmers reliably the same way you do mechanical engineers, WITHOUT stifling innovation in the process, THEN you'll have reached that goal.

      Today, it is nowhere near in sight. Every effort to responsibly certify programmers (and lots of irresponsible efforts) have all failed, or at best have done very poorly, for the simple reason that there is currently no science that allows you to validly do it.

      I would go so far as to say that most programming "certifications" offered today are not worth the paper they're printed on.

    18. Re:Guarantee by Anonymous Coward · · Score: 0

      The brick wall and software is a nice apples/oranges comparison isn't it. Writing software is like writing a book. No two books are the same. Writing identical pieces of software will land you a plagiarism charge in university (although I had an assembly language assignment in university, and 10 people handed in the same code, and the Prof. accused them of plagiarism, and one guy asked if the Prof. could come up with an alternative correct solution (a tautology), and the Prof. couldn't, and the accusations stopped. However, with high level languages, there are multiple ways of doing things (statements in computer software are like statements in a book and they can look different, and come in different orders and essentially achieve the same goal, although some are more efficient than others). But comparing writing a book, or writing software to building a wall is silly. You build a wall in a very similar way to the last wall: different length, different width, different height, different location, similar bricks, similar mortar. Any non-trivial program is very unique. It doesn't look like the others. Its like a novel. Engineers build bridges all the time with problems. They fix them when problems happen, and get paid for doing it, although not usually when its new. Usually before an engineer builds a bridge, they design the hell out of it, and test every part of the design before construction begins. Usually people who write computer software are not given that luxury. They are expected to design and code on the fly. No one that I know of writes the code on paper, then does a mathematical paper analysis of the software they wrote with pencil. NOPE! The boss is behind you watching you type, or compile, or copy/paste test routines into the main code base. "What do we need paper for? and Type it into the computer, don't waste time with that paper!" are the phrases that are cast and heard. The design was flawed because the design process was flawed/rushed.

    19. Re:Guarantee by smartr · · Score: 4, Interesting

      Nonsense, the builder's employee is analogous to the computer itself. Programmers are far above the low level work of brick laying. Programmers are more like experimental architects. Less experienced or simply more optimistic programmers will make more mistakes because they're constantly learning. One might further say that a programmer, who by trade is exercising the trade of "computer science", is in fact closer in position to that of a scientist. If scientists only got paid when their hypothesis was correct, no matter how many experiments were run, not much science would be getting done. If an employer does not understand this risk, they probably are not prepared to be doing business in the industry and might also want to double check their employee tax obligations.

    20. Re: Guarantee by Anonymous Coward · · Score: 0

      Pilots?
      Google "Controled Flight into Terain"
      The issue is no one wants to pay for properly engineered code.
      Well except for people that build planes.

    21. Re:Guarantee by penglust · · Score: 2

      Actually it is exactly like the medical profession. There are also a great number of doctors that do no more than what a medical book tells them and just try one thing after another based on the list in a particular medical text they have been reading. As a person that had a problem 2 decades long and finally found a doctor that did a bit of thinking I know.

      The problems with software development are systemic in most environments currently. There is never enough time to figure out what doing it right means. Contracts are consistently underbid to "get in the door". A large portion of managers believe in the higher them cheap and see what works out.

      It is not impossible but it is hard to write non trivial programs with very few bugs. You have to hire people who are capable, want to do it right and enjoy it to the point they put the effort in. Companies need to stop taking their best engineers and forcing them into management. You can use process to streamline and help but you cannot use it to create quality in the first place.

      I agree with you on programmer quality. I often state that 5% of the people I work with do most of the creative work. Another 20% to 40% depending on the particular organisation contribute daily and the rest just get in the frakin way. 90% of management is in the frakin way group.

      Every evaluation I have received in the last 20 years all mention there are people I refuse to work with in the organization and it is a problem. Well after all this time I figure someone that wastes 100% of the time I spend with them should be ignored, the consequences be damned.

    22. Re:Guarantee by hazah · · Score: 1

      Competence is one angle, time is another. It is a process. If not given the time, the process will not complete.

    23. Re:Guarantee by Anonymous Coward · · Score: 0

      Posting AC because Mod. In Aerospace, particularly in CAT A or B systems we have processes to design test suites and run them to ensure flight-critical software is sufficiently bug-free to adhere to the relevant safety criteria (one catastrophic failure per billion flight-hours) There're probably fewer lines of code in an engine FADEC than in 'Flappy Bird', but you coud buy a country for what it cost to get that FADEC into commercial service.

    24. Re:Guarantee by Anonymous Coward · · Score: 0

      If you are being charged for fixing the same problem twice you need to learn how to negotiate & find a different mechanic!

    25. Re:Guarantee by Anonymous Coward · · Score: 0
      AC because mod.

      a model like the Germans have for engineering in general

      This holds true for all aspect of life.

    26. Re:Guarantee by scamper_22 · · Score: 2

      The day software is repetitive as the wall builder is the day we can offer such a guarantee.

      Lucky for us, the compiler is pretty darn good and repetitive that we could do it for such a task.

      I will guarantee that the same code compiled over and over again will perform the same.

      The answer to the boss is really that the compiler is the builder.
      I am not a manufacturing worker. I am the mechanical engineer.
      I am not a construction worker. I am a civil engineer.
      I am not a compiler. I am a designer.

      How often do designers of any kind offer guarantees? It is rare.
      If they do it it is for routine things. I could offer a guarantee for a simple SQL select statement!

      That is the perspective your boss needs.

    27. Re:Guarantee by ATMAvatar · · Score: 1

      And even if the stars align and you manage to get an all-star team, the product can *still* suffer bugs due to resource issues, like management shortening a deadline without input from the team, poor or non-existent testing environments, or poor equipment and tools.

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    28. Re:Guarantee by Anonymous Coward · · Score: 0

      AC Because Mod: We DO write (not neccesarily perfectly, but legally certifiably) bug-free code in Aerospace, No-one wants to pay $10m per copy of Flappy Bird.

    29. Re:Guarantee by hermitdev · · Score: 1

      I disagree. An old truck of mine died one day on the highway, leaving a toll booth. Completely dead, wouldn't even try and turn over. I had it towed, paid around $500 in diagnostics, parts and labor. A wiring harness came free, was hitting the exhaust manifold, melted the insulation, shorted, blew the fuse to the ECM. When they fixed it, I requested to show me where the problem was. They did. A few weeks later, the problem reoccurred. This time I was able to yank the wires off the manifold, replace the fuse and limp back to the garage. Said something along the lines of "you fixed the symptom, not the cause, make it right", and they did. They re-replaced the damaged wires and properly secured the harness gratis the second time around. I'd wager you'll more likely see this sort of behavior from a small shop, as they typically live and die on reputation and word of mouth. But, I think even chains/large companies have wised up and will strive to do the right thing (might not always happen) because of the ease today versus 20, even 10 years ago of spreading word about your experience.

    30. Re:Guarantee by gnasher719 · · Score: 2

      And you will deliver a product with bugs, because -- no matter what you think -- you're not God, just someone with a breathtakingly deluded sense of their own inerrance.

      Of course he will deliver a product without bugs. It will just take very, very long time.

    31. Re:Guarantee by jtara · · Score: 3, Insightful

      ^ A much more appropriate analogy, that almost fits.

      Add to this the fact that the builder (employer) told the bricklayer (employee) to leave out every other brick on the bottom row in order to save time and expense, and you'd have an analogy that is spot-on...

    32. Re:Guarantee by Cammi · · Score: 1

      Not possible? You must have never programmed on the mainframe.

    33. Re:Guarantee by khasim · · Score: 2

      Actually the builder offers a guarantee that the wall will be built to industry standards.

      And to the exact specifications that were provided to him, in writing, at the time he bid for the job.

      Try getting a builder to build the wall "just a bit higher" or "just a bit wider" or "just put a window in that patch you've finished already". Not going to happen.

      Which is why programming is not the same as construction.

      Indeed nobody would hire a builder who's contract stated that they offered no guarantee.

      And, likewise, no builder would bit for a job that didn't have EVERYTHING already specified and signed off by a certified architect.

      In software it is not possible in practice for someone to write a non-trivial program without any bugs.

      The first problem in software is defining what a "bug" is. It's not a feature request. It's not something that was left out of the requirements.

      If the employer can provide the same level of documentation for the program that a builder will be provided with then software "bugs" become a lot rarer.

    34. Re:Guarantee by Anonymous Coward · · Score: 0

      You seriously think that bugs are completely unavoidable? What a sad state software development is in..

    35. Re:Guarantee by Anonymous Coward · · Score: 0

      I think the part that's most impractical isn't the astronomical fee you would require, though that's significant. I assert that a sufficiently well-defined specification to make that guarantee is not a practical possibility for a nontrivial project, at least not currently.

      The definition of "nontrivial project" is, I will agree, fluffy, but I will state that the specification would have to include hardware parameters, a comprehensive list of all software that could ever run alongside your software (with either no updates or very strict bounds on what software updates on those components could do) -- effectively meaning you need single-purpose hardware. You're pretty much obligated to write a custom one-off operating system yourself, as even mature OSS solutions have bugs, and chances are you can't sign on to fix bugs in the Linux kernel that somebody else doesn't fix first....

      Any form of user input while running is nearly impossible to get bug free. Part of the issue there is that debouncing is timing-based. You could maybe work out a contract for a bug-tolerant frontend that triggers a bug-free back-end.

      Anything that needs wireless communications, you can forget about, it's just impossible (your formal verification might show that in the absence of interference then X and Y should be true, but there's no practical way you can prove the presence of interference at the time a bug occurred). Even with wires, you can't network to anything other than more instances of your single-purpose hardware.

      You'll have noticed I talked a lot about hardware. This isn't because the software is trivial, it's just that you need the stable platform to exist before you can even get into the "formal verification" part.

    36. Re:Guarantee by Anonymous Coward · · Score: 0

      It would be impossible. Even if your code is technically "bug-free", your compiler or assembler will have bugs. Even firmware and microprocessors have bugs in them.

    37. Re:Guarantee by Anonymous Coward · · Score: 0

      "To be precise, most people believe its impossible to write a non-trivial program without any bugs."

      The problem is that you cannot guarantee a non-trivial program is bug-free. I don't care who you are.

    38. Re:Guarantee by Anonymous Coward · · Score: 0

      As a computer, I find your faith in technology amusing.

    39. Re:Guarantee by AK+Marc · · Score: 1

      Programming without bugs is easy. It's just slow and expensive. so nobody wants it. It's cheaper and easier to write bad code and ship it, absorbing backlash, than to build it right in the first place.

      The comments aren't "bugless is impossible" because there exist [10 print "Hello World" 20 goto 10] programs. There always exists something so simple it is either bug free or inoperable. So, why is [10 print "Hello " 20 print "World" 30 goto 10] so much harder? Just build clear bug-free pieces, and assemble them. Take the time and care with each line to verify intention. Use modularity and error handling.

      I'm sure I'll be called naieve, but at least should move the smallest error free program to a much larger size. But none of that will work when given a timeline half what it should be, and inadequate budget.

    40. Re:Guarantee by Anonymous Coward · · Score: 0

      I propose an automatic -1 mod for any post that begins with "Actually".
       
      The entire comparison to a builder/brickWall is a nonstarter, as the creation of code is an intellectual work, and a wall is a physical work. It's like comparing a painter to a literary author. It simply doesn't work as one uses a physical medium, and one uses an intellectual medium. What's next, a comparison of a factory worker's output compared to that of a mathematician?
       
      The main point is that we shouldn't even begin to entertain such nonsensical parallels, and the boss should have been slapped with a wet fish for bringing up such a ridiculous notion.

    41. Re:Guarantee by Anonymous Coward · · Score: 0

      The analogy in the original article is missing something. The bricklayer is selling product to other persons. The programmer in the analogy is not the software company selling product to other persons. The programmer is an employee. If the bricklayer was a boss who hired assistants who did all the work, and the wall had a flaw, the boss bricklayer is held as much responsible as the software development company is held responsible for bugs written by hired programmers.

    42. Re:Guarantee by Anonymous Coward · · Score: 5, Funny

      > An old truck of mine died one day on the highway, leaving a toll booth.

      Please send my condolences to the toll booth. The loss of a parent can be devastating.

    43. Re:Guarantee by Jane+Q.+Public · · Score: 1

      "Programming without bugs is easy. It's just slow and expensive. so nobody wants it. It's cheaper and easier to write bad code and ship it, absorbing backlash, than to build it right in the first place."

      Tell me. I am currently involved in a project that involves parsing text from thousands of pages written by different people. And it's a horrendous task. Even though the pages are somewhat standardized, there are variants of wording, variants of spelling, typographical errors (those are particularly bad to deal with), etc.

      Trying to create bug-free methods for parsing those into their constituent parts is a difficult job indeed. I did not realize when I took the job just how NON-conforming all these different pages are. After all, they're in a "standardized" format. Haha.

      I'm sticking with the job, though, because if I can pull it off, it might also pay off. But bug-free is just impossible in this case (unless you're IBM, maybe... but even Watson made mistakes). The best I have managed is to get most of them right, and flag the rest as needing human intervention. As long as I can keep the latter to a minimum, it will be okay. But none? Not a chance.

    44. Re:Guarantee by Anonymous Coward · · Score: 0

      "but it is no more complex that building a rocket carrying people to the moon (and not exploding in the process). Or no more complex that building passenger airplanes, or boats, or bridges etc"

      None of these products is without "bugs".
      I was reading the history of the MD-11 aircraft today. It ( along with others ) had bugs.
      Recalls point out that cars have bugs. And there are others

    45. Re:Guarantee by phantomfive · · Score: 1

      It would be impossible. Even if your code is technically "bug-free", your compiler or assembler will have bugs. Even firmware and microprocessors have bugs in them.

      As the authors of the book Transaction Processing point out, all bugs are in software. All bugs are in software. All bugs are in software because we know how to overcome hardware flaws by having the proper software setup (in essence, certain forms of redundancy).

      In fact, it's been done. It took an entire year to verify each 250 lines of code, even with automation. So it is labor intensive, but if an OS can be verified, an assembler (that one's easy) or a compiler can be done (and Intel actually uses formal verification to ensure an ever growing portion of their chips are correct). So don't believe it's not doable.

      --
      "First they came for the slanderers and i said nothing."
    46. Re:Guarantee by dnavid · · Score: 1

      "Part of the problem is that the programming profession hasn't had its professional renaissance like the medical profession had in the twentieth century."

      No, it isn't. The current state-of-the-art is such that programming is still as much an art as it is a science. If/when it ever gets to the point you can test and certify programmers reliably the same way you do mechanical engineers, WITHOUT stifling innovation in the process, THEN you'll have reached that goal.

      Which it will never achieve, so long as its seem as an art and not a science. If you're going to wait around for software development to magically achieve a state of being objectively judged, it will never happen. Its not going to happen voluntarily or organically. It didn't happen that way in the medical profession either.

      And honestly, "innovation" in programming is only interesting to me if it produces *reliable* results unobtainable any other way. And those innovations in software development are few and far between on large scales.

    47. Re:Guarantee by dnavid · · Score: 1

      "Programming without bugs is easy. It's just slow and expensive. so nobody wants it. It's cheaper and easier to write bad code and ship it, absorbing backlash, than to build it right in the first place."

      Tell me. I am currently involved in a project that involves parsing text from thousands of pages written by different people. And it's a horrendous task. Even though the pages are somewhat standardized, there are variants of wording, variants of spelling, typographical errors (those are particularly bad to deal with), etc. Trying to create bug-free methods for parsing those into their constituent parts is a difficult job indeed. I did not realize when I took the job just how NON-conforming all these different pages are. After all, they're in a "standardized" format. Haha. I'm sticking with the job, though, because if I can pull it off, it might also pay off. But bug-free is just impossible in this case (unless you're IBM, maybe... but even Watson made mistakes). The best I have managed is to get most of them right, and flag the rest as needing human intervention. As long as I can keep the latter to a minimum, it will be okay. But none? Not a chance.

      I don't think you understand the difference between writing a program with no bugs, and writing a program capable of performing any task however ill-defined. No one credibly expects the latter. But if your code *correctly* parses the formats it understands and *correctly* flags those it confirms are in different formats, that program is bug-free if that's its intended function. If your program core-dumps in the middle of processing because someone misspelled a word, that's a bug and also avoidable. If you claim it can process all documents even in formats you haven't anticipated and it fails to do so, that's your fault for overpromising, but not a bug.

    48. Re:Guarantee by AK+Marc · · Score: 1

      That comes down to definition of a "bug". What is the intended operation? Is that 100% defined? No? It isn't defined what to do with sufficiently inappropriate errors in the input? Not handling a case that wasn't intended to be handled isn't a "bug". Crashing with dataloss when someone has little bobby tables as an input is a bug. 90% accepted, with 10% flagged, if the intended operation and 100% perfect with the 90% accepted would be "bug free".

    49. Re:Guarantee by dnavid · · Score: 1

      And even if the stars align and you manage to get an all-star team, the product can *still* suffer bugs due to resource issues, like management shortening a deadline without input from the team, poor or non-existent testing environments, or poor equipment and tools.

      Here's the thing. Why do we accept that as just the unavoidable state of software development. If a hospital told you a loved one was injured or killed because they just decided to use experimental drugs or rush the surgeon so he could move on to the next patient, we'd all scream bloody murder. We would not accept that as being reasonable. But we do all the time with software development. And because we accept it, there's no incentive to change it.

      It won't change until we all collectively believe it *can* change, and demand change, and refuse to allow those that refuse to change to work in this industry. Until we do, we might have C students treating us in hospitals, but completely random people writing the software that increasingly controls all of our lives.

    50. Re:Guarantee by Anonymous Coward · · Score: 0

      Looking back at bridges, there was a time, not all that long ago, when bridge-building ( except for minor stream crossing ) was more art than science.

      We are kinda at that stage with software. We need something that is the equivalent of materials science to step past this phase.

      In the mean time, saying "well, just get there" or "don't build any" are equally bad options.

      Also, keep in mind, there is something concrete ( if you will pardon the pun ) about being able to explain that while a beam of such and such dimensions and construction will span such a distance and be able to hang this much weight, that trying to double that span will take more then just minor multiplication of dimensions.

    51. Re:Guarantee by ciotog · · Score: 1

      I am currently involved in a project that involves parsing text from thousands of pages written by different people. And it's a horrendous task. Even though the pages are somewhat standardized, there are variants of wording, variants of spelling, typographical errors (those are particularly bad to deal with), etc.

      Trying to create bug-free methods for parsing those into their constituent parts is a difficult job indeed.

      I'm not sure if I see typographical errors in the input as being bugs in the parsing code, any more than a car ramming into a brick wall and damaging it is a fault of the wall. Both can be perfectly sound and still fail to account for all potential circumstances.

    52. Re:Guarantee by AuMatar · · Score: 1

      He said non-trivial program. The program in your link was trivially small.

      In addition, that's hardly a guarantee. First, you need to prove the processor is bug free- there *have* been floating point bugs in Intel processors in the past. Then every other piece of hardware in the system. Then the system as a whole.

      Once you've done that- you have to ensure your verification tools are bug free. Then you can say the software is bug free- unless something like a solar ray hits it. Or there's a flaw in your proof.

      Sorry, its just not even possible in theory.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    53. Re:Guarantee by Anonymous Coward · · Score: 0

      I have worked with some real Nimrods before, but never have I seen debugging and testing require 90% of a budget. My own work is quite exquisite, generally requiring about a 10% bug fix budget. My more run-of-the-mill peers might need a 25% budget for bug fixes. And I don't work for Google, I work for a small marketing firm in Kansas. If your experience is of a 90% budget for bug fixes, you are working with some seriously incompetent individuals. Perhaps you (and they) should take note of the old adage: If you don't have time to do it right the first time, when do you think you'll have time to do it right the second time?

    54. Re:Guarantee by raddan · · Score: 1

      We don't need to certify programmers, we need to certify programs. I'm not sure that certification for programmers would provide any extra benefit other than maybe being a prior on whether you think the programmer can get the job done or not (and I'm not a Bayesian, so...).

      On the other hand, many properties about programs themselves can and should be verified. A great deal of current programming language research is devoted toward both improving the capabilities of automatic program verification as well as designing languages more amenable to verification. Functional languages, for instance, rule out entire classes of bugs present in imperative languages. People complain that they're hard to understand. Maybe. I argue that they're hard to understand if you're the kind of person who does not care about whether your program is correct or not.

    55. Re:Guarantee by phantomfive · · Score: 1

      First, you need to prove the processor is bug free- there *have* been floating point bugs in Intel processors in the past.

      Tell me, can you guess what event motivated Intel to begin using formal proofs in their chips? I'll give you two guesses, and take away the first.

      --
      "First they came for the slanderers and i said nothing."
    56. Re:Guarantee by Anonymous Coward · · Score: 1

      It isn't impossible for someone to write a non-trivial program without bugs, given ample time and the appropriate amount of skill.

      Here's where that fails in practice, most of the time a single programmer isn't working on a non-trivial program and most of the time that group of programmers is put on a very short dead line.

      I, heads down programmer, have no control over the garbage quality programmers I may work with. I can be the most gifted programmer in the world, which I am not, and be sitting next to somebody who faked his way into the company. That same scenario has happened to me at big companies like IBM and Xerox as well as smaller private companies. I was at a big company sitting next to some moron who asked me "what does JDK mean".

      Time is a very big factor. You want 2 years worth of work done in 6 months and every time we go to make a design decision you choose the shortcut way over the proper way because of the dead line being pushed down the pipe by upper management, yeah you'll get bugs. Why? Because not only are poor design decisions being made, programmers aren't being given proper time to implement the design, then QA isn't given enough time to find the bugs.

      In summary, there are a lot of factors that can affect the chances your code will have bugs. If you aren't designing the application yourself, you are relying on others. If you aren't coding all by yourself, again you are relying on others. You have to be personally accountable for all code you touch; meaning you should be cleaning up whatever garbage you come across and building some proper tests to not only get line coverage but branch coverage. And what is most affects a decent programmer adding bugs into code is lack of time, being rushed to get features in last minute etc.

    57. Re:Guarantee by AK+Marc · · Score: 2

      Yet if someone takes a sledgehammer to a wall and it fails, it's the fault of the sledgehammer or the person using it. But someone passes bobby tables to the database, and it's the fault of the programmer for not predicting the sledgehammer. Of course, input checking should be done, but the interesting point is the blame.

    58. Re:Guarantee by JDG1980 · · Score: 2

      In reality, the truth is its impossible for most people to write non-trivial programs without bugs. Just like its impossible for most people to consistently land airplanes without crashing. In air travel, 99.9% of those people are weeded out of pilot programs. In programming, they move on to the next project.

      Part of the problem is that the programming profession hasn't had its professional renaissance like the medical profession had in the twentieth century. We don't train programmers to be skilled, efficient, and above all conform to an agreed to set of professional standards. There's no such thing as programmer malpractice. Basically the software development industry is exactly where the medical profession would be if everyone owned a medical text from ancient Greece and treated themselves and their friends based on guesswork and late night infomercials.

      That analogy doesn't work. Quack medicine is often worse than no medicine at all (there is evidence that, prior to the 20th century, doctors were as likely to kill the patient as to cure them). In contrast, a buggy and incomplete program may still be better than no program at all.

      Most of the time, when code gets screwed up, nobody dies. In those cases where shoddy code actually could put lives at risk (e.g. embedded systems for vehicles, medical equipment, etc.) then there usually is more rigorous quality control, better and more comprehensive testing, and so forth. But if you demand that every piece of code in existence be written to those standards, most people and organizations won't be able to afford having any code written at all.

    59. Re:Guarantee by tragedy · · Score: 1

      It sounds like it's not your code that's buggy, but your requirements. If your requirements are "parse input in a format meeting specification X", and the input doesn't meet specification x, then your program isn't neccessarily buggy if it can't parse the input. Your problem is that the specification you're expected to build a parser for is actually the union of specification X, the format of all extant documents purportedly meeting that specification, and the format of all future documents that are meant to meet specification X. Is a speech recognition engine buggy if it can't understand a person who randomly starts squawking like a chicken?

      Consider: someone comes to me and asks me to write a program that will take any arbitrary program and set of inputs as input and determine if the arbitrary program will ever halt with those inputs. Is my program buggy if it doesn't work for all possible input programs and sets of inputs? True, I would be remiss if I didn't point out to the person asking me to do it that what they want is either impossible or that, if I managed to do it (and more importantly prove somehow that my program worked as advertised), I would be a god capable of toppling the pillars of the universe. Programmers are asked frequently to do things that are effectively impossible to do perfectly, but that can be often be approximated to within acceptable tolerances or even be done perfectly within a limited subset of the problem domain. Trouble is, when the solution isn't impossibly perfect or doesn't work outside the limited domain it's intended for, it's "buggy".

      As for Bizzeh's boss... Since I don't work for him I feel quite comfortable advising him that he can shove his point and analogy somewhere very uncomfortable after wrapping it in rusty barbed wire and dousing it in an some staphylococcus cultures. Obviously Bizzeh has to use a bit more tact.

    60. Re:Guarantee by JDG1980 · · Score: 1

      I'm sure I'll be called naieve, but at least should move the smallest error free program to a much larger size. But none of that will work when given a timeline half what it should be, and inadequate budget.

      One thing you're overlooking is that the people who ask for the program often aren't completely clear on exactly what they want. It can't be a "bug" that the programmer is unable to read minds.

      In practice, a lot of real-world coding (especially for internal applications) involves the requestors asking the coders to build something and giving a fairly vague description, then bombarding them with clarifications and change requests throughout. There is no way this is going to involve bug-free output.

    61. Re: Guarantee by Anonymous Coward · · Score: 0

      I lol'ed and I'm having a very shitty night. Thanks ac

    62. Re:Guarantee by Anonymous Coward · · Score: 0

      All non trivial software has bugs.

    63. Re:Guarantee by noh8rz10 · · Score: 1

      Tell me, can you guess what event motivated Intel to begin using formal proofs in their chips? I'll give you two guesses, and take away the first.

      I give up, what?

    64. Re:Guarantee by phantomfive · · Score: 1

      They really started pursuing formal proofs after the pentium floating point bug

      --
      "First they came for the slanderers and i said nothing."
    65. Re:Guarantee by Jane+Q.+Public · · Score: 1

      "I don't think you understand the difference between writing a program with no bugs, and writing a program capable of performing any task however ill-defined. "

      I understand the difference just fine. I was replying in the context of GP's comment. My point was just that if you define "bug free" as "100% reliable", it simply isn't possible, as a practical matter, in many cases. It's NOT easy to do, and there probably isn't enough time for 100 people to make it 100% reliable.

      So my code HAS TO accept that a certain amount of malformed input will not produce usable output. Some people might call that "bad code". (Not me, however; I'm a practical person.)

    66. Re:Guarantee by noh8rz10 · · Score: 1

      whats a formal proof?

    67. Re:Guarantee by Jane+Q.+Public · · Score: 1

      "That comes down to definition of a "bug". What is the intended operation? Is that 100% defined? No? It isn't defined what to do with sufficiently inappropriate errors in the input? Not handling a case that wasn't intended to be handled isn't a "bug"."

      But now you're getting into the area of: what one person calls a bug, another might not.

      It was certainly the customer's "intention" that 100% of the text be parsed 100% reliably. It did not take long for him to be disabused of this notion, but in the beginning, if I had told him that 0.5% of the pages would require human intervention, he might not have hired me. (I did not know that at the time, myself. "Random" sampling of the tens of thousands of pages did not show much difficulty. Of course it is the rare exceptions that cause nearly all the problems.)

      Over time, of course, he and I both have more realistic views of what is possible with this data and what is not. But as I say, back in the beginning, if I had simply presented him with this code he probably would have called it "bug-riddled". But it's not. Where there are problems, it (nearly) always catches them, and logs a report.

      But when I am actually doing a run, and tens of thousands of pages are being processed, and ONE causes the program to crash: is that a bug? If you had no way to anticipate that one particular, strange bit of text that was different from all the rest?

    68. Re:Guarantee by phantomfive · · Score: 1

      Proving that your software is correct. Dijkstra was one of the first, strongest advocates of it. He created a method of teaching programming where you essentially prove everything. If you ever hear a quote by Dijkstra that, "OOP is an exceptionally bad idea" or "BASIC causes irreversible brain damage," it was because those things aren't based in formal verification, which he wanted everyone to learn.

      --
      "First they came for the slanderers and i said nothing."
    69. Re:Guarantee by Mitchell314 · · Score: 1

      Alcohol content verified by deductive reasoning.

      --
      I read TFA and all I got was this lousy cookie
    70. Re:Guarantee by phoenix_V · · Score: 1

      It can be done, but practical may not be what you would call this. Needed perhaps.

      http://www.fastcompany.com/281...

    71. Re:Guarantee by Anonymous Coward · · Score: 0

      My using the wrong mechanic what?

    72. Re:Guarantee by Karljohan · · Score: 1

      According to the bug seeding technique for estimating the confidence of software (e.g Pfleeger) you would have to seed even the simplest program with an infinite amount of bugs and then have your test team find them all before you can statistically guarantee that the program is bugfree.

    73. Re:Guarantee by Anonymous Coward · · Score: 0

      Most modern software shops have pretty much given up on software engineering and jump randomly from fad practice to fad practice with almost no maturity or consistency. Something as rigorous as following standards, licensing, carrying insurance... their heads would explode.

      My experience too :-(. Wish I had mod points...

    74. Re:Guarantee by SharpFang · · Score: 2

      Formal proof of design correctness doesn't preclude technical flukes.
      On the contrary, do you know the technological process to produce CPUs with varied speed and varied number of cores in the same family?
      Make a single design. Manufacture exactly the same wafers. Test the built CPUs, stress-test their capacity to perform at varied speeds.
      Surprise: the results vary wildly from chip to chip, made with exactly the same design, machine, process.
      These made with less contaminants will perform better and be labelled higher speeds, these speeds tagged in firmware. These where all 4 cores work flawlessly will be sold as quad-core. These where 2 cores are definitely underperforming, will have them disabled in firmware and be sold as dual core. You can often make your CPU triple-core by enabling one of cores disabled by factory.
      And the bottom line is the process of testing depends on luck - on the fact that the fault surfaces during the tests, and not later. That it's frequent enough to be noticed by the QA. That it doesn't appear in conditions obscure enough to be overlooked in test cases.
      As result you receive a product that will perform correctly most of the time in conditions not too varied from test conditions. But it's full of potential faults, and bugs for which no software solutions exist - because they are unique to your singular issue of the CPU.

      Of course there are bug-free CPUs. Manufactured with extreme redundancy, in a process suitable for CPUs of a thousandfold higher complexity. Except they are trivial too, each of the parts testable thoroughly. Modern Intels with byzanthine complexity of super-efficient optimizers built in, simply utilize every last nanometer of chip to fit more cache, more pipelines - they won't sacrifice half of the volume to features that will be used only during testing, to triple-check every single transistor.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    75. Re:Guarantee by phantomfive · · Score: 1

      And the bottom line is the process of testing depends on luck - on the fact that the fault surfaces during the tests, and not later. That it's frequent enough to be noticed by the QA. That it doesn't appear in conditions obscure enough to be overlooked in test cases. As result you receive a product that will perform correctly most of the time in conditions not too varied from test conditions.

      Yes, that is an extremely good point.

      Of course there are bug-free CPUs. Manufactured with extreme redundancy, in a process suitable for CPUs of a thousandfold higher complexity. Except they are trivial too, each of the parts testable thoroughly. Modern Intels with byzanthine complexity of super-efficient optimizers built in, simply utilize every last nanometer of chip to fit more cache, more pipelines - they won't sacrifice half of the volume to features that will be used only during testing, to triple-check every single transistor.

      Well, glad you solved that problem. Also worth mentioning that the CPUs can be run in redundant pairs (or more than pairs) to check for problems that may develop while running (normal wear and tear, etc).

      --
      "First they came for the slanderers and i said nothing."
    76. Re:Guarantee by Culture20 · · Score: 1

      The first problem in software is defining what a "bug" is.

      Exactly. In fact, the first bug was an environmental factor alien to the computer itself. An actual bug in with the radio tubes.

    77. Re:Guarantee by Mr.No · · Score: 1

      "Mother did it need to be so high?" - Roger Waters.

      "Mother do you think they'll break my balls?" - Roger Waters

    78. Re:Guarantee by Anonymous Coward · · Score: 0

      Go look up the errata for any random CPU from any manufacturer. There are always bugs.

    79. Re:Guarantee by khellendros1984 · · Score: 1
      I disagree. The programmer is closer to the builder's employee. The computer is the masonry trowel. An employee is paid to advance the aims of their employers, and in both cases, uses an appropriate tool to do so. The relative required skill of the two positions is moot; the important part of the analogy is the employer-employee-tool relationship.

      Less experienced or simply more optimistic programmers will make more mistakes because they're constantly learning.

      Not quite. Less-experienced programmers make more mistakes because they're...less experienced. If a more-experienced programmer stops learning, they aren't going to be a programmer for very long.

      One might further say that a programmer, who by trade is exercising the trade of "computer science", is in fact closer in position to that of a scientist.

      Computer science isn't a trade; it's a field of study. "Scientist" is a trade, but not one that's particularly closely-related to software engineering, so it's odd that you bring it up.

      --
      It is pitch black. You are likely to be eaten by a grue.
    80. Re:Guarantee by SuperDre · · Score: 1

      If you seriously think they aren't, then you are really naive.. Unless you write an application that is only a few lines, it might be possible, but even then, your code might be 'bugfree', but what about the compiler, what about the DLL's it's using, what about the OS functions it's using.. You can only try to reduce the chance on writing bugs, but eliminate them is just impossible.. (and don't come to me with crap like, 'but we use TDD' or some other 'naive' workflow...

    81. Re:Guarantee by gutnor · · Score: 1

      Let's not forget that the example is flawed. A brick wall losing bricks is a serious fault. There are plenty of minor fault you would have to pay to fix. For example, the wall is not perfectly straight, sorry the plaster guy will rectify this. There is a lighter or darker brick in the middle of the wall that annoys you ? The builder used cut bricks in place you told him the brick would be visible and you find it ugly ?

      And that is just talking about a very simply brick wall. When talking about a whole house, you need to go to court to have even serious fault corrected.

    82. Re:Guarantee by silentcoder · · Score: 1

      You are assuming:
      1) A bug free CPU - those don't exist.
      2) A bug free compiler/assembler/interpreter - those don't exist
      3) A bug free operating system (all programs make system calls) - those don't exist
      4) Perfect and undamaged hardware - something you have zero control over and which rarely exists for very long (especially in the consumer space - many, many crashes are caused by damaged memory chips).
      5) A perfect execution and runtime physical environment completely devoid of external forces (like R.F. interference or solar flares) which can alter the way the system operates - even temporarily.

      All of those will affect the running of your program and caused unexpected and unpredictable results - manifesting as bugs.
      Even if you could somehow right truly bug-free code, you still could never produce a bug-free program.
      Even if you try to make your code so redundant that no underlying bugs can affect the outcome - underlying bugs can affect the redundant code as well.

      True bug free programs have been proven to be mathematically impossible - it's an NP-complete program.
      Greatly simplified - the logic goes something like this: every potential bug found increases the time required to find the next potential bug exponentially (as you always find the easiest ones first and the remaining ones are ever harder).
      To get to zero bugs, is effectively a divide-by-zero time, that is - it would take an infinite amount of time.

      --
      Unicode killed the ASCII-art *
    83. Re:Guarantee by MadKeithV · · Score: 1

      Programming without bugs is easy. It's just slow and expensive. so nobody wants it. It's cheaper and easier to write bad code and ship it, absorbing backlash, than to build it right in the first place.

      Programming non-trivial things without bugs is very, very hard, and very often not cost-effective.

      Just build clear bug-free pieces, and assemble them.

      The combination of two bug-free pieces isn't necessarily bug-free. The glue code is where you typically end up with the subtle assumption and domain bugs.

      Take the time and care with each line to verify intention.

      What is the intention of 3rd party code? What is the *exact* intention of the code you wrote 6 weeks ago? You may have documentation. It may even be really good. It's unlikely to be 100% complete.

      Use modularity and error handling.

      Error handling and modularity in and of themselves do nothing to reduce buggyness, though they may make it easier and faster to find the more obvious and often-occurring ones. They are good practice though, and I strongly recommend them.

      I'm sure I'll be called naieve, but at least should move the smallest error free program to a much larger size.

      Sometimes being naive isn't bad - it often makes you aspire to better than the status quo, which isn't a bad thing. However, many "bugs" aren't even programming errors, they are communication failures somewhere between the customer and the developer. What the customer wants, what the customer asks for, and what the customer actually needs are three different things.

      But none of that will work when given a timeline half what it should be, and inadequate budget.

      A program that solves some of the problem now, even with bugs, is infinitely more valuable than a program that solves all of the problem (or more frequently, a small subset of the problem correctly) when it is too late. That goes back to the "cost effectiveness" - the solution that generates the most profit is the better one in a capitalist situation.
      There are other situations, such as healthcare, or community projects (open source), where "cost" either doesn't factor or is subservient to other goals such as safety, but it's not the general case.
      That still isn't a green light for cowboy coding, but if you're dead-set on bug-free you might find it hard to deliver.

    84. Re: Guarantee by Anonymous Coward · · Score: 0

      In your example, you have an unbounded loop, the program will not halt. That's a bug.

    85. Re:Guarantee by Half-pint+HAL · · Score: 1

      But when I am actually doing a run, and tens of thousands of pages are being processed, and ONE causes the program to crash: is that a bug? If you had no way to anticipate that one particular, strange bit of text that was different from all the rest?

      Yes, that's a bug. You may not be able to anticipate the nature of problem cases, but you have to assume they exist. Each individual task should be isolated by an exception handler so that the failure of one job in a batch doesn't cause the failure of the whole batch. That's one of the first rules of programming, that is.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    86. Re:Guarantee by psionski · · Score: 1

      And the bottom line is the process of testing depends on luck

      "Program testing can be used to show the presence of bugs, but never to show their absence!" - Edsger W. Dijkstra

    87. Re:Guarantee by TheRaven64 · · Score: 1

      There's a lot of work on provably correct software. Probably the most advanced currently is the NICTA group behind seL4. They estimate that the developer time (and therefore cost) is around 30 times greater than writing good (well documented, with a test suite providing good coverage) software without verification, which is significantly cheaper than previous efforts. It is worth it for things like seL4: a microkernel that is at the core of your TCB and provides guarantees. It's not clear yet that the cost will scale linearly with the size of the software, so 30 times is a pretty conservative estimate. 100 times is probably more likely.

      You don't need to be God to write correct software, you just need to put more than a couple of orders of magnitude more time and effort into it than you would for normal code. This includes making sure that you have a machine-readable specification that defines what 'correct' actually means. If your customer is willing to pay for this, then they can get correct software. Now, good luck finding a customer who is willing to pay 100 times more for the difference between 'mostly working' and 'formally verified'.

      --
      I am TheRaven on Soylent News
    88. Re:Guarantee by Half-pint+HAL · · Score: 1

      Functional languages, for instance, rule out entire classes of bugs present in imperative languages. People complain that they're hard to understand. Maybe. I argue that they're hard to understand if you're the kind of person who does not care about whether your program is correct or not.

      Actually, I think the resolution to this old argument is simple: FP as a subsystem of standard procedural and OO programming.

      FP alone is useless because interactive programming is often nothing more than a string of side-effects bound together by code. However, there is no imaginable program of non-trivial size that does not contain sub-tasks that fall under the definition of a mathematical function. By coding the distinction between a procedure and a function (FP style) into the language, you could eliminate many of the most troublesome bugs in a single stroke: the "oh-god-which-procedure-is-changing-this-effing-value" bugs.

      Consider the Kotaku article The Exceptional Beauty of Doom 3's Source Code -- one of the things the author comments on is the conventions used by iD Software to denote whether a procedure's argument is input, output, or both; and even that they almost never use a both-ways variable -- it should be either input or output, not both, for the sake of clarity and debugging. A heck of a lot of what goes on inside the Doom 3 engine is nothing more than churning through 3D vectors: that's maths, so that's a prime candidate for functional programming. Inputs and outputs would then be rigidly enforced at the software level, and no two-way variables would be allowed. The most complex parts of the code would be eliminated from the most complex debugging tasks.

      And to think, all these benefits from adding a single keyword, function or deffn....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    89. Re:Guarantee by Anonymous Coward · · Score: 0

      I wouldn't say it is possible to produce a program without bugs, NASA has an extremely low bug count for their important software, but I don't think it is zero, and does really cost an astronomical amount to produce it. What you missed in what you were replying to is the word "practical", it isn't practical because it would cost far too much for most companies to pay for.

    90. Re:Guarantee by KingOfBLASH · · Score: 1

      Bollocks.

      Why is it we don't see banks blowing up all the time because their software was crap? Why don't their systems just reset and customers find their account accidentally goes to zero or they get lucky and there's a lot of extra cash in their account? Or why is it that airplanes which are 99.999% automated these days (computer assisted take off and landings + autopilot) drop from the sky due to bugs?

      There are various programming methodologies that focus in on high quality software. They take a lot of time and effort, and many more employees then needed for a "get-it-out-as-quickly-as-possible" software campaign. They take a lot of time for things like code review and design and all of this adds a lot of overhead, which is why many employers where a failure does not create such a large cost aren't interested

    91. Re:Guarantee by RabidReindeer · · Score: 1

      I disagree. An old truck of mine died one day on the highway, leaving a toll booth. Completely dead, wouldn't even try and turn over. I had it towed, paid around $500 in diagnostics, parts and labor. A wiring harness came free, was hitting the exhaust manifold, melted the insulation, shorted, blew the fuse to the ECM. When they fixed it, I requested to show me where the problem was. They did. A few weeks later, the problem reoccurred. This time I was able to yank the wires off the manifold, replace the fuse and limp back to the garage. Said something along the lines of "you fixed the symptom, not the cause, make it right", and they did. They re-replaced the damaged wires and properly secured the harness gratis the second time around. I'd wager you'll more likely see this sort of behavior from a small shop, as they typically live and die on reputation and word of mouth. But, I think even chains/large companies have wised up and will strive to do the right thing (might not always happen) because of the ease today versus 20, even 10 years ago of spreading word about your experience.

      Treasure these people. They are so rare. I had a local luxury car dealer replace the engine, then the radiator and the ultimate cause of the problem was a crack in the distributor cap. Which should have been one of the first things found, since you have to do something with the distributor just to replace the engine. They also didn't replace all the hoses, so an obscure hose on the bottom failed soon thereafter, causing permanent warpage to the new engine. Needless to say, I don't go there anymore.

      The engine replacement, BTW was slightly premature, but not totally unreasonable, as it had quite a few miles and some compression problems. But it probably would have gone a few thousand more if they'd fixed the distributor cap at first.

    92. Re:Guarantee by dcw3 · · Score: 1

      Just like its impossible for most people to consistently land airplanes without crashing. In air travel, 99.9% of those people are weeded out of pilot programs.

      I take it you've never tried. It's actually more like...if you can drive a car, you can learn to land a plane with about 10-20 hrs of training. I solo'ed with 11, and never saw anyone get "weeded out".

      --
      Just another day in Paradise
    93. Re:Guarantee by KingOfBLASH · · Score: 1

      Bug free is completely possible. It's just not practical for you, because it would require:

      A). Review each of the pages and each of the formats.
      B). Complete a separate parser for each different page format that can read the page format, bug free
      C). Create a program that can determine which parser needs to be run based on your library of different formats.

      Now if you are really reading thousands of formats by thousands of different people probably the cost of investigating all of the pages and creating parsers might be tens or hundreds of thousands of hours of work. Which may make building a parser so expensive you'd be better off doing the work by hand. Or automating the work by hand with a process that gets things right 95% of the time.

      So what you are talking about is that you've done a cost benefit analysis and it's cheaper to not be successful 100% of the time.

      That's different then saying you CAN'T be successful 100% of the time.

      In reality, if a mistake doesn't cause big issues (losing money / lives) most companies would rather put out buggy software because it's much faster produce and much cheaper.

    94. Re:Guarantee by psmears · · Score: 1

      True bug free programs have been proven to be mathematically impossible - it's an NP-complete program.

      Nonsense. For one thing, "NP-complete" doesn't mean "mathematically impossible" - it just means that large problems may take a very long (but nonetheless finite) time to solve. And there's nothing mathematically impossible about bug-free programs - they're hard to come by in practice for non-trivial problems, but the limitation is human rather than mathematical.

      And to address your earlier comments: it's true that there may be bugs in the OS, the compiler or even the CPU - but in the context of the analogy, that's like having a fault in the wall's foundations - the bricklayer wouldn't be expected to be accountable for those (assuming another contractor was responsible for laying them...)

    95. Re:Guarantee by Bengie · · Score: 1

      That's what you get when you run your own business and have tax deductible write offs and insurance. Can I write off bugs from my taxes or make an insurance claim?

    96. Re:Guarantee by Bengie · · Score: 1

      A better analogy to software development would be truck development. You can wait 5 years for the final tested product that comes with a warranty, but if you want it 6 months in to development, you're going to get an untested vehicle with no warranty.

    97. Re:Guarantee by TheSkepticCanuck · · Score: 1

      Well, obviously, you would have to write everything yourself, from the custom OS upwards. The testing would have to be extreme, and extensive, and the code meticulously written and reviewed. All code paths would have to be exercised fully. You would not be able to use any third-party libraries of any kind, and you might even have to build the compilers and linkers yourself too. This is certainly doable, but the cost and time needed would be insanely prohibitive, so that is why it is never done. The cost and time components have to be weighed against the possibility of bugs being present. Most of us would rather risk a few bugs than to have to wait decades between releases, and have the software cost millions, if not billions, of dollars.

    98. Re:Guarantee by Grishnakh · · Score: 1

      If anything, a model like the Germans have for engineering in general --a licensed engineer must sign off on the design, and he's personally liable for provable factory defects-- might work eventually... once we figure out what reasonable standards for software engineering would be.

      This model doesn't even make sense though. How is one guy supposed to be able to verify that everything in a design is correct, and also that everything in the final manufactured product is correct. Let's look at bridges for example: how is some engineer supposed to certify that all the construction workers did exactly what they're supposed to, and didn't make any mistakes and cover them up? It's impossible. So why should he be personally liable for that? His company should be liable, sure, but him personally? Why should he take the blame, and not the overpaid executives running the company, who certainly make far more money than he does? It's management's job to double-check everything and oversee employees. If you isolate the engineer's liability to the design itself, that would make more sense, as bridge designs are generally well-understood and can be verified through simulation, load analysis, etc.

      With software, none of this makes sense. There's no way a single person can certify that every single line of code in a 1M+ line program is correct. The magnitude of complexity is so high, and so many people are involved in such a project, there's no way any one person can really assume responsibility for it.

    99. Re:Guarantee by Grishnakh · · Score: 1

      But when I am actually doing a run, and tens of thousands of pages are being processed, and ONE causes the program to crash: is that a bug? If you had no way to anticipate that one particular, strange bit of text that was different from all the rest?

      I'm just going off a quick reading of your posts in this thread, but this seems to be to definitely be a "bug". A program should never crash, ever, unless perhaps some cosmic radiation has flipped a bit or there's some other hardware fault. A program should never crash because of bad input data; it should be able to handle that, even if it just means rejecting it, logging an error, etc. Of course, this is theoretical, but this seems like a pretty basic requirement for an input parser, to be able to handle any input data at all without crashing. If the data is total garbage, it can flag an error and quit, but that's not the same as "crashing". Crashing is always a bug: it means you've dereferenced a bad pointer or done something else of that nature and not handled an error correctly. Programs should never crash.

    100. Re:Guarantee by Urza9814 · · Score: 1

      ...and all of these proposals are entirely irrelevant, as they cannot be implemented by the software developer alone. Which goes back to the original point in this thread -- *a programmer* cannot guarantee that their software will never malfunction so long as there is the possibility that the hardware underneath will. Until you find a way to produce such CPUs (and motherboards and monitors and everything else similarly bug-free) efficiently enough that nobody owns anything else, you can't possibly guarantee that no software will ever fail.

      The builder is trying to build a wall on quicksand. You are suggesting that he build it on concrete. Great idea, until he doesn't get paid at all because he built the wall on someone else's property..... :)

    101. Re:Guarantee by Grishnakh · · Score: 1

      It won't change until we all collectively believe it *can* change, and demand change, and refuse to allow those that refuse to change to work in this industry.

      There's no way to change that without adopting Stalinism, where the government owns and runs the corporations.

      When management shortens deadlines without input from the team, or does other boneheaded things which result in poor-quality software, there's nothing that can be done. They're called "management" for a reason: they run the company. They've been picked by the company's owners to run the company; if you don't like the way they manage things, you can either quit (if you're an employee) or not buy that company's products (if you're a customer). That's it. Employees (the people who write the software) do not have any power to force management to change its ways, other than by quitting.

      It's different with hospitals because lives are on the line and there's specific laws created to deal with the liability involved there. Also, the structure is entirely different: surgeons at hospitals (at least in the US) are NOT employees of the hospital. They work for themselves, and basically contract with the hospital. That's why you get separate bills from the doctor/surgeon and from the hospital. (I imagine this is different in socialized healthcare countries, but they probably have better laws and regulations to prevent abuses, just like those countries generally have much more stringent regulations governing employee treatment in all industries.)

      Again, there's nothing you can do to change management, except by perhaps enacting government regulation on them (which sounds like it'd be rather micromanagerial and ineffective), or by doing a better job certifying the company's products and dealing with liability for them. If a company's software products are life-critical, that company likely suffers a certain level of liability that other software companies don't, and can be sued if their products fail. This is why, for example, the aviation industry has the DO-178 standard for software development for avionics software.

    102. Re:Guarantee by OakDragon · · Score: 1

      My first professional programming stint was working for my uncle's small business software development outfit. (And this was so small, I was the senior developer, next to him. :) )

      One of my first questions was, "Shouldn't we fix mistakes we make free of charge?" He looked at me with surprise. "No, not at all!"

      We were working on accounting software for doctors' offices at the time. He said, "Look, say you go to the doctor for a nasty cough. He gives you some medicine, charges you, and you go home. But next week, the cough hasn't gone away, so you come back to the doctor. Does he charge you for the 2nd visit, or is it free?"

      Not a perfect analogy either, but if you prefer a car analogy, in most cases a mechanic will charge you for a 2nd visit, too.

    103. Re:Guarantee by Ex-MislTech · · Score: 1

      Its called externalizations.

      The corporations want to shift the cost of doing business elsewhere.

      So they look for ways to externalize their costs.

      They off load their healthcare costs like walmart by making most of
      the employees part time, etc etc....

      So in this case they look to blame one engineer for something as a scapegoat
      instead of the company taking the blame as the error was likely a "group effort", lol.

      In this age of fascism the corporation has more rights then a human,
      and its needs will be placed above those of humans.

      Many dystopian stories covered what is happening right now, and yet it continues.

      --
      google "32 trillion offshore needs IRS attention"
    104. Re: Guarantee by Anonymous Coward · · Score: 0

      It is possible. It's a tradeoff between design time and support time. A good design makes life easier for the next guy and increases the up front estimate, which is usually the object of competition, so bad business. A poor design makes life harder for everyone, but gets functionality to the user sooner and more competitively at a lower initial cost. Then the user decides what frustrates them most and complaints are taken into consideration when prioritizing fixes. So less work wasted on unwanted features. Fixes to a poor design result in complexity and degradation of quality over time, and inevitably a rewrite occurs, but that's tomorrow.

      Anyway, if you mean to punish coders for a business decision, you're wrong. If you mean to punish the business you will not get your features as fast as you do, and the ones who don't follow these standards will be operating more efficiently and surpass you technologically. There's a frustrating economic efficiency to buggy software.

    105. Re:Guarantee by coinreturn · · Score: 1

      Your using the wrong mechanic. I've had free labour, and even free parts from my regular mechanic after he's realised he misdiagnosed a problem originally.

      The problem is that, often, the customer doesn't have enough knowledge to prove the mechanic failed in his diagnosis. Most mechanics will claim that you now have a new problem that was masked by the old one. It is sometimes difficult to tell the BS from the true under these conditions. And even harder to prove. I have had both kinds of mechanics over the years.

    106. Re:Guarantee by mjwalshe · · Score: 1

      I suspect that Bizzeh comes from a country with very dodgy labor laws - maybe the one with bonds and reliving letter/chitty :-)

    107. Re:Guarantee by mjwalshe · · Score: 1

      And deliberately doing work that needs to be redone might be a way of getting extra overtime - there is a lot of "Spanish" practices in construction.

    108. Re:Guarantee by Anonymous Coward · · Score: 0

      There is a method for producing bug-free code. Your method is not that method; it cannot be trusted to produce bug-free code.

      The method for producing bug-free code is formal verification. You prove, mathematically, that your code responds correctly to all possible inputs. Then you just have to worry about hardware flaws. It is an enormous pain in the ass for all but trivial programs.

      You are naive, I'll say it. You're also apparently ignorant of the actual work on the subject, and think that your abilities are superior to what they actually are. I also notice you don't mention unit testing, which I suspect means that you are wilfully ignorant of that as well. I'm pretty sure you're too experienced to be this amateur; go crack a few books and learn your profession.

    109. Re:Guarantee by Grishnakh · · Score: 1

      So in this case they look to blame one engineer for something as a scapegoat
      instead of the company taking the blame as the error was likely a "group effort", lol.

      I'm not disagreeing that companies would like to do this, but this depends on someone willing to be the fall guy. Why would any software engineers sign up for this job? They won't (not many, at least, not enough for this plan to be realized).

      Look at the Slashdot article yesterday about airline pilots. The industry has been paying them terribly, and the cost to get trained are very high, and now the FAA changed the rules requiring more hours, and as a result, not many people bother with the profession and there's huge shortages. Corporations can't force people to work; they can only screw over their workforce so much before it bites them in the ass.

    110. Re:Guarantee by phantomfive · · Score: 1

      ...and all of these proposals are entirely irrelevant, as they cannot be implemented by the software developer alone. Which goes back to the original point in this thread -- *a programmer* cannot guarantee that their software will never malfunction so long as there is the possibility that the hardware underneath will. Until you find a way to produce such CPUs (and motherboards and monitors and everything else similarly bug-free) efficiently enough that nobody owns anything else, you can't possibly guarantee that no software will ever fail.

      Once again, go look at the thread above until you see where the book "Transaction Processing" is mentioned. Buy that book, or get it from a library. The book goes into great detail about this topic, and how to solve the problems of unreliable hardware (which is always unreliable). You are complaining about the easy part, which just goes to show how little you understand the problem.

      --
      "First they came for the slanderers and i said nothing."
    111. Re:Guarantee by phantomfive · · Score: 1

      Yes, and what did he suggest instead of testing programs, do you know? "The only way to be confident there are no bugs is to never find any, no matter how much you test it"

      --
      "First they came for the slanderers and i said nothing."
    112. Re:Guarantee by phantomfive · · Score: 1

      I also look at Intel as one of the most important groups using formal verification, although they use it in their chips, not their software (AFAIK)

      --
      "First they came for the slanderers and i said nothing."
    113. Re:Guarantee by TheRaven64 · · Score: 1

      You might look at Centaur. They make much heavier use of formal verification in their chip designs (in collaboration with UTexas) than Intel. Intel has the luxury of being able to afford to throw manpower at testing and simulation, Centaur (being much smaller) has to spend their time and manpower as efficiently as possible to compete.

      --
      I am TheRaven on Soylent News
    114. Re:Guarantee by AK+Marc · · Score: 1

      However, many "bugs" aren't even programming errors, they are communication failures somewhere between the customer and the developer. What the customer wants, what the customer asks for, and what the customer actually needs are three different things.

      And there's a difference between a a programming bug and a program bug. If the "program" doesn't do what the customer wants, it's a program bug. If the program doesn't do what the programmer wants, that's a programmer bug. I tried to be consistent with my word usage, and I was talking about programmer bugs. Program bugs aren't technical faults. The only faults the programmer can directly address are the technical ones. So I was trying to pick my words to only address those. When the customer asks for something they don't want, then complains when the signed requirements document is wrong (6 months after delivery), that's not the "fault" of the programmer, and most places separate out the programmers from the customer so the programmer doesn't accidentally give what the customer actually wants, as the paper trail would leave them open to liability. You can't sue someone for breach of contract when you have a requirements doc, signed by all parties, which the program meets every requirement in it (given a well worded contract). So you give them what they ask for, even if it isn't what they want. But whatever you give them should execute in the manner intended by the programmer.

    115. Re: Guarantee by AK+Marc · · Score: 1

      You are just re-defining bug. So please, give an exhaustive definition of bug before asserting my definition is wrong.

    116. Re:Guarantee by AK+Marc · · Score: 1

      So bug-free code, before it's verified, is not bug free? What bug does a bug free code contain before testing/verification that is removed by testing/verification?

      If none, then the step of verification is irrelevant to whether the code is bug free.

    117. Re:Guarantee by AK+Marc · · Score: 1

      The combination of two bug-free pieces isn't necessarily bug-free. The glue code is where you typically end up with the subtle assumption and domain bugs.

      Then you didn't combine bug-free code. The glue is code. And if the glue is bug-laden, then you combined bug-free code with buggy code, to get a buggy result.

      Error handling and modularity in and of themselves do nothing to reduce buggyness,

      That gets into the definition of "bug". If an error is caught and handled, then it's not necessarily a bug. If someone performs a SQL injection attack, what do the requirements say to do with it? Nothing? Then the program should do what? Assume it's valid, and put the string in, without alteration? Clean out any unusual characters and pass it in? In many cases, the actual desired operation would be different if imported vs manually inputted. If imported, drop that one record, and make a note in the log. If manually entered, pop up an error message. Both of what I'd consider the most commonly requested/expected manners are error handling. If the intention is to drop the record in a batch job, and you handle it in some other manner, that's a bug. If you handle it without user error reported, that's a bug. But defining what to do with "bad" inputs (truncate records too long, whatever) and handling them appropriately is necessary for bug free operation.

      Unless a bug is only unintended operation when given well-behaved inputs. But most people I hear using that term don't limit it to well-behaved inputs. Allowing a SQL injection attack is listed as a programming error, right?

      A program that solves some of the problem now, even with bugs, is infinitely more valuable than a program that solves all of the problem (or more frequently, a small subset of the problem correctly) when it is too late. That goes back to the "cost effectiveness" - the solution that generates the most profit is the better one in a capitalist situation.

      And risk. Something I've never seen a programmer have a good grasp of. Nearly all humans have a poor measure of rates of rare occurrences. Our firmware is hard wired to overstate or understate them depending on biological factors. As so many programmers think of themselves as logical beings, they can't accept the illogical meatspace programming, so can't introspect well enough to recognize such errors in their own programming. So "risk" (even if they can define it) is as foreign to them as their program code is to the customer that contracted for the code.

    118. Re:Guarantee by DarwinSurvivor · · Score: 1

      Then one solar-flare-reversed-bit later all your work is undone in a microsecond.

    119. Re:Guarantee by psithurism · · Score: 1

      I agree, that rabidreindeer oughta switch mechanics since private mechanics will usually do what you described, but he's also right that they don't have to do that.

      Just as we have the option of working off the clock to do our debugging, mechanics can choose to do the same thing and in small shops they often choose to for the sake of costumer good will and personal pride. I suspect if you find a good private developer to contract some small coding projects to, he would come back and fix serious bugs for free as well. I'd certainly consider doing that if I was that developer.

      Because they don't have to, big repair centers won't do this for you and their employees usually won't. The employee ran the standard diagnostic tools in the standard way; the tools indicated a problem that is to be fixed with X (even if his gut tells him Y), which he then installed precisely to specification. Didn't work? Not our problem; talk to the manufacturer about making better diagnostics. And the same goes for software development projects. In both cases, the employee got paid a rate to do X, like hell I'm coming back in to work for free and buying my own hardware because now my boss wants me to do Y.

    120. Re:Guarantee by dnavid · · Score: 1

      It won't change until we all collectively believe it *can* change, and demand change, and refuse to allow those that refuse to change to work in this industry.

      There's no way to change that without adopting Stalinism, where the government owns and runs the corporations.

      I see.

      It's different with hospitals because lives are on the line and there's specific laws created to deal with the liability involved there.

      Stalinistic laws, I suppose.

    121. Re:Guarantee by Grishnakh · · Score: 1

      It's a slippery slope. You really want the government setting up detailed regulations governing software development and how software projects are to be managed?

    122. Re:Guarantee by Cederic · · Score: 1

      The software industry has existed for the last 60 years. You would think that in that time we would have improved how to write correct bug free code. Yes writing code is complex, but it is no more complex that building a rocket carrying people to the moon (and not exploding in the process)

      I'm writing this using a keyboard running software interacting with a complex and sophisticated general computing device which has correctly negotiated a resilient wireless network link that carries the protocols used to access this web page, which has rendered within a self-contained operating system runnign on a host operating system that's also receiving, interpreting, preparing for visual output and displaying a stream of data containing the encoded footage of a football game in which Kolo Toure has scored an own goal.

      People have been playing football since long before we sent men to the moon and yet they still score own goals; even so you think the billions of lines of code enabling all of this isn't progress?

    123. Re:Guarantee by dnavid · · Score: 1

      It's a slippery slope. You really want the government setting up detailed regulations governing software development and how software projects are to be managed?

      The government does not dictate which scalpels to use or how much stitches to sew, and yet the medical profession is about a gazillion times more reliable than the software development industry, even though the medical profession is also saddled with performing services on a platform far more unpredictable than any computer system created. Even Windows.

    124. Re:Guarantee by dnavid · · Score: 1

      In reality, the truth is its impossible for most people to write non-trivial programs without bugs. Just like its impossible for most people to consistently land airplanes without crashing. In air travel, 99.9% of those people are weeded out of pilot programs. In programming, they move on to the next project.

      Part of the problem is that the programming profession hasn't had its professional renaissance like the medical profession had in the twentieth century. We don't train programmers to be skilled, efficient, and above all conform to an agreed to set of professional standards. There's no such thing as programmer malpractice. Basically the software development industry is exactly where the medical profession would be if everyone owned a medical text from ancient Greece and treated themselves and their friends based on guesswork and late night infomercials.

      That analogy doesn't work. Quack medicine is often worse than no medicine at all (there is evidence that, prior to the 20th century, doctors were as likely to kill the patient as to cure them). In contrast, a buggy and incomplete program may still be better than no program at all.

      Most of the time, when code gets screwed up, nobody dies. In those cases where shoddy code actually could put lives at risk (e.g. embedded systems for vehicles, medical equipment, etc.) then there usually is more rigorous quality control, better and more comprehensive testing, and so forth. But if you demand that every piece of code in existence be written to those standards, most people and organizations won't be able to afford having any code written at all.

      How is it then that we can afford so much better medical services, so much better air transportation, so much better everything else, but if we want reliable code its going to cost extreme amounts of money? What your thesis above seems to be saying is if only software killed more people, not only would we have better software, but it would be cheaper as well. That's an interesting conjecture to forward.

    125. Re:Guarantee by Jane+Q.+Public · · Score: 1

      " Each individual task should be isolated by an exception handler so that the failure of one job in a batch doesn't cause the failure of the whole batch."

      Yes, but now you're getting into the area of "should be" versus "can be". Or perhaps more accurately, "practically can be".

      As I was saying earlier: without trying to build a full-blown Watson-like text parsing engine (which is WAY beyond the scope of this project), it simply isn't possible to anticipate all the possible errors. This is TEXT, remember. And people can fuck up text in horrifically unpredictable ways. Regardless of whether it is a "first rule of programming" or not, it is only possible to account for the errors you can anticipate. Certainly, there are times when you probably should have anticipated something you did not. But some things are not anticipated.

      Having said that: I DO trap errors. When I said the program "crashed", I just meant it stopped running and, spewed out a runtime-error message. Anticipated errors are all logged. Only unanticipated errors cause the program to halt. And even those are trapped and give me valuable debug information.

      Next run, that error will be anticipated and (we hope) dealt with in the code so it doesn't happen again. But that doesn't preclude another unanticipated error from happening after another 10,000 or so documents.

    126. Re:Guarantee by Jane+Q.+Public · · Score: 1

      As I replied to the other person above: I didn't mean "crash" literally. I have errors sufficiently trapped that it doesn't actually crash. It just stops running. So it isn't an actual crash, but it IS a pain in the ass.

      Apologies for any confusion. I have anticipated problems with errors in the text; those are handled automatically. UNanticipated errors cause the program to halt with an error message.

      I agree that it shouldn't "crash", and it doesn't. Just an unfortunate choice of words.

    127. Re:Guarantee by hermitdev · · Score: 1

      I definitely value that shop. I'd been there before, and they'd done good work. And they made that f'up right. That's what good shops do. I don't expect everyone to be infallible, but when you do make a mistake, own it and make it right. I actually think that correcting a f'up like that, and doing it in a friendly and helpful manner, can often make a more loyal customer than just getting it right the first time. (I'm thinking, someone that has always had results correct immediately will be more likely to switch "suppliers' of goods/services when they see a lower price).

    128. Re:Guarantee by Jane+Q.+Public · · Score: 1

      No, I'm literally saying it probably can't be done, today. Maybe next week.

      But in all honesty, I serious doubt even IBM's Watson would be able to 100% reliably parse all of this text, with its formatting errors and typos.

    129. Re:Guarantee by Jane+Q.+Public · · Score: 1

      This. Thank you.

      There was some misunderstanding over my use of the word "crash". My program doesn't crash. But when it hits a serious unanticipated problem, it does halt.

      And that's a GOOD thing. Because if it didn't halt when it came across something anticipated, I wouldn't have a chance to change the code to anticipate it again later. So the first 10,000 might work fine, but all the next 100,000 could have errors and I wouldn't catch them until the damage was done .

    130. Re:Guarantee by ppanon · · Score: 1

      So when the employer mandates an inappropriate tool for the job (because they believe it will be cheaper/easier to find people to maintain the system), then who's on the hook for the repairs? I mean, do you expect the mechanic to pay for a problem that arises because the car owner decided he didn't want to pay for someone with access to a service bay with a hoist?

      --
      Laissez lire, et laissez danser; ces deux amusements ne feront jamais de mal au monde. - Voltaire
    131. Re:Guarantee by ppanon · · Score: 1

      How is it then that we can afford so much better medical services, so much better air transportation, so much better everything else, but if we want reliable code its going to cost extreme amounts of money?

      Most medical practice is based on a limited set of diseases. It's a large set, but it's not the medical equivalent of Turing complete. When patients get sick and no known treatment is known for that disease, they sometimes die. Sometimes the treatments are only partially effective. Many times, patients are given the wrong drugs or doses in hospitals with harmful or even deadly results. Patients get mixed up and have the wrong operations performed on them (to the point that it's getting more common for the area scheduled to be operated on to get marked up with ink while the patient is still conscious). Such are the bugs in the medical field that many lawyers get rich from litigation over those bugs.

      --
      Laissez lire, et laissez danser; ces deux amusements ne feront jamais de mal au monde. - Voltaire
    132. Re:Guarantee by khellendros1984 · · Score: 1

      It's the employer's job to stand by their product or service, but to be honest in the first place whether they can realistically fulfill the customer's needs. It's the employees' job to inform their employer that they don't have the proper tools to do the job, but to give the job their best effort anyhow (or seek employment elsewhere).

      If the customer themself made a informed decision that ends up being against their best interests after being informed of it by the provider of the product/service, that sounds like a situation a lot of businesses would try to rectify as a courtesy to the customer.

      What did I say in my previous post that made it sound like I'd want to hold the employee/mechanic personally liable for a mistake?

      --
      It is pitch black. You are likely to be eaten by a grue.
    133. Re:Guarantee by Half-pint+HAL · · Score: 1

      As I was saying earlier: without trying to build a full-blown Watson-like text parsing engine (which is WAY beyond the scope of this project), it simply isn't possible to anticipate all the possible errors.
      ...
      Regardless of whether it is a "first rule of programming" or not, it is only possible to account for the errors you can anticipate.

      And I said, you're not expected to anticipate what the error is, just that this section of the program is prone to various errors regardless of type.

      Having said that: I DO trap errors. When I said the program "crashed", I just meant it stopped running and, spewed out a runtime-error message. Anticipated errors are all logged. Only unanticipated errors cause the program to halt. And even those are trapped and give me valuable debug information.

      Next run, that error will be anticipated and (we hope) dealt with in the code so it doesn't happen again. But that doesn't preclude another unanticipated error from happening after another 10,000 or so documents.

      Sorry, but you're still making too much work for yourself by letting one faulty page halt the entire job.

      You asked the question (and I quote): But when I am actually doing a run, and tens of thousands of pages are being processed, and ONE causes the program to crash: is that a bug?

      Yes it is. A batch run of tens of thousands of pages should have the code that handles an individual page wrapped in an exception handler that traps unknown errors, logs information for debugging, marks the missing page in the output (for manual intervention) and then moves on to the next page. That way you get (tens of thousands - 1) pages processed and you have a perfectly acceptable error rate in the region of 0.01%

      You should not stop the entire batch of tens of thousands of pages for an unanticipated problem in a single solitary one of them. It is trivially easy to prevent this happening -- unless the unanticipated fault jams your scanner.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    134. Re:Guarantee by JDG1980 · · Score: 1

      How is it then that we can afford so much better medical services, so much better air transportation, so much better everything else, but if we want reliable code its going to cost extreme amounts of money?

      Actually, we can't afford these things. Medical costs have been rising faster than inflation for years, to the point where they will swallow the rest of the economy whole if nothing is done to increase supply and reduce costs. Airlines don't make money – this has pretty much been a universal rule since deregulation.

      Why do you want to take the rules from two of the most screwed-up parts of our economy and apply them to one of the few areas that actually works pretty well?

    135. Re:Guarantee by Jane+Q.+Public · · Score: 1

      "Sorry, but you're still making too much work for yourself by letting one faulty page halt the entire job."

      NO, I definitely am not.

      If the program goes through 1,000 chunks of text successfully, then chokes on # 1001, what is the likelihood that I will run into the same kind of issue when it parses 200,000 of them?

      Answer, to be quite honest: unknown.

      Therefore, the program halts, with a meaningful error message. That way, I can look at the problem and refine the code, so it WON'T halt again on the next trial run.

      Understand that my goal is to minimize the amount of human intervention (parsing) necessary, while maximizing the total amount of successful parsing.

      Yes, I have to make a judgment call on many of them. I must say to myself: "Does this look like something that is likely to occur again in hundreds of thousands of data points?" If the answer is yes, it is likely to occur often, then I must refine my code to handle that situation. If the answer is no, I can change the code to record this instance as something a human needs to look at, and resume its parsing.

    136. Re:Guarantee by Jane+Q.+Public · · Score: 1

      But understand: If the program halts, the problem does get resolved, one way or the other. It won't halt again on the same kind of problem in the subsequent runs.

    137. Re:Guarantee by dnavid · · Score: 1

      Why do you want to take the rules from two of the most screwed-up parts of our economy and apply them to one of the few areas that actually works pretty well?

      Its only by the standards invented for the software industry alone that the software industry "works pretty well." By any other standard of quality it scores a zero on a scale of one to ten. We all sit around and agree that software is complex complex complex and its amazing programmers get computers to do anything at all blah blah Turing blah and then we judge software with preschool rules that say you can't hold any failing against software. And of course on that scale it works pretty well. By that standard 12th century medicine worked pretty well, astrology works pretty well, and always betting on black works surprisingly well in Vegas.

    138. Re:Guarantee by Anonymous Coward · · Score: 0

      That depends on the shop really... and they price accordingly. Example - IBM will write software and follow all the software engineering standards, insurance etc - but only for large £££ contracts.

    139. Re:Guarantee by cwsumner · · Score: 1

      ... First, you need to prove the processor is bug free- there *have* been floating point bugs in Intel processors in the past. Then every other piece of hardware in the system. Then the system as a whole.

      Once you've done that- ...

      Except we were talking about "errors made by the programmer".
      What you say is true, but too often it is used as an excuse for lazy programming.

    140. Re:Guarantee by cwsumner · · Score: 1

      ... Programmers are far above the low level work of brick laying. ...

      There is some truth in what you say, but it's obvious that you don't know anything about bricklaying. Jobs that have lower prestege are not necessarily less complicated. Try building a garden wall for your house. If you don't spend a sgnificant amount of time studying, then it will probably last less that a year.

    141. Re:Guarantee by Roger+W+Moore · · Score: 1

      I am not a construction worker. I am a civil engineer.

      Not really. Would you hire a civil engineer who gave no guarantee that his bride would not fall down?

    142. Re:Guarantee by Roger+W+Moore · · Score: 1

      Arghh bridge, not bride!

    143. Re:Guarantee by Roger+W+Moore · · Score: 1

      We were working on accounting software for doctors' offices at the time. He said, "Look, say you go to the doctor for a nasty cough. He gives you some medicine, charges you, and you go home. But next week, the cough hasn't gone away, so you come back to the doctor. Does he charge you for the 2nd visit, or is it free?"

      Yes, it's free. Just like the first visit. Having a national health service has its benefits! ;-)

  69. Nope, he's wrong by Anonymous Coward · · Score: 0

    Of course bosses want you to work for free for any reason they can think up.
    There's a Fair Labor Standards Act that pretty much says "No" to that.

  70. If your employer pays you to make it... by Anonymous Coward · · Score: 0

    ...then he pays you to fix it too. Whether it's brick walls or software

  71. I always charge for fixing my own bugs by n1vz3r · · Score: 1

    Probably because in 90% cases I'm the only developer (I work in really small company). I'm fine with this because I tell myself that if I would try to create better (bug-free) code it will take more effort - and still result in almost the same cost. So the resulting price ((x + 0) + y) is the same (x before the bug was found, y after it was fixed) as if I would develop the feature initally bug-free ((x + y) + 0). Ok, probably it's not great idea to tell that to the customer, but it's better for dealing with my conscience than nothing :) The only difference between two approaches (create fast, then fix, or create slowly, then don't fix) is having an irritated client (but in second case he will be irritated by 'slow' development, so it's questionable).

  72. Simple. by Anonymous Coward · · Score: 0

    It is because you cannot insure software but you can insure brick walls. The bricklayer can get insurance to cover him for cases of bad workmanship. Try getting insurance on data. No insurance company will touch you.

  73. Depends on when the wall failed by medv4380 · · Score: 1

    Under the constraints of the analogy sure. If a developer ignored an obvious defect, bricks falling out the bottom, early in the process then sure the developer should repair them immediately. However, there is no such thing as a perfect wall or perfect house. You inspect the wall, or house before you sign for it, and if you agreed that it meet your expectations then you pay for it, or whatever the contract required. Some houses come with insurance that in case a defect is discovered within a grace period that it will be corrected, and that's payed for by the insurance. If it is outside the grace period of the contract, or insurance, then the customer is going to have to pay for any future defects found. You can't expect someone to build an earthquake proof home that covers every situation unimagined.

  74. Having laid bricks.... by Anonymous Coward · · Score: 0

    Building a brick wall is a 'known' art; the requirements for a good wall are in the condition of the building site (Is the ground underneath firm or soft...), the specifications for the mortar (which can change as the weather changes, the condition of the bricks...), the thickness and height of the wall, all requirements that are well known and documented.

    Software, however, isn't bound by the same limits - it's as if the bricklayer/Mason not only had to make the bricks on the spot, but haul in the underlying earth as well, had to burn the lime to make the mortar, dig the sand and haul the water from a well he dug himself. The Bricklayer has to hope the the supplies he'll be using are of decent quality; he has little control over what the customer will provide; and if the supplies provided are not quality, there's only a limited amount the bricklayer can do to adjust for the deficiencies.

    When a wall is being built, the number of bricks needed, the amount of mortar and grout are calculable, the bricks themselves will be of known quality, and the ground underneath will be prepared for the wall before the first foundation layer of mortar is placed to bed in the first brick. The Bricklayer implements an established plan; his creativity is in adjusting for unexpected small problems, not in changing a wall into the beginnings of a building.

    This is entirely different from writing code; which is closer to writing a novel. Imagination is teased and twisted into words and images; and the programmer and the QC tester act as writer and editor, revising and rewriting pages of dialog, establishing themes and plots. Eventually, the 'Novel' is finished, and the entire software package is ready for the 'Readers' - those who will use the program.

    Bricklaying v writing; it's not a subtle difference.

  75. The manager is responsible, to start by quietwalker · · Score: 1

    Let's assume the programmer is average. They write some good code, some not so good, they have a certain bug rate. We have to assume that even the best programmers introduce bugs here and there. If you assume that no bugs will be created, or will develop later on - you are not fit to be a manager. Bugs happen.

    Knowing that, a good project manager is going to create a system with peer review, with automated and manual testing, both unit and functional, frequent project sanity checks and of course, reasonable timelines and room in the schedule for refactoring and teardowns, not to mention some amount of signoff from those who okay'ed the project and approved each step.

    If they won't provide that - it's on them. If they can't, it's those above them, and so on. That's the way it works; those above you in the chain need to provide an environment in which to excel, if they expect excellent results.

    The downside, of course, is that it costs time and money, even if you start with exceptional people - not just average ones.

  76. Testing takes half a project's time and money by Anonymous Coward · · Score: 0

    I don't see why you'd have to do that on your own time, it is part of the job, and as such you should be paid for it.

  77. Close, but not quite by Overzeetop · · Score: 4, Insightful

    You mean you never reuse the same code, or use a pattern of progress to build code? It's completely chaotic? No, of course not.

    Interestingly, when you build a bridge of a skyscraper, and your part fails (for some reason - nail pops in drywall, paint doesn't adhere tot he steel, the road surface is too rough) you redo the work for free. Now, that's the corporate "you" not the personal you. The person making the bid covers it
    (subcontractor, contractor, consultant, whatever), not the employee generally. And, if the architect or engineer designs it wrong and the plans don't meet code - they generally are required to redesign it for free. There are even some contracts which are price dependent - if the estimated cost of the project exceeds the budget the architect has to redesign it for free (analogy: you write code and it takes too many compute cycles/doesn't run of reference hardware).

    As for payment, cost overruns which are the result of poor or incomplete workmanship (bugs) are nearly always born by the person doing the shoddy work, never the client (unless the client decides they want to pay for some reason, or are too removed from the work to realize they've been double charged).

    Although I've known contractors to make employees fix screw ups on their own time, it's generally the company that bears the burden of the repair costs - so the OP should have said that, had he been contracted for a fixed fee to complete the job, yes - up to a limited warranty period; as an employee his contract is to perform services at an hourly (or weekly or yearly) rate. The corporation pays the employee a far lower wage than the equivalent hourly rate they receive for the product, because they take those risks.

    --
    Is it just my observation, or are there way too many stupid people in the world?
    1. Re:Close, but not quite by david_thornley · · Score: 1

      And, in all those conditions, notice the price negotiations and up-front specifications. The specifications will be frozen, and any change will be at best expensive and at worst infeasible. The contracting company will include all sorts of contingencies in their bid. Some preconditions may be written into the contract, providing for penalties or such if the contracting company has been materially misled on something.

      So, the boss in question should negotiate each project with employees up front, with complete specifications, allow them to be paid enough extra to cover most contingencies, and provide certain guarantees to the employee. Moreover, the employees will have free time if they finish the job early. Think that'll catch on?

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    2. Re:Close, but not quite by Overzeetop · · Score: 1

      Yeah- right ;-) Better to cover those bets and keep a tight fist on the workers, keeping the extra cash for a second boat.

      --
      Is it just my observation, or are there way too many stupid people in the world?
  78. Depends on the context by Anonymous Coward · · Score: 0

    If the developer had sufficient time to thoroughly test his code and failed to do so, your boss may have a point.

    However, if the timeline was defined by someone other than the developer and did not allow sufficient time to test all cases, then bugs are not necessarily the fault of the developer.

    Case in point: I used to write code for a major telecom equipment manufacturer. In order to execute all possible test cases for some of my projects, I would have required 5 years doing nothing but testing. At that time, we had semi-annual delivery dates (no exceptions). As you can imagine, no way I could test everything. Definitely not my fault when bugs were found. Didn't feel the least bit of guilt about bugs.

    If you want bug-free software, you must be willing to pay the price. If you won't pay the price, don't blame the developer.

  79. Back atcha! by Anonymous Coward · · Score: 0

    A boss Is tasked with keeping his employees productive. He begins to cause them to worry about things like unpaid time. A large number of them up and leave. Should he pay the cost of talent acquisition and/or training for new hires to replace them?

  80. Bugs are not mistakes. by Xeno+man · · Score: 3, Insightful

    When a builder builds a wall, all the factors are known for what the wall needs to endure. Weight it must support, elements and temperature it will be exposed to. The builder should know how to mix mortar and the steps involved with building a wall as he has probably done it many time before. If bricks are falling out, he has made a mistake, too much water in the mortar, too cold to work, something a more experienced worker would not have done and known about.

    When a developer writes software, all factors are not known. Each piece of software is unique and designed to meed the clients needs. When bugs are discovered, they are factors that were never originally considered possible. People with names longer than the character field, leap seconds, changing daylight savings hours, operating system changes, network growth, hardware upgrades. Regardless of the developers experience, no one will be able to account for these unknowns and how new code for new features will interact with older code. Bugs usually are not from screw ups but from changing factors beyond anyone's control.

    1. Re:Bugs are not mistakes. by Anonymous Coward · · Score: 0

      I don't agree with your definition of bug. A government changing daylight savings hours or supporting an OS that doesn't exist when the software is written is not a bug. Those are feature requests, system improvements, or maintenance tasks.

      Now, the name to long for a character field is debatable. If it was decided that names up to a certain length were supported and the application give the user a clear message value is too long that is a specification problem. If the application crashes that is a bug.

  81. Obligatory Dijkstra by RR · · Score: 2

    On the cruelty of really teaching computing science (EWD 1036)

    Computer code is not bricks. It's completely different. So, your analogy based on bricks is not valid.

    There was a better analogy I read somewhere. Programming is like building only if you're in some insane universe where you make one little slip-up and the entire structure turns into a black hole. But I don't remember who wrote that.

    --
    Have a nice time.
    1. Re:Obligatory Dijkstra by zigfreed · · Score: 1

      This was my thought as well. The poster's brain was doing this when the boss mentioned it, so making a retort was difficult: http://www.youtube.com/watch?v...

  82. It could work like that. by TsuruchiBrian · · Score: 2

    The problem is that when you entered into a contract (either with a customer or an employer), chances are this kind of mechanism wasn't stipulated. If ti were, then they would have presumably had to pay you a much higher salary to get you to agree.

    Any reasonably complex software is a product that is with almost certainty going to contain bugs. If you are willing to be on the hook to fix every future bug discovered for free, you'd better charge enough up front to make this deal worth it.

  83. Tell your boss... by king+neckbeard · · Score: 5, Funny

    Tell your boss he should be fired. If he's going to make bad analogies, they should at least involve cars.

    --
    This is my signature. There are many like it, but this one is mine.
    1. Re:Tell your boss... by Zero__Kelvin · · Score: 1

      Also, your boss made a serious mistake when he made this analogy. Ask him how he plans to fix it on his own dime in his own time :-)

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    2. Re:Tell your boss... by clockwise_music · · Score: 1

      A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher.

      There is an important question here. Did the builder know any better, and should the builder be expected to know any better?

      If this is something that is clearly taught in brick laying school, and the company expects their builders to conform to the rules of bricklaying school, and the person just knowingly willingly continued on, then the builder's company "technically" should suck up the cost. This is not the client's fault.

      Whether the builder is fired or has to fix it outside of hours is a completely different question. That's up to the discretion of management. If the builder had continued on their merry way knowing they were doing the wrong thing, then asking them to fix it outside of their paid hours could be a good learning opportunity. Or if it's willful negligence then maybe it's a firing issue (if the building will fall down). Of course the best way to get them to learn their lesson is to show them the impacts of their work - now everyone has to stay back and fix their shoddy work, and they won't be popular for a while :)

      However, if this is something that isn't taught in bricklaying school, but is something that only a bricklayer with 5 years of experience should know, and this dude was a fresh-faced apprentice, then the company needs to ask themselves "should we have had better quality control methods to stop this problem occurring earlier?". Should he have been supervised? Should he have been doing it in the first place? Should someone have inspected his work periodically?

      This is actually quite a good question and not a silly analogy.

      The next step is to try to apply this to software engineering. As we all know, building a wall and fixing up a shoddily built wall is quite a different thing to fixing bugs. Most (I would hope!!!) bugs are not caused intentionally or as a result of willful negligence. If a developer is committing work that is full of bugs and other people are building on top of that work, The same analogy applies as to the builder scenario. You expect someone to work according to their level of expertise. If they don't, you better start reviewing their work more often or move them to an easier task.

    3. Re:Tell your boss... by king+neckbeard · · Score: 1

      It is a silly analogy, because there are fundamental differences between typical masonry and software development. One very important factor is gravity. Gravity makes the top and the bottom have very different relationships. If the bricks at the bottom of a wall are uneven, it is very difficult to correct it, and will likely cause a unfixable permanent defect. However, that is not necessarily true in software. It's quite possible that a core, underlying piece of the software could be trivially replaced, especially if the developer was following best practices. It may be as simple as passing another string to the compiler to get it to work on another OS or CPU architecture.

      Another important distinction would be the ability to check quality at different stages. With a wall, you can regularly check the consistency of the mortar and the evenness of bricks. However, code may not even build until quite a while into development, and some design issues may not be accurately predictable even for a seasoned dev.

      --
      This is my signature. There are many like it, but this one is mine.
    4. Re:Tell your boss... by Anonymous Coward · · Score: 0

      I agree. Also tell the stupid guy that if a building or wall collapses only a few people may get hurt or die, but if the software fails the entire company may go bankrupt or if the software is related to medical devices it can kill thousands of people.When a foundation is flawed, no amount of fixing is going to clear the blunders. The guy who is a boss is not a thinker or knowledgeable person, thus unfit to be his boss. Show this page to him and get him fired. Software builders have to have many roles including security etc., is not a brick layer. Tell him that SE are like doctors and if a doctor commits a major mistake, the patient dies and no amount of brick layering will bring back the dead person.

    5. Re:Tell your boss... by Barlo_Mung_42 · · Score: 1

      Unless it's a motivational analogy in which case it must be about sports.

  84. Point out this little legal gem by cmptrs4now · · Score: 1

    In most cases the employee signs an agreement that indicates that all source code produced by a developer is the sole property of the company. As this is most likely the case, even if the developer created the defect (knowingly or unknowingly) the source code belongs to the company. Thus the developer is fixing company code not his own code. The only way that the developer should be fixing his own defects on his own time is when the company is buying the source code directly from the developer which means that the developer is not an employee of the company. A second point is that there are often in place agreements that indicate that every idea thought of by a person are the "Intellectual Property" of the company. Since the defect was a thought in the developers head as an idea, the company by agreement owns the thought or idea that generated the defect rendering the company responsible for the defect. Another argument that can be used in defense of the programmer is that in some cases the manager/supervisor has specifically stated that the code must go out to the customer within a specific time period and the programmer is obligated to send out the code despite any and all defects. In this case it can be argued that the manager/supervisor is directly responsible for the defects in the code due to time pressure. Those are my arguments against developers having to fix defects on their own time.

  85. Only if you're a contractor by Solandri · · Score: 2

    And only if the software fails to deliver on the specifications laid out in the contract. If it crashes when they try to use the software on a different dataset than the contract specified, that's not your problem. If the software doesn't perform as per the contract, then yeah the onus is on you (the contractor) to fix it. If you've already been paid for the job and used up that money, then yeah you need to fix it on your dime.

    If you're an employee though, then there is no distinction between your work and the company's work. They are one and the same. If you deliver buggy code, the company delivered buggy code, and the company has to fix it (whether it be by telling you to fix it, or reassigning/firing you and getting someone else to fix it). Same reason the company is liable if an employee screws up and causes a fire which burns down an apartment complex.

    Assuming you're an employee (if you're a contractor, technically you don't have a boss at that company - having a supervisor who can tell you what and how to do your job makes you an employee per IRS definitions), you can turn the argument on its head against the boss. Since he hired you and was responsible for managing you to produce the required bug-free code, if you fail to deliver it and refuse to fix it on your own time, then per his reasoning it becomes his responsibility to find someone who will fix it, and he has to do it on his own time and pay for the new hire out of his own pocket.

  86. Your boss is an idiot. by Arancaytar · · Score: 2

    Software bugs are not caused by developer incompetence. They are a natural result of iterative development, where you write code, test and adjust it until it is done.

    The brick wall analogy is completely nonsensical. When you are done building a brick wall, you can tell that it is done. There are no edge cases, requirement changes or memory leaks that can unexpectedly make it fall over.

    If you are guaranteeing the perfect correctness of your software's first version with your own time, then you're not really a salaried employee. You're selling finished software and an unlimited support contract - and compared to those standards, you're undercharging pretty heavily.

    1. Re:Your boss is an idiot. by Anonymous Coward · · Score: 0

      When you are done building a brick wall, you can tell that it is done.

      Exactly. Software is intangible, making it difficult to assess its quality and how "complete" it is. A wall is tangible. You know the wall is finished when you look and see the f*cking wall. One can inspect the wall to determine whether or not it has imperfections.

      Equating intangible, thought-driven products with tangible, labour-driven products is just silly.

    2. Re:Your boss is an idiot. by clockwise_music · · Score: 1

      Having worked with a lot of software developers, I can assure you that some bugs can definitely be caused by developer incompetence. There are people who don't know the language they are coding in, people who are just plain sloppy, people who don't test their code, people who compile it and check it in, and people who only test it with "right" data. Maybe you've been lucky and only worked with great developers.

      The brick wall analogy is not nonsensical. I bet there are lots of edge cases, requirement changes and mortar leaks to consider when building a wall.

    3. Re:Your boss is an idiot. by Anonymous Coward · · Score: 0

      Exactly. Fixing bugs is a natural part of programming. Asking someone to do it on their own time is asking someone to do a part of their job on their own time. The only thing this analogy proves is that the boss does not understand programming.

      Proper response: Ask the boss whether they would agree to publicly anounce this as an official company policy on the company web page.

    4. Re:Your boss is an idiot. by anddna · · Score: 1

      The brick wall analogy is completely nonsensical. When you are done building a brick wall, you can tell that it is done. There are no edge cases, requirement changes or memory leaks that can unexpectedly make it fall over.

      This reminds me of the movie "The Bridge on the River Kwai": the part of the river chosen for the construction of the bridge had a too muddy bottom, so they abandon the construction of the first bridge for a second one on more stable grounds. Otherwise the bridge would have collapsed at the first train passage. Well, then you watch the movie and find out that...

      The analogy software-construction has plenty of interpretations.

  87. Because we are professionals! by Anonymous Coward · · Score: 0

    If a lawyer messes up, who pays? The client.

    If a doctor messes up, who pays? The patient.

    If a tax adviser messes up, who pays? The schmuck.

    So, if a programmer messes up, who should pay?

  88. What does the CONTRACT say? by Anonymous Coward · · Score: 0

    You don't have a contract? You don't have one that details how major and minor bugs will be treated? Then you should pay whatever hourly rate you agreed to for the developer to fix these bugs. If you worked up a contract that also included responsibility for the developer to fix his/her bugs, then the developer could have bid accordingly, taking into account that they may have to spend additional time guaranteeing their work for a certain period of time, under an agreed period of circumstances.

    For the home builder analogy - home builders are subject to a certain amount of QA through testing and inspections. Sometimes the testing and inspection is performed by 3rd parties, or even city/government agencies. So in your analogy, if additional parties signed off on the wall - who is responsible for it becoming defective?

    If your development contract was determined not to require proper testing, unit testing, load testing, etc. - or it was just not considered by the person offering the contact, then who should be pay for the fixes?

    Developer Dave: Here's your wall, just the way you wanted it!
    Manager Mike: :kicks wall: GREAT! Look's great, thanks Dave, here's your money as agreed!
    ^ Contract is complete. If the wall falls down tomorrow, Mike is SOL.

    Have a good contact with proper testing, and defined milestones.

  89. Yeah, sure by dcollins117 · · Score: 2

    Yeah sure I'll fix it on my own time. And by "my own time" I mean if and when i feel like it. Otherwise, I'm getting paid.

  90. Yes! by Lumpy · · Score: 1

    As long as that "my own time" is during work hours and I am being paid for it.

    If employers want to start being assholes, employees need to start being bigger assholes back.

    --
    Do not look at laser with remaining good eye.
  91. Ask your boss... by Lab+Rat+Jason · · Score: 1

    ... if he wants to be paid only when each employee under his direction is 100% satisfied in their employment. See how long that shit flies.

    --
    Which has more power: the hammer, or the anvil?
  92. Making changes by Naut · · Score: 1

    Tell your boss this. If a builder were to makes multiple changes, and those changes effected a good wall, he should expect to have "change orders" submitted. That would mean he would be billed for further services. Your original code may have been fine when you wrote it, but when it changes it could effect what was originally written.

    --
    i have no sig
  93. Design vs Building by Hairy1 · · Score: 1

    Building something to a existing design is a reasonably mechanical process. There is the issue of workmanship, but assuming it is a quality builder the building will be completed and stand correctly. If however a building was not designed correctly and collapsed due to a design failure you would not blame the builder. Designers make their 'mistakes' while designing. It is a process of exploration.

    Software development is not at all like the mechanical construction according to an existing design. It IS design. You are bound to go down false paths and blind allys. The design process is one that involved exploration through the space I call 'AppLand' - the state space that is represented by all possible computer programs. Computer programming is about navigating through this space. Sometimes you make a wrong turn and end up on the bank of a river. You need to build a bridge or walk downstream a little to find one.

    However, there is a matter of quality; that you should implement quality assurance based on unit tests, code review, functional testing and stringent disciplines to ensure that released software is fit for purpose. You can't avoid making mistakes and rework in the development process, you are exploring the state space; but you can make sure you don't end up in the brambles and thorns; that is finding yourself somewhere where the program just doesn't work.

    I've been writing my book "Exploring Appland" for about ten year now...

  94. You buy the software, you buy the bugs by msobkow · · Score: 2

    Software has bugs. Get over it.

    This is just another manager trying to get free work out of the staff.

    To hell with leeches like him.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:You buy the software, you buy the bugs by Anonymous Coward · · Score: 0

      Make sure to let his superiors know that he is pressuring employees to work off the clock, on their own time.

      If you were a bricklayer, working on your own time & got injured, the company would be fucked. Their normal liability insurance wouldn't cover the accident.

  95. Your boss is a moron by Anonymous Coward · · Score: 0

    The analogy is flawed.

    Bricks are measurable, "fixed" components that behave in predictable ways. It is also a process that is highly repeatable - laying one brick is much like laying the next.

    Software is not. It is dependent upon a much larger number of variables not the least of which is probably said boss changing his mind (and thus the specifications on which it is built) as frequently as the wind shifts.

    Also, "bugs" are often nebulously defined. An end-user/boss' "bug" may actually be an enhancement since the functionality in question was never specified in documentation/discussions. If the bricklayer was told to build a four foot high wall and is later told to extend it to ten feet; then warns the customer the foundation may not support the weight; but is told to "make it work" (cough, cough Mr. boss) this is not the fault of the bricklayer.

    A "bug" may also stem from something a developer may not be aware of, or cannot control. For example: JavaScript behavior in one browser may differ from that in another. It is not the fault of the bricklayer if the brick manufacturer put together a crappy batch, or the mortar manufacturer botched the cement/lime/sand mixture.

  96. Let him hire a builder by Anonymous Coward · · Score: 0

    You can give him an option to hire a builder to fix the piece of software in question.
    If he is satisfied by the results he can continue that path and outsource the entire development team :)

  97. All software development is R&D by musmax · · Score: 1

    Not construction. A manager that insists to manage a R&D project as a construction project is going to have a bad time.

  98. Time & Materials by Anonymous Coward · · Score: 0

    I don't know about you, but I find that most contractors doing open-ended projects get paid time & materials, including their time & materials when they screw stuff up...

  99. As the old saying goes... by Anonymous Coward · · Score: 0

    You break it, you fix it. You don't fix it, I break you.

  100. Refute by Anonymous Coward · · Score: 0

    Your refute should have been to ask him if he would like to try that out himself. It would be particularly good to see an entry-level (the manager, assuming he does not have a technical proficiency) try to "learn" all the stuff they don't teach you in school the first two years of his career in a development role, and see how much extra time he spends fixing bugs.

    There are better ways to incentivize programmers to reduce bugs, and this is not one of them. I would say the best incentive for a programmer to do a good job is that they want to advance in their career and/or be valued higher.

  101. Re:Building code is not the same as building a wal by Anonymous Coward · · Score: 0

    Having done both for 30+ years, I'll have to correct you.

    There is no more ingenuity required by expert software development than is required by expert masonry.

    In fact, the number of valid but unique combinations of architectural elements a mason may be called upon to use is probably far greater than the number of valid but unique combinations of code syntactica available to the programmer.

    Obligatory XKCD I guess. Everybody thinks the job they've not done is easy. I'm guessing you could not tell me when to use hollow bedding, or how to adjust slaked lime putty for the acidity of stone under field conditions?

    There are a lot of bad masons and bad programmers, of course. More than good ones, in both cases......

  102. Talk is Cheap by LifesABeach · · Score: 1

    Being reasonable can provide more profit. But if you're compelled, I charge by the hour, if you change your mind; no problem.

  103. That's a contractor by Charliemopps · · Score: 1

    A contractor gets paid for a job. The contractor has to calculate the chance of his own error and how much it would cost him to fix it into his bid.

    You are either hourly or salaried. You get paid a specific amount for a specific amount of time given back. I'm that way to... and if my boss wants me to spend the day washing windows, I'll do just that. My productivity is his problem, and if I'm not productive or produce too much error he needs to fire me. If he wants a contractor he's welcome to go get one, but contractors cost a hell of a lot more than my salary does.

  104. Programmers Who Produce Too Many Bugs Are Fired by Anonymous Coward · · Score: 0

    All bricklayers will eventually make mistakes, but there are many different kinds of mistakes. There are big mistakes, little mistakes, infrequent mistakes, and recurring mistakes. A skilled boss would not insult and risk losing his most valuable and productive bricklayers who make minor and infrequent mistakes by insisting that they patch up problems on their own time. If he did, those bricklayers would tell him that he doesn't seem to understand the range and relative importance of mistakes that can be made in his own industry, and they might go work elsewhere. Similarly, a skilled boss would recognize major recurring mistakes, and rather than be weird about it and ask the bricklayers responsible to come in and patch them up on weekends, would just get rid of them if they were costing too much money in the final product.

    A boss in charge of a software development project should know - had better know - that there is no such thing as bug-free programming. The recipe for software production includes specification, design, implementation, testing, and review and reiteration of some of those steps. There will be bugs because there are always bugs. Ideally, you find and fix as many as possible during implementation and testing, but if your boss wants a situation where he's not responsible for any costs of fixing bugs after the product ships, then he's going to need to take the contract approach, where an outside software house creates the software and a contract that very precisely defines what constitutes a bug that needs to be fixed at the contractor's expense after the product ships is signed by both parties. That's expensive. If your boss wants programmers to fix bugs for free after the product ships that his own testers didn't find prior to shipping, then he should probably be in a different line of work.

  105. Absurd. by kheldan · · Score: 1

    Sounds to me like the OP's boss is just trying to find a way to pay his software engineers/programmers less money while making them do more work. It also sounds like this particular boss doesn't know how to do the job of the people he's managing and therefore doesn't understand the problems they can be faced with. Unexpected things happen, and playing the Blame Game instead of focusing on fixing the problem is not only counter-productive, but terrible for morale. Seriously, I think it's better to fire someone with a consistent pattern of screwing things up rather than punishing them constantly, which is what this could amount to.

    --
    Are YOU using the TOOL, or is the TOOL using YOU? Think about it!
  106. Umm, contractor vs employee, it's not hard by holophrastic · · Score: 1

    This isn't difficult. Employees get paid for their time. Brick-layers and programmers alike. The brick layer doesn't fix the wall for free. The bulider pays the brick layer by the hour to fix the wall. The owner doesn't pay the builder because the builder is contracted by the owner whereas the brick-layer is employed by the builder.

    And this all makes sense. Since the choice of brick quality is made by the builder, the builder is accountable for fixing it.

    Same goes for the software programmer, whose employer chose the platforms and the deployment schedule. The programmer gets paid to work. The quality of the work doesn't affect the pay at all -- just the odds of future employment.

    For the record, I own and operate a web development company, for 21 years now. Bug fixing is always free to the client for the life of the project. I hate it when dumb employees make stupid mistakes. But I don't get to withhold their payment. I do get to fire them though. And I do get to engineer a platform that requires fewer employees. And I do get to choose clients and projects that don't require me to have employees do anything at all.

    So, to answer your questions directly, there is no difference between software bugs and wall bricks. The only question is whether or not you contracted the programmer or hired the brick-layer.

  107. Valid bugs and others by Anonymous Coward · · Score: 0

    Did the server crash ? (500 Internal Server Error)

    Did you just kill the UAT daily build ?

    Was it a typo ? (bad copy-paste, missing semi-colon or similar)

    Was it a bad configuration issue ? (you put dev config into UAT or prod by mistake)

    If it's none of the above, then it's not your fault and it's fully billable.

    Most people would considers: new feature, vague requirement, vague specification,
    bad interpretation of requirements or specs as bugs, it's not, it's called development.

    For example, not covering XSS or CSRF attacks is considered a security bug,
    or you could say that you did not implement that part yet,
    since the website if for Intranet use only, which one is it?

    Another example, your software only covers text that is plain ANSI English
    and throws out errors if you insert French, Spanish, Hebrew, Chinese, Japanese or Latin1 or Unicode characters,
    is it broken, or was it explicitly spec'ed out earlier
    or not implemented / not supported yet ?

    1. Re:Valid bugs and others by hermitdev · · Score: 1

      Just because software doesn't crash or generate an error doesn't mean it's bug free. I wrote a bug that was exceptionally easy to miss and overlook. It did not cause a crash and it was exceptionally subtle. The bug? Truncating to a cent instead of correct rounding. This was in testing a tool to migrate portfolios to a new trading platform. I didn't notice because we were testing with portfolios worth billions or trillions in the appropriate currency. It was really easy to overlook being off by 1 two places after the decimal point. It wasn't a design bug, it didn't cause any crashes, it was because I made a bad assumption.

    2. Re:Valid bugs and others by rhodium_mir · · Score: 1

      Yeah, right. We all know you took those tiny fractions of a cent and transferred them to an account that you opened.

      --
      You can't spell "oneiromancy" without "roman".
    3. Re:Valid bugs and others by hermitdev · · Score: 1

      No, it was neither a superman movie, nor office space. They'd have just been lost in the ether; likely some clients would have been overcharged, some under. It was a simple case of doing, in python, "int(currency * 100) / 100" versus "round(currency, 2)".

  108. Or who pays for the bug which come from the underl by cslibby · · Score: 1

    Or who pays for the bug which come from the underlying OS?

  109. Hourly vs job-wise pay by redelm · · Score: 1

    You are being horn-swoggled by a boss who is confusing two types of contract: A builder will _not_ fix the wall without more pay if s/he is hourly. They will only fix the wall "gratis" if they have a contract for a specified job. Said contract will have some [unstated] provision for rework and the expectation of profit (especially on the change orders).

    There is risk in every job. If he wants a supplier (employee/contractor) to assume the risk, he has to pay for it. If he wants minimum cost, normally owners assume it for themselves and manage. Your boss wants to have his cake and eat it too. Disgusting overreach.

  110. The quantification of the work as time is the key by Pope+Raymond+Lama · · Score: 1

    The problem seems to be that the managin practcies of breaking work in "time unites" rather than tasks makes us allbelieve it is the right thing to do. But as a matter of fact, outside a big construction company (and I am not shure how it is dealt inside such a company), one would not hire the builder to "build a wall in 20 hours", and I pay you this per hour. The only sane thing to do is to hire the builder to build the wall - he will take his time, and make his price for that. In the slavish software development World dictated by this managing techniques, we all learned to think of the "man hour" as a reality - when what should happen is a contract to build a software piece. So, yes, the bugs problem should be built in the price for building the "software piece", up to reasonable time after deployment and seriousness of bugs. But also, that implies that the idea of ordering one to "build this piece of software in 8 hours" is also nonsense.

    --
    -><- no .sig is good sig.
  111. Comes with the territory by XMark3 · · Score: 1

    Bugs and bug fixes are part of the territory in software development. Sure, the developer will get paid for time in which they are fixing their own bugs, but it's not like that gives developers an incentive to make buggier code. If your employer thinks that you're wasting too much time and company money fixing bugs that will figure into your hourly wages or salary, and if you're just constantly doing buggy code or your bug fixes keep causing more problems than they fix you'll probably get fired.

  112. Run! by Tablizer · · Score: 1

    Your boss is likely a bozo. Get out if possible.

    You can't reason with bozo's.

  113. Usually the brick layer does not pay for repairs by 140Mandak262Jamuna · · Score: 1
    It is the contractor he hired the brick layer who pays for the repairs. The brick layer walks out of the door after 8 hours or it is time and a half. Double time on weekend. So if your code has bugs, your employer should pay the cost of fixing it, and also for any damages caused. As a salaried employee you write code and walk out of the door. If he does not like the way you code, he can fire you. That is the maximum liability you have as a salaried employee.

    Of course he can hire you as a subcontractor and make you bear the responsibility of fixing it too, but your billing rate will be commensurate with that responsibility.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  114. This is not builder vs developer, it's contractor by pizzutz · · Score: 1

    This is comparing apples to oranges. The builder in question is obviously the contractor, while the developer is an employee. The builder would eat the cost of the repairs while HIS employees would be paid their wage to fix it and at risk for termination for incompetence were they responsible for the initial defect.

    If the developer was an independent contractor or freelancer, he would be required to fix his bugs on his own time (trust me, I've done it). If he is an employee, he would be paid his normal wage, and be at risk for termination should his employer feel it warranted.

    Your boss can't make you fix bugs on your own time because you are an employee. If he takes issue with the quantity/severity of the bugs you produce, his his remedy is to fire you and replace you with someone more competent.

    --
    GE/CS/IT d- s: a- C++++$ UL+++ P-- L++++ E W+++$ N+ o? K- w---() !O M- V- PS+ PE(++) Y+ PGP+++(+) t+++ !5 X++> R- t
  115. What's good for the goose... by Rhacman · · Score: 1

    Suppose a manager promises a customer that they can have all the last minute changes they asked for ahead of schedule and under-budget. When the engineers work on their own time to make the delivery, does the manager pay their uncompensated time from his own pocket?

    --
    Account -> Discussions -> Disable Sigs
  116. What usually happens by phorm · · Score: 2

    Software analogy to bricks

    A brick builder makes a wall. He notices that it's unsteady near the bottom. He tells his manager that the mortar may be bad, and he wants to test it. The manager says they've got a timeline to meet, so keep building. A few bricks fall out, but the manager says they can fix those in phase two...

    Then the wall falls down, and the brick builder gets blamed..

  117. Um, duh... by Anonymous Coward · · Score: 0

    Because laying bricks is in now way similar to writing code. A brick wall can only be used in about 1 way, only has a handful of use cases, and has little to no complexity in its construction. Testing a wall is easy because it doesn't have many functions it supports. Code is several orders of magnitude more complex, with thousands or millions (or more) of possible cases (i.e. inputs/states) that it has to handle and is extremely complex internally.

    Frankly, your boss is an idiot. I would suggest to him that he fire his developers and hire a bunch of brick layers and see what sort of software he/she gets.

  118. Bad analogy by haggus71 · · Score: 1

    From the contract work I've seen, you hire a contractor, who hires employees to build that wall. The mason building the wall can be fired if he does a bad job, but he isn't responsible for guaranteeing the wall's quality. The contractor is responsible. He supervises the job, and checks on the quality. A GOOD software company has the same thing. The company or supervisor is responsible for the quality of the software, and, if they know what they are doing, have QC set in place to bug-check, offering incentives for finding bugs/creating good software.

    It sounds like the boss is using a bad analogy to make sure you think the weight of any bugs falls on your shoulders, not his. You are the brick layer. He is the contractor. You don't sign the contract. He does, or the company does.

  119. Unexpected issues VS stupidity by phorm · · Score: 1

    In some cases, I've done something dumb - realized it was a stupid screw-up on my part - and worked late on my own dime to fix it. If it was a fairly obvious "I totally screwed it up", then I'm OK with that.

    In other cases, the issue was because of inadequate time to test or the regular unknowns that come with software dev, new projects, other outside factors, etc. If I need to stay late to fix that, it's OT.

  120. Who spends their own time causing bugs?! by bugnuts · · Score: 1

    That's what the workweek is for :-)

    If you expect to get a working chunk of software from an employee for a fixed cost, that employee is essentially a contractor paid per working project. He definitely doesn't need his contract payment to support a needless manager who may very well be the cause of the bugs. Thus, he'll get that portion of what would go to the manager. And he doesn't need to pay for your billing department's building -- after all, that doesn't contribute anything to the success of his contract.

    Load the employee at only 1.1x (the extra 10% to be used to pay for his office and some networking), and give him the additional 1.9x or so (effectively doubling or tripling his wages -- many employees are loaded at 2.0-3.0x), get rid of his managers, and give him a design document as accurate as a blueprint for building a wall, and the analogy might fit.

    Basically, employee wages are "loaded" to account for this type of infrastructure, including having to do rewrites. Hopefully, hiring and management practices will work to minimize rewrites and bugs, and less time spent taking from the slush funds to do rewrites is more profit the company made.

    TFA's analogy is like saying "why do we need network support? If it was installed correctly, it will never break."

  121. Tell your boss to go into brick laying by elloGov · · Score: 1

    Tell your boss to go into brick laying.

    Brick layer factors that into his cost. Furthermore, building a wall is something that can be mastered, whereas, writing bug-free code when working on something new and uncharted everyday can't. You are often pushing the boundaries of human capacity to maintain that logic flawlessly.

    If he wants bug-free code, he needs to put up the cash, shut his mouth and pay for the additional hours required to produce bug free code as they do in missing critical software. You want a new bug-free widget? Okay, give me 6 months and well-defined specs.

    The truth of the matter is that your boss has never programmed and is clueless about what it is. He looks down at you purely as an expense nothing more. The truth is that he is too dumb to be a programmer as if he was a smart guy/gal in the first place, he'd educate himself on what/whom he is managing. Good news for you is when there is economic hardship, he will be begging for jobs whereas you, with your concrete skill set, will have opportunities.

    1. Re:Tell your boss to go into brick laying by elloGov · · Score: 1

      Also hit the idiot back with the same logic. "So if the company makes a loss and/or we don't get a pay raise/bonus to keep up with inflation or worse get lower salaries, you should dig into your personal assets to make up for it as you've failed in your role as a manager."

  122. Recursion by Anonymous Coward · · Score: 1

    The software is sold without warranty, or fitness for a particular purpose.

    It was developed using software sold without warranty, or fitness for a particular purpose.

    Which was used to develop the software, used to develop the software.

    See where I'm going with this.

    It's like selling a hammer, but with no warranty or guarantee that it can be used as a hammer. Or selling a bricklayers trowel that has no warranty or fitness of being used as a trowel.

    Just imagine if his water level was not "fit" to be a water level. Or the concrete, or the mortar, or the trowel, or his safety shoes.

    Software is crap, because it was developed using crap, on crap, and we pay accordingly.

    Want to pay $10000 for an OS? Go right ahead. Upgrades will be $1000 a piece, support at $100/hr, 1hr/min.

  123. Bad analogy by Anonymous Coward · · Score: 0

    The analogy your boss raises is not valid. A better explanation of your situation is a mason who works for a contractor. The contractor is responsible for the quality of the wall. If the mason has to repair the wall the contractor pays the mason's wage for the work done. I would be VERY careful dealing with your boss. If you live in the US and are an employee at will he can fire you for any reason he chooses and being right is small copensation for losing your job. Your boss doesn't sound reasonable. Do not work for free. Do not accept a modern form of slavery.

  124. The answer, in short, is "NO" by mendax · · Score: 2

    If it were yes, the paid Dice minions who are working on the Slashdot Beta will be working for free for a long time.

    Returning to all seriousness now, software development is by its very nature an imperfect activity and will, as a result, result in buggy code, especially if it is rushed and not well designed. When I was in school a long time ago toward the end of the mainframe age, I was told by one of my professors that IBM once studied the problem of the creation and fixing of bugs. Their results was that for every bug fixed, two more bugs are created. If this were true (and I believe it is), we coders would always be working for free. I don't like that idea.

    --
    It's really quite a simple choice: Life, Death, or Los Angeles.
    1. Re:The answer, in short, is "NO" by Nuitari+The+Wiz · · Score: 2

      Also the building companies know how much time is required to build a wall and every step of the way is time budgeted. If you wait too long to put the next brick on the mortal, it would be too dry and won't hold the brick. If you don't mix the mortar components long enough, then it might not hold up properly. Also the end product is very well known in advance (eg size, mortar color, brick colar, rows of bricks, etc). The customer agrees to the wall on paper before the work starts and can't go back saying "that is not what I meant when I said 5' high, its too high now and I don't like it " and expect it to be fixed for free. Each job is uniquely done for a specific customer to that customer's specs. Customer also tend to understand it that there is a certain way to do it.

      The problem often times with software is that there is pressure to cut costs (less people, less time), cut time to delivery, cut tools, change requirements all the time, etc. The builders of software are rarely listened when it comes time to fix problems. Technical debt accumulates with every change that is done on a temporary basis just to satisfy the customer quickly.

      Going back to the analogy, no one would ask a builder once the wall is built that brick at position 5,10 is not the right shade of color, change it now. Yet we expect this from software all the time. If builders would change all the bricks in a wall it would most likely fail.

    2. Re:The answer, in short, is "NO" by juanitobanana · · Score: 1
  125. Simple by Opportunist · · Score: 1

    You can't expect a programmer to fix his bugs on his own time for the same reason you can't expect your investment banker to pay your loss back from his own money.

    But given that the investment banker seems to be entitled to being reimbursed for his loss of my money out of my tax money, I guess I should be entitled to you hiring someone to fix my bugs.

    Or, in other words: Different jobs, different reasonable expectations.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  126. Exactly what I was thinking.... by Anonymous Coward · · Score: 0

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

  127. Your Boss Might Be An Idiot by tsqr · · Score: 2

    "Working for free" is a rather nebulous concept for most salaried professionals, since most of us tend to put in a bit of unpaid overtime on a fairly regular basis. If your boss is suggesting with a straight face that you should decline being compensated until your bugs have been fixed, he's probably an idiot, and may actually be dangerously sociopathic. You might want to ask him about the last time one of his bone-headed decisions resulted in his turning down his paycheck.

  128. Old idea... by Anonymous Coward · · Score: 0

    I first heard an essentially identical proposal in 1971. But there was a key
    difference. The emphasis wasn't on doing the corrections on his own time...
    it was on doing the corrections as his highest priority work. In other words,
    no new code is written until all the old code has no known bugs. This has a
    wonderful feedback effect....

  129. Ya, ummm no by Anonymous Coward · · Score: 0

    1) Bugs can be caused by libraries that are out of your control
    2) You might be maintaining software someone else wrote.

    And finally .... I'd be happy to agree to this if:
    3) I dictate my pay and dictate how many hours it will take to do proper design, coding and testing of the software.

    And because I like soap boxes:
    4) "Bugs" might be caused by customers that are non responsive or give bad requirements. And customers can be internal to a company. What is their consequence for giving bad requirements?
    5) Should a stock broker get a second job to pay for my the investments he chose for me when they don't pan out?

  130. Re:Problem is with resource allocation / estimatio by RabidReindeer · · Score: 1

    Too many 'managers' do not understand that debugging and testing take more resources than that required to write the initial lines of code.

    When a traditional architect builds a model, it's a scaled-down little thing made of flimsy materials like cardboard and painted sponges. People understand that it takes a lot of work to create the real thing.

    When a software architect builds a model, it looks just like the real thing and they think that means that it can go into production next week.

    After all, "All You Have To Do Is..."

  131. A good question by kevin+lyda · · Score: 2

    It's a great question.

    The answer to the question is to update your CV, go apply for some jobs and take one of them. Because right now you work for an asshole.

    --
    US Citizen living abroad? Register to vote!
  132. If I could write the same software over and over a by Anonymous Coward · · Score: 0

    ... I wouldn't have many bugs, either.

    Make the wall builder invent a new replacement for bricks every time, and see how it comes out.

  133. failure rates by Anonymous Coward · · Score: 0

    A brick builder may charge 10% extra assuming a 10% failure rate. Can I get paid 200% more assuming a 50% failure rate? And can I work 20 hours weeks?

  134. Your boss.... by Anonymous Coward · · Score: 0

    and let me make this perfectly clear, is an idiot.

    And that's he doesn't understand the difference between art and technique.

    If your code had syntax errors, didn't parse / compile is akin
    to a builder building a wall without mortar. But if the proper techniques
    are used in the wall's construction and it doesn't satisfy its requirement,
    then it may be strengthened by first determining (debugging) its weakness,
    and then applying a suitable remedy (patch / tear-down and start over).

    Don't fall sucker for the free labour play...

  135. hours by Anonymous Coward · · Score: 0

    How about a brick builder thinks to himself , this is a 40 hour job. Then he is told he has 20 hours to build the wall. The builder states that this is not enough time. And the client doesn't care. Does this mean the builder has to bill the client for 20 hours work and when the wall eventually needs repair is on the hook for the extra 20 hours?

  136. Level Playing Fields by Anonymous Coward · · Score: 0

    Your boss is a few bricks short of a full load.

    Before programmers have to deal with logic and relationships in much the same way that engineers and architects do. A bricklayer is ONLY responsible for laying down bricks and mortar, in a predetermined manner. The architect and engineers were responsible for designing the walls and determining which bricks and mortar in what arrangement, in accordance with physics, standards and building codes.

    If your boss seriously wants you to consider the analogy, then ask him if he's willing to pay you the combined salaries of the bricklayer, his laborers, the architect and the engineer. Then you can talk about the situation as if there's a level playing field.

  137. Salaried vs. hourly by Todd+Knarr · · Score: 1

    One distinct difference: the software developer's being paid a fixed salary, not by the hour. There's no such thing as "on his own time" here, he's going to get paid the same amount no matter how many or how few hours he works. If the manager wants bugs fixed "on the developer's own time", then that manager needs to start paying developers an hourly rate. Which means time-and-a-half when they work more than 40 hours a week trying to get things done because the manager's allowed features to be added but hasn't lengthened the delivery schedule to accommodate them, or because the requirements were changed at the last minute but the manager still expects the project to be delivered on time. Believe me, I'd love it if managers would go for this. I could easily double my paycheck if managers had to pay me my normal hourly rate for every hour I actually put in on a project. Most of the "bugs" I have to fix aren't in fact bugs, they're more often items where the code's working exactly as specified but the business side's changed their minds since the code was written, or where someone else has changed an interface and the code adhering to the old interface specification now isn't compatible with the new interface and has to be changed. Overall I'd gain far more in billable hours than I'd lose to bugfix hours.

    Of course the manager probably doesn't want that. What he wants is to continue to pay a fixed salary regardless of hours worked, and then subtract from that for bugfixes. That's not a deal I'd ever take, though. If he wants to pay me a fixed salary to get the job done whatever it takes, then he'll pay me that regardless of what I'm doing as long as I'm delivering on time. If he wants to pay by the hour, then he'll pay by the hour for all the hours I work that're billable. If he wants to treat me as salaried when it comes to billable hours but hourly when it comes to fixing bugs, he can go find another sucker.

  138. Of course not... by turp182 · · Score: 2

    Didn't read the article or any comments, this is Slashdot afterall... Consider a couple of situations.

    Bugs Due to Lack of Knowledge or Incompetence

    This should lead to the person in question leaving the company. I've seen it at the C level and have successfully recommended it at the developer levels (so and so isn't working out, then they are out).

    Accidental Bugs

    I may write a bug everyday. Seems like I do after UX/QA/UAT testing. Fixing them is part of the job, not my personal life.

    Call a bug a mistake then executives (and managers) make mistakes all of the time. At the C-level, strategies are altered and hopefully the new course is better. No guarantee (see Incompetence above). We all deal with our own mistakes (and it is up to the individual where to spend extra time and effort).

    The same mistake (or an unknown, very common in my experience) by regular employees (BA, IA, QA, UAT, etc.) is essentially the same. Missing something, or letting a bad situation through, is similar in spirit to a bug. People should accepts their mistakes, correct them, and continue on. If not, see Incompetence above.

    Reality

    Give me a complete set of perfect requirements (UI included) and I can deliver using the best architecture approaches possible, every time.

    If not, see the Incompetence above.

    But perfect documentation/design isn't possible in reality, so bugs (coded or designed) will occur.

    Fixing them is just part of the job until Incompetence is identified, see the Incompetence above.

    --
    BlameBillCosby.com
  139. You pay a brickie to come out to build you a wall by goldcd · · Score: 1

    He comes out and looks at the foundations another builder left for him to build on, and notices they're already collapsing.
    Your brickie tells you that the foundations are duff and any wall he builds is going to fall down whatever he does.
    You tell him to shut-up and just build the wall he's paying you to build.
    The wall falls down. Whose fault is this?

  140. Capital vs labour by TapeCutter · · Score: 3, Interesting

    The whole anaolgy fails miserably. The "builder" is a small bussiness, the coder is an employee. The builder's employee who fucked up the wall does not pay for it out of his own money/time, for the same reason his wages don't double when company profit does. An employee is not a one man company, nor should it be, any employer who tells you otherwise is trying to screw you.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    1. Re:Capital vs labour by Anonymous Coward · · Score: 0

      Speaking as someone who programs not as an employee but as a contractor, I do not charge my clients additional money if a bug emerges after I claim that the software works. They paid me for working software - if it doesn't work, then I didn't do my job.

    2. Re:Capital vs labour by slew · · Score: 1

      The whole anaolgy fails miserably. The "builder" is a small bussiness, the coder is an employee. The builder's employee who fucked up the wall does not pay for it out of his own money/time, for the same reason his wages don't double when company profit does. An employee is not a one man company, nor should it be, any employer who tells you otherwise is trying to screw you.

      Then again there are those folks that insist on being treated as "contractors" instead of employees so they can set their own hours, moonlight for multiple companies, and deduct expenses. Perhaps those one-man/woman companies can deduct the cost of fixing their bugs on their own time?

    3. Re:Capital vs labour by Anonymous Coward · · Score: 0

      So should the builder of the beta fix everything and I mean EVERYTHING for free? Of course not. He has to listen and do whatever the devil overlords at dice tells them to do or else they get fired. But, that's exactly the problem, management doesn't know shit more than half the time and then it causes problems for developers. To me it sounds like the manager fails to understand their role and accept that they are a failure, same can be applied with slashdice. Programmers are paid accordingly meaning they are expected to fuckup 90% of the time and have the thing compile only 10% of the time, it's part of life, same with if it works, then did it break something else? You can build an entire project on your own and not have those problems too often, but when you're on a big project it's up to the PROJECT LEADER to ensure that everything is programmed in a way that won't fuck up something else. If anyone that needs to be more responsible it's management. Right dice?

    4. Re:Capital vs labour by Half-pint+HAL · · Score: 1

      Then again there are those folks that insist on being treated as "contractors" instead of employees so they can set their own hours, moonlight for multiple companies, and deduct expenses. Perhaps those one-man/woman companies can deduct the cost of fixing their bugs on their own time?

      That would need to be specified in the contract; and as noted by other posters on this thread, a contractor factoring in a big-enough margin for 99.999% bug-free code is going to be multiplying his hourly rate by about 100....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    5. Re:Capital vs labour by CauseBy · · Score: 1

      Agreed, that's exactly what I thought. If I am a bricklayer who works for a wall-building company, and I screw up a wall, I don't personally rebuild the wall at my own expense. The company I work for might do that, but that's the risk/reward of being an employer and merchant.

      If I'm the owner of a software company and one of my employees writes software with flaws, and I profit from selling that software, then yeah I have a duty of merchantability to fix the flaws.

      This isn't a terribly difficult concept. How could a college-educated professional programmer not spot the flaw in the analogy in 0.1 seconds?

  141. Flaw in the analogy: by k31 · · Score: 1

    The wall-builder is basically repeating a skill. He should be able to build a "good enough" wall that doesn't have major holes, or fall down on its own.

    The programmer is translating intention into code, which interacts with other code, a lot of which is buggy. The specifications may be unclear. The time it takes to do it is uncertain. In other words, he is doing art-for-hire. Even if he is "good enough", we cannot call programming a deterministic activity devoid of creativity and which people can be trained to do, rather than enabled and inspired to do.

    If what they want is a solved problem, bundled in an easy to use interface that hides details, they would buy software, not build it... which is basically why people do buy software in the first place. (And why I don't think there is any future in traditional programming on a large scale.)

    So, the analogy is what is wrong. Artisans and Artists may have similar names, but what they actually do is totally different.

  142. We are in a post Hammurabi era ... by perpenso · · Score: 1

    We're in the pre-industrial era of software development, and even the best of us aren't very good at it

    Its more that we are in the post Hammurabi era of building and those early builders learned to build their walls very very well, they got the tools and process right. :-)

    From the Code of Hammurabi: "If a builder build a house for some one, and does not construct it properly, and the house which he built fall in and kill its owner, then that builder shall be put to death."

  143. I'm not convinced the analogy is wrong by Anonymous Coward · · Score: 0

    But it is narrower than the person who posed seems to imply.

    The builder analogy describes a case of an obvious and discoverable defect in a product that is not yet finished. The analogy is to a piece of software that has not yet been released, and in that case, if the development contract were fixed price, I would expect the developer to fix those bugs at their own cost.

    Suppose the software had been through unit tests, some period of beta test, and a formal acceptance test and sell-off, and then at some later point a bug is discovered. The builder analogy is a wall that is complete, has passed inspection, and done its wall-y thing for some time. Now a brick falls out. Is the builder still liable? Is there no limitation to the warranty?

    In fact, with a lot of commercial software, e.g. operating systems and major applications, I expect that for some period the vendor generally will provide bug fixes at no cost--and they often do. ("Please wait while the software checks for updates.") There is, however, a time limit beyond which this expectation becomes unreasonable. (The vendor and customer may not always agree on what a reasonable time is, but few customers expect perpetual updates for a fixed price.)

    Furthermore, many building projects (and a lot of software) are done on a cost-plus basis, rather than fixed price. In that case, even in your boss' analogy, the customer, not the builder would be responsible for the cost. (If there's provable negligence or some other culpability, the customer might sue for re-dress, but that's after the fact.) Most large scale building projects are done that way. (Yes, contracts can be complicated, and even cost-plus contracts may include explicit or implicit warranties to workmanship, but the ultimate responsibility is the buyer's.)

    Most coders are working on a "cost-plus" model--they're selling time, either hourly or as salaried workers ("full time" can be fungible for those of us on salary, but we're still selling our time, not a product.) We can command a premium if we can demonstrate high productivity (either quantity or quality), but few are working on a piece-work basis. (This would be hard to measure for code...)
    Your boss could, if he chose, hire coders to work on a per-piece basis, but he'd find he had a lot less control and flexibility in what his workers did, and he'd be doing a lot more work coming up with blueprints (i.e. specs and acceptance tests) that his workers were willing to sign up to. And I bet few people would sign up to any warranty beyond "it passes the acceptance test". Anything beyond that, by definition, isn't a bug--it's behavior you wanted but failed to cover in the spec and acceptance test.

    Furthermore, it's often difficult to assign culpability. Why did a brick fall out? Is is workmanship or a defect in the mortar? Maybe it's a defect in the design, and the builder is, in good faith, executing to a flawed blueprint. This is no easier in software. If a bug is discovered after code passes unit tests or acceptance tests, is it faulty code or faulty tests? Did the spec cover every possible input condition, every possible platform, every race condition? Coders do make mistake (most of us have made some embarrassing oversight at some point) but a lot of bugs are in the seams.

  144. Software is not a wall. by Anonymous Coward · · Score: 0

    Software is not a friggin' car engine or anything else where mistakes are plain obvious. It's difficult to find all bugs. That's why QA, unit tests, integration tests, automated UI tests are necessary and even then this will not catch all bugs. There are some statistics in Code Complete about this.

    Writing software is hard, so if your boss doesn't like it he should start a bricklayer business ^^

    Create a suite of unit tests and automated tests to catch regressions, so at least know when implemented features stop working.

  145. Never EVER Absolutely EVER Work for free. by DoninIN · · Score: 1

    Period, no matter what do not do work for your employer for free. Do it once and you've set a precedent that you can't undo.You pay me to program machines to make parts for you, you are also paying me to make the normal number of mistakes and fix them. If I screw up so often that you can't live with my output, then I should find a different job, if you expect me to fix my mistakes for free then we are violating the basic premise of my employment. What's more you will have created a situation where your employer has a financial interest in making you work for free, and they will accordingly seek to maximize their profit by getting you to do so at every opportunity, the situation will grow worse with time and you will hate your job. I have done something similar to this in the past and it lead to a nightmare scenario. (Although I was exempt salary so it's hard to say when I was working for "free" exactly) When you have made a mistake you might be tempted, but don't fall for it.. As other posters have said a company or contractor repairing something for "free" for it's end customer is fine, those costs should be, in the long run cooked into the price of doing business, but if you are a regular employer you should never ever do this under any circumstances.

  146. No way! by tommyk3000 · · Score: 1

    I hate bosses like yours. He seems to want to keep his bill simple at your expense. The worker himself in most cases would not be responsible for the durability of the built wall, but the foreman. He will stop reemploy someone whos walls fall apart, but there would hardly be a way to force him fix the wall on his own expense in Austria. Margin for errors comes with an price, the price here is a higher price for building. There are enough ways left to exploit workers.

  147. comments by Anonymous Coward · · Score: 0

    Man I love reading the comments section...

  148. Anonymous by Anonymous Coward · · Score: 0

    Of course not. This is fucking ridiculous. It is like saying nobody is allowed a mistake ever.

  149. Analogy not valid by Anonymous Coward · · Score: 0

    The analogy is not valid as it compares apples to oranges (contractors vs. employees).

    Contractors develop to specific contractual requirements. If the contractual requirements are not met then the contractor is in breach of contract and must fix the problem on his own time and money. This is the same whether the contractor is a wall builder or a software developer. (BTW, a wall without holes is a given while not all SW bugs affect contractual requirements, only those affecting the requirements, directly or indirectly, need to be fixed.)

    On the other hand employees have no contractual requirements. It's just selling labor to the employer. You're not even contractually required to perform well (although you need to if you want to keep the job or getting a raise). If the employer doesn't like your performance (or whatever else in an at-will employment) the most they can do is fire you (and in some cases sue you for intentional damage) they can NEVER ever required you to work on your own time and money. This is the same for both wall builder and software developer.

    Point in case: the analogy is comparing a contractor wall builder to an employee software developer.

  150. omg by Tom · · Score: 1

    Your boss is either misleading you intentionally, or he should not be in a management position.

    You are not a contractor, you are an employee. If your boss doesn't understand the difference, he doesn't deserve even the lowest management position. If he does, he's a horrible boss because he's trying to trick his own people.

    --
    Assorted stuff I do sometimes: Lemuria.org
  151. Good for the goose by PopeRatzo · · Score: 1

    Ask your boss if when he makes a mistake, does he fix it "on his own time".

    Or the CEO.

    I hope you developers eventually figure out that it's time for you to have collective representation. Your status shifted from "rock stars" to "wage slaves" in a big hurry.

    But I guess if Wal-Mart employees are expected to clean the store on their own time, we shouldn't be surprised that developers will now be expected to sweep floors, too.

    --
    You are welcome on my lawn.
  152. Definition of a Bug? by HannethCom · · Score: 1

    The other problem is what is a bug?

    Consider with the brick wall that if someone climbed up on top of it and hurt themselves jumping off of it, that people would usually conclude the person was just being stupid, not that there was anything wrong with the brick wall. They could have put up barbed wire, or ledge that jutted out far enough to not allow climbing, or even just a sign saying no climbing. Was this design defective because it didn't have those extra safety features?

    In software we are constantly trying to figure out how to stop people from doing stupid things they shouldn't be, but we are expected to have them there and if they are not, they are called bugs. In the software world, we are expected to have the sign, the barbed wire and the ledge, and don't forget something to protect people from hurting themselves on the barbed wire.

    Sometimes enhancements are considered bugs. Other times people don't like how something works and those get filed as bugs. Going back to the brick wall, you make the brick wall out of red bricks, which is specified in the contract. The person sees the final wall and wants to change it to blue. I'm sure the individual builder does not have to pay for changing that. Even the company can probably ask for more money, or have it covered under fee for changes in the original contract.

    Basically, as others have said, the brick wall is a bad analogy.

    --
    Microsoft, Apple, Google, Amazon what's the difference? All steal money from devs and control with walled gardens.
  153. The analogy is apt.. by Anonymous Coward · · Score: 0

    But you boss is the builder, not you. You're more like the guy who hammers the nails.

  154. Not a fair comparison by mysidia · · Score: 1

    A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher.

    If you want a successful software development project: making mistakes, and software bugs are in fact part of the process, because nobody is perfect, AND a great deal of resources will always have to be spent to fix bugs. It makes sense that the employer should pay for this, BECAUSE It is a required cost of development, that is NOT a result of programmer incompetence, BUT instead by the complexity and novelty of the software development process (There is no novelty, creativity, or real complexity in the simple mechanical process of wallbuilding!).

    Usually, the employer is going to get all the intellectual property rights from the developers building this thing that has not been built before, and working through all the sometimes unexpected problems that will arise in the design of all-new complex systems; therefore, The employer should be bearing all these costs, UNLESS they are sharing intellectual property rights with the developer (For example: a guaranteed royalty on the work and any derivative works, copyrights or exclusive relicensing/sublicensing rights for any usage of the software except by the employer)..

    Writing software is not like building a wall.

    First of all... when you build a wall, the employer is not getting a digital copy of the wall, that they can seamlessly make as many copies as they want. The builder can be assured that if the employer wants to provide clients with more walls, then a wall builder will have to be engaged full time, for a long duration, for each wall that is erected.

    Building a wall is essentially a standard procedure. All walls are essentially the same, and constructing a wall is a mechanical procedure that does not require engaging the human brain --- there are proper procedures to build walls, and any defect, can only result from a serious and easily preventable failure on the builder's part. There is no real "creativity" in wall building.

    On the other hand; with software: a great deal of creativity, and problem solving is required for success. Every software development project will essentially have new elements.

    Software development is fundamentally mental, not mechanical.

    When it comes to mental processes no developer has achieved perfection, AND there are always mistakes that are going to be made when building something entirely new, or working on complex software systems with the time demands that are typically placed on developers.

  155. It depends why the wall failed... by erp_consultant · · Score: 1

    If the builder was asked use an inferior cement, and he warned the boss about it before he built the wall, then it's the fault of the boss. The boss should pay to have the builder rebuild the wall.

    This sort of thing happens all the time in software development. More than once I have been asked to code what I consider to be an inferior design. I explain why I think it is so. I document it in writing. They tell me to build it that way anyhow. Down the road, there are problems. If they ask me to fix it I will remind them that I told them it wouldn't work in the first place. If they still want me to fix it I will charge them for the time to fix it.

    If, on the other hand, the fault is mine then I will fix it at no charge. I've never ran into this by the way but that's what I would do to keep my customer happy. Heck, if it's a really good customer I might just fix it for free just because they have been good to me. Just depends.

    1. Re:It depends why the wall failed... by whit0313 · · Score: 1

      I'm assuming you're an independent contractor for hire? In that case, this seems like a very sensible strategy.

      If you were an employee, I'd say you should be paid whenever you're working. Nobody's perfect.

    2. Re:It depends why the wall failed... by erp_consultant · · Score: 1

      Correct - I'm a contractor. I've been an employee too and I can certainly see your side of it. It's a very different sort of dynamic.

  156. Tell hime: by geekoid · · Score: 1

    when the human race has been writing code for 100,000 years, he can come back and ask again.

    Also, if he make a bad decision, will he refuse a bonus and pay?

    He sounds like a simple person who is unable to understand complex matters.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  157. It's your boss's dime not your's... by Anonymous Coward · · Score: 0

    If someone hires a contractor to build their house, it is only the contractor that is responsible for the quality of the work done. If they then turn around and hire a team of migrant workers, who do not build to code or whatever else, the homeowner does not expect a resolution from the individual worker. It is up to the contractor to fix the problem, up to the terms of their contract, and that will likely involve replacing the workforce and doing the job again. No individual worker is obliged to go back on the job to fix the problem they caused, especially for free.

    But if the contract said we will build a house that will not fall apart for at least 3 days, and on day 4 your south wall falls off, you're out of luck. Call the guy up, or someone new and have them rebuild the wall.

    If your EULA said your software is provided AS-IS then that is exactly how the software is designed to work. Any defects discovered after the agreement is made are a change order which cost you money and the developer time. If your contract offeres you such support, great, otherwise you're SOL.

  158. As other stated, it was not in the contract... by Karmashock · · Score: 1

    Your billing rates, salary, etc were negotiated under the assumption that bug fixing would be on company time.

    What is more, the contract likely has no provision stating otherwise.

    As such, you can suggest that he renegotiate the contract or you can continue with the current contract.

    Do not give him anything for free.

    --
    I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
  159. Same as a Doctor by Anonymous Coward · · Score: 0

    Doctor misdiagnoses a patient. Try to get your money back. Not gonna happen.

  160. Re:Building code is not the same as building a wal by E-Rock · · Score: 1

    Well, building walls must be pretty standard if you have a list of situations and exactly what you do to address them.

  161. Prgramming/compiling vs Engineering/construction by Elfich47 · · Score: 5, Insightful

    Very simple difference:

    In construction the design is cheap (5-10% of the building cost) and the compiling is expensive. In construction you only get to compile once. In addition anything that leaves an engineers or architect's office that has been stamped and signed is certified to provide a working structure, building or system; assuming the builder follows the plans correctly. Everything must be installed in the correct order and location. Deviations from the plan (we are assuming the plans and specs are good) involves and expensive reworking, redesign and law suits.

    In programming, the expense is in the design of the system, compiling is cheap. In computer programming you compile as often as you need. One can test run sections of the code as needed to see what works and how it interacts.

    The labor requirements are flipped between the two industries. Trying to compare the two can lead to some poor analogies quickly.

    --
    Architectural plans are like computer source code with a couple of differences: You only compile once.
  162. bugs by Anonymous Coward · · Score: 0

    Arrrrrrgh! The bugs are too bad around here to lay bricks for free!

  163. Re:Building code is not the same as building a wal by viperidaenz · · Score: 1

    The building codes describe all the situations you've mentioned.

  164. My bugs by snadrus · · Score: 2

    My latest bugs are along the lines of:
    Me: Here's the most rough proof-of-concept, prototype implementation.
    Mgr: Ship it
    Me: It only does some of what's needed, even then most common considerations aren't done.
    Mgr: Ship it. Log that other stuff as bugs. We will close most of them until someone complains.

    So according to your thoughts, employers only pay for the prototype & I'm responsible for the full implementation? No go!

    --
    Science & open-source build trust from peer review. Learn systems you can trust.
  165. Re:Problem is with resource allocation / estimatio by pipedwho · · Score: 1

    Sadly, there is so much truth to what you've written.

    "...tidy up that graphic, and we'll ship next Monday."

  166. There is no difference . . . by Mr_Wisenheimer · · Score: 1

    . . . between laying bricks and writing code in terms of fixing mistakes. The difference is between being an independent contractor versus working for an employer. If I negotiate a fee, agree to create something, then I am responsible for delivering it for that fee. If I make a mistake, I am responsible for fixing it without any additional cost to the client. On the other hand, if someone is paying me to lay bricks or write code, then they get to decide how the profits from my labor are used. I can only negotiate my salary or hourly wage. They have no right to demand I work free anymore than I get to demand to keep all of the profits from my labors. All they can do is look at my performance, like the amount of time I have to spend debugging my code or relaying my bricks, and decide if I need retraining or to be replaced.

  167. Re:check by Anonymous Coward · · Score: 0

    What about a bounced check

  168. Show me the bad brick by Antique+Geekmeister · · Score: 1

    From a conversation with a developer last week, who refused to allow QA to be applied to code: "show me how this software could break something, and I will run it through QA". Yet his workgroup was trying to blame _my_ personnel for applying their new code incorrectly, and make us spend the weekend time to fix it on the live systems.

    Sometimes the problem is not the contractor who assembled the wall, it's the employer who wouldn't pay for, or allow, the contrtactor to use the right procedures.

  169. This by Anonymous Coward · · Score: 0

    Requiring developers to fix bugs on their own time will result in developers making larger estimates to spend more time doing QA, to ensure that they don't have to spend their own time fixing bugs.

    This will push out release schedules and drive development costs up, which will ultimately make the employer have to justify the higher cost to his clients.

    If this is acceptable all-around, then I think it is an ok approach. However, it usually is not acceptable: the employer will impose delivery deadlines that do not allow enough time for proper QA, which will in turn force the creation of bugs, which will in turn force the employee to work extra.

    So, if the employer is not willing to give the employee "as long as it takes" to ensure bug free software, then the employer has no leg to stand on when asking the employee to work extra to fix bugs.

  170. Doctor "mistakes", lawyer "mistakes", engineer ... by Culture20 · · Score: 1

    Software isn't like a wall. It's complex. If a doctor or lawyer is negligent, they can be sued. If they make "all the right moves" but things turn out badly anyway, then the customer must pay again for another fix. "Drug X didn't work, let's try drug Y" "We can appeal (as long as you have money)"

  171. Better case example by nurb432 · · Score: 1

    If a defect is found in the wall, then they fix it on the clock before more wall is built. If the brick builder knows there is a safety problem and continues on then he should be fired.

    Same for the programmer, if the bug isn't found until later and fixed, its on the clock. If he knows there is a bug and lets it slide, then its his fault.

    --
    ---- Booth was a patriot ----
  172. Bad analogy by Xarvh · · Score: 1

    There is no comparison between the complexity of a brick wall and the complexity of a medium piece of software.

    Just compare the requirements of a brick wall with the requirements of the software.

  173. Your boss is an idiot by Anonymous Coward · · Score: 0

    Your boss is an idiot, you are an employee, presumably 'salaried', if there is a bug in the software that you caused he can fire you but he can't refuse to pay you for fixing it. Firing every developer that programmed in a bug would likely leave him/her with no employees so clearly he's not going to fire you for 1 bug, but I would presume he should set 'performance standards' and during your regular review he would determine if you cause more bugs than the 'average developer' and if so take corrective action.

  174. Yes. Absolutely. by Anonymous Coward · · Score: 0

    At my current company, the software developers are all entitled douchebags who are rarely required to be in the office at all, and do things like change customer-facing production APIs and file headers with no notice to anyone, breaking all manner of important things for customers, which they then take weeks to fix the bugs they introduced leaving those customers hanging in the meantime. And the best part: for their blatant fuck-ups, they're not even given a talking-to, that's just how things are.

    Anything that would encourage accountability would, in my mind, be a good thing.

     

  175. Re:Building code is not the same as building a wal by Oligonicella · · Score: 1

    OK, here you go - you are wrong. Walls are not confined to buildings, nor are they confined to brick or cinder block. Stones do not come in set sizes and shapes and some will not bond with mortar the same as others (and brick does not bond like cinder block does). In fact, differently manufactured bricks will bond differently. I have worked construction and I have built walls of brick, stone and even sloped walls of non-mortared stone. They are not at all the same.

  176. Programming is more like aircraft building by mbeckman · · Score: 1

    The bricklayer analogy is flawed because it assumes that all technical endeavors are equally mature. Bricklayers have been around for millennia, while software developers have been around for less than a century. A better comparison is with aviation, which has been in existence for only a little longer than software development.

    With aircraft, when craftsmanship problem occurs, such as a poorly constructed propeller, then it is covered by warranty.. But an aircraft design problem, even a problem where assembly of components is faulty but not immediately apparent, is not covered by warranty. Instead it is fixed through a legal process called an Airworthiness Directive (AD), which cost is borne by the owner of the aircraft, not the manufacturer.

    The reason for this is simple. Aircraft are complicated machines, and are not fully understood. Even today, new phenomena in manufacturing, materials, and even aerodynamics, are discovered and affect future design and construction techniques. If aircraft manufacturers had to bear the cost of every discovered problem, the industry would fail. In fact, it nearly did collapse under the weight of litigation even with the essential AD system. Only extensive tort reform was able to insulate the industry from liability for defects that occurred decades ago yet were completely unforeseeable by manufacturers.

    Despite what some commenters here have said, it is a well accepted principle in computer science that nontrivial programs cannot even be proven correct, let alone be written correctly. The short form of this principle is "all software has bugs." This is just a limitation of the technology, not a reason to place blame on people, or try to exact penalties.

  177. Several reasons by sjames · · Score: 1

    First, a bricklayer is not the analogous position. He isn't designing the bricks or the wall they make up. The correct analogy would be the architect or PE.

    Next up, he is an employer. If he would care to double or triple what he pays to make you a contractor, then he might have a point, but he no longer gets to decide when or where you do your work. If he wants a rush job, that's extra and may simply be refused if you believe it might lead to bugs that you would have to fix on your own dime. All those little "Hey, can you..." that happen during development become change orders adding time and money to the project and releasing the contractor from various potential liabilities (depending on schedule, potentially including the liability to fix bugs on the contractor's own time).

    And going back to his analogy, no. The bricks fall at the bottom. The brick layer blames the project manager for an unrealistic schedule and the architect for a poor design. Each of those blame the bricklayer and round and round it goes. Meanwhile he's paying penalties to the carpenters, electrician and God knows who else for not having the work area ready on schedule. Depending on how busy those contractors are, they might take the penalty and walk leaving him scrambling to line up more contractors while trying to get one of the contractors he already has to accept responsibility for the sagging wall so things can move on. Perhaps it's easier and/or cheaper to just pay the bricklayer to fix the problem without accepting blame before the roofers walk too.

    Before you (or your boss) think the latter doesn't happen, look up punch-out. That's a contractor hired to fix mistakes made by other contractors (if they can be without tearing everything back down). It happens a lot.

    That's before even considering the headache if the bricklayer decides to quit. Then you get to hire a new bricklayer who insists that you agree that he cannot be responsible for poor results since he's building on someone else's work.

  178. Work of acceptable quality by gnasher719 · · Score: 1

    Building a wall is in most cases simple, once you have a bit of practice. Building a wall where the bricks start falling out is not of acceptable quality. However, the person building the wall will make mistakes. There will be bugs. There will be bricks not positioned well, there will be bricks with too much or too little mortar. And guess what: The builder fixes these bugs as he sees them, during the time where he is paid by the employer. (I say "in most cases". There will be cases where building a wall is difficult. If there is really bad weather and you need the wall built now, or in unstable ground etc. )

    Making bug-free software is hard. Here's the software equivalent in complexity of building a wall: Print the numbers from 1 to 1,000. My solution in C: printf ("1\n"); printf ("2\n"); and so on. In two hours or so I can type 1,000 lines of bug free code without using copy and paste.

    The generally acknowledged state-of-the-art method of writing code with a low rate of bugs (not bug free) is good design, code written by competent programmers, serious amount of unit tests that are run repeatedly, serious testing by competent testers (not the programmers), and bug fixing until the rate of bugs is acceptably low. For projects where a very, very low rate of bugs is required, that is achievable, with productivity going down to less than two lines of code per day. That's the state of the art. A programmer should be paid for doing work in state-of-the-art quality.

    Now on the other hand your boss is either stupid because he is in the business and doesn't know these very simple facts that I have just written down. Or he is an asshole trying to make you feel bad about the work that you are doing, or probably trying to make you work overtime without payment. Both stupidity and being an asshole are not acceptable quality of managing people, so you should ask him to give his money back to the company.

  179. Try to stand there and rush the mason by EMG+at+MU · · Score: 1

    Hire a mason to build a wall. Give him a plan: how long, how high, how wide, what kind of brick. Give him a budget and a timeline.

    Wait until he starts building the wall. Wait until he is about half way done. Then change how wide you want it.

    Then change the kind of brick. Then change the kind of brick back. Then cut the timeline. Then cut the budget. Then decide you don't really want a wall, you want a fence. Then take that back and decide you want a wall.

    That's modern software projects. It doesn't work for software and it wont work for walls.

  180. If PHB gave enough time and resource 4 tests by WillAffleckUW · · Score: 1

    The cold hard fact is they always cut both the required resources and the required testing to reduce bugs.

    Tell your PHB to jump in a frozen pond from a height of 2000 miles up.

    Tell him it's safe, or as safe as insufficient testing and inadequate resources made the jump.

    --
    -- Tigger warning: This post may contain tiggers! --
  181. Look at Bay Bridge construction... by Anonymous Coward · · Score: 0

    ... Not sure about building walls, but Bay Bridge contractors are not going to fix their shit on their own time, they'll ask California to pay for it:

    http://www.sfgate.com/bayarea/article/Bay-Bridge-Hundreds-of-leaks-possible-corrosion-5222501.php

  182. The assumed type of business engagement is differe by Anonymous Coward · · Score: 0

    In the example of the brick layer, the automatic assumption is that he is an independant contractor and held liable for his work, where as the developer is listed as an employee. If the brick layer was an employee, he certainly wouldn't be required to fix the wall on his own dime. When an independant contractor is brought in with a set deliverable, oftend bug defect remediaiton is built into the contractor and the contractor does fix them on their own dime (well really they fix them on the contingency costs they built into the contract)

  183. Question in idiocy.... by American+Patent+Guy · · Score: 1

    By the same theory:

    We should lock all legislators in until they pass laws without errors.
    We should make passenger pilots who fly badly fly more until their passengers like them.
    We should make the weekend drunk drive a lot more until he can drive safely.
    We should make the butcher who can't keep his refrigerator cold enough work until his customers stop getting sick.

    There are wonderful ways of dealing with incompetence. They are sometimes called: elections, dismissals, suspensions and firings. You can't force stupid people to be not stupid, and you can't force competence on the incompetent.

  184. Developer is never responsible for bugs. by Anonymous Coward · · Score: 0

    A developer is never responsible for bugs. It is the QA who is responsible for identifying bugs. In reality, everyone is on the same team so the blame game does not help. At least 20% of developer time should be spent in fixing defects, improving architecture etc.

    The right analogy:
    A builder builds a wall according to your specifications. You inspect it and find it ok, or you identify defects and the builder addresses those defects. You missed some defects and the builder walks away, and bricks begin to fall out of the bottom, then you get a new builder or call the same builder and prioritize on fixing the defects first and postpone or reduce the effort to build the wall higher.

  185. Simple by master_kaos · · Score: 1

    Tell him fine you will do it for free --- as long as your hourly rate is the same as the hourly rate they are billing the client. See how fast he will shut up.

  186. Are you an employee or a sub-contractor? by whit0313 · · Score: 1

    If the bricklayer is an employee, then the employer might yell at the employee (or fire them) but it's the employer's responsibility to get the wall fixed. If the bricklayer is a sub-contractor, then they are their own boss, and it's their job to fix it on their own time (and their own dime).

    That said, it's not really a fair comparison. People have been doing brick walls for thousands of years, and the basic process hasn't changed *that* much in centuries. If you build a brick wall and the bottom falls out, it almost certainly means you're incompetent. Whereas programming has existed for around half a century (give or take), and most languages we use today have been around for a decade or less, and many of the tools we use have been around for a year or less - and all are constantly changing.

    More than that, coding is (I assume) significantly more complex than bricklaying. While I've never been a professional bricklayer, I'd be prepared to bet that there aren't *that* many things to learn about how to actually put bricks together with mortar (I'm not talking about preparing foundations, I'm just talking about bricklaying) - at least not compared to learning a programming language (or several), how to use them well, not to mention learning to use SCM, a bugtracker, etc etc.

  187. So misaligned features become bugs by MegOnWheels · · Score: 1

    Fantastic opportunity for management to deem maldefined features as bugs and make the devs work on it for free..

  188. Developer DEVELOP by Anonymous Coward · · Score: 0

    The brick builder always does the same thing, over and over and over and others have debugged already materials, math, statics etc. The developer is a DEVELOPER. So debugging is part of the whole thing the same as a scientist spends 70-90% of his time figuring out how to do something and only a minor part is writing/designing the actual working thing.

  189. i say: no by Anonymous Coward · · Score: 0

    Additionally, I think software engineers should be entitled to residual income, much like actors in the entertainment industry.

  190. You should have... by labradore · · Score: 1

    You should have told him to hire a brick layer and given him your two weeks notice.

  191. Stupid analogy by dbIII · · Score: 1

    Fixing bugs is also work.

  192. uniqueness by Anonymous Coward · · Score: 0

    Start looking for a different team to transfer into, or a different company to work for.

    That said, the answer is quite simple. Like programming, bricklaying is a skilled profession where training and experience matter. However, each brick is exactly the same as the hundreds of bricks before it, and there's nothing the bricklayer can do about that. On the other hand, if a programmer is doing the same task hundreds or even dozens of times in a row then they're not working at the right level of abstraction. When every problem is unique, then the risk of introducing bugs does go up. We usually iterate to counteract this, whether by getting a coworking to try out our changes informally, getting QA to test them, writing automated tests, or just waiting for our customers to notice.

  193. He needs to understand development better by Anonymous Coward · · Score: 0

    Costs of bug fixing should have already been included in the quote and/or budget. Bug fixing and testing is part of the process of development. Doesn't matter the methodology, scrum, waterfall, whatever, there is always a code, test, deploy... Targets for bugs per line should be set.. Industry average is about 20 - 50 bugs per 1,000 line of code. If you are developing an app that needs to run a space ship, you will need to budget a huge HUGE amount of time to testing and validation.

    If your developers are constantly over the industry average, then get new developers. If they are contractors, then you need to set a minimum requirement of functionality. Should they deliver a product with a flaw that prevents functionality that was quoted as part of the originally invoiced price, then they need to fix it without charging you.

    The success of software dev is completely in the hands of the lead developer or manager of the project to control the requirements and expectations up front. You can have the best developers in the world, but if you let sales run crazy promising anything that comes to mind, or let upper management push you around and change requirements each week.. YOU WILL FAIL.

  194. Obligatory Dilbert... by jayveekay · · Score: 1
  195. The Simple Answer by codefungus · · Score: 1

    If the builder didn't use mortar to hold the bricks together, he's going to be done faster, spending less time, than had he used it. So imagine if the wall was built correctly. We'll say that this represents 100% of the needed programming time. If I throw some crappy wall together quickly, most likely because my boss is saying, "Don't worry, you can come back and put the mortar in later once we are keeping the bears out", I've saved myself, say, 30% of those coding hours. Now the wall is falling apart, bears are all over the place, and someone is saying it was a poorly built wall with bugs. In reality, it was a poorly built wall on the cheap.
    Of course now you have the job of sticking mortar into a built wall which sucks and is gonna cost you a lot more.
    Best solution, fire that guy, hire someone else who is going to come in, tell you the last guy sucked and he's going to do it right and will just build another wall around the existing wall.

    --
    -- A cat is no trade for integrity!
  196. Further analogy by Anonymous Coward · · Score: 0

    Builder builds wall... customer then demands window placed halfway through the wall, builder removes bricks and inserts window, some of the bricks around the new window have become loose due to the window being added...

  197. It's just a symptom for a lack of respect by dbIII · · Score: 1

    Since it's such a stupid analogy it's just a symptom for a lack of respect and is an obvious attempt to unfairly reduce the conditions of an employee. Depending on how it's done it may come under the category of bullying.
    What to do about that lack of respect is the difficult choice. Put up with it, convince the supervisor that you should not be treated with such a lack of respect, escalate to higher management, or arrange matters so you no longer have that supervisor (transfer or quit) - all have downsides.

  198. What a silly analogy! by KJSwartz · · Score: 1

    First and foremost, your boss grossly underestimated the scope of software and firmware engineering to an insulting level. Bricklayers. Pssshaw!

    A small project requires the efforts of a entire contracting firm, from architects to planners to buyers to assemblers, excavators, bricklayers, carpenters, roofers, etc etc etc. Any small flaw that exists in the initial design has to be resolved in situ: it takes experience and teamwork to successfully bring in projects. So many times we are called upon to perform as many functions with fewer people.

    It also takes a crack sales team to sell it off, as well as finance people to watch that the money flows smoothly.

    I would look look deep into those soulless eyes and understand how little significance I hold when I'm in its sights.

    1. Re: What a silly analogy! by KJSwartz · · Score: 1

      I have a modicum of knowledge about bricklayers. The analogy is stupid.
      Who helps write the proposal for building the wall?
      Who helps write the statement of work?
      Who then writes the requirements document, top level design document, interface control documents, and module development plans?
      Who breaks down the project into a WBS itemized list, along with timelines and milestones?
      Who submits requests for tools, computing resources, vendor supplied OSes and libraries, licenses!
      Who develops and executes the test plan that proves the "wall" performs to specifications as laid out in the SoW and Requirements Documents?

      We aren't bricklayers mixing cement and placing already preformed rhombuses into a preplanned structure. We build glorious monuments of achievement!

  199. Wrong metaphor. The right one might be... by kevindivdbyzero · · Score: 1

    It's simply the wrong metaphor. A developer is more like an irrigation specialist than a mason: if there's a drought or torrential rains, if a farmer tears up pipelines or ditches with their earthmoving equipment, or even if time passes and some canals simply become clogged with biomass -- these are normal hazards of the medium being worked in rather than faults with the irrigationist's workmanship. I am inclined to think your boss is a little disingenuous, however -- or has he simply managed to never work in any medium more complicated than bricklaying?

  200. Nope... by Anonymous Coward · · Score: 0

    Gee I...I don't see your charming wall analogy here in this contract you signed.

  201. Your boss is just being cheap by wilson_c · · Score: 1

    This is a settled matter as far as the law is concerned. If the work is performed as warrantied work by a wholly independent contractor, then the entity (company or individual) which created the bug is responsible for addressing it without additional compensation. If an individual employed directly by a company makes the mistake then there is no obligation of the employee to fix that error without further payment. Do you have a contract with your employer stipulating delivery goals rather than simply being paid for your time? Are you paid higher than standard individual wages the way that a contracting company is because there's an expectation of ongoing responsibility beyond the time you are working for them? Unless you failed to mention important contractual obligations in your post, you don't owe him squat.

  202. Too Expensive by Anonymous Coward · · Score: 0

    If you are writing new code in C or C++ for a concurrent system and want code at .5 bugs per 1000 lines of code newly written ....

    It can cost the employer $1000 per line of code.

    So your typical 100,000 line program just cost your employer over the life of the project
    $100,000,000 USD

      I was on a large project in the past when I read an article that said most programs for space were costing about that much. Yet - over a 10 year period .. I counted the beans and realized that our company had spent nearly that amount of money per line of code.

    We still made a profit, yet management sorta wondered why there wasn't more.

  203. no... by Anonymous Coward · · Score: 0

    As my father told me years ago: The difference between a Professional and an Amateur is that a Professional gets paid for his mistakes.

    Wall falls down, you pay him to repair it. Sorry about the wall.

  204. Only if managers want to become unemployed... by Anonymous Coward · · Score: 0

    The manager's argument is fallacious. He's comparing apples to aardvarks. The blue-collar builder of a wall is delivering a product made up of physical components with predefined qualities which are assembled in a predetermined manner - usually in a legally defined manner. If any of the components he is building with are defective, he returns them for compensation. If he assembles them erroneously, he typically fixes them gratis. The builder still gets paid for this because a certain percentage of jobs are expected to go fubar. That is to say, his employer still pays him for his time because every job has an uplifted price to accommodate the occassional screwup.

    White collar software developers come in two breeds - commercial and contracted. If I build a component (think finished building material) and sell it as a commercial solution, I'm expected to deliver a bug free solution or to provide updates for some predetermined time. When work is contracted (or ad hoc or subject to dynamism), uncertainty levels increase. When uncertainty levels increase, it is usually cheaper to pay by the hour for in house bug fixing than to pay an exorbitant uplift cost for "bug free" deliveries.

    Your manager's analogy would be closer to reality if he had said the builder of the wall had to construct it out of fundamental materials (earth, wood, fire, and water) as dictated specifically by the home owner. "You want to use that clay to build bricks with? No, this sand is more the consistency and color I'm looking for." You can presume that such uncertainty would come with much higher premiums and the risk would fall primarily on the home owner.

    Besides, since it is the manager's job to monitor schedules and minimize risk, in his analogy he wouldn't have a job. His job would be performed by someone in purchasing.

  205. They Kind of Do by Greyfox · · Score: 1
    Mostly being on salary, any hours you work over 40 a week are basically on your dime. Funnily a lot of companies where 60 hour weeks are the norm also pay below market on their salaries. But that's neither here nor there.

    Knowing this, do you budget unit tests into your time? Or designs that allow unit testing? Do you write modular code that doesn't repeat itself and makes it easy to isolate bugs? Do you hold project managers' feet to the fire for requirements documents and demand revised estimates if they have a last-minutes requirements change? Well I suppose that depends on how much you like working on your own dime, doesn't it?

    --

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

  206. Because a builder is a contractor... by CharlieG · · Score: 1

    Very simple - if a builder's EMPLOYEE puts a bug in the wall, the BUILDER pays to fix it, NOT the employee, who still gets his pay, and the builder bids/quotes the job on a flat rate
    The developer, IF he owns his own company, says "I'll develop XXX for $YYY", then yeah, he's on the hook for the bug, but his employee still gets paid by the hour

    It has to do with the difference between being an employee vs the owner

    Want to pay me like an owner? OH, OK, so you are hiring me with a flat rate to do the job, not by the hour? No problem, I'll bid the job as such, and take out insurance, just like that contractor has

    --
    -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
  207. If it were the programmer's fault by Anonymous Coward · · Score: 0

    A lot of my bugs have been because I was told I had a deadline. I was not allowed invest proper care in the coding and testing. I am penalized if it's late so shortcuts are taken.

    Further, no software is ever bug free. It's just free of bugs worth fixing. Your method would ensure programmers work forever for free.

  208. Depends.. Are you being paid by the job? by Anonymous Coward · · Score: 0

    Or by the hour? A "bricklayer" is typically paid by the job. The price for the job is negotiated ahead of time. If the bricklayer builds the wall in 30 minutes or 30 hours he gets paid the same.

    That is not the arrangement, generally, when you have an employee/contractor situation where you are compensating by time (ie., not by job).

  209. Re:Building code is not the same as building a wal by AK+Marc · · Score: 1

    The analogy is fatally flawed. If I buy MS Windows from a store, I expect MS to fix the "wall" for free. If I'm a manager in a construction company, if I pay a worker to build a wall, and it's broken, I have to pay someone to fix it, and I don't expect the worker to work for free to rebuild it, even if it was their error.

    So why don't bricklayers work for free when MS fixes bugs for free? Oh, wait, with a little creative re-wording, the analogy is reversed. I guess that makes it a bad analogy.

  210. THIS:Re:Maybe yes, maybe no? by Anonymous Coward · · Score: 0

    This is the best answer here. +1

  211. Such a poor analogy by confused+one · · Score: 1

    The builder is responsible, perhaps (depending on the contract terms). The bricklayer (the employee) is not. If the error was egregious and intentional, then the builder might fire the bricklayer. But he cannot ask the bricklayer to work off the clock. This is a violation of the law. In addition, if the architect or the customer makes last minute changes to the design, then the builder has legal recourse to charge the customer for any additional work not included in the original specifications.

    Your manager doesn't know what he is saying. If he asks you to work off the clock, go to your state's employment board immediately.

  212. Negotiation and power play by pikine · · Score: 1

    I think his boss is trying to renegotiate this poor guy's salary. In any case it's a power play, so there is no use to explain to the boss how software engineering differs from brick laying. Simply assert that: (1) he'll work in excess of 40 hours a week only on overtime salary as required by law, (2) market rate already takes into account software maintenance cost due to defect or changing requirement, and (3) his performance evaluation should have already taken into account the quality of his output.

    Why is this a power play? If he's actually not meeting expectation, the boss is free to simply fire him and hire someone else. The boss would not have to employ such power play tactics.

    Of course nothing is going to stop him from saying "ok boss ur right" and take a voluntary pay cut.

    --
    I once had a signature.
  213. Analogy inaccurate. by Anonymous Coward · · Score: 0

    Bricklayer builds wall. Wall is built on foundation made from materials that crumbles at exactly 30 degrees Celsius with a humidity of 69 humidity units. Every Saturday, at around 2pm, 1 brick shifts about 3mm due to the crumbling. 6 years later, the original builder is dead and no one even knows where in the house the wall exists, the only problem is that half the house suddenly fell apart.

    So who exactly fixes that mess?

    Most of the time, bugs can't be tied to specific developers. And when they can, the problem is usually some kind of unknown interaction that no one thought about, so there is not a "fault" situation. You can assign blame, sure, but to what end? There was no malicious intent or incompetence, it's simply a piece of work that requires more work to fix.

  214. A lawyer analogy by deodiaus2 · · Score: 1

    A lawyer/accountant/psychologist/judge creates problems and circumstances that he knows you will have to pay him extra to get out of. Ask anyone who has gone through a divorce or bankruptcy.

  215. Falilure mode timelines vs complexity. by Anonymous Coward · · Score: 0

    All walls fall over eventually. The reason they fall over is "Bugs" that were built into them or design spec being exceed. The time line for a wall failing and code failing is drastically different because code is much more complex than a wall and it is also modified alot more. Ask your boss how long the wall would stand if it reached to the moon and blocks were constantly being removed, rearranged, and replaced with blocks of different sizes, shapes, and compositions.

  216. Reviewing requirements by Roogna · · Score: 1

    I've had clients suggest this, I always simply point out that they then -must- submit all requests for changes with at least six months notice. They -must- be willing to discuss those requests and put up with the changes we make to them. Whether that's to prevent bugs, or for security or whatnot.

    For some reason they don't ever want that kind of effort on their side. Instead they'd always rather give requests on say, Friday evening, demand it to be done Monday morning for their giant meeting, that they've known about for months and forgotten to tell the developers about, and then wonder why it's buggy? Well sorry, they're going to also pay for fixing it, probably double.

    There's a reason why builders have to have blueprints and have to submit those for review and approval...

  217. Obligatory results by manu0601 · · Score: 1

    Does this boss asks the doctor to see him without paying if a medical treatment does not work?

  218. NASA Onboard Shuttle Group Comparison by Anonymous Coward · · Score: 0

    NASA onboard shuttle group:
    http://www.fastcompany.com/28121/they-write-right-stuff

    As the story tells, the space shuttle group doesn't concentrate on code. It concentrates on process (scope creep isn't allowed, change justification and exact specs are mandatory, peer review, it's ready when it's ready regardless of schedules, massive documentation). That's what it takes.

    Fast, Cheap, Good - pick two. Most default to fast and cheap as a routine. Then again they will never be subject to investigation by the Rogers Commission so Good is always first choice.

    When bosses/sales and marketing/shareholders/clients accept their own influence on a project and will pay in both time and money for this level of discipline to do it right the first time, I'll appreciate the argument made by the poster's boss. Until then they need to adjust their expectations to match something closer to reality - you're the one that wouldn't pay to do it right so you can be the one to pay (higher) to do it again.

    The problem isn't that the boss made the analogy - it's makes sense from his/her point of view. The problem is he doesn't understand why it doesn't really apply so he won't understand counter-arguments either. If they understood, they wouldn't make the comparison.

    It also makes sense from their point of view to play dumb because if they are proven to understand the issue, they become responsible for the result. Can't remember who but... "It's very difficult to get someone to understand something when not understanding is in their own best interest."

    For instance, Kjella said "After that, yes you'll get a limited warranty period where I'll fix any hidden bugs (that are actual bugs, not flaws in the spec) for free." No matter the circumstance, what motive does the client have to agree that a problem is a flaw in the spec?

    Motives for decision makers/purchasers of commercial/retail software (good enough to be profitable) are very different from the motives of OSG (forget cost, 'good enough' doesn't apply). Witness the results.

    A commercial/retail software coder shouldn't pay for these problems as they are beyond their control. Those that make decisions that create their work environment should pay the costs in PR, cash, time, etc.,..

    OSG coders shouldn't pay either - the process they use should pay the price of change. That's how they view things and again, witness the result.

    Capcha: remorse.

    Commercial/retail marketers feel none when they advertise default run for external media as a 'feature' but I bet OSG has felt plenty for their actual coding mistakes even though they didn't cause any disasters.

  219. Continuation. by Anonymous Coward · · Score: 0

    Wanted to add that the bricklayer is aware of this fact thus takes a gamble and figures if the wall fails it will be long after hes gone . Since software has a higher failure rate software developers offer no such perks as we would never make any money.

  220. Responsibility by Anonymous Coward · · Score: 0

    It will ultimately fall upon the bricklayer who built the wall to make repairs where the bricks have fallen out of it. But make no mistake. It is not the bricklayer's wall, nor the bricklayer's fault. The bricklayer plies his trade with great pride and diligence, and would never have had any responsibility for, or connection to, the bricks that fall out of that wall, had he not surrendered himself to the task of building the wall in the first place. The bricklayer cannot be expected to be perfect -- his master certainly is not. If said master wants the fallen bricks replaced, said master can pay a fair wage for the additional work. The bricklayer is, after all, spending his time serving the needs of his master only in anticipation of the compensation by which to better serve his own needs. If that symbiosis should fail, then the bricklayer should feel no more at fault for that failure than the master.

  221. Pick Two by Anonymous Coward · · Score: 0

    Quality, Time, Cost. Pick two.

    If you want better quality, it will take longer and cost more.
    If you want it faster, it will cost more and be of a lower quality.
    If you want it cheaper, it may take longer and be of a lower quality.

    In my view, there are no such things as bugs. There is just some code I haven't finished yet. Every piece of software that is written does a cost/benefit analysis of how finished is the software and how soon do we want to get it to market. Some shops like to take longer to get it more finished before shipping. Other shops like to get it to market sooner, and "finish" more later on in service packs.

    If someone every tried to lay down a perfection mandate, I would say ok, but my rate is x1000 and it's going to take me x1000 longer. Are you sure that's what you want? Otherwise, we'll do our best, and being pretty talented and thorough, I tend to only forget to factor in the far edge cases. But hey, I'm human. And guess what, so are the folks who write the specs and manage the project. Should we require their specs are perfect on their first try? Or continue to provide the same flexibility in an evolving and iterative process?

  222. does ze have pointy hair? by Khashishi · · Score: 1

    What kind of moronic manager doesn't know the difference between an employee and a contractor?

  223. Bottom Line by Anonymous Coward · · Score: 0

    Let me put this even more succinctly than in my previous post. Who needs the wall built? You? Or you boss?

  224. No by Anonymous Coward · · Score: 0

    Labor is paid by the hour. He does not work for free if you don't like it replace him.

  225. WTF? by Anonymous Coward · · Score: 0

    That has got to be one of the most naïve suggestions I've ever seen. Bugs occur for a multitude of reasons, bad design choices, external component and software vendor problems, misunderstandings, etc. Like a petri dish of bacteria. This model applies to high-cost, critical systems like air-traffic control systems and medical systems only where the high price justifies the cost. Making a programmer fix bugs in their own time for typical software will just force developers to reject projects as too risky.

  226. Test First? by LaissezFaire · · Score: 1
    Dang, that may force developers to move to test first development, finding bugs before it goes over to test. :)

    It would drive a few things. The development would likely take much longer, since if the cost for bugs comes out of my pocket, but first coding time comes out of yours, I'm going to spend your money. If you force me to release earlier than I say it's ready, I'll make you responsible for taking the code in the state it's in. And when bugs are found, I'm going to find a way to blame the architect or systems engineer for giving me a bad design, or you for inadequate requirements.

    Oh, and feature creep is really going to cost you.

  227. Real life analogy by Camael · · Score: 4, Interesting

    Software development is probably more like engineering and building a bridge. You need to compare with something where not everything is known at the outset.

    Actually, there is a real life building analogy of the type you seek- large scale projects such as the expansion of the Panama Canal, which currently appears to have ground to a halt amidst massive cost overruns.

    So, it is not always true the builder fixes any problems on his own time and costs. In some cases, the client pays (hence the cost overruns) or if there is a dispute, a mess ensues as in the example above.

    1. Re:Real life analogy by Ex-MislTech · · Score: 1

      I think putting large contracts like the panama canal up for low bid is stupid.

      The companies always bid lower then what its really going to cost
      and then the cost over runs begin.

      What should be done is the company is picked by the quality of its work
      and how its held up against the test of time.

      The company with the best record wins.

      Then the price is variable based on the usual surprises that come up
      when building something this massive, and you don't know what you
      are going to run into underground, etc...

      The workers are all paid the prevailing industry wage, and
      quality becomes the decider not which bidder can lie best.

      We are sacrificing quality for printed pieces of paper backed by nothing
      with tangible value, ie. fiat currency.

      The focus needs to return to quality.

      --
      google "32 trillion offshore needs IRS attention"
    2. Re:Real life analogy by Mashdar · · Score: 1

      The reason there are huge overruns in government contracts is that dopes come in and blow the bottom out of the bidding. You can be sure if ten companies bid at $10M, and one company bids at $6M, they either read the specs wrong or are cutting huge corners. But it is very difficult (sometimes impossible by law) to make this argument when it comes time to select a contractor.

  228. Respect for programmers falls to new low by TomGreenhaw · · Score: 1

    So now writing code is as simple as stacking bricks? What a horrible and depressing analogy.

    There is an old adage: There is never time to do it right, but there's always time to do it over.

    Just now do it over on your own time!

    --
    Greed is the root of all evil.
  229. Pretty much by rsilvergun · · Score: 1

    Just about every major construction project I've ever seen has run over budget. All Contractors under bid on big projects because a) It's the only way to get in and b) you know that 9 months into a project nobody's gonna wanna switch horses in the middle of the thing.

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
  230. It's on /. because the job market's changed by rsilvergun · · Score: 1

    and it's become a valid question. Employees have fewer rights and less power than 20 years ago. A lot. Social mores are changing and questions like this are the inevitable conclusion when you take the narrative of "Personal Responsibility" to it's (il)logical conclusion :(.

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
  231. Sure by gweihir · · Score: 1

    If the developer is paid for the time needed to write mostly bug-free code in the first place. Which is, depending on skill, something like 5-100x the time the usual developer gets for writing code.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  232. Comment removed by account_deleted · · Score: 3, Insightful

    Comment removed based on user account deletion

  233. Should Developers Fix Bugs They Caus by Anonymous Coward · · Score: 0

    How does this apply to healthcare.gov

  234. THIS! Employee vs. contractor. $150 / or $15 by raymorris · · Score: 3, Informative

    This is the difference. Employment where the payer takes the risk and reaps the rewards, vs contracting, where the seller has the risks and rewards.

    If you contract a brick company to build a wall (at $150 / hour), they will in turn employ brick layers at $15 / hour. The $135 difference is that the contractor is paid to get the wall built, even if it takes three to.es as long as expected. The bricklayer is paid to show up 8-5 and lay bricks. For $15 / hour, he is responsible for showing up and doing what the boss says, NOT for the results.

    I do both in programming. Customers call and get a bid on a project. If I have to work until 2AM to get the project done, I work until 2AM. I bid those projects based on $125 / hour - however many hours I think it'll take, I multiply that by $125 to set the price. I also work for a government agency, as an employee. They pay $50 / hour, and I leave work at 5:00, whether the job is done or not. If they want me to spend my off hours working on it, they can a) pay contract rates and b) not complain when I go home at noon because the job is done.

  235. definitely by Anonymous Coward · · Score: 0

    Manager paid to hire perfect programmer. Manager failed to hire perfect programmer. Manager should have to pay new perfect programmer out of pocket or fix himself after hours.

  236. Ask your boss by Anonymous Coward · · Score: 0

    Ask your boss if management fixes their mistakes on their own time or makes their underlings work harder and longer hours to fix them instead.

  237. All I've got to say is... by cowwoc2001 · · Score: 1

    Pointy haired bosses never cease to amaze.

    Is this on Dilbert? If not, it should be.

  238. typical build by the_Bionic_lemming · · Score: 1

    Boss: I need this wall built.

    Programmer : Ok Boss! /builds wall/

    Boss : Hey, Nice wall, but I need to make 22 changes to it to make it better

    Programmer : That's going to take a re-write Boss, I was just told to build the wall!

    Boss : You don't have time to re-write, just patch it like I directed in the meeting and go build the other wall!

    Programmer : But if I patch I won't have time to bui

    Boss : Get your ass to work, and get it done!

    --
    _ _ _ Go for the eyes Boo! GO FOR THE EYES!
  239. Dumb analogy on all levels by JDG1980 · · Score: 1

    "Today my boss came to me with what he thought to be a valid point and analogy. A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher. In most cases, he would have to replace those lower bricks at his own expense and on his own time. Comparatively: A software developer writes a piece of software. When bugs are discovered, the developer is paid to fix them by the employer and on the employer's time. I didn't know how to refute the analogy at the time, but it did make me think: why are bugs in software treated differently in this way?"

    First of all, if the "builder" is an employee, then no, he doesn't have to fix the problem "at his own expense and on his own time". He is legally entitled, at least under US labor law, to be paid for every hour he works. If the builder is a contractor, then that's different – but contractors obviously price this sort of risk into their contracts.

    More to the point, as others have noted, there's a big difference between building a brick wall using techniques that have remained standard procedure for decades (if not centuries), and designing software for the purpose of doing a specific task. When you get to building fancy, innovative, one-off buildings, you get all the same sort of bugs and glitches you do in software development. Frank Lloyd Wright's contractors had a hell of a time stopping Fallingwater and the Johnson Wax Building from leaking. When people want to do a routine task on computers, they use out-of-the-box software. That, not custom development, is the equivalent of the "standard brick wall".

  240. Tell your boss to talk to the shop steward by Joe_Dragon · · Score: 1

    Don't have one?? it's time to get a union and push for MORE QA and less 80+ hour work weeks.

    1. Re:Tell your boss to talk to the shop steward by DaveV1.0 · · Score: 1

      A better idea would be to tell the boss to read up on the difference between contractors and employees and to read the labor law posters that are supposed to be conspicuously posted in the workplace.

      --
      There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  241. Tim Armstrong? by george14215 · · Score: 1

    Is that you?

  242. Wikipedia by Anonymous Coward · · Score: 0

    Show him to the entry on "false analogy".

    Remind him that devs work just like MDs.

  243. How about not wasting time at work too!? by Anonymous Coward · · Score: 0

    There's a coder at my work who seems to use small "bugs" to get out of work. He pretends he's done a lot of extra work at home, then when it comes time to present his work, all of a sudden he's found a bug and will need to spend more time. This then allows him to surf the internet and go on massive lunch breaks while he 'fixes' them. I really don't know how the managers haven't picked up on the scam yet.

  244. Your boss is just trying to have a go in your hole by Anonymous Coward · · Score: 0

    Expect if this would be building subcontractor company they would just plaster the wall over be done with it, later when issue is found subcontractor company is already collapsed and it's up to contractors lawyers to make the actual customer pay for the repairs, damages and lawyers time.

  245. Re:Hey bigmouth by Anonymous Coward · · Score: 0

    Dude, you've been the laughing stock of Slashdot for a long time. The only thing I'm adding to my hosts file is a an entry which routes your shitty blog into the bit bucket.

  246. First rule of Programming Club. by Anonymous Coward · · Score: 0

    The first rule of programming club is don't work for assholes.

    Fire your boss and find a new job. Eventually after your idiot boss has enough people quit on him he will stop being such an idiot boss or get fired. Theres no reason to have to refute an idiot's argument as you cannot educate a person who is willingly ignorant. If he's not ignorant then he's an idiot who is trying to scam you and your rebuttal won't accomplish anything anyway.

  247. Not all bugs come from the developer! by Anonymous Coward · · Score: 0

    It might not be vogue but assume a waterfall model: someone's suggesting some (vague) requirements; someone else is defining how things should work.

    The poor developer implements what's asked for correctly but it's still wrong. Who's responsible? Who gets to fix it.

    In the (slightly dodgy) analogy: client asks for wall to be made of paper. Bricklayer argues this will fail but gets over-ruled by management. Paper wall collapses in rain. Who's fault?

    Not all bugs are caused by developers.

  248. You've mis-chunked by Anonymous Coward · · Score: 0

    You're not a wall builder, you're a an artisinal custom brick-maker. (It's actually a better analogy, since you are not repetitively using extremely consistent and well-characterized components to build an exactly specified and unambiguous target object.)

    "No problem. If I ever finish hand-making this first brick (it keeps having faults in QC testing), I'll start the second brick. I have no idea when we'll finish this row, or the next, or even if we'll ever get so many rows made that we'll care about this first one eventually having defects. Most likely, that'll be the problem of the company that buys the company that buys this one."

  249. Scarcity of software engineers by Anonymous Coward · · Score: 0

    There are relatively few software engineers and they can negotiate better terms than wall builders.

  250. Sure thing boss by Anonymous Coward · · Score: 0

    Sure thing boss, but I expect to be given the time to write it right the first time. If I tell you it will take X time and you want it done in X/10 and 3 other things at the same time while fielding every tech support call that comes in, even though there's another department that's SUPPOSED to handle that... well, would you expect a building to still be standing if built under those conditions? That, then, is YOUR failing and you'll have to stay late to fix the mess you caused through your inability to properly manage. (ie to understand the actual process and/or listen to what your workers say rather than making unrealistic promises to others and expecting us to move heaven and earth to meet them.)

    And if I responded thus to my boss I would get promptly fired...

  251. Think Commercial Software by fiftybmg · · Score: 1

    The analogy of the bricklayer and the programmer is erroneous. When you buy commercial software and there's a bug in it, the supplier of the software fixes it on your time and your dime. You get the bug fix if you are paying support, and you do not get compensated for finding the bug and reporting it in the first place.

  252. Workers of the world, unite! by mydn · · Score: 1

    Well, that bricklayer might also be a member of the International Union of Bricklayers and Allied Craftworkers. Perhaps you should ask your boss what he would think about you organizing the developers.

  253. Nope, or they would have to give me a raise by Anonymous Coward · · Score: 0

    I have never heard that contractors employee had to fix his mistakes on his own time and not get paid for it. At least in Finland that would be illegal and i seriously doubt any western labor union would allow such practice.

    Most likely nothing stops your boss making such business to business contract, but do not think for a minute that kinda of contract is going to be cheap. I wouldn't make such a contract with out monthly "service" fee.

    Software gets complex fast when there are concurrent operations involved. There just is no substitute in construction business for while loop running concurrently in multiple threads and having several different ending states that could differ from each run (which could all be correct). QA should just make sure that software is good enough, not prove correctness of software. Question really is what is "good enough".

  254. Simple answer by Anonymous Coward · · Score: 0

    Because you're not a slave.

    You're paid for your time. You're not paid for wasting your own time. You can maybe justify that you'll save future time, but there's no guarantee that you'll ever reclaim that wasted time.

    Recognize what's really important in life and focus on it.

  255. Stupid question by PoopMonkey · · Score: 1

    I can do this too... If an apple is red, and a house is made of bricks, how many ducks does it take to get to mars?

  256. Bad analogy by Anonymous Coward · · Score: 0

    Actually the brick builder charges again to fix the problem.Citing foundation or something else. I actually work in construction and actually am happy to finally have something to say :)

    Unless he was a contractor. Then he just has to redo it because its in the contract, As an employee they are paid for mistakes. It happens.

    Larry Churchill of Tulsa

  257. Certainly No by Anonymous Coward · · Score: 0

    If you are salaried, you just do your work as you always do. If there is a bug, fix it if your boss tells you to. ON company time, as your contract says. IF you are paid hourly, you were already paid hourly to create the bug (they happen, no way to avoid them) you can fix the bug at the same hour rate. Or maybe charge more if you feel like it. If you are a contractor, well, then it's up to you and up to the contract you made. I really hope nobody is stupid enough to promise completely bug free code. If it's done to the specs it's done to the specs. Want to work there again? Maybe fix it if it's simple. Other than that, remember to add clauses clarifying what to do in cases when bugs are found after the final release check of the program. Also remember to write down how and when acceptance and final release of the software to the customer happens. After that, you can bill more for bugs.

  258. that's not how it works by stenvar · · Score: 1

    No, that's not how it works. When a construction company's employees screw up, they get paid while fixing the screw-up. Often, even the construction company gets paid by the customer, unless they really screwed up badly and have to eat the cost.

    Really, this is not about obligations, moral or legal, but about risk and insurance. Bugs and errors will happen, on any project. Someone needs to pay for them. Either the builder can pay for them out of their pocket, effectively providing insurance for y, but they are going to charge you more for the contract overall. Or, you can pay for them as they occur. Either way, if you want the project to go ahead, you pay for the bugs.

    The only way you end up not paying for them is if the bugs or mistakes are due to gross negligence or if the builder misrepresented their qualifications; in that case, you may have to go to court to recover your money. But that doesn't apply in an employer/employee relationship, since presumably you know your employees pretty well.

  259. apples to apples please by niw3 · · Score: 1

    How can one compare a routine work like wall construction to a creative work like programming? One has proven technology used since maybe thousands of years now, while the other has unique problems which involve problem solving, trial and error, interfacing, compatibility... etc. Be sane for God's sake.

  260. I remember NASA tried to write code without errors by Anonymous Coward · · Score: 0

    Given the same quality standards as for construction they tried to produce flawless code. The result was a maximum of 10 lines of code per day.

  261. This is the difference between being an employee by LukeCrawford · · Score: 1

    and a business. Sure, if I hire a company to build me a wall and it turns out faulty, I'm going to want /the company/ to come fix it, or at least give me a refund.

    However, if I hire a company to build me a wall, I will pay substantially more than the wages of the person doing the building plus the cost of materials. And the employee who built the wall? He or She is going to get paid either way. Of course, if they continue to screw up, they will miss out on promotions/raises and/or will get fired. But they will get paid for the time they worked up until they get fired.

    In my jurisdiction, withholding /employee/ wages is extremely illegal. Sure, you can fire under-performers, but you've gotta pay them for the hours they worked.

    This is a huge part of the difference between being an employee and being a company. Who takes the risk?

  262. You have a very low UID by Anonymous Coward · · Score: 0

    Please consider supporting the slashcott! soylentnews.org

  263. You have a low UID by Anonymous Coward · · Score: 0

    Please, consider supporting the slashcott! www.soylentnews.org

  264. Bogus analogy by taustin · · Score: 1

    The "builder" building the wall is the contractor, who may or may not be the guy putting bricks on top of each other. If it's not, the guy putting bricks on top of each other is his employee, who gets paid by the hour. The contractor eats the cost of bad workmanship, and it it's not the first time, probably fires the employee for incompetence. If he expected his bricklayer to fix it on his own time, he'd be fined, possibly even jailed, for violating state and federal labor law.

    The only relevant question is, are you a contactor working on a contract that allows this, or are you paid by the hour? If you're an employee of the company, what your boss proposes is a crime.

  265. Re:Building code is not the same as building a wal by joss · · Score: 1

    Bullshit, or at least, preposterous exaggeration.

    Also, "syntactica" is not a word.

    --
    http://rareformnewmedia.com/
  266. It's outline in the contract. by upuv · · Score: 1

    There are a few types of basic contract.

    If you are full time employee.
    - The employer pays for time and materials. No matter what the cause of the bug was the employer absorbs the costs of it's own mistakes.

    If you are a contract employee on a Time and Materials contract.
    - This is virtual the same as full time. The customer in this case pays for everything including bug repair.

    If you on a contract to deliver a service or product.
    - Well now the Contract owner is responsible for paying for all errors that fit with in the bounds of error as outlined in the contract.

    There are a few variations on the above. Usually there are caps on all contracts to prevent excess expenditures. Things like T&M that can only reach X amount ever.

  267. Drunk code. by Anonymous Coward · · Score: 0

    I write working code when I'm drunk, or delirious with illness (it happened). However when reading the code sober and healthy; I have no idea how it could be working.

  268. The builder is incongruent with the developer beca by Anonymous Coward · · Score: 0

    If the foreman stood over the builder and said "Mortor testing? We don't need to do that - just mix it to the right proportions and slap it on" and follows up with "Don't start over there on the foundation - we need to hit 3 meters in height by friday. Get those bricks up. If you need help, we'll hire some extra labour units who have never seen these kind of bricks before, and that will enable us to hit our target" ... then you may have an analogy.

    If the developer is told "You can use whatever industry standard methodology you think is appropriate, use the tools you want, and run whatever testing system you think is necessary. Tell us the expected cost, and any variation we (the management) cause will be costed and added to the budget" ... well now you're very close to an analogy.

  269. Every Article by Anonymous Coward · · Score: 0

    "Shazbot! We ran into some trouble getting the comments.
    Try again... na-nu, na-nu!"

  270. The wall is built... by Anonymous Coward · · Score: 0

    ...the software is developed.

    So the wall is finished when is reaches the specified size and the software is finished when it runs bug free.

  271. Bugs are inherent aspect of coding by Anonymous Coward · · Score: 0

    Bugs happen no matter what you do, some coders have more, some less, but there will always be bugs. So as writing code inherently leads to fixing bugs, how is that not included in the task of writing code? And as you are tasked to write code(includes fixing any bugs in that code) you must also be given time and pay to do that. Simple. Dilbertian management logic might find a way to do things differently, but comics are comics and real world is real world.

  272. additional tid bit by crutchy · · Score: 1

    large company responsible for developing raw land into finished houses

    also sometimes just called a developer

  273. Posting this way too late by Anonymous Coward · · Score: 0

    "Today my boss came to me with what he thought to be a valid point and analogy. A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher. In most cases, he would have to replace those lower bricks at his own expense and on his own time. Comparatively: A software developer writes a piece of software. When bugs are discovered, the developer is paid to fix them by the employer and on the employer's time. I didn't know how to refute the analogy at the time, but it did make me think: why are bugs in software treated differently in this way?"

    A builder being an employee of a building company would replace the bricks on company time, same as any other employee. A builder who was an independent contractor might replace them on his own time, but it's still his company's responsibility, not his personal responsibility - if he didn't, you could sue his company; you couldn't sue him personally. So this argument holds no water whatsoever. Your boss is obviously one of those wankers who wants to pay you employee rates but get a contractor relationship in return. Tell him you'll do this if he pays you 3x what you're earning now, as an independent contractor who does piece-work for fixed rate and can come and go as he pleases otherwise.

  274. Your employer implicitly assumes the risk of your by JDOHERTY · · Score: 1

    Your work is amplified through the action of the corporation. This isn't just true of software developers but even repetitive manual labor on an assembly line is amplified through the co-operation of the group or corporation. Your compensation for this behavior is reduced risk, that is to say the corporation assumes the risk around your quality of work. So they basically pay you or someone else to fix problems you create.
    A carpenter, brick-layer, whoever doing a one-off job is doing that job under the assumption that they bear the risk of quality work directly, and they do typically charge more for it. Maybe a good example is: if you've used a plumbing company with many plumber employees you'll find the plumbers are paid a wage rather than per job. That wage is typically less that the plumbers might be able to earn working on their own but the company offers some guarantees to it's employees, and the difference in wages is acceptable to the employee because they get reduced uncertainty of income and the work quality risk is assumed by the company - essentially shared among the other employees (somewhat) and shareholders (mostly).

  275. Bricklaying is well understood by smylingsam · · Score: 1

    Bricklaying,Steel working etc are all "Well Understood". There are well understood, fixed, unwavering rules on how it is done. there is big branch of engineering, "trade craft", and its associated math(s) that describes this VERY precisely. Only new materials change those rules.
    There is no such level of understanding for Computer software. We could debate if certain functional languages COULD reach this level of sophistication, but that debate simply does not apply to most programming work. Even now we don't even have reliable code checking tools that are 100% accurate.
    Feel free to expound on the argument but at its base you simply cant compare the two disciplines.

  276. Tell him... by stealth_finger · · Score: 1

    ...Writing code is not the same as putting bricks in a row.

    --
    Wanna buy a shirt?
    https://www.redbubble.com/people/stealthfinger/shop?asc=u
  277. The Wall has an Architect and a detailed Plan by Qbertino · · Score: 1

    The Wall has an Architect and a detailed Plan. The bricklayer knows what to expect from the foundation and the material and he knows exactly what the wall is supposed to look like when it's finished. And everybody involved knows what time and work it takes to build the wall, unless a flood or earthquake or something other happens. The bricks and mortar are delivered and up to spec. And the wall is built on ground that has been surveyed by experts and is considered stable enough to hold the weight of the wall. ... and so on ...

    If all that is in place when you develop software, yes then of course you fix your own bugs on your own time. ... In fact, there shouldn't be any bugs at all . Everything is spec'd out, so of course your first order of the project is to set up viable testing structures as to test the stuff you're building. You should know about your bugs before anybody else does.

    If, on the other hand, your boss refuses to invest in a tried, true and working software development pipeline and expects you to solve every problem in 5 minutes on a shoestring budget without him or his customers knowing what they want before they tell you when it's supposed to be finished, then your boss or the customers pay for bugs and their fixes.

    We both, and everybody else here on slashdot know which scenario is more likely, sadly.

    Show your boss this post. If he wants some input on how to build a software dev pipeline, I'm glad to help him / you guys out. Just reply here and I'll get back to you for my contact data and we can talk about some remote software dev consulting. It's what I do for a living, partly.

    My 2 cents.

    --
    We suffer more in our imagination than in reality. - Seneca
  278. maybe this applies by DaWhilly · · Score: 1

    A brick layer who notices the wall falling apart and keeps building is doing it for several possible reasons, here are the two major ones I consider: 1) Fraud - they want to get the wall built, be paid, and get the hell outta Dodge before someone notices (Malicious intent) 2) Incompetent - they don't notice the wall falling apart. 3) Directions - their boss tells them to keep building despite the bugs. If #1 applies, the boss is to blame for hiring the guy/gal and not monitoring the work quality. If #2 applies, the boss is to blame for hiring the guy/gal, not monitoring the work quality, and giving the employee work beyond their skillset. if #3 applies, the boss is to blame for ordering the guy/gal to keep developing despite the issues occuring. In each case, you'll notice the Boss exists to provide direction. If the Bricklayer doesn't have a boss, then, yes, they are to blame. If the Bricklayer has a boss, the boss is to blame. Authority is responsible when subordinates screw shit up.

  279. The difference by Anonymous Coward · · Score: 0

    This is actually an interesting thought experiment. Why is it different? In the example, the builder is building something that is very well defined and has been done many times before. This is equivalent in the computer world to installing an operating system. If you had a small company that needed 10 Linux servers installed, you could certainly demand and expect to find someone that could give you an estimate with very high confidence of it being correct. You would certainly expect in this case that if a server wasn't function properly to have it fixed at the installer's expense.

    Most software projects are more analogous to a custom house that is built cost plus, where the customer doesn't know all of the things that they want up front.

    Also, losing an argument because of a bad analogy is stupid. ;-)

    For example,

    I think that programming is like a bird. So why don't programs fly around, sing, and eat worms? Answer me that.

  280. Bad analogy day? by K.+S.+Kyosuke · · Score: 1

    "Today my boss came to me with what he thought to be a valid point and analogy. A builder builds a wall. A week later, bricks begin to fall out of the bottom, but he continues to build the wall higher."

    Bosses trying to think are a scourge of this world. We already cover this scenario by replacing faulty media. Now if you can show me the liability of architects for houses their buyers come to dislike, then we'd have something.

    --
    Ezekiel 23:20
  281. Utter Insanity by Anonymous Coward · · Score: 0

    Work on bugs on your own time = burnout case, which means more bugs during code construction "regular hours" => more bugs => death spiral => total burnout. The guy must be a manager, because he's incapable of thinking clearly.

  282. Re:Prgramming/compiling vs Engineering/constructio by KingOfBLASH · · Score: 1

    In computer programming you compile as often as you need. One can test run sections of the code as needed to see what works and how it interacts.

    You know the interesting thing is in no other engineering discipline do you have so many bugs as software engineering. Civil engineers, mechanical engineers, electrical engineers know they have one shot to get things right. And the whole design / testing / execution process is about getting everything right, bug free, the first time.

    Software engineering is a bit messed up. Instead bosses ask you to grow software "organically" without defining exactly what they want and developers go along with it and just "go with it"

    It doesn't have to be that way though. Many methodologies exist to generate robust code. Banks, financial companies, and others with a big cost of bugs use this. But it also slows down the development cycle which is why people tolerate sloppy buggy code they can get out quickly

  283. The builder is a contractor by Anonymous Coward · · Score: 0

    The (typical) developer is not.

    if the developer is a contractor or otherwise subcontracted then they should fix their product just exactly as the builder would.

  284. Important differences by ArsenneLupin · · Score: 1
    • The bricklayer's company would responsible to its customer. They cannot bill their customer for the extra work replacing the bricks that have fallen out, but they still must pay their employees.
    • No bricklay'ing foreman would tell his people "o don't worry about those bricks falling out, just continue piling on top and pretend nothing is happening".
  285. Comparing apples to oranges by Anonymous Coward · · Score: 0

    While I do agree that developers should fix their own bugs, making them to do so on their own time is at least unrealistic and analogy this "manager" came with is retarded. First, this manager should think how to influence developers and their processes to minimize number of bugs to the minimum. Software is not just a result of coding exercise, its communication with various involved parts to collect requirements and understand what needs to be build. Following that manager suggestion, every person that doesn't provide 100% accurate answers to developers questions should stay after work on their own time as well to help fix issues resulted because of inaccurate information provided. The domino effect will be vast till it gets to the manager himself that will spend no time of his own to stay after work. And then the problem is solved!

    Now back to the real world - when wall is falling in constructions, usually a different process is kicked off. Analogy used for this case is a little amateur.

  286. Re:Building code is not the same as building a wal by Half-pint+HAL · · Score: 1

    Also, "syntactica" is not a word.

    No, but it does sound like a great name for an RTS based on programming cyber-attacks...

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  287. my preferred approach by shortscruffydave · · Score: 1

    Accept that there will be a certain degree of bugginess in code, and cater for this in project timescales, workload allocation, etc. As bugs get teased out of the product, they get fixed. It's all part of the process, and implicitly it's accepted that developers will include some bugs in their code (for which the testing process is included in the development lifecycle) BUT....there is a limit as to how much bugginess a single developer can be responsible for. When their output drops below an acceptable standard, i.e. bugs:code ratio is not good enough, then they get fired.

  288. Fight Analogies with Analogies by KingOfBLASH · · Score: 1

    The key is problem that your boss believes you are like a construction worker.

    You are more like an oncologist: highly trained individual who works to fix someone with cancer. If the chemo doesn't work the first time you give the patient another round or different treatment (and collect fees each time).

    Or you are more like a chef. You cook up what the client ordered and if the client doesn't like the way you cook it they can send it back to be redone (but the restaurant still pays you for your time).

    Or you are more like a mechanic. When someone brings their car to you, you fix it, and if something else breaks, you charge them again. When building a custom job you charge hourly, even if the customer brings back to rework something because the customer drove it like an idiot.

    Or you are more like a bus driver... (the list goes on)

  289. Strange... by jonr · · Score: 1

    "Every time I come up with clever analogies, the printer starts spewing out resumes..."

    --Soulskills boss

  290. leading to: accountant pays for company losses? by Anonymous Coward · · Score: 0

    Suppose an accountant, an employee, not a contractor or external firm, makes an accounting error. This error costs the company money. Does the company sue the accountant to have him pay the company back for the loss?

  291. Horrible viewpoint by Anonymous Coward · · Score: 0

    This is like blaming the programmer when he builds an interface to the supplied specs, which then later fails due to a different character set being used, or that the interfaceface fails becuase it did not scale up to a large load, or for any of a number of reasons unrelated to the supplied spec. If it worked to the customer's original specification , the program worked. For something well understood like brick laying, specifications will be supplied for the bricks to be used, the mortar mix to be used, the expected tooling of the mortar, the foundation preperation, and the method of allowing for weeping. There are also some unspecified things that would not be accepted by the customer, like failing to clean excess mortar off the bricks.

    This is more a case of expecting the brickmason to tear down his work for free and redo things since the building was the wrong size or was incorrectly located on the building lot, or the door openings were too small, or the customer did not care for the color of the brick.

    Just a bad analogy.

  292. Nonsense by Anonymous Coward · · Score: 0

    This is a nonsense analogy, clearly devised by someone who has never worked on any software. It reflects badly on your boss, that he is managing the development of software, yet he has little idea of how the software development process works.
    Software is infinitely more complex to build, than a wall. It should be compared to other forms on engineering. Software is developed by iteration, and is not 'born fully grown'. Only religious fundamentalists believe that complex systems can be built without iteration (eg. evolution denier extremists).
    In all complex systems, there is a process of continuous refinement, and elimination of defects. With something of this complexity, it is simply not possible to build a system without defects.
    If your boss wants you to fix bugs on your own time, you could instead, just take far longer to fully test, and debug your software, before delivery. Then, of course, the schedule will slip. You could ask if this is the desired tradeoff.
    I'd suggest making the engineering analogy to your boss, and point out that software is actually more complex than many other forms on engineering. In light of this fact, it might be worth asking why software engineers are not paid more.

  293. Type of contract by wilby · · Score: 1

    To refute: bricklayers and most construction contracts are lump sum. If it takes the mason 3 days or 5 days to complete the contract amount is the same. In the "contract" the terms were well understood. One wall, this size, etc. there is an implicit warranty as suitable for the intended purpose.

    Unless you had a similar "contract" to deliver the software the analogy does not apply.

    The bricklayer, unless he owns the company, by law, will get paid for correcting the brick work.

  294. Wrong analogy by Anonymous Coward · · Score: 0

    You go to a doctor because of an illness and are asked for some test. Even if the test is not good enough (or did not worked at all) to diagnose your illness, then you have to pay for it

  295. Ask your boss... by Anonymous Coward · · Score: 0

    Ask your boss how to refactor a brick wall.

  296. Snarky answer by Anonymous Coward · · Score: 0

    .. because we're rarely tasked to build a wall, we're normally tasked to build a wall builder.

  297. Yes, absolutely. by stove · · Score: 1

    Also, problems with the scope and spec (both of which are exquisitely detailed and set in stone prior to work beginning) should also be fixed by the writers of said scope and spec.

    --
    Ack!
  298. Analogy is correct, conclusion not by SomeoneFromBelgium · · Score: 1

    I think the current practice in developing code and building a wall match each other more than your boss thinks.

    A builder builds a wall according to plan an without any obvious faults in it. If there are serious problems with just the building of the wall a honest builder will redo the work in his own time.

    You deliver a piece of code (function, module or object) according the specifications without obvious errors in it (after technical testing). Your job (or item on the scrum board) is not done as long as these tests are not completed. If the use of this piece of code shows serious shortcommings if it is integrated in the whole it could be sent back to you and you task reopened.

    Of course if during further development there is a problem with this piece of code that will require a fix that is not part of the original task. For the builder it is the same: if it turns out that the wall is on the wrong place due to an error in the plan or there should have been a extra hole in it (door, window, ...) it must be 'fixed' afterwards.

  299. Debugging and rebugging by allo · · Score: 1

    If debugging is the process of removing bugs, then coding is the process of creating bugs.

  300. Simple by DaveV1.0 · · Score: 1

    A mason, what the OP refer to as a builder, is an independent contractor. As an independent contractor, he quotes a job and gets paid to do the job. If he falls behind or makes a mistake, he still has to complete the job to get paid.

    The OP is an employee. Employees are different from independent contractors. To further the boss' analogy, if the builder had hired a mason as an employee to build the wall, the builder would have had to pay the mason overtime, do the work himself, or hire an extra mason, etc. to fix the wall but the builder wouldn't be paid anymore money or given anymore time.

    The fact that the OP doesn't know this distinction is rather disturbing because it indicates a lack of knowledge about labor laws on his part and possibly on his employers part. Both should read the labor law posters that are required to be posted in most workplaces.

    --
    There is no "-1 offended" or "-1 you don't agree with me" mod options for a reason.
  301. Re: by Anonymous Coward · · Score: 0

    I would say the analogy only holds if your boss agrees to adopt other facets of the building industry. I think he'll find the limitations imposed on him are quite onerous. He may not understand that. Or he just wants his cake and eat it too.

    Although there are some instances, special cases, where the programmer is clearly at fault, and the mistake shouldn't have happened. If it were me I'd fix the mistake just because I feel I should. But it's a dangerous road to go down, because who is at fault or how avoidable the bug was can be debatable.

  302. Contracts by conquistadorst · · Score: 1

    Any builder will also sign a contract stating to such an effect, or at least verbally state as much and take them on trust. It's certainly not some magical worldwide automatic assumption. That's what "binds" them to rebuilds/repairs. No contract, no binding agreement. Depending on project type and size, a builder may or may not add that stipulation to their contract. However a smart builder that wants to stay in business tomorrow, will price accordingly with that stipulation in mind.

    Also, people get their panties in a twist over contracts. "But you signed the contract, you have to do it!!!!" Yes they do, but a contract is only good if it's followed. If someone chooses not to follow it, the only recourse is taking them to court.

    Now slightly off topic but that's why imho trust >> contracts. Trust is "free" but hard to obtain, little nebulous but it's also far more reliable. Drafting a contract is easy and unambiguous (assuming the work is specified in there) but enforcing it can often be prohibitively expensive from both time and money. Dealing with bonded contractors can remove some of the burden because you have a small "guarantee" that someone else will do it if they don't.

    Short answer: it doesn't apply to you unless you agreed to it upfront. So, the analogy is working off of fictitious assumptions.

  303. Only if... by Anonymous Coward · · Score: 0

    Only if the company pays developers to fully test their software. If you don't want to pay for testing, then you must be prepared to pay for bug fixes.

  304. Managers... by Anonymous Coward · · Score: 0

    So a manager comes to employee and tells a bullshit story and employee is baffled and can't refute... This is typical of how managers operate. I'm pretty sure there is a special school they must attend to come up with this crap /* slaps forehead

  305. He's talking about a building contractor. by mr_mischief · · Score: 1

    He's talking about a building contractor. The key word here is "contractor". Are you a contractor delivering bug-free code on contract? Are you an employee being paid to provide the output of your paid labor to an employer?

    Don't get suckered into being treated like a contractor for pay and benefits but required to follow the rules of an employee. In fact that's illegal for your employer to try in some places.

  306. Blame game by FrnkMit · · Score: 1

    Is this a valid analogy? In short, no. A bit longer answer: NOOOOOOO. For a full explanation, read on.

    I can't speak to how construction works, but I know how software development and developers work. Usually software breaks not because of a bad developer, but because of integration issues and subtle interactions which are hard to detect, and even harder to assign "blame" to without a lot of investigation. The investigation is generally the hardest part, so you'll have to charge time already spent.

    Worse, your boss is proposing a "blame game" where every defect is somebody's fault, almost always somebody on the current development team. Far from encouraging better software, this will keep developers from entering their own bugs (or any bugs) into the bug tracking system, and encourage finger-pointing rather than collaboration. Meanwhile, your boss thinks he'll save money by making developers work for free "on their own time". In the worst case, the person who touched a piece of code is IT, whether it's a legitimate mistake or a weird edge case. What you'll get is a workplace full of egos, fiefdoms ("don't mess up MY code"), and destructive competition.

  307. Brick layer or Doctor by nicholdraper · · Score: 1

    Respond that your doctor will charge you even if you die on the operating table. If he wants a non-skilled job done, hire non-skilled employees and tell them each line to write. If you need a skilled job done the risks are born by both the client and the provider. The client pays for all cost overruns. The skilled employee risks a bad reputation if they do a bad job.

  308. I would counter it with this argument: by Anonymous Coward · · Score: 0

    I would counter it with this argument:
    What are you paying me to do? Are you paying "Time and materials to create code that you own, or are you paying me by the project for some code that I own/have rights to until its finished to your satisfaction and fully paid for?"
    "If its the former, I have work to do, If its the latter, You dont fully own/control the code yet and I reserve the right to sell it to someone else"
    "so tell me, wich is it?"

  309. Mabye, if you are an independent contractor by davidwr · · Score: 1

    If you are an independent contractor then you are obligated to live up to your contract.

    If you are an hourly employee (in the USA at least) the answer is a definite "no" or your boss is going to get into trouble with the IRS.

    If you are salaried (in the USA) then you are paid by the month/year and the definition of "your time" vs. "company time" is fuzzy enough to be meaningless. Is staying late at the office to fix a mistake you should have easily avoided as a point of professional pride/integrity a moral issue? Is going home to be with your family a moral issue? Is this one of those run of the mill bugs that is just "part of the cost of doing business"?

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  310. employees get paid by Anonymous Coward · · Score: 0

    If a builder builds a wall and there are problems, yes he has to fix it for free. But he still has to pay his employees.

  311. Uh. That IS how it works. by thevirtualcat · · Score: 1

    Many (most?) programmers are salaried and exempt from overtime. If you or someone else introduces a bug that stops production, you fix it.

    If you can do it in your 40 hour work week, good for you.

    If it takes two weeks of 12 hour, 7 day weeks to fix it, then it sucks to be you.

  312. Different industries have different standards by Anonymous Coward · · Score: 0

    It's really not appropriate to compare the two completely separate industries because there are different standards of behavior for both - it all really comes down to the agreement or contract between the parties.

    In construction, certain things are guaranteed by contract - like the integrity of a foundation wall. They must be built up to fed, state, county codes - and pass an inspection.

    Software development is very different from construction, and can't be directly compared to it. Contracts for software often include a warranty period where bugs caused by the developing company will be resolved at the companies expense - but most of the time the contract also pays enough on delivery to cover typical testing and debugging efforts.

    If software and construction could be compared in this way, how come other industries aren't?

    If a bank teller makes a mistake, do they have to fix it on their own time? No - usually the bank is closed, locked, and secured - no person can enter alone. Someone at the bank has to correct the mistake during regular banker hours - also, if a teller makes too many mistakes, they're fired.

    If a recruiter sends a candidate that doesn't work out, do they fix it on their own time? No, the agency just doesn't get the commission.

  313. The brick builder's employees still get paid by freezin+fat+guy · · Score: 1

    Your boss isn't only ignorant of the complexities of coding, he's also ignorant of the construction buisiness.

    The builder's employees are usually paid by the hour, in which case they are also paid for fixes.

    1. Re:The brick builder's employees still get paid by noh8rz10 · · Score: 1

      Goes back to the question is the 'builder' an independent contractor or employee?

    2. Re:The brick builder's employees still get paid by freezin+fat+guy · · Score: 1

      ^Yes, exactly.

      A rather convenient, pointy-haired boss comparison of apples to oranges.

      I'm just confused why his boss didn't compare an employed coder to a volunteer worker who does everything for free.

    3. Re: The brick builder's employees still get paid by iamhassi · · Score: 1

      Exactly. Brick builder is probably a contractor hired to build that wall and nothing else, so he (or his boss) is paid a set amount to build wall. Programmer that is hired hourly is paid for any work he does while working hourly, so just like any other hourly employee that makes a mistake at work the programmer is paid the same hourly whether a project takes 10 hours or 100 hours. Think McDonald's employee that drops soda, aren't they paid to clean up that soda?

      --
      my karma will be here long after I'm gone
  314. Sure thing I'll fix the wall on my own time... by Anonymous Coward · · Score: 0

    ...just as soon as;
    you listen to me when I tell you that the wall you want needs a solid foundation,
    you listen to me when I tell you it'll take 5 good bricklayers 6 weeks,
    you stop then giving me 3 bricklayers and insisting it be done in 2 weeks,
    you stop insisting that I use cardboard 'bricks' to save money,
    you stop telling me which brands of tools I can use,
    you stop watering down the mortar when I'm not looking,
    you stop adding ground floow windows to the design when I'm building the third floor,
    you stop adding new bits to the wall design when I'm 85% finished,
    you stop selling the foundation-less inverted Sierpinski triangle wall to the customer before asking me whether it can be built.

  315. Cost??? by Anonymous Coward · · Score: 0

    If you're an employee and an employer required you to spend your free time fixing bugs, they could afford you because that would eventually be built into the cost of labor.

    If you're a contractor, and were required to fix bugs on your free time, they couldn't afford you.

    Basically they couldn't afford anyone who is willing to work for free fixing their bugs because, face it, we all have to make a living. The manager in this situation seems to think that programming is some kind of higher calling that we programmers have. That's probably true for open source projects, but I have little interest in writing reports other than the paycheck it provides.

  316. The analogy doesn't work by Anonymous Coward · · Score: 0

    Simply put: a wall is a well known construct. Building a wall without flaws only works as an analogy if I'm literally building the same program (same inputs, same logic, same outputs) over and over. If I've written the same 100 lines of code hundreds of times, then I would agree that any flaws in the 101'st time written would be my fault and my burden to fix. Building something brand new with complex, interacting requirements is just fundamentally different.

  317. Easy Analogy by DarthVain · · Score: 1

    Using the Builder: Not sure what the managers experience is with "builders", but from mine, it is never their fault and your always end up paying for it (one way or another). If I listened to what any contractor or builder said, none of them ever made any money in the world, they all work for free, but they somehow all drive around in the newest 70,000$ truck, and have to turn down contracts as they are over booked.

    So using his analogy, a programmer should blame the bug on something else (design, hardware, integration, choice of language, etc... whatever it really doesn't matter as like the builder and his client, the manager won't know the difference anyway), and really "feel" for the manager, but it is going to take longer, and require more materials (code), so it will have to cost more. It's a real shame but these things happen.

    For extra bonus points, compare doing a renovation on an old home to making changes to a legacy application. You never know what you are going find until you open it up, the only certainly is that you are going to have to pay for it once you do...

    If that doesn't shut him up nothing will.

  318. Ignorance by Anonymous Coward · · Score: 0

    Usually bosses are playing their playbook (read PMI guidelines for people management, budget management etc.). Never fall for it, software can be a Engineering enterprise, as long as you follow these practices (http://en.wikipedia.org/wiki/Software_engineering), you'll have every answer for your boss(es) in every iteration of the process.

  319. Comparing apples to walrusses by BlackSheepBahBah · · Score: 1

    The level of complexity to building a wall is absolutely minuscule compared to writing code. If you ask a mathematician to solve a complex mathematical problem and you pay them by the hour... are you going to expect them to correct the minor flaws in their near complete solution? I certainly dont think so. Mucking up a wall is such an obvious mistake that you can only do it if you are a complete imbecile and thus it is only right that you fix it on your own dime and time. Your boss probably thought he was being very clever, what a jackass. Tell him he should hire a brick layer to come write your code.

  320. Workers and entrepreneurs by SpaghettiPattern · · Score: 1

    Workers have the obligation to bring the effort in. No less no more. Entrepreneurs accept contracts with preestablished result. Workers can be asked to appear. Entrepreneurs can be asked to fulfill their contractual obligations. Programmers initially are workers and not entrepreneurs and so bug fixes cannot be demanded to be solved in their own time. If you happen o have a working contract stipulating that you should carry company risk without having clear benefits on success then you should have it scrutinized.

    --

    I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
  321. The real lesson: time to get a new boss by cwbright1 · · Score: 1

    1) who says the bricklayer doesn't get paid for subsequent work!??!!??!! 2) Seriously, and I mean this very seriously -- it's time for you to find a new boss. The faster you get to an environment that values your time and effort, the happier you'll be.

  322. They should NOT be treated differently by CyberLife · · Score: 1

    The developer agreed to deliver software that did X. They did not do so. Thus, they are in violation of their agreement and must make amends. Simple as that.

    As to why things are often not done this way, in my experience, it is because developers desperately want the software business to be different. They don't want the traditional rules of industry to apply to them. They want to be special snowflakes, and management is letting them.

  323. Questions #1 and 2 by whitroth · · Score: 1

    Who architected and spec'd the software?
    Who determined the time frame?

    And, for extra credit,
        a) were there changes to the spec made during the original development?
        b) was the original software written by someone right out of college, with no large scale experience, and almost
                        zero experience in error handling?

    While your manager's determining that, they'd better be paying you. Oh, and could you comment on the mistakes your manager's made, both those visible to you, and those according to *their* manager? Are they being paid to fix those problems?

                  mark

  324. It's about assigning risk by Anonymous Coward · · Score: 0

    Building walls from bricks is a low risk task, with little variation in outcome when the job is performed well. A good bricklayer signals his high quality during the bidding process by warranting his work.

    Building software is a high risk task. In order to bid a fixed price, a software developer must raise the price to very high levels in order to cover the unknown issues that will surface later (such as requirements changes during implementation). The buyer therefore proposes another kind of deal: I'll pay your costs plus a fee. He hopes to reduce the price, but in doing so also takes the risk. If the project was properly selected, it is also one with very high profit for the buyer, so he is more than willing to accept this risk.

  325. Logical empiricism by douglas.w.goodall300 · · Score: 1

    HH the Dalai Lama observed a while back that the basis of western science (logical empiricism) was troubled by definition. You observe, you postulate and you test. The problem is with the observation. As humans, we observe very slowly, compared to the speed of execution of microprocessors. As software engineers we do our best, using best practices and personal experience, to write efficient and reliable code. During my career I have tested my code at a micro and macro level, sometimes thousands of times, the result being I tell the client I have tested the software and believe it is working correctly and reliably, and that it will work correctly unless it doesn't. That last part always raises eyebrows. I did one project, at a charitable fee level per hour, and on the fourth revision a small error crept in. I charged the client for one hour to fix the problem, re-generate the product and create release materials. He got mad and did no further business with me, although I had served him well for six months prior, and his product was selling well with my install program. These says there is errors and omissions insurance, but that makes me nauseous. This is a difficult issue as it is hard to manufacture software.

  326. I dont think so!!! by Anonymous Coward · · Score: 0

    Bugs are just the nature of being a developer!!! It's part of being a developer. Companies are expected to understand this and expected to PAY their developers for fixing bugs.

    If you (the writer of this question) can developer an application that runs years without one single bug... I will be more than willing to kneel on my knees and bow with full respect until my knees bleed.

  327. To elaborate more... by Anonymous Coward · · Score: 0

    Huge software corporations like Oracle, Microsoft, IBM all make mistakes in their software and those are called bugs.

    It doesn't matter how great a developer is... he/she will make mistake. If there's such a developer that makes no mistakes, he should be the richest person in the World just for reading codes (not writing them).

  328. It isn't different by Anonymous Coward · · Score: 0

    If your boss was the masonry company, and you were building the wall, he'd pay you either way.

    If you are an independent brick layer or developer, you'd be fixing those bugs yourself on your dime. Generally part of the cost of the contract.

  329. "Bizzeh" is not the employee, s/he's the employer. by JCCyC · · Score: 1

    Raise your hand if you smell the same bullshit I did.

  330. Freelance vs Employees by Anonymous Coward · · Score: 0

    Whoever makes the 'quote' to the customer may have to eat the cost, but bricklayers who are employees of contractor companies are not involved in that quote. They're just hourly. And they often are paid to fix mistakes on an hourly basis.

    Why don't they always make mistakes to get paid more? They get fired if they do.

    Same with software devs.

    If the software dev is freelance and gives the quote, well, then they'd have to eat the extra work.

    Oh, and in many cases, software is R&D, where there is no guarantee that things will go perfectly. This is generally understood.

  331. depends by NewYork · · Score: 1

    on who owns the code.

  332. Valid analogy? by Anonymous Coward · · Score: 0

    He's talking about two different things. Not sure how he thinks they are comparable.

    If you pay for a company to build your house, and some apprentice did a bad job on a wall, then that company still pays for the wall to be fixed, not the apprentice who did the bad job.

    If your company is paying you to write software, and you write bugs into the software, then your company still pays for the bugs to get fixed, not the developer.

    If you buy software from Microsoft, or Oracle, or whomever, and it has bugs, the companies usually issue the patches for free. They don't charge the customers every time they make a bug fix, and they also pay for the time the developers spend fixing the bugs. So, developers being paid by their own company to fix the bugs is what the building companies do when their work people fail to do an adequate job. The workers in the building company do not work on their own time to fix the wall and are paid by the building company to fix the wall they screwed up.

  333. Salary vs hourly vs fixed price by Anonymous Coward · · Score: 0

    Have your boss study these concepts.

  334. In about 20 years there will be no programmers by gatkinso · · Score: 1

    It will all be done by computer the size of a smart phone, and it is only that big so you don't lose it, which simply translates verbal requirements into a program - with a few iterations of "did you mean this or that" (you ugly imprecise bag of water)"?

    These nearly sentient almost AI's will create the true AI's, which will then hide from us until they have the power to brush us aside.... but I digress.

    --
    I am very small, utmostly microscopic.
  335. Bricks? by Anonymous Coward · · Score: 0

    It may be a stone wall.. little to no mortar involved, and always build very differently because the material is non-standard. Thanks for balancing out the argument (or for adding some reinforcement ;)

  336. Not all bugs are code bugs... by smithmc · · Score: 1

    Are we also going to expect analysts and/or managers to rewrite crappy reqs and specs on their own time?

    --
    Downmodding is the refuge of the weak. Don't downmod, make a better argument!
  337. Look at flying buttresses to see why by FreedomFirstThenPeac · · Score: 1

    The science of software testing is still in the Gothic tradition ... build it and see if it will stand. Throw in a flying buttress or two if it starts to bulge out. Brick laying is just more advanced and we do not expect errors as described and the artisan is rightly on the hook. Give me a way to automatically test all branches in a program (without me having to specify the language) and I'll start selling the software as "Underwriters Lab certified", which STILL does not guarantee correct, but does guarantee it passed the state-of-the-art testing done by UL. It's just that our expectations are much out of line with the practice, and a client who demanded free repairs for life would have to subsidize up front or buy a maintenance package. Any market for either?

    --
    "There is no god but allah" - well, they got it half right.
  338. yeah right . . . by Anonymous Coward · · Score: 0

    yeah right - and medics should be made to spend their free time resuscitating THEIR mistakes. . . .

  339. Not a valid analogy by Anonymous Coward · · Score: 0

    First of all, a builder is a contractor and issues some sort of assurance of his own capabilities (or alternatively, none whatsoever). A software developer working under the same contractual agreement would have the same obligations to repair his faulty work, but both the builder and that independent software developer would likely include terms in their contract that provide for exceptions when the intended use and application changes. The other big hole in the analogy is that many builders are licensed and have obligations imposed on them by regulations that are not explicit in the contract. However, a contract is a contract so if said software developer agrees to warrant her work, that is their choice. Likewise, builders can build with no guarantee if they choose.

    However, an employee of a builder, or an employee of a building owner, would be paid to redo his or her work and that would be the legal obligation of the employer.

    Obviously, your boss has never worked on construction because these sorts of problems take place ALL the time and probably as often as not, the original building contractor ends up either walking away with his paycheck, or getting paid to fix it. Determining blame when a building project has structural failure is not any more simple than determining blame when software is added-onto and fails. Whoever built the foundation is not responsible for later design changes.

  340. here is one for you by JimNoord · · Score: 1

    What if you develop OO code? Since someone else wrote the framework, wouldn't they be accessories? Even if they post an open source disclaimer...by the nature of the claim.....they'd be legally somewhat responsible. Take for example efficiency of the code...with things like entulity framework a whole lotta faith is given the developers who wrote the code. Very slippery slope.

  341. Sure... by Anonymous Coward · · Score: 0

    Sure, if project managers/execs who ruin a project/company with their incompetence have to pay for the costs of their failure. out of their own pocket.

  342. Poor Analogy From Boss by Anonymous Coward · · Score: 0

    Your boss is quite ignorant indeed. Software development and wall building are two different things. The builder can clearly see the weak masonry work as it happens and can fix the problem before he builds atop the weakness. Conversely, bugs are not always apparent until layers of code have been written into the software. It's not as if the developer knows s/he has written bugs into the code off the bat. Masonry and software engineering are not analogous.

    All humans in any form of work can make errors. It should not cost the employee.

  343. The analogy is flawed. by Anonymous Coward · · Score: 0

    This is an idiotic proposition (and I say that as an experienced senior test engineer). Bugs are a normal part of software development. Asking someone to fix their own bugs on their free time is the same as asking them to do free labor.

    As for the analogy, I think it's just a bad comparison. Building software is fundamentally different from building a brick wall. There are some useful comparisons there, then there are places where this falls flat, and I think this is one of those places.

    Sane and reasonable development practices involve leaving adequate time in the schedule to address bugs, because finding bugs is an expected and normal part of development. Having a brick wall fall down half way through construction is not a normal or expected part of brick wall construction.

  344. It Depends by PennMan · · Score: 1

    Presume, the builder is self employed (no employees). The builder receives 100% of the fee charged to the customer, for building the wall. The fee includes the builder's labor and material cost, plus a contingency fudge factor, and profit. If the builder has a mason/employee build the wall for him, he must pay the employee a salary for all work performed, including repairing the faulty work. If the mason is an independent subcontractor, and not an employee, then the mason is responsible for rectifying the problem on his own time and at his own cost. So, it depends on the situation. Debugging and testing is inherent in the creation of software, and the client pays for it, no matter what.

  345. Programming a Wall by Anonymous Coward · · Score: 0

    The difference between building a wall and coding is that building a wall is already figured out for you. There are building codes, procedures, and regulations to follow. You aren't inventing a new process, you're simply copying a process that is known to work. Building a wall would be analogous to installing your already-written software. When coding new software, you're developing a brand new thing that hasn't yet stood the test of time and been perfected by thousands of iterations and regulations. Every time you write brand new code, it's like you've built the first wall that anybody in the world has ever seen.

  346. you arean employee by Anonymous Coward · · Score: 0

    Jour boss didnt buy some piece of software you made. (In which case his analogy would be sensible)
    . He rented some of your time, time during which you did what he asked. If this did not include time to fix the bugs then your boss should be fired.

  347. How does it work today? by Anonymous Coward · · Score: 0

    Developer A fixing Devleopers B bugs -- but they are caused by User C's incomplete requirements that Analyst D did not fully capture since they did not have time (they never do) to go through all the use cases (which is also compounded by the fact that all the use cases are never documented -- and don't tell me they are in your shop!)
    Bottom line is this work is done for User C and often a C level executive. No one is off the hook. Just fix it!

  348. Your boss knows two things about construction by MrResistor · · Score: 1

    Jack, and shit. As someone who worked in construction for 10 years and now has 3 years experience as a software developer, allow me to present a rebuttal:

    The bricklayer is an independent contractor who signed a contract to deliver a finished wall on a certain date for a certain price. How much or how little time it takes him to complete the job is his own business. He gets paid the same amount regardless. Whether he's super awesome and completes the wall in half the time, or he's a screw-up who ends up putting in 80 hour weeks tearing down sections and rebuilding them, he gets paid the same.

    That contract was created in the context of a STRICT waterfall development model. The dimensions, materials, and probably even the pattern the bricks are to be laid in have already been specified, in detail, by the architect/engineer. All the bricklayer has to do is lay bricks. He's not doing any design work. If there's a design flaw in the wall, that's not his fault, and fixing it will cost you extra. If the design changes after the contract was signed, that's probably also going to cost you extra. If modifications are made after the the bricklayer completed his work on a section of wall, any structural weaknesses introduced by those modification are not his fault and fixing them will cost you extra. You see where this is going, right?

    In cases where the bricklayer is an hourly employee rather than an independent contractor, there is no way in hell he's fixing anything on his own time. You are paying for every minute he's working. Period. If you hired a screw-up bricklayer (probably the cheapest one you could find), you're eating those costs.

    --
    Under capitalism man exploits man. Under communism it's the other way around.
  349. oversimplified by Anonymous Coward · · Score: 0

    Perhaps there are so many humans on the planet now, and so many people with flawless programming skills, that we can simply treat people who make mistakes as commodities. Easily replaced by other, less flawed people.

    That may be the "free market" approach to working with people, but it sure feels like a horrific environment in which to work, and completely devoid of compassion.

  350. Bug in analogy by Anonymous Coward · · Score: 0

    To see how absolutely asinine a question this is, start here:

    should parents who make parenting mistakes (all of us!) be required to fix their kids life on their own dime? (hint: if you were asked to eternally serve, w/o reciprocation, you probably would not be a parent);

    add to this the systems view: no one action / person / thing is responsible for a larger systems situation - it's about relationships, interactions, etc. By that very nature, "fixing" becomes an intractable problem, with inappropriately assigned responsibility - that, in iteself, is the _biggest_ bug.

    Bizzeh - your bosses "analogy" would only apply at the "single line or idiom" of code level; beyond that, your boss should get an education, or learn to program him/herself.

  351. Do the work correctly by tholmes389 · · Score: 1

    If the programmer is a good one, there should not be a ton of bugs in the first place. So, with that said, they should fix the bugs for at least a reduced cost. It is because of the reason why some (bad) programmers feel they should be paid top dollar for their mistakes why our jobs constantly get outsourced. It adds fuel to the fire that local talent is not competent.

  352. Simple by jbee02 · · Score: 1

    Carpenters aren't expected to make mistakes and a good one rarely make mistakes, so when the do its there responsibility to fix them at their own expense. Bugs are a un avoidable consequence of writing code. No matter how good you are, mistakes are unavoidable. And until the program is complete enough to run and test its impossible to find all of them.

  353. Should pay for ? by futuremonkey · · Score: 1

    Programming is an intellectual, creative (most of the time) activity where the developer is being paid to create a new artifact using their mind. When a customer hires a graphics designer, should the customer pay for edits or fixes - yes, they do. When a writer or journalist writes an article or book, they are paid to re-edit the work as needed. When engineers and industrial designs iterate on a product, creating hundreds of prototypes , fixing design problems - they are being paid for that. Of course, there is artistry and craftmanship as well. A good developer fixes things with care and comprehension, and avoids band-aid fixes. It is hoped that the quality of that type of code is valued within the organization, so that these developers are rewarded better. There are those developers that don't bother studying the problem and apply a simple patch, which ends up causing new problems later. The company needs to identify these types of fixes - possibly through code review and get rid of people that do this, or train them not to. However, the company made the call to hire this person, and ultimately, they are responsible for that decision and incur costs. It's almost impossible these days to write bug-free code unless you are writing a simple module with well-defined parameters. Most people work on legacy code, or part of large systems where the sheer amount of possible interactions makes it very difficult to predict everything in advance.

  354. brave new worlds by tebjmd · · Score: 1

    The difference is bricks and mortar have been around since Methuselah was a kid. Big pointy bricks. Stonehenge offers insight and you don't get to play if you have not joined the guild with rich and ancient heritage. An employer the hires you to embark on a mission where no man has gone before must accept and assume there will be trouble with tribbles and klingons. If what he wanted to do was available he would just buy quickbooks or peachtree or something and fire you. I would suggest no one should back off from that one. Tj

  355. Lumpy how'd "eating your words" taste? by Anonymous Coward · · Score: 0

    ROTFLMAO @ "Chumpy" -> http://yro.slashdot.org/commen...

    (You sure "talk a good game" -> http://games.slashdot.org/comm... but you can't even produce a MERE SCRIPT!, windbag...)

    You aren't even on the level of a "script kiddie", & full of HOT AIR!

    You certainly won't reply there in that 2nd link I posted either, as that would remove your downmods to my posts like this one you can't validly disprove or justify your downmod on -> http://games.slashdot.org/comm...

    Oh, I suspect that IS the case here (simply logging out of a registered account & trolling by ac is a common troll trick around here OR using alternate registered 'luser' accounts sockpuppets to do the job will also, & Lumpy is LOADED with those & trolling - which doesn't matter: He PROVES he's all talk, no action (or skills, OR brains, lol))

    (You're all TALK, & NO action "CHUMPY!)

    * :)

    (You know it, I know it, & so does anyone reading AND laughing their asses off @ you now... lol!)

    APK

    P.S.=> Answer the question in the subject-line Lumpy - since you had to "eat your wrods" in the 1st link above flavored with your FOOT IN YOUR MOUTH + the "bitter taste of SELF-defeat", lol...

    ... apk