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?"

471 of 716 comments (clear)

  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 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
    4. 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.

    5. 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.

    6. 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?

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

      ** on his own time, that is.

    8. 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

    9. 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.
    10. 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.
    11. 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.

    12. 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...

    13. 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.
    14. 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.

    15. 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.

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

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

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

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

    18. 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...
    19. 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.
    20. 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.

    21. 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!

    22. 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.

    23. 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.

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

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

    25. 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."
    26. 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
    27. 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.

    28. 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
    29. 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.
    30. 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.
    31. 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?
    32. 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".
    33. 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.
    34. 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.

    35. 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.

    36. 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.
    37. 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.

    38. 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.

    39. 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.
    40. 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.

    41. 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
    42. 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.

    43. 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
    44. 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
    45. 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
    46. 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.

    47. 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
    48. 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!

    49. 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
    50. 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..

    51. 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.
    52. 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 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.

    3. 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!
    4. 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.

    5. 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.

    6. 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!
    7. 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!
    8. 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.

    9. 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.

    10. 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).

    11. 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.

    12. 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.

    13. 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.

    14. 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!
    15. 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.
    16. 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.
    17. 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

    18. 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'
    19. 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
    20. 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!
    21. 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.
    22. 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).

    23. 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.

    24. 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
    25. 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

    26. 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
    27. 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.

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

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

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

      you are obviously not an engineer

    30. 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 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!

    8. 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 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.

    6. 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?

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

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

    8. 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.

    9. 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.

    10. 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 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.

    3. 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.

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

      You've never heard of "malpractice"?

  6. 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 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.

    3. 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.

    4. 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.

  7. 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 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.

    2. 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!
    3. 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.

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

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

  8. 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.

  9. 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.

  10. 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.

  11. 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'
  12. 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.

  13. 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 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.

  14. 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)

  15. 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 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"
    2. 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).

    3. 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.

    4. 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
  16. 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'

  17. 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...

  18. 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.

  19. 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?

  20. 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.
  21. 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.

  22. 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.

  23. 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?

  24. 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.

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

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

  26. 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'.

  27. 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 !

  28. 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)
  29. 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.
  30. 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.

  31. 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
  32. 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.

  33. 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 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.

    3. 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
  34. 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.
  35. 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).

  36. 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.

  37. 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...

  38. 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.

  39. re by skyeagle53 · · Score: 1

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

  40. 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 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.

    5. 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.

    6. 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.

    7. 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.

    8. 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.
    9. 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.

    10. 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.

    11. 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.

    12. 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.

    13. 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.

    14. 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.

    15. 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.

    16. 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.

    17. 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.

    18. 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."
    19. 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.

    20. 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.

    21. 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...

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

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

    23. 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.

    24. 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.

    25. 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.

    26. 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.

    27. 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."
    28. 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.

    29. 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.

    30. 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".

    31. 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.

    32. 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.

    33. 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?
    34. 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.

    35. 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."
    36. 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.

    37. 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.

    38. 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.

    39. 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.

    40. 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.

    41. 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?

    42. 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."
    43. 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.)

    44. Re:Guarantee by noh8rz10 · · Score: 1

      whats a formal proof?

    45. 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?

    46. 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."
    47. Re:Guarantee by Mitchell314 · · Score: 1

      Alcohol content verified by deductive reasoning.

      --
      I read TFA and all I got was this lousy cookie
    48. 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...

    49. 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.

    50. 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
    51. 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."
    52. 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.

    53. 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

    54. 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.
    55. 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...

    56. 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.

    57. 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 *
    58. 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.

    59. 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'
    60. 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

    61. 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
    62. 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'
    63. 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

    64. 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.

    65. 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
    66. 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.

    67. 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...)

    68. 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?

    69. 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.

    70. 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.

    71. 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.

    72. 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.

    73. 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..... :)

    74. 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.

    75. 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.

    76. 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"
    77. 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.

    78. 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 :-)

    79. 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.

    80. 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.

    81. 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."
    82. 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."
    83. 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."
    84. 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
    85. 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.

    86. 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.

    87. 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.

    88. 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.

    89. Re:Guarantee by DarwinSurvivor · · Score: 1

      Then one solar-flare-reversed-bit later all your work is undone in a microsecond.

    90. 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.

    91. 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.

    92. 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?

    93. 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?

    94. 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.

    95. 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.

    96. 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.

    97. 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.

    98. 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).

    99. 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.

    100. 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 .

    101. 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
    102. 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
    103. 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.
    104. 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'
    105. 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?

    106. 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.

    107. 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.

    108. 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.

    109. 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.

    110. 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.

    111. 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?

    112. Re:Guarantee by Roger+W+Moore · · Score: 1

      Arghh bridge, not bride!

    113. 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! ;-)

  41. 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).

  42. 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.

  43. 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.

  44. 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?
  45. 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.

  46. 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...

  47. 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.

  48. 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 Barlo_Mung_42 · · Score: 1

      Unless it's a motivational analogy in which case it must be about sports.

  49. 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.

  50. 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.

  51. 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 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.

    2. 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.

  52. 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.

  53. 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.
  54. 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?
  55. 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
  56. 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...

  57. 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.
  58. 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.

  59. 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.

  60. 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.

  61. 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!
  62. 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.

  63. 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?

  64. 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.

  65. 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.
  66. 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.

  67. Run! by Tablizer · · Score: 1

    Your boss is likely a bozo. Get out if possible.

    You can't reason with bozo's.

  68. 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
  69. 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
  70. 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
  71. 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..

  72. 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.

  73. 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.

  74. 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."

  75. 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."

  76. 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.

  77. 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
  78. 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.
  79. 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.

  80. 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..."

  81. 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!
  82. 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.

  83. 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
  84. 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?

  85. 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 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?

    2. 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'
    3. 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?

  86. 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.

  87. 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."

  88. 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.

  89. 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.

  90. 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
  91. 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.
  92. 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.
  93. 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.

  94. 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.

  95. 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
  96. 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.
  97. 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.

  98. 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.
  99. 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.

  100. 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.
  101. 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."

  102. 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.

  103. 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.

  104. 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)"

  105. 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 ----
  106. 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.

  107. 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.

  108. 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.

  109. 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.

  110. 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.

  111. 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.

  112. 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! --
  113. 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.

  114. 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.

  115. 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.

  116. 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.

  117. 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..

  118. You should have... by labradore · · Score: 1

    You should have told him to hire a brick layer and given him your two weeks notice.

  119. Stupid analogy by dbIII · · Score: 1

    Fixing bugs is also work.

  120. Obligatory Dilbert... by jayveekay · · Score: 1
  121. 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!
  122. 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.

  123. 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!

  124. 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?

  125. 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.

  126. 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?

  127. 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
  128. 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.

  129. 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.

  130. 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.
  131. 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.

  132. 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...

  133. Obligatory results by manu0601 · · Score: 1

    Does this boss asks the doctor to see him without paying if a medical treatment does not work?

  134. 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?

  135. 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.

  136. 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.

  137. 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.
  138. 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/
  139. 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/
  140. 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.
  141. Comment removed by account_deleted · · Score: 3, Insightful

    Comment removed based on user account deletion

  142. 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.

  143. 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.

  144. 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!
  145. 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".

  146. 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.
  147. Tim Armstrong? by george14215 · · Score: 1

    Is that you?

  148. 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".
  149. 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.

  150. 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.

  151. 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?

  152. 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.

  153. 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.

  154. 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?

  155. 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.

  156. 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/
  157. 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.

  158. additional tid bit by crutchy · · Score: 1

    large company responsible for developing raw land into finished houses

    also sometimes just called a developer

  159. 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).

  160. 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.

  161. 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
  162. 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
  163. 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.

  164. 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
  165. 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

  166. 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".
  167. 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'
  168. 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.

  169. 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)

  170. Strange... by jonr · · Score: 1

    "Every time I come up with clever analogies, the printer starts spewing out resumes..."

    --Soulskills boss

  171. 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.

  172. 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!
  173. 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.

  174. Debugging and rebugging by allo · · Score: 1

    If debugging is the process of removing bugs, then coding is the process of creating bugs.

  175. 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.
  176. 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.

  177. 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.

  178. 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.

  179. 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.

  180. 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.
  181. 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.

  182. 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
  183. 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.

  184. 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.

  185. 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)
  186. 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.

  187. 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.

  188. 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

  189. 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.

  190. "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.

  191. 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)".

  192. depends by NewYork · · Score: 1

    on who owns the code.

  193. 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.
  194. 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!
  195. 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.
  196. 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.

  197. 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.

  198. 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.
  199. 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.

  200. 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.

  201. 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.

  202. 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