Slashdot Mirror


Ask Slashdot: Moving From Contract Developers To Hiring One In-House?

An anonymous reader writes "I run a small software consulting company who outsources most of its work to contractors. I market myself as being able to handle any technical project, but only really take the fun ones, then shop it around to developers who are interested. I write excellent product specs, provide bug tracking & source control and in general am a programming project manager with empathy for developers. I don't ask them to work weekends and I provide detailed, reproducible bug reports and I pay on time. The only 'rule' (if you can call it that) is: I do not pay for bugs. Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code. Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs. Then all of a sudden I am asking my contractors to work for 'free' and they can make more money elsewhere. Ugh. Every project ends up being a battle, so, I think the solution is to finally hire someone full-time and pay for everything (bugs or not) and just keep them busy. But how can I make that transition? The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"

524 comments

  1. Have u thought about.. by woja · · Score: 5, Insightful

    Hiring contractors you can trust and pay them to fix bugs?

    1. Re:Have u thought about.. by Anonymous Coward · · Score: 5, Insightful

      Hiring contractors you can trust and pay them to fix bugs?

      you can never trust someone to work for under market pricing - that's the problem he was having, moving risk of customers changing things and being under budgeted for the task to the contracted developer. that's why he spent essentially a paragraph praising himself.

    2. Re:Have u thought about.. by Half-pint+HAL · · Score: 5, Interesting

      you can never trust someone to work for under market pricing - that's the problem he was having, moving risk of customers changing things and being under budgeted for the task to the contracted developer. that's why he spent essentially a paragraph praising himself.

      Do you know this man, and do you know this to be true? As far as I'm concerned, I'll take him at his word that he is indeed talking about "bugs" in the sense of programming errors. The whole point of contracting is to shift risk, and if you're paid to write software that fits a spec and you don't, you've not fulfilled your contract. It's the contractor's responsibility to quote what he requires to get the job done to spec, and if his coding style results in an x% bug rate, that should be factored into his estimate.

      This man's view of bugs is the right one, and it's a shame the industry (and the courts) don't have the same view. I'm sick of buying buggy software and being told it's "good enough" when it doesn't do what it promises.

      --
      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: Have u thought about.. by erapert · · Score: 5, Insightful

      You're not a programmer are you? There's no such thing as bug-free code. Just like no writer can proof read his own novel, no programmer can truely find every bug in his own code.

    4. Re: Have u thought about.. by Half-pint+HAL · · Score: 4, Insightful

      I was a programmer once, and I've recently returned to coding to attempt to produce educational software. My bugs are my responsibility, and when I eventually get to the point where I can sell the software to end users, they will remain my responsibility. My bug rate (currently very high, because I'm out of practice) will ultimately become a factor in my pricing strategy. A contractor is a supplier, not an employee, and should therefore be working to provide something to a contract. When I was at school, my parents hired a contractor to build an extension to the house. The project finished late, and the contract had penalty conditions for late completion, so my parents ended up paying less. This is standard practice in most contractor fields, so why should a coding contractor expect to be any different? Paying for bugs is effectively a bonus for late completion, which is a bit daft.

      On the other hand, you do raise an important issue... does the OP actually hire dedicated testers or leave it to the devs? Leaving it to the devs is an invitation to a disaster.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    5. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Untrue, and this illustrates an unfortunate lack of understanding in computer science. The problem is practicality of practice and economics for nontrivial problems. There are, in fact, hardware and software solutions that are "correct" and without bugs. While this is ideal, a more realistic solution is one in which the outcome is guaranteed not the process.

    6. Re: Have u thought about.. by gnasher719 · · Score: 5, Insightful

      You're not a programmer are you? There's no such thing as bug-free code. Just like no writer can proof read his own novel, no programmer can truely find every bug in his own code.

      There is no bug-free anything. Ask someone to put up wallpaper in your living room, and it must be done absolutely perfect. Not one fault. It will take them three times as long. Since you don't pay for that, you will have faults. Ask a gardener to cut back a tree. Bug-free would mean that each single twig is cut to the exact right length. It's not going to happen. Everybody makes mistakes.

      As an employed software developer, it's up to my boss to decide where on the time / quality scale he wants me to be (I prefer more time / higher quality myself). Reducing the amount of bugs increases the amount of time. There is an optimum, which also depends on the cost of bugs, but the decision is up to my boss.

      The original poster apparently wants the number of bugs down to a level that would make development cost unreasonably costly, while not actually paying for it. My boss also makes an estimate: How expensive to leave the bug unfixed, how expensive to fix the bug? The original poster doesn't seem to want to make that judgement call, because he doesn't want to pay for the cost. On the other hand, his contractors don't want to pay either :-)

      Years ago when I worked for a company that contracted out their services, they just sold X hours of development time at Y per hour. At one point I worked as a contractor; I also charged an hourly rate. I did a good job because that's what I do; I pressed more towards quality because higher quality = more hours = more money which I believe benefited the company as well, but there is no way ever I would sign an f***ing contract where someone else can determine how much work I need to do for a fixed amount of money.

    7. Re:Have u thought about.. by chrismcb · · Score: 1

      This man's view of bugs is the right one,

      Only if the person he is hiring is PERFECT. I don't know any human being that is perfect.
      But as I understand it, he is paying the devs to find their own bugs. But if someone else finds the bug, he won't pay for it.

    8. Re:Have u thought about.. by Anonymous Coward · · Score: 0

      I'd like to see a specification that a) defines the program with enough detail that you can actually derive sufficiently specific tests to detect bugs without knowing about the implementation details, and b) is itself free of inconsistencies. In my experience, no such thing exists for any non-trivial program.

    9. Re: Have u thought about.. by XopherMV · · Score: 4, Interesting

      As a contractor when I submit code, I leave a certain amount of time for the customer to test that code and supply me a list of bugs. I fix that list. Once my contract time elapses, I expect sign-off and payment. I've fulfilled my end of the contract. I expect my customer to fulfill his end. If he doesn't pay, then I'll send my bill to a collection agency.

      My code is not guaranteed indefinitely. Any bugs which appear after the contract is expired can be fixed under another contract if I agree to fix them. I am certainly under no obligation to do that later work at all and especially not for free.

    10. Re: Have u thought about.. by gmclapp · · Score: 2, Insightful

      I do actually expect all work I pay for to be "bug free" I recently had an aftermarket bed liner put in my truck, and it came back with a bug: it was crooked. I took it back and demanded they make it right for free. And you know what happened? They fixed it for free. Everyone makes mistakes, but when the product makes it to the customer it had better be right.

      Why are programmers exempt from workmanship standards?

      --
      Common Sense (+1)
    11. Re:Have u thought about.. by Xest · · Score: 1

      "This man's view of bugs is the right one"

      No it's not, and his predicament is proof of the fact.

      He refuses to pay for bugs, which is an extreme way of attempting to encourage his developers to reduce bugs in their software. The fact he does this and still ends up with bugs shows that you simply can't avoid bugs, they're an inevitable consequence of any kind of complex work which software development is.

      What he in fact needs to do is accept that bug fixing is an inevitable element of software development and he needs to pay for that so that the contractors will stick around and do it. He needs to factor it into his products and pricing, if he can't do that and remain profitable then his business plan isn't viable and he either needs to change it or go out of business and let someone who can do proper software development in a suitably profitable manner take his place in the market.

      "I'm sick of buying buggy software and being told it's "good enough" when it doesn't do what it promises."

      If it doesn't do what it promises then it's not fit for purpose and if you live in any country with sane consumer protection laws you can take it back for a refund. For what it's worth though I have, over the thousands of pieces of software I've bought had only once something that was buggy to the extent it didn't work as intended (it was a game that didn't even load) so I took it straight back to the shop and got my money back. I don't know where therefore you're managing to find so many dodgy pieces of software, certainly it can't be anything mainstream so I can only assume you're paying cowboys for bespoke software development so here's a hint if that is indeed the case- if it's that bad then they're cowboys, and if they're cowboys not providing you with what you've paid for, then you're legally entitled to withhold payment. Stop paying cowboys, you're part of the problem you supposedly have such a distaste for.

      On a final note it's no use using the "to spec" argument because guess what? specs always have loopholes, always, without fail, in fact, you could almost say they're a bit like software bugs. It doesn't matter how much you write, there will always be the opportunity to say "Well we want a massive pink elephant on the splash screen" because you didn't explicitly exclude it and so forth. This is where having a good client relationship comes in, you and the client need to both understand that software changes, that the spec will be 95% correct but that there may be some leeway one way or the other on some issues, if you trust the client then it wont be a problem, if you don't trust the client then you need to either:

      a) Change your business model and use an agile, or hybrid agile approach where you develop in phases and charge them based on time, rather than on a finished product, such that you can always escape at the end of say a 2 week spring they may have paid for if they're a nightmare customer. This way the customer gets exactly what they pay for but might take some convincing.

      b) If they wont go for the agile approach and you can't trust them to not try and squeeze more work out of you through exploiting loopholes in the spec then you don't want them as a customer anyway because this inevitably means they're going to do everything to squeeze more money's worth of work out of you than they paid meaning the project will ultimately have to run at a loss.

    12. Re: Have u thought about.. by home-electro.com · · Score: 2

      You are correct, with one exception - if I hire a contractor on a per-project-fee basis, then I'd fully expect to have bugs I find to be fixed for free. Not forever, but give me a couple of weeks for testing. The problem with this approach is that not a lot of people are experienced in pricing per-project work. It can be a really guessing game with outcome varying from 1x to 3x, for larger projects even more. So closer towards the end when they realized how much more work there actually is than what they anticipated, you can see them lose their motivation.

      However, if you hire them to do bits and pieces of the project and pay per hour, then no, bug fixing can't be included.

      So I would never recommend hiring people on per-project-fee.

    13. Re:Have u thought about.. by Anonymous Coward · · Score: 0

      You've got a point. I sometimes work on projects on a fixed-fee basis. I deliver it, bug-free, and they pay on delivery. Has worked well provided I get complete control over the entire codebase.

      If I don't have complete control over the entire codebase, though, you can fucking forget trying to get me to fix bugs without being paid. Sure, I'll fix the odd one of mine that gets in, but I'm not going near problems caused by interactions with other developers' code unless I get paid.

      So, this guy may have the right idea, or he may be scamming developers ... hard to tell from his post, which focusses more on "why should I pay for bugs" than on what management strategies he is using to make this "bug free" dream a reality.

    14. Re: Have u thought about.. by Xest · · Score: 4, Informative

      "A contractor is a supplier, not an employee, and should therefore be working to provide something to a contract."

      Yes, a fixed amount of work for a defined period of time, this is why you pay them by the day or hour. If you want more than that then pay more than that. You don't get to pay a contractor for a days work then expect him to do a day and half's work.

      If you feel the contractor's work wasn't of sufficient quality then either withhold payment and dispute it legally with them or just don't ever hire them again.

      The whole point in using contractors is that you can get rid of them in an instant with no questions asked, no redundancy payment, no justification required. Maybe this is in part a cultural difference because I understand some US states even allow the firing of permanent employees at will, but certainly here in the UK the benefit of contractors is the flexibility they allow you in staffing up or down as required above all else - if you don't like the work they're doing then kick them out the door immediately.

    15. Re: Have u thought about.. by samjam · · Score: 1

      "Why are programmers exempt from workmanship standards?"

      You will have to work that out for yourself, but you should know that analogies never win an argument especially car analogies on slashdot.

    16. Re: Have u thought about.. by Anonymous Coward · · Score: 2, Insightful

      Reductio ad absurdam, eh? The reason "programmers [are] exempt from workmanship standards" is, ultimately, the Halting Problem. When you understand the Halting Problem, and you understand what that has to do with bugs, THEN you will have a right to critique programming as a profession.

    17. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      The relationship between the programmer and the company is governed by a contract. The programmer is only obligated to perform to the standard as specified by that contract. Anything outside of that has nothing to do with workmanship standards. Programmers are not running charities, you know. Either you specify how certain pieces of work are to be done and you factor in remuneration for that in the contracting stage or you do without.

      Which is why a company ought to have a full acceptance testing suite and using that as part of the criteria of contract completion. Once the contract has been fulfilled the programmer's obligation is finished. How would it work any other way? Would I, as a programmer, be expected to go back 15 years and fix a bug in a piece of software I wrote that long ago for "free" because of "workmanship standards"? Fuck no, and neither would you.

      The contract should specify a "warranties" period for items like this - of course, the inclusion of a warranties period in a contract means the contract is now worth more money since no-one is going to agree to warranty support unless you pay for it.

      In the end, he's the project manager and the owner of the company. If projects are consistently ending badly, it's on his poor project management skills alone. You want a higher standard of workmanship? Negotiate how that will be achieved and then pay for it.

    18. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      In your case, you are both vendor and client rolled into one. This is a totally different situation.

    19. Re: Have u thought about.. by uberbrainchild · · Score: 1

      Those are not bugs, simply new features!

      --
      Anveto
    20. Re: Have u thought about.. by Registered+Coward+v2 · · Score: 5, Insightful

      As a contractor when I submit code, I leave a certain amount of time for the customer to test that code and supply me a list of bugs. I fix that list. Once my contract time elapses, I expect sign-off and payment. I've fulfilled my end of the contract. I expect my customer to fulfill his end. If he doesn't pay, then I'll send my bill to a collection agency. My code is not guaranteed indefinitely. Any bugs which appear after the contract is expired can be fixed under another contract if I agree to fix them. I am certainly under no obligation to do that later work at all and especially not for free.

      Excellant points. Good program management requires testing as you go to eliminate bugs; especially since bugs can result in later programming decisions to develop work arounds, which, then bug is fixed, now become problems themselves. If the If the specs are as good as he claims, testing should be straightforward and either the code meets the specs or it doesn't.

      In addition, what is a bug? I've seen situations where code A meets its spec but do to some weird interaction with other code or data anomaly doesn't run properly. To me, that's not a bug but a poor specification; or simply one of those unforeseen events that happen in any project.

      Given his statement "Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs." leads me to believe that there is more than just poor programming at play here; a combination of how specifications are written, testing practices, poor documentation of existing systems and data structures, and changing requirements seems to me to be a logical explanation for issues that arise. It sounds like he is paying by the hour and iif so the programmers concerns are valid. If he can't pay what it takes to get a full time hire with the needed skills he is better off biting the bullet, raising his prices,and paying developers to fix bugs instead of getting someone who cannot do the job to his expectations. He could go to a deliverables model - pay for a specific functional code, but that won't really solve his problem - expecting perfect code at a cut rate - and probably cost more. I know if I get requests for a fixed price I triple my estimate to cover any unexpected issues that may arise; and if they don't I pocket the bonus. I also get a very specific contract detailing exactly what they get to protect myself from schedule delays, changing requirements, etc.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    21. Re: Have u thought about.. by neonedge · · Score: 2

      I disagree. It was written in an 80-hour weekend, and admittedly had a few bugs during beta testing, but once those were resolved it went into production and there was never a single bug reported. In fact this was probably 8 years ago and although it has mostly been replaced by other applications, it is still in use at a number of customer sites. Writing code with bugs is inevitable, however refusing to fix them because "there is no such thing as bug-free code" is just asinine. It's like saying "car accidents are inevitable" and then driving away from an car you just smashed into. You're as responsible for the bad code you wrote as you are for the good code. If you weren't then you probably shouldn't get paid at all.

    22. Re:Have u thought about.. by Half-pint+HAL · · Score: 1

      "This man's view of bugs is the right one"

      No it's not, and his predicament is proof of the fact.

      He refuses to pay for bugs, which is an extreme way of attempting to encourage his developers to reduce bugs in their software. The fact he does this and still ends up with bugs shows that you simply can't avoid bugs, they're an inevitable consequence of any kind of complex work which software development is.

      What he in fact needs to do is accept that bug fixing is an inevitable element of software development and he needs to pay for that so that the contractors will stick around and do it. He needs to factor it into his products and pricing, if he can't do that and remain profitable then his business plan isn't viable and he either needs to change it or go out of business and let someone who can do proper software development in a suitably profitable manner take his place in the market.

      Who says he isn't factoring that into pricing? If I was PMing a bunch of contractors and there was a clause in my contract that transferred bug risk to the developers, I would fully expect the contractor rates to be higher than if I assumed the risk.

      And if I was contacted by a PM looking to contract me with a "bugs at dev's expense" clause, sure as hell I'd ask more money for it.

      This sort of risk/reward management is totally par for the course with any sort of contract management, and there are several solutions that are all fair and equitable (subject to negotiation and the informed consent of both parties), so there's no need to go ragging on someone who chooses a different model from your chosen one.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    23. Re: Have u thought about.. by Registered+Coward+v2 · · Score: 4, Insightful

      I do actually expect all work I pay for to be "bug free" I recently had an aftermarket bed liner put in my truck, and it came back with a bug: it was crooked. I took it back and demanded they make it right for free. And you know what happened? They fixed it for free. Everyone makes mistakes, but when the product makes it to the customer it had better be right. Why are programmers exempt from workmanship standards?

      There is a difference from what is a reasonable standard that is generally accepted for a product and perfection. A crooked bed liner is clearly not normal, but if you expected every seam to be within .0000001 of an inch then you would be beyond the bounds or reasonable and customary. Programers aren't exempt, but workmanship standards do not mean 100% bug free code; especially since every situation can not be anticipated and all bugs discovered and fixed.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    24. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      So, you're absolutely certain that your truck liner has no micro defects in it that aren't immediately obvious?

      Because a crooked liner would be more along the lines of a massive glaring bug, and should be fixed immediately before shipment. The fact that the truck liner was shown to you in such a state shows poor standards, why do people in the auto industry think they're exempt from workmanship standards?

      Now, those micro faults that might exist in your liner, those are more of the type of bugs that would ship in software that's impossible to fix all of them.

      Understand?

    25. Re:Have u thought about.. by Half-pint+HAL · · Score: 2

      If I don't have complete control over the entire codebase, though, you can fucking forget trying to get me to fix bugs without being paid. Sure, I'll fix the odd one of mine that gets in, but I'm not going near problems caused by interactions with other developers' code unless I get paid.

      Quite. The OP isn't clear on this -- he seems to be assuming that the spec precludes interactions, but if he's got no way of proving that the failure to integrate isn't a failure of the spec, he might be leaving himself open to litigation if he doesn't pay.

      I think the OP should perhaps be looking at insourcing the testing component, and testing to spec. Contractors can be expected to produce to spec, and the company should then be responsible for any problems that aren't caught by their tests against the spec, barring exceptional (and very clear) circumstances.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    26. Re:Have u thought about.. by Xest · · Score: 1

      "Who says he isn't factoring that into pricing?"

      He is. Because he has this problem. If it was factored in and the developers had signed a contract taking on the risk then they wouldn't simply be going elsewhere when he asks them to fix bugs for free would they? They'd be contractually obliged to do exactly that.

      "This sort of risk/reward management is totally par for the course with any sort of contract management, and there are several solutions that are all fair and equitable (subject to negotiation and the informed consent of both parties), so there's no need to go ragging on someone who chooses a different model from your chosen one."

      Right, so why does he have a problem? Why is he here asking for solutions?

    27. Re: Have u thought about.. by Anonymous Coward · · Score: 2, Interesting

      Why are programmers exempt from workmanship standards?

      Because almost nobody wants to pay what it would cost to write programs that are mostly bug free. Mind you, there are applications where correctness is valued high enough to invest the time and money to get it right. Most people have decided that it's not worth the wait or price though and prefer to live with functionality now and updates later.

    28. Re: Have u thought about.. by MrMickS · · Score: 1

      My code is not guaranteed indefinitely. Any bugs which appear after the contract is expired can be fixed under another contract if I agree to fix them. I am certainly under no obligation to do that later work at all and especially not for free.

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      --
      You may think me a tired, old, cynic. I'd have to disagree about the tired bit.
    29. Re: Have u thought about.. by DarkOx · · Score: 2

      I think it depends what the arrangement is. If you hire someone to create deliverable X with defined specs for $Y then if they take the contract they need to provide deliverable X to spec no matter how long it takes them; or you don't pay.

      Its up to the contracted not to accept a job where the specs are inadequate. If the job is going to be big enough that its worth while maybe you provide some good customer service and help write clear specs; that everyone can understand and agree to.

      On the other hand lots of contracts are written block of time. In which case I think you are obligated to pay for additional hours if that is what is needed to make something work or decide not to continue, but you still pay for the time used so far. Now you still may have issues with the quality and quantity of work falling below industry norms. If that happens you maybe don't hire that person again, and if its really really out-of-line that is what courts are for.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    30. Re: Have u thought about.. by Joce640k · · Score: 2

      There's bugs where a program doesn't follow the specs (logic bugs) and there's bugs where the program crashes because you didn't check the return value of malloc() (or whatever).

      I could argue that both of those are negligence on the part of the programmer, but at the end of the day we're arguing over whether there's such a thing as perfect software or not. Empirical evidence suggests there isn't (at least not at prices that normal people are willing to pay).

      The only way to avoid conflict is to pre-agree a price for software maintenance that kicks in after a grace period. This makes both parties understand that all software is imperfect.

      --
      No sig today...
    31. Re: Have u thought about.. by Shadowmist · · Score: 4, Insightful

      My code is not guaranteed indefinitely. Any bugs which appear after the contract is expired can be fixed under another contract if I agree to fix them. I am certainly under no obligation to do that later work at all and especially not for free.

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      All guarantees have limits. With cars, it's a set number of miles or months, whatever is reached first. With most products it's 30 days, or not at all. When you devalue labor by eliminating in house staff to penny ante it to outside contractors, there are going to be consequences. You're not keeping a contractor on retainer, you're going to have to have reasonable limitations on your expectations.

    32. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Yes, this is common practice. Nobody guarantees their work forever. The few who try go bankrupt and the rest either lie or openly admit that they don't guarantee their work after a fixed time.

    33. Re: Have u thought about.. by Joce640k · · Score: 2

      I do actually expect all work I pay for to be "bug free" I recently had an aftermarket bed liner put in my truck, and it came back with a bug: it was crooked. I took it back and demanded they make it right for free. And you know what happened? They fixed it for free.

      What tolerances did you specify?

      "Doesn't look crooked to passers-by" isn't really a specification that can be applied to software.

      --
      No sig today...
    34. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      "A contractor is a supplier, not an employee, and should therefore be working to provide something to a contract."

      Yes, a fixed amount of work for a defined period of time, this is why you pay them by the day or hour. If you want more than that then pay more than that. You don't get to pay a contractor for a days work then expect him to do a day and half's work.

      Not all contracts are on a per-hour basis. Take house building. Sometimes when a job takes longer than planned, the contracting party is out of pocket. Sometimes the contracted party is out of pocket. That all depends what the contract says. Every party involved in a contract has to consider the balance of risk to reward when negotiating the price.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    35. Re: Have u thought about.. by parkinglot777 · · Score: 2

      Yes, a fixed amount of work for a defined period of time, this is why you pay them by the day or hour. If you want more than that then pay more than that. You don't get to pay a contractor for a days work then expect him to do a day and half's work.

      If I take the OP words, his answer is in his post -- "... then shop it around to developers who are interested." In other words, the contractor must understand and agree to work with a fixed amount of payment before starting the work. If the contractor thinks that the money is not worth the work or he/she is expecting a certain hours of work, he/she should have negotiated before working on it. If he/she gets paid the full amount but could not deliver the work as the given spec (good enough with bugs), what do you think who is responsible for the extra work afterward?

      If you feel the contractor's work wasn't of sufficient quality then either withhold payment and dispute it legally with them or just don't ever hire them again.

      You are taking it quite far when you talk about legal. To do so, you have to be sure about your written contract with developers that ensure you to do so. It is not easy though because interpretation of laws is not the same for everyone. If you have even a hole in it, you will waste both time and money.

      To me, the OP is not clear on 2 parts. One part, he/she said that he/she is an excellent product spec writer. My question would be how excellent? If his/her write up is that great, then the bugs in the software would be from the contractor (developer). However, if it is just good enough and the software produces bugs that are hidden (or not obvious) in his/her spec, then it is his/her responsibility (and the write up is not that excellent).

      The other part when he/she talks about his/her client complains about bugs and he/she wants the developer to fix them for free. This is very important. What kind of "bugs" he/she is talking about? End users usually do not know what they want, and may expect something different from what the software introduces. As a result, the users complain and report the issue as a bug because it is not exactly what they want. If that is the case, the responsibility is for the OP himself/herself. However, if the bugs come from misinterpreting of the spec or incomplete implementations, it could be from the developer. I said it could be because there are some cases that the spec is not written clearly. This then refers back to what I said earlier, how excellent the spec writer the OP is?

    36. Re:Have u thought about.. by Cenan · · Score: 2

      Right, so why does he have a problem? Why is he here asking for solutions?

      Honestly he sounds like a cowboy gone contractor. Thinking "hey, I can do this real cheap!", then started cowboying out his "solutions" and found out to his surprise that project management is more than "shopping around" for developers.

      The real problem is coming to Slashdot with this rather than seeking advice from someone provably knowledgeable in this field - or go back to school and brush up on software development models, organization and specifically project management.

      --
      ... whatever ...
    37. Re: Have u thought about.. by pmontra · · Score: 2

      There are "hard" bugs (let's call them so) as in "a +=2 instead of a += 3" and there are "soft" bugs as in "neither the customer nor us thought about that (possibly very complicated) combination of inputs and internal state, and our code doesn't yield the right result". That's the "what do we do when..." question that many times developers ask to designers. Unfortunately hard bugs are relatively easy to find with test suites and code reviews but soft bugs can accumulate unnoticed until the end of the project. Some become apparent only after it goes to production and the real world finally hits the code. Then the development team starts feeling like they're not their bugs (probably fair) and like they're working for free so they ask for more money just when the customer is least happy with them. There are technical and contractual ways to protect both parties against this kind of problems but they increase the costs and are not always appreciated by customers, not even after bad thing happened in production.

    38. Re:Have u thought about.. by Lonewolf666 · · Score: 1

      As far as I'm concerned, I'll take him at his word that he is indeed talking about "bugs" in the sense of programming errors.

      If that assessment is correct, then yes, I agree that the contracted developer has not done his job.

      But there are sometimes customer complaints that are not about genuine bugs. For instance misunderstandings of the specification on part of the customer, which then lead to "bug" reports because the customer did not get what he really wanted.

      I wonder if the submitter really filters those out or if he just passes them to the contracted developer and expects him to sort out all of the bug reports. Which would be additional work that was presumably not contracted for.

      --
      C - the footgun of programming languages
    39. Re: Have u thought about.. by HungryHobo · · Score: 4, Insightful

      It's common practice in every real field.

      if you hire a construction firm to build an office block you go in, or hire someone else to go in and create a list of snags or problems which they can find and the firm you hired to build the block fix them. once you've signed off it doesn't matter if you didn't notice that one floor was missing all it's water pipes. (real example)

      you've inspected the job and signed it off. If you want a change or find a problem after that you have to hire them or someone else to do it.

      unless of course you specify it in the contract. but that'll likely cost you extra.

    40. Re: Have u thought about.. by Anonymous Coward · · Score: 1

      This isn't about workmanship standards. This is about some guy thinking he's going to get over on a programmer. He's going to contract out the whole job, the whole SDLC, make his contractor take all the risk, then take all the profit for himself. Understanding how defects enter the code, how to detect them, how to repair them, that's part of the work. If you don't pay for bugs, you can fuck off, because you're just some business major, standing on real people's shoulders.

    41. Re: Have u thought about.. by HungryHobo · · Score: 1

      yep, and your comment is relevant how?

      if you'd missed the problem for a couple of years it would have been beyond the point when they'd do it for free. you were expected to find any problems in a reasonable time.

      If your complaint was that it was good but wasn't quite perfect, not crooked but a stitch here and here which definitely aren't straight. they'd tell you to go to hell or pay out of pocket.

    42. Re: Have u thought about.. by pruss · · Score: 2

      Though for sufficiently serious problems, one can have recalls many years later.

    43. Re: Have u thought about.. by Xest · · Score: 2

      But we're not talking about a house which is normally something you can quantify as taking x amount of time to a pretty reasonable degree if you've done it before, we're talking about software.

      I think just about every software contractor has clued into the fact that software requirements change much more rapidly and if I was on the hiring side of the equation I'd be loathe to take on a contractor that didn't want to be paid by the hour, day, or week, and instead wanted to be paid for the full job, as it would say to me that they didn't have the necessary experience to understand the way software is built and what can go wrong because both I and they would be exposed to far too much risk to be healthy.

    44. Re: Have u thought about.. by Dr.+Sheldon+Cooper · · Score: 5, Interesting

      I have had the pleasure of being the project manager on several fairly large software projects during my career. These projects were finished on time and to spec. Everything the customer asked for in the agreed-upon scope worked. Everyone was happy...

      However, as a precaution, I ALWAYS insist on putting a post-release support agreement in place at the start of the project. This lets the customer know that if problems arise, they will be addressed and fixed if at all possible, and it gets the developer in the mindset of providing continuing support after release. This has worked amazingly well for everyone involved. The customer feels secure and the developer does not have to work for free.

      --
      Bazinga.
    45. Re: Have u thought about.. by Big+Hairy+Ian · · Score: 1

      You're not a programmer are you? There's no such thing as bug-free code. Just like no writer can proof read his own novel, no programmer can truely find every bug in his own code.

      Absolutely it's called Author Bias. Also what about bugs in the specification? Even a crack team of QA testers won't catch every bug they just reduce the risk significantly.

      --

      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.

    46. Re: Have u thought about.. by Shadowmist · · Score: 2

      Though for sufficiently serious problems, one can have recalls many years later.

      There are limits to that. You buy a five dollar shirt at C.H. Martins, you can't come back ten years later and demand a refund because it's become a pile of disconnected threads, nor can you expect a recall on your car because it's rusted out. Vehicle recalls occur only because of demonstrated safety issues and because Federal regulations demand such a response.

    47. Re: Have u thought about.. by deragon · · Score: 1

      Once my car get rusted, can it be recalled? The recalls only concerns safety. For anything else that fails without puting in peril safety will never be recalled.

      --
      Remember the year 2000? They promised us flying cars. They delivered the PT Cruiser...
    48. Re: Have u thought about.. by Xest · · Score: 1

      The problem is that I can't see how the OP is hiring to do a fixed amount of work given that he says they just walk away when it comes to bug fixing time which he expects to be done for free.

      If he was working with contracts that contract a full piece of work rather than by the hour or whatever then they wouldn't just be able to walk away and take work elsewhere when it comes to bug fixing - he'd be able to hold them to the contract.

      The fact he can't do that and by the sounds of it they walk away without a fight suggests most likely he is just paying them by the hour or day and then expects them to work free when it comes to bug fixing.

      See the latter part of my post here about spec writing:

      http://slashdot.org/comments.pl?sid=3772351&cid=43792107

      I agree, specs are dangerous things to live by, it's impossible to write a perfect spec that covers every case no matter how good you are and even if you feel you nailed it down tightly enough that it's almost perfect the response of the client will likely be "I'm not signing that because I'm concerned it doesn't leave enough leeway for necessary minor changes that are inevitable in any software development".

    49. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      I test my code. I write automated tests for my code. I have testers test my code. At some point, you need to test my code for acceptance and sign-off. Yes, this is common practice. Why don't you already know this? I'm guessing you have little experience with software contracting.

      Once you sign-off on my work, my responsibility for that work is done. That code is now yours. YOU own it. Not me. You make money off it. Not me. You are responsible for it. Not me. If you want me to do any maintenance on YOUR code, that'll be another contract in which you'll need to pay.

      Sorry, but no one works for free. That seems to be what you're suggesting with your talks of "guarantees."

    50. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Theres too many variables at play. If it worked on my system because of a certain dependency configuration, and a bug is reported because the production system was misconfigured, then who's responsibility is the bug? If the product is about to launch and a bug is found that appears to stem from a dependency in a 3rd party lib that I was told I had to use, who's responsibility is the bug? Theres no way I can afford to deal with that stuff for free unless you pay a very large deposit upfront.

    51. Re: Have u thought about.. by Xyrus · · Score: 2

      When I was at school, my parents hired a contractor to build an extension to the house....

      Stop. Just stop.

      Programming is not the same thing as building house. It's a popular, but ludicrous analogy. Even a small program can have billions of different possible execution paths. In fact, if your code has 30 if statements you're already over a billion execution paths (2^30). Why do you think it's so damn hard to make bug proof code? You can have unit tests, integration tests, a dedicated test team and still miss bugs. Even years after the product is finished bugs can still be found by ingenious users who use your software in a way never thought or intended. Look at how long some software products have been around. Look at the Linux kernel for example. There's a team of crack programmers hammering on that thing year after year and yet they still find bugs in OLD CODE.

      Using your line of reasoning, software developers would never get paid and would have to give lifetime support for their product for free. That doesn't make any sense.

      --
      ~X~
    52. Re: Have u thought about.. by I'm+New+Around+Here · · Score: 1, Funny

      Yes, but you still outsource to Raj and Howard. Those two cause way too many problems.

      --
      If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
    53. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Well , worse than that - we had a bug on a speical case in code for years and generations of contrller. A lot of different people read that code. It just came by a sudden as someone read that code and for some reason saw the bug nobody had seen before.

    54. Re: Have u thought about.. by sycodon · · Score: 5, Insightful

      I do not pay for bugs.

      This guy is a prick.

      And you are not far behind.

      How many times has Microsoft broken everyone's code with one of their updates?
      How many times has someone's code been broken by some other app dicking around with things it shouldn't?
      How many times has some idiot administrator broken code by fucking with security?
      How many times has someone's code been broken by a DBA changing shit in the database?
      How many times has someone's code been broken by the user jacking around with it and deleting stuff they shouldn't be messing with?
      How many times has someone's code been broken by viruses, malware, etc?
      How many times has someone's code been broken because the user changes the OS?
      How many times has code been called broken because the user didn't know exactly what they needed and genius here didn't bother to catch it?

      You can write perfect code and there are legions of ways it can be "broke" by others in ways you can't and/or shouldn't anticipate.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    55. Re: Have u thought about.. by pla · · Score: 3, Informative

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      This entire discussion has either misused the term "contracting", or deliberately glossed over it (by which I don't mean to accuse you specifically, the whole thread has that problem).

      When I work under salary, I get paid for projects (along with a certain amount of "keeping the lights on" shit-work, of course). I work unpaid OT if necessary, and cut out early when ahead of schedule. I generally expect (and get) a very flexible schedule so long as I get my tasks done.

      When I work as a contractor (and yes, I do both), I get paid for my time. I'll give a good estimate of how long it will take me, but if we run over, you keep paying. Simple as that. Yes, that could potentially lead to abuses by unscrupulous programmers - And they wouldn't get any repeat work for pulling crap like that. Just part of the game: Find a few that work well with/for you, and make them happy enough to stick around.

      To address the FP post, though, you can't have it both ways. Sure, you sound like great boss in good times, then a bastard at the least pleasant part of the project. All code has bugs, period. Usually the major ones come from ambiguities in the specs; but even assuming a perfect spec, All code (still) has bugs, period.

      If you don't budget some percentage of the total project resources to identifying and correcting those bugs, you have failed to properly manage the project. Instead, you have committed the PM version of the classic mathematician's proof-joke, "We start by assuming all cats as perfect black-body spheres in a frictionless environment...".

    56. Re: Have u thought about.. by beelsebob · · Score: 1

      Actually, the common theme with builders in the UK is exactly that –they give you an estimate of how much it will cost in total. If they run over, or hit problems, or need more materials... You're paying, not them.

    57. Re: Have u thought about.. by beelsebob · · Score: 4, Insightful

      You got modded down, but you're absolutely right. If he could reasonably make money by actually doing the work himself, he would be doing that. Clearly he can make more money by getting someone naïve to do the work for him and then making the profit himself. What's happening here is that the naïve people have stopped being so naïve and he's having to move back to the other business model to correct for it.

    58. Re:Have u thought about.. by beelsebob · · Score: 1

      There is such a spec –that spec is the code for the program though, so he wouldn't be outsourcing the code if he had it.

    59. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      and iif so the programmers concerns are valid.

      The use of iif to mean 'if and only if' makes me happy. It's not something you see much any more (or I move in different circles).

    60. Re:Have u thought about.. by ILongForDarkness · · Score: 1

      Exactly. Bugs happen. Hire good contractors but at some point even good people are going to make mistakes. If you don't pay for bugs but still expect to have the contractor fix them you better be paying an above market rate for the code since it is going to have to cover the cost of the time that will inevitably be spent fixing bugs too.

      Hire someone in house: then what they just fix bugs? Could work but as you mention they need a boat load of languages, are handling lots of code written to different standards and (at least to me) bug fixing is boring/less interesting work. Expect to pay oddles for someone to do that job. Skilled people are expensive get used to it. Either pay what they can get on the market or find another business to be in.

    61. Re:Have u thought about.. by ILongForDarkness · · Score: 1

      The thing is acceptance testing (which might include a TDD development style so you can see that each thing is enforced by a test as working). But either way once the customer has said "yeah that is what I wanted thanks" you're done IMHO. If they come back with oh remember that email from 3 months before the project started when I said I wanted it to talk to Amazon? That never made it in the box.

      If it is obviously my error I don't mind fixing it but if you are having fluid communication with the client and things are wrapping up and everyone at the table agrees the system is done to bad. People dream up features daily but unless they care enough to make sure it is in the box (or explicitly stated in the contract) before handing the money over who's to know what feature idea is actually an acceptance criteria?

    62. Re: Have u thought about.. by Anonymous Coward · · Score: 1

      agreed with many of your points.

      the last 30% of the total project time should be dedicated to testing and bug fixes, with zero added functionality and features. it should be explained up front that the last X amount of project time is a completely different phase.

      so by the end of the last 5% of the project, the vast majority of bugs should be already discovered, documented and patched.

      something in the contract should be put in for bugs discovered outside of the project end date.

      people want a "finished" product, but software being what it is, it's never finished. and that's why the contract should reflect phases of the project. not allocating enough time at the end to find, document and fix the vast majority of bugs, is the submitters fault. his model is broken, and he's trying to blame the programmers.

    63. Re: Have u thought about.. by Cammi · · Score: 1

      You are not a programmer, are you? If you were, you would know there is a such thing as bug free code, but ... you have to be good programmer to experience and know that.

    64. Re: Have u thought about.. by Cammi · · Score: 1

      Actually, they technically did not do the fix for free. They actually corrected their mistake at cost. It's the same with programming and contractors. If a contractor introduced a bug into an application, they should be legally liable to fix that bug as it was introduced by them. People who said there's no such thing as bug free software, must not have worked on any mainframe.

    65. Re: Have u thought about.. by ArhcAngel · · Score: 3, Insightful

      You said you were a programmer once. What made you leave the field? As a "former" programmer myself I left because of the pressures that came from employers who demanded that a feature in the newly released competitor product A must be implemented in our product by the end of the week or the company would fold. Customers who demanded a feature or functionality they never requested but demand that they did be added or they sheepishly request new features at the end of the project and want it added gratis. Add to that a programming landscape that shifted so frequently it was impossible to stay on top of the language du jour. I used to love to program but after doing it for a living for a few years I find it hard to this day to even look at code without painful memories.

      As for the question at hand, If you can't pay $100K or more annually I seriously doubt you will find a programmer versed in multiple high profile languages that isn't already self-employed and doing quite well for themselves. You might want to consider a business partnership where you run the business and project side of things.

      --
      "A person is smart. People are dumb, panicky dangerous animals and you know it." - K
    66. Re: Have u thought about.. by Rich.Miller.6 · · Score: 1

      You're not a programmer are you? There's no such thing as bug-free code. Just like no writer can proof read his own novel, no programmer can truely find every bug in his own code.

      It is a sad commentary on programmers as a group that statements like this are posted, and worse that they garner so much support from the chattering masses. Excellent programmers always strive to write code with few bugs; and sometimes they succeed. I personally wrote a package of high-precision arithmetic calculations that was used for many years by a prominent Wall Street firm, and am quite sure (for a variety of sound reasons, not just "belief") that this software (about 4,000 lines of C) is bug-free. For examples that are more publicly known, consider the 420,000 lines of code in the space shuttle, which had a total of 17 detected bugs in 11 major releases (see Good Question – How does NASA write perfect code for the space shuttle computers? by Marshall Brain, May 27, 2009); the whole system is not perfect, but major subsystems are.

    67. Re: Have u thought about.. by cp5i6 · · Score: 1

      Not a bug

      it just doesn't deliver to spec

    68. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      How many times has code been called broken because the user didn't know exactly what they needed and genius here didn't bother to catch it?

      This. A customer will always call something a bug and say it's not working right when they know they'll get charged for legitimate changes but not for bugs.

    69. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      I would agree with the project specs argument. Far too many times have I let someone who was "amazing" or "the best" at writing project specs forget extremely key components that can double or even triple an LOE. And all of these times came from someone with 20-30 years of experience. The individual components may be accurate and workable, but often the whole scope is off by a large margin or not even connected when it is supposed to be. Suddenly a light weekend project becomes a month long ordeal (latest example: an ecommerce Drupal site, I was told at the last hour it has to integrate with an AS400 machine for product stock, and would have to learn how to script for AS400 AND deploy it remotely [my fee did not include airfare to a foreign country for support]).

      tl:dr; All project specs suck, and unless YOU are the one doing the work, you WILL miss stuff and therefore your LOE is NOT ACCURATE.

    70. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      But a good programmer can deliver code that will work to the letter of the specification.

      If the spec writer doesn't properly specify behavior, that's not the programmer's fault. But if I write a spec that says:

      1a) Software must add, subtract, multiply, and divide (in any combination) integers from 1 to 100,000, and return results to 3 decimal places.
      1b) Software must check that inputs are in valid range before attempting any operations on the input, and inform the user of malformed input if detected;
      2) Software must be able to process a minimum of 100 operations per second - success or failure;
      3) Software must compile and run on Red hat Enterprise Linux 6, patch level NNN, hardware stack X/Y/Z.
      4) Software must be delivered with complete build instructions, list of dependencies, and any required system configuration steps;

      And in return, you give me a piece of code that waits 15 seconds, then core dumps when I enter "0 + 73," then you have failed. The point is, it's not "bug free" code that the submitter is looking for - it's "code that delivers to the specification as written."

      Now, it's entirely possible that the spec is shit, and you have to make a million assumptions - but if you're making assumptions, why aren't you documenting them, or better yet - asking for clarification from your customer and documenting those? Many bugs are a result of bad assumptions made by developers about how the spec "should" behave, or scope creep where the customer starts asking for new or different behaviors mid-stream. Both of these conditions should be clearly documented.

    71. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      In software, that wouldn't be a bug that would be utterly broken, akin to a webpage's styling cutting off the readable text. At least in the webpage's case though the fix might take seconds or minutes, while with a bedliner you're basically back at square one.

      Of course with certain non-Unix-like operating systems, all manner of bugs can be elevated up to "feature" status, in which case you would simply have to learn to live with the crooked bedliner or buy a whole new truck with a bedliner properly placed to begin with.

    72. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      IFF - if and only if
      IIF - "Inline If", version of if keyword that causes all conditions to be executed. (Visual Basic, ColdFusion)

    73. Re: Have u thought about.. by Belial6 · · Score: 1

      Comparing house contractors to software contractors isn't really fair. The reason is the every house is filled with uncountable numbers of 'bugs'. One of the primary skills of housing contractors is to make flaws look like they are 'supposed to be that way'.

    74. Re: Have u thought about.. by Belial6 · · Score: 2

      The hourly vs. deliverable is likely the biggest conflict he is facing. I have found that virtually 100% of the time customers want hourly if the project is done early and by deliverable if it runs late. This problem gets way worse when the customer is another contractor sub-contracting out their own work. The fact that he didn't mention whether his rates are hourly or by deliverable implies that he is playing this game.

    75. Re: Have u thought about.. by Belial6 · · Score: 1

      This is a problem that the software industry faces. A level of perfection is expected that doesn't exist in any other industry.

    76. Re: Have u thought about.. by void* · · Score: 1

      Customers often complain about "bugs" that are actually not bugs but stuff they want changed without having to pay for it, so they call it a "bug" rather than what it actually should be called, which is a "change request".

      "until we get toward the end of a project and the customer is complaining about bugs" leads me to believe that this could be what is occurring, although, of course, I don't have enough information to be certain.

      If that *is* what is occurring then what should happen is it should be managed by explaining to the customer that no, that is not what you asked for, so it is a change request, not a bug, and everybody should get paid for doing it. If it's something that's not well defined in the initial requirements documentation and the customer now wants different-than-implemented behavior, well, then that's what it is and it still isn't a "bug".

      (Again, I don't have enough info to absolutely say this is the case - but it certainly could be and what is given is consistent with that)

      --


      Code or be coded.
    77. Re: Have u thought about.. by rijrunner · · Score: 1

      A few other points..

      I have seen many coding sessions where all the effort and push early is meeting basic functionality. That takes a lot of coding and communication to get going. I have been in agile sessions where they do their sprint and get basic functionality, then they write their bug reports, then go on to the next sprint coding the next batch of basic features. They never take sprints to fix bugs. You'll always see the number of outstanding bugs rise.

      So, to the initial poster:

      1) What is the time allocated for the coding?
      2) What is the time allocated for debugging?
      3) Does it take 90% of the contract timeline just to get basic functionality?
      4) What are the metrics along the line for payment? Does the programmer get paid as they go along, or only at contract completion?
      5) When is the spec freeze?
      6) What are the test cases and who provides them?

      I have a few red flags here that kinda indicates to me that it is irrelevant whether you bring in a contractor in-house as opposed to bringing them in from the outside. "Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code." is a red flag for me. You don't trust your developers. I have *never* in 30 years really ran into any systemic problem along those lines, even with an individual developer. In general terms, bugs are the last thing to be addressed after getting core functionality and basic QA completed.

      The reason why they generally don't complain upfront is because you are backloading all the ways to get away without paying them.

    78. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Actually, they technically did not do the fix for free. They actually corrected their mistake at cost. It's the same with programming and contractors. If a contractor introduced a bug into an application, they should be legally liable to fix that bug as it was introduced by them.

      People who said there's no such thing as bug free software, must not have worked on any mainframe.

      I did OS-level programming on mainframes. For years. Reportedly, the average number of bugs in any given release of OS/MVS was about 64,000. We ourselves did careful work - you have to when you can take millions of dollars of computing power offline for hours or even days and effectively furlough the entire company. And we still had incidents. These days, mainframes don't run the entire company and I don't work much with mainframes. The order of the day is no longer "get it right!", it's "Git 'R Dun!" The levels of meticulousness that used to be mandatory can actually be job-killers.

      If you hand a spec to 5 different people, you'll get at least 5 different interpretations. So even if the spec was implemented perfectly, you'll get "bugs". In the Real World, there are also unforeseen corner cases, unexpected events, and the always-popular "That's great! but can you do this instead???".

      There is absolutely no way I can commit to an open-ended support for any program more complex than "Hello, World!" And perhaps not even that one. There has to be a cutoff point. Because computers may demand perfection, but they don't supply it.

    79. Re: Have u thought about.. by phantomfive · · Score: 1

      My bugs are my responsibility, and when I eventually get to the point where I can sell the software to end users, they will remain my responsibility.

      Bless you my son.

      --
      "First they came for the slanderers and i said nothing."
    80. Re: Have u thought about.. by parkinglot777 · · Score: 1

      Great reply and I agree. Thanks for the reply.

    81. Re: Have u thought about.. by gmclapp · · Score: 1

      I should also mention that I'm a mechanical engineer for whom a few programmers work and I hold them to the same standards. They don't suck at their job though. maybe that's the difference. ;)
      I should emphasize that I don't expect anybody's work to be mistake free. But I do expect them to stand by their work without expecting more compensation.

      --
      Common Sense (+1)
    82. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      and iif so the programmers concerns are valid.

      The use of iif to mean 'if and only if' makes me happy. It's not something you see much any more (or I move in different circles).

      and if so the programmers concerns are valid.

      -FTFY

    83. Re:Have u thought about.. by Marxist+Hacker+42 · · Score: 1

      Better yet- nothing teaches programming as well as debugging somebody else's code. Make a deal with your local community college- hire minimum wage work-study students to deal with 1st and 2nd tier tech support. Then, true bugs- which are usually enhancements not originally spec'd or differences in opinion on how to interpret the specification in my experience- can be billed as new sub projects to the original developer.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    84. Re: Have u thought about.. by gmclapp · · Score: 1

      Using big words might win you arguments against an unintelligent audience... You are correct. my argument is that programming should be held to workmanship standards because it would be absurd for me to expect less with a car. That argument stands, and I'm not sure I know any good programmers who would be comfortable with you implying they shouldn't hold their work to those same high standards. They do good work, and they don't have a problem standing by their code because they wrote it with quality in mind to begin with.

      --
      Common Sense (+1)
    85. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      What is the expected result of 1 + 2 * 3 (what is the order of operations)? Is that one hundred thousand (US decimal) or is it one hundred (Germany)? How are intermediate values treated? Are they rounded to the nearest int, or are they fractions?
      The specs are not clear. Specs that are good enough to eliminate the bugs approach source code themselves. At that point it because very expensive to create the specs and very confusing to implement leading to worse software.

    86. Re: Have u thought about.. by gmclapp · · Score: 1

      I agree with you. I'm when the poster says he wants bug free code, he means that he wants code that is not functionally deficient. I'm saying he has every right to expect that. If that's not what he's saying, and he does in fact want there to be 0 bugs, then not only do I disagree with him, but I would also consider that to be realistically impossible to achieve.

      --
      Common Sense (+1)
    87. Re: Have u thought about.. by alexo · · Score: 1

      My code is not guaranteed indefinitely. Any bugs which appear after the contract is expired can be fixed under another contract if I agree to fix them. I am certainly under no obligation to do that later work at all and especially not for free.

      Bugs do not just "appear". Any bug in your code exists only because you put it there, which means your work was sub-standard. Expecting more money for fixing your mistakes is like telling the customer that you'll bill them twice: once for doing a shoddy job and again for doing it right, like you were supposed to in the first place.

      If, due to bugs in your program, it does not perform exactly as specified, you have not fulfilled your end of the contract.

    88. Re: Have u thought about.. by Anonymous Coward · · Score: 0
      True. Personally I don't trust a contractor that is willing to do a fixed price on a project unless:
      • The project is trivial (so a flat rate for the project will earn them more than their normal billable rate)
      • They are ridiculously stringent on the spec, "This is what you get for X." then have a maintenance and improvement hourly rate that is normal contractor wages

      Software projects change, continuously. Anyone with any experience knows that. The only way to make money on a moving target is to bill hourly. Anyone willing to settle for fixed is either inexperienced or desperate for the work.

      I had a company I used to work for try to talk me into doing some project work on a fixed price basis. I laughed at them, literally.

      me: "Sorry, laughing out loud was unprofessional. Let me compose myself. So what's the company track record for keeping to spec and not changing requirements mid project?"
      manager: "It would be different, we'd write a clear spec and it'd be signed off on and that would be the job."
      me: "Ah.. so trying something new. And you have this spec for me to vet?"
      manager: "Well we haven't written it yet.."
      me: "And you want me to start as soon as possible? That's what you said earlier. Who's going to write the spec? I mean, you're pulling me in because you are short handed. Also, what happens when it changes in a week? Do you pay out the rest of that contract and we make a new one based on the new specs?"
      manager:"Well we'd have a change negotiation clause in the contract.."
      me: "Or you just pay me hourly and tell me what to do. I'll do exactly what you say, change on a whim with 0 complaints and if the quality of my work isn't up to snuff, and you know what to expect from me quality-wise, then you either withhold payment or stop giving me work. No contract modifications, no weeks delay waiting on the ceo and half the other managers to ok specs, then ok contract changes..."
      manager: "Hourly it is."

      I've seen companies that are much better organized (the exception to the rule) and changes still happen. Regardless of how well someone thinks they know what they want, it inevitably changes once they have something working in their hands (except for the most trivial examples). There are the few rare cases when all the stars align, the spec has the lowest amount of ambiguity possible and the dev happens to interpret it as the clients wants it interpreted as. I'm sure that has happened once, somewhere, sometime. I wasn't there for it, but I'm sure it was glorious.

      Specs changing is ok. That's the nature of the beast. People don't understand what they want until it's sitting in front of them. That's completely understandable when you are dealing with something as intangible as software. The problem is project managers and management that won't admit that is the case, despite their our actions and history proving otherwise. It's an ego issue. They often see it as admitting they were wrong (aren't changes always blamed on outside causes rather than a simple. "I changed my mind." or "I didn't fully understand what we were shooting for initially."?). Most organizational issues I've seen have been related to egos, but that an entirely different subject.

      Anyhow.. hourly all the way if you want to make any money. Fixed pricing is for plumbers and electricians.

    89. Re: Have u thought about.. by Demonantis · · Score: 1

      Some constructions they make the construction company own the work for a year. A near by waste water treatment plant had a sand bed filter built for them recently and the contractor overfilled the beds. It took a couple months but the back washing gantry eventually jumped its tracks and sailed out of the building down the street. The construction company was on the hook for it. You wouldn't have been able to guess what would have happened from the overfill right after construction. Likewise you can't expect the construction company to replace the pumps, bearing and other components indefinitely as they fail.

    90. Re: Have u thought about.. by dcw3 · · Score: 1

      I'm no longer responsible for the code I wrote once the customer has accepted it. Acceptance is based upon their testing. If they choose, they can pay for a sustainment contract which will guarantee my continued support. Other than that, they got what they paid for. Analogies don't work across different fields. There are best practices in every one, and at first glance, my take is that the OP is doing it wrong, but I'd need more details.

      --
      Just another day in Paradise
    91. Re: Have u thought about.. by DarkKaplah · · Score: 0

      Most likely "poor programming" is not even an issue here. Customer's are very quick to claim anything they find as a bug including scope creep, last minute change of requirements, or poorly written requirements resulting in something they didn't want. My favorite example of this was a customer who over the course of developing a new application to replace a legacy system discovered features in the old system they were not aware of. They found it the week of code acceptance well past the point of getting it into the current contract. So they just opt to scream "bug!" and demand we fix it. Luckily having a good contract upfront can help shield you from this. If you have not seen it, hit youtube and search for "Fuck you, pay me". Finally the poster is asking for a Cadillac programmer with skills in all languages, testing, and validation for a bargain basement price. My tip to them is "piss off". How much are you paying your contractors for one man for the entire year? I'll bet you're shelling out more than $100k easily. What you are looking for is someone with specialized skills and the knowledge to use them. As such adjust your salary expectation upward. You get what you pay for.

      --
      Coffee: The lifeblood of intelligence in civilization.
    92. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      I seem to recall reading in a book about technical writing, that the author bid for the work of writing the document, and their bid included a separate price for post-delivery changes.

      So you receive a spec. You generate a bid. You deliver to spec.

      Turns out spec was wrong and some changes need to be made. 'S OK. v1.1. Different clause in the contract; maybe a different rate.

      There are many parallels between contract writing and contract software writing. We would do well to look to them.

    93. Re:Have u thought about.. by canadiannomad · · Score: 1

      There is such a spec –that spec is the code for the program though, so he wouldn't be outsourcing the code if he had it.

      Exactly. The only true spec for a program that is sufficiently precise to describe the behaviour desired is the code itself. That is why you can't just put the spec into a compiler and have it run.

      --
      Hmm, the humour and sarcasm seem to have been be lost on you.
    94. Re: Have u thought about.. by HungryHobo · · Score: 1

      Yep, this is the common workaround. The construction firm get a maintenance contract of some kind for a year or sometimes 5 years. They are of course paid for that or it's factored into the original price.

      Still, don't sign off on water pipes being fine if they're not actually there because that still then becomes an alteration after work has been signed off rather than a bug/snag.

    95. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Or pay part up front part at end and if the contractor doesn't want to fix the bugs assuming he agreed with the no bugs contract you spend the second part of the payment on fixing the bugs. Communicate that up frk t and there's far less hassle

    96. Re: Have u thought about.. by void* · · Score: 1

      Is 17 detected bugs, 0 bugs?

      The reality here is that for what NASA is doing, they need to go to that level - but doing that does not cost the same in terms of time, etc as not doing that, and as you can see, they did not end up with a totality of zero defects.

      If someone wants to go to that level to have someone build them a website, sure, it can be done - but they shouldn't expect it to be cheap. You don't need to buy a million dollar safe to protect a thousand dollar wristwatch.

      --


      Code or be coded.
    97. Re: Have u thought about.. by null+etc. · · Score: 1

      As a programmer, I'm pretty sure you're wrong.

    98. Re: Have u thought about.. by null+etc. · · Score: 1

      It's hard to not take you seriously, with a 4-digit user ID and all.

    99. Re: Have u thought about.. by cayenne8 · · Score: 1

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      Well, for the most part, the answer is YES.

      Often there is a contractual clause for UAT (User Acceptance Testing), which the users is expected to test to ensure it works per the specs, and signs off on the deliverable, and the contract is done and payment is due.

      I've rarely heard of any software that is warranted, in fact in most contracts or even EULAs (like with Microsoft for example), there is often explicit language rendering the developer/selling company from any damages that said software might cause, that it is used at the users own risk, etc.

      Go read the EULAs on most any software you purchase commercially, this type of language is quite prevalent.

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    100. Re: Have u thought about.. by void* · · Score: 1

      I didn't state it outright in my previous post but the point I'm trying to make here is:

      You cannot absolutely guarantee that there will be zero defects.
      Reducing the defects present in an end product takes time, testing, fixing.
      What you can do is decide up front how much of your resources you want to put into reducing defects, which basically makes the decision depend on what you are doing.

      It is (or should be) a whole lot like the decision you'd make in a security context where you weigh the cost of a loss against the cost of protection.

      This is not, however, to say that programmers should be saying 'there's going to be defects anyway so why worry'.

      --


      Code or be coded.
    101. Re: Have u thought about.. by idontgno · · Score: 3, Funny

      When you understand the Halting Problem, and you understand what that has to do with bugs, THEN you will have a right to critique programming as a profession.

      Unfortunately, to understand the Halting Problem, you have to first understand the Halting Problem. So it's rather difficult.

      --
      Welcome to the Panopticon. Used to be a prison, now it's your home.
    102. Re: Have u thought about.. by TemporalBeing · · Score: 1

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice? This entire discussion has either misused the term "contracting", or deliberately glossed over it (by which I don't mean to accuse you specifically, the whole thread has that problem).
      When I work under salary, I get paid for projects (along with a certain amount of "keeping the lights on" shit-work, of course). I work unpaid OT if necessary, and cut out early when ahead of schedule. I generally expect (and get) a very flexible schedule so long as I get my tasks done.
      When I work as a contractor (and yes, I do both), I get paid for my time. I'll give a good estimate of how long it will take me, but if we run over, you keep paying. Simple as that. Yes, that could potentially lead to abuses by unscrupulous programmers - And they wouldn't get any repeat work for pulling crap like that. Just part of the game: Find a few that work well with/for you, and make them happy enough to stick around.

      That depends on the contract, of which there are several ways:

      1. Hourly
      2. By Project
      3. On retainer (typically for a certain amount of time)

      If he contracted them "by project", then the contractor is on the hook for fulfilling all the contract requirements regardless of time; the contractor better hope they estimated it correctly as they're on the hook until the customer signs-off on it. This is essentially a "salaried" contract; but it is not working as a salaried employee.

      If he contracted them "hourly", then it is more his issue than the contractors.

      However, from the description it sounds like he does "by project" contracting; but there's not really enough information to say.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    103. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Yes, I live in MD and that is absolutely the way it works, fire employees whenever you want. However, there are still two primary reasons for using contractors:

      1. Contractors don't get benefits
      2. Contractors don't affect your cost basis. Right or wrong, it looks better to wall street bankers.

    104. Re: Have u thought about.. by rjstanford · · Score: 1

      There's bugs where a program doesn't follow the specs (logic bugs) ...

      There are also missed understandings because no software spec (at least below space shuttle controller level) is written to an adequate degree to ensure a complete and proper understanding of it.

      Let's take a basic login screen. You can enter your email address and a password. A developer might take a reasonable approach and limit the email address field to 255 characters - when someone comes in with a ludicrous email address and the system won't let them use that is that a bug in the spec or a bug in the code? Is it even a bug? If you say that the system should "obviously" accept "any" input, what happens when someone dumps the contents of war and peace into each field and you run out of disk space?

      The amount of design flexibility in software exceeds that in physical construction by at least two orders of magnitude. There are building codes that specify things like the minimum static and dynamic loads for each floor in a building - so that that information gets #include'd in to every set of plans by default. There are no such equivalents for software, yet software specs typically end up being far shorter and more vague than building plans.

      The fact that there are missed assumptions on each side should come as no surprise - in fact there are so many of them that asking either side to "document all assumptions" is equally silly. That's just part of the reality of software development that we live in today.

      --
      You're special forces then? That's great! I just love your olympics!
    105. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      As a software developer living in an apartment building full of nuclear engineers, I would have to call "bullshit." The actual licensed certifying engineer on any given project has to deal with perfection, you just have to deal with piss-poor client specs. Sure, certain software fields demand some pretty severe validation, but even safety/control software pales next to the analyses of structural materials.

    106. Re: Have u thought about.. by TemporalBeing · · Score: 1

      But we're not talking about a house which is normally something you can quantify as taking x amount of time to a pretty reasonable degree if you've done it before, we're talking about software.

      It's no different for the software industry.

      I think just about every software contractor has clued into the fact that software requirements change much more rapidly and if I was on the hiring side of the equation I'd be loathe to take on a contractor that didn't want to be paid by the hour, day, or week, and instead wanted to be paid for the full job, as it would say to me that they didn't have the necessary experience to understand the way software is built and what can go wrong because both I and they would be exposed to far too much risk to be healthy.

      When requirements change, you change the contract through a renegotiation. If they don't want to change the contract, you don't change what you provide. That's standard practice for contracting. All too often with software the developers do not renegotiate thinking it'll be easy to add, thus allowing feature creep that they are responsible for. A good contractor will be good at controlling the feature creep - this is extremely helpful by forcing contract renegotiations whenever a new feature is requested that was not in the original specification. Add in a contract renegotiation fee for each change, and they'll quickly get the picture that they can't keep changing things.

      I had one colleage nearly a decade ago that worked on a project for another manager. She micromanaged things, and would tell him what to change. Our manager didn't really care, or pay much attention to it. She didn't really specify requirements, and in the end it would have been something like having an invisible elephant that you can see and has pink dots without any pink involved. He left the company. She later brought another contractor in and he told her that what she was asking was impossible and the code would have to be restarted from scratch (it was a mess due to her micromanagement). The project died.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    107. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      No. No software exists in isolation and bugs frequently emerge in complex systems when components interact in new and unexpected ways. Needless to say, developing components in isolation doesn't help and the contracting model further exacerbates this issue...

    108. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Bugs do not just "appear". Any bug in your code exists only because you put it there, which means your work was sub-standard. Expecting more money for fixing your mistakes is like telling the customer that you'll bill them twice: once for doing a shoddy job and again for doing it right, like you were supposed to in the first place.

      If you accepted the code as meeting the terms of the contract, then you have agreed that the work was done right. Or at least done as well as you expected. You don't get to change your mind later. You don't get the right to permanent support simply because you can't be arsed to make sure you've gotten what you asked for.

    109. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      I do actually expect all work I pay for to be "bug free" I recently had an aftermarket bed liner put in my truck, and it came back with a bug: it was crooked. I took it back and demanded they make it right for free. And you know what happened? They fixed it for free. Everyone makes mistakes, but when the product makes it to the customer it had better be right.

      Why are programmers exempt from workmanship standards?

      There is a difference from what is a reasonable standard that is generally accepted for a product and perfection. A crooked bed liner is clearly not normal, but if you expected every seam to be within .0000001 of an inch then you would be beyond the bounds or reasonable and customary. Programers aren't exempt, but workmanship standards do not mean 100% bug free code; especially since every situation can not be anticipated and all bugs discovered and fixed.

      I think you have to take this a little further. Say that I build my own truck based on a Ford F-150, but I improve the bed so that it works better for me. I call someone to install an aftermarket bedliner and, lo, they decide that it's custom work and charge me more for that. If I tell them it's just an F-150, then I shouldn't be surprised if they can't do it for the quoted price or they do a shitty job installing a stock bedliner.

      That's programming. 99% of the time, when you're writing code you're writing code that is unique to the situation. In terms of how it interacts with existing code, how it interacts with the environment, etc. Programming isn't a snap in product.

      To the original poster, I would ask if he guarantees his specifications in a similar manner to what he expects from his hired programmers? Working for a guy like this, I might want to renegotiate any change in specification from what was originally proposed.

    110. Re: Have u thought about.. by TemporalBeing · · Score: 1

      Why are programmers exempt from workmanship standards?

      They're not. But they want to be artists or academics that are. It's the Software Engineer vs. Academic Programmer issue.

      Colleges focus on Academic Programmers when the business place wants Software Engineers.
      One has Workmanship Standards while the other does not.

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    111. Re: Have u thought about.. by samkass · · Score: 1

      I have had the pleasure of being the project manager on several fairly large software projects during my career. These projects were finished on time and to spec. Everything the customer asked for in the agreed-upon scope worked. Everyone was happy...

      Good news. But finishing projects on time and precisely to spec does actually not always make the customer happy. And making the customer happy, profitably, is essentially the purpose of all business. On-time and to-spec deliverables are means to that end, but in the end the payer should be happy and the company should make a profit or the deal shouldn't be done.

      In the case at hand, it sounds like the PM is trying to make the buyer happy, but that he himself can't be made happy (profitably) by any contractors, in which case his business model is flawed. Either he needs to set expectations better with his customers such that he can pass on an easier set of expectations to the contractors, or he needs to price things such that the contractors can still make a profit while delivering him what he needs to make his customers happy. An example of the former might be setting uptime metrics, and example of the latter is a defined test-fix-test period at a fixed cost.

      "I don't pay for bugs" is just a negotiating tactic.

      --
      E pluribus unum
    112. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Working for spec is a fools errand for indie programmers. You didn't write the spec but you get all the hassle of what is or is not a conflict or change. Pass. If someone wants to be the primary contractor and bid the work fine. But I'm working time and materials. And yes you're paying for unit tests, bug fixes and changes. Most bugs are usually things not clearly defined in any spec. They tend to be integration issues that appear when things start coming together.

      The way I see it if I do a crap job it's going to get around. The programming market for contract work is usually a much smaller world than people realize. I don't want the reputation. And to be honest when you hire a large staff augmentation company you're going to pay for bug by the hour.

      As far as the OP's question, the solution is to bid work including bug fixes. Pay for the work. Pay market rates. Provide feedback and don't rehire those that have high bug rates. It's a lot less hassle than dealing with hiring an FTE when you clearly don't have a big enough book of business to warrant it.

      Also, it sounds like a lot of the issues are coming from not having a continuos integration env and no code quality monitoring on the code base to flag lack of unit tests.

    113. Re: Have u thought about.. by alexo · · Score: 1

      All guarantees have limits. With cars, it's a set number of miles or months, whatever is reached first.

      Car components suffer from mechanical wear, chemical degradation, etc. Therefore, it is often hard to say whether whether a problem is due to those reasons or to a manufacturing defect.

      Computer software (and some hardware), on the other hand, is not subject to such limitations. If you wrote an OS that crashes after 49.7 days of uptime, it is your fault, no matter how long it takes to detect the problem. If you build a processor that returns incorrect results on some FP division operations, it is your fault, and can cost you $475M.

      I agree that some time limits are reasonable, but they should be measured in years.

    114. Re: Have u thought about.. by pla · · Score: 1

      That depends on the contract, of which there are several ways: Hourly By Project On retainer [...] However, from the description it sounds like he does "by project" contracting; but there's not really enough information to say.

      Agreed, not quite enough information, but I took the FP to mean that he wants the best of both worlds - He wants to pay them hourly, but keep them on the hook as though he pays by the project.

      Personally, I refuse to do project-based contracting. I've gotten burned too many times - Either the scope creeps if you don't all but beat the customer up for an unambiguous spec; or if you get a good solid spec, the customer complains that they didn't really want what they asked for (and get insulted if you warn them when you know they don't want that). So, hourly, or retainer, but screw project-based. That way leads nowhere good.

    115. Re: Have u thought about.. by elloGov · · Score: 1

      This! You hit it the nail on the head dude. Software is a living thing. Given its dynamic habitat, it has ongoing efforts throughout it's full life cycle. Needs that include but not limited to BUG fixes. It's amazing how many people/companies seem to miss this point and fall into a rut.

    116. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      There's no such thing as bug-free code. Just like no writer can proof read his own novel, no programmer can truely find every bug in his own code.

      Are you even able to see the crashing non sequitur in that?

    117. Re: Have u thought about.. by obarel · · Score: 1

      The reason is that for software to be perfect it has to be either proven or checked against every possible input.

      The first may be possible in some cases, but is very time consuming for anything other than trivial exercises (and almost no one is willing to pay for that).
      The second is simply impossible and some "representative subset" must be used for testing. This means that the once-in-a-lifetime case could be missed.

      The car analogy doesn't work here.

    118. Re:Have u thought about.. by Anonymous Coward · · Score: 0

      There is no such thing as a specification that can't be interpreted in many different ways. Otherwise you'd be writing the code yourself.
      I have 10 years experience as a Dev and 10 years experience as a BA. The guy is a self-obsessed unrealistic goober,

    119. Re: Have u thought about.. by obarel · · Score: 1

      I'm wondering about the mainframe comment: does it mean that bug-free software was only ever written for mainframes? Because I'm absolutely 100% convinced that not all the software that runs on mainframes is bug-free, having worked on mainframes. Even IBM COBOL compilers had (have?) bugs, and they must have been tested by thousands of businesses.

    120. Re: Have u thought about.. by Cammi · · Score: 1

      It is not an open-ended support. Simply deliver the product you was contracted to do. If you add bugs to the software, that software is not finish, thus the contract has not been satisfied ...

    121. Re: Have u thought about.. by Cammi · · Score: 1

      As for the "If you hand a spec to 5 different people, you'll get at least 5 different interpretations." comment, this is only true if the 5 different people have different standards. This is not the case at all if the 5 different people work for the same company and uses the same standards. Dept. of Labor at State of Alaska is an excellent example (when they were mostly mainframe programmers). Everybody use the same standards, there is a set way of doing things, the answers are always the same, and almost every single program was bug free when released into production. It was extremely rare to find bugs in the applications. (the highest count I have seen was 6 in the last year I was working there), and this is a team (division) of 20+ programmers. The majority of those applications are still running today with no changes-at-all and bug free. So yes, it is possible when you have a nicely contained development team (no matter the size), and standards are enforced.

    122. Re: Have u thought about.. by Cammi · · Score: 1

      I agree on some things. It was only the mainframe where I have been exposed and developed bug-free applications. I haven't seen the like since, outside of mainframes. Please see my comment @ http://slashdot.org/comments.pl?sid=3772351&cid=43796699 It explains the situation, and environment.

    123. Re:Have u thought about.. by Anonymous Coward · · Score: 0

      I have never seen bug free software delivered in the time frame mandated by clients. The fact is clients don't pay for adequate testing up front.

    124. Re: Have u thought about.. by Zalbik · · Score: 2

      Bugs do not just "appear"

      This is only true for suitably strict definitions of the term "bug". O/S changes, configuration changes, hardware changes, data changes, requirements changes can all lead to "bugs" that should not be covered under the initial terms of development (and are rarely covered under the initial development contract).

      If, due to bugs in your program, it does not perform exactly as specified

      I have yet to see the customer that wants to pay to have the developer specify "exactly" how software will perform. I could see this being easily as expensive as the actual development cost (after all if every coding path was perfectly documented, it should be pretty trivial to actually write the code).

      Additionally, requirements can be misinterpreted between the customer and developer, such that the developer believes the system is working perfectly, while the customer thinks it is broken.

      Look and feel "bugs" may exist where the customer expects a certain usability that is either non-standard or not explicitly covered under the requirements.

      The problem is he OP hasn't specified exactly what kinds of bugs he won't pay for.

      If it is a case of scope creep, poor requirements, poor communication of requirements, new operating environments, new data configurations, etc and he wouldn't pay, then I'd hesitate to work for him either.

      A much better practice would be for him to pay for bugs, but be choosy on which developers he re-uses. In any other profession, the cost of "mistakes" are passed along to the customer. While building a new building, if the electrician installs a plug then realizes "oops, this is supposed to be a GFCI plug", it's not like he stops the clock, goes and gets a new plug, removes the old plug, installs the new one and restarts the clock. He gets paid for the cost of his "mistake".

      My question would be: Why is the customer seeing these bugs at all? Sounds like more of an issue with a poor software development lifecycle than an issue with coders trying take advantage of him.

    125. Re: Have u thought about.. by alexo · · Score: 1

      No. No software exists in isolation and bugs frequently emerge in complex systems when components interact in new and unexpected ways. Needless to say, developing components in isolation doesn't help and the contracting model further exacerbates this issue...

      While true, this is a different issue.

      If you develop these components, the interaction between them is your responsibility.
      If you develop only some of them, the interaction is governed by the specifications. The components that fail to adhere to the spec are at fault and, if they are not yours, it is perfectly acceptable to demand additional payment for fixing the problem. Documentation helps: if you state clearly that your program works under XP SP3 (and the client signs off on if), additional work to make it not break under Win7 is outside the original scope.

    126. Re: Have u thought about.. by alexo · · Score: 1

      It's hard to not take you seriously, with a 4-digit user ID and all.

      Address the message, not the messenger.

    127. Re: Have u thought about.. by alexo · · Score: 1

      If you accepted the code as meeting the terms of the contract, then you have agreed that the work was done right. Or at least done as well as you expected. You don't get to change your mind later. You don't get the right to permanent support simply because you can't be arsed to make sure you've gotten what you asked for.

      Should I make a car analogy to demonstrate the error in this argument?

    128. Re: Have u thought about.. by maxwell+demon · · Score: 1

      That code isn't bug-free. It's just insufficiently tested.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    129. Re: Have u thought about.. by Cammi · · Score: 1

      Incorrect, that myth has been busted decades ago.

    130. Re: Have u thought about.. by yacc143 · · Score: 1

      Some thoughts:

      - depending upon source the numbers are 10:90 or 20:80 but the effect is the same: Writing a system that works reasonably if not perfectly is relatively easy, but fixing all the tiny bugs can take quite a bit of effort. Most project managers/customers like to forget this, if you pay by the hour, you need to have factored in a multiple of the development costs for bugfixing/maintenance in the first year.

      - If you pay by deliverable, you need to provide a heap of specs, and everything that is unclear or missing in the spec, will be used against you. Depending upon how much you squeezed out your supplier and other factors expect more or less culant handling of your issues.

      - As contracting for a deliverable moves quite a bit of risk onto the supplier, expect higher rates plus padded time estimates.

      - Last but not least, having worked as a contractor/consultant for quite a bit, my experience is that "at will" work works best. As long as both sides of the contract are happy, everything works out well. The moment the customer feels that he is not getting his money, you've got a problem, that's why it's important to explain the situation to the customer well and often enough; OTOH, if I'm stuck in a project where I feel underpaid, I tend to get less productive, look for an alternative contract, ...

      - And btw if you consider the above rule that implementing/fixing the last bits is the most costly of a project, keeping back 10-15% of the contract sum won't motivate the developer either.

    131. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Most likely "poor programming" is not even an issue here. Customer's are very quick to claim anything they find as a bug including scope creep, last minute change of requirements, or poorly written requirements resulting in something they didn't want. ...

      Heck I got that from sales guys all the time. They'd add wanted features as bugs in the bug tracking system (which had the ability to add features) and argue tooth and nail they were bugs not new features that had to be "fixed" for their customer because they promised it would be "fixed" before they delivered the product.

      Bugs happen. It costs money to fix them. A large portion of the beginning of my career was spent fixing other people's bugs. Some of the other people were idiots and some were borderline geniuses.. we all make mistakes. The smart people tend to make 1 liner mistakes (having an off day and slipped in an off by 1 bug or similar), stupid people make big architectural issue type bugs, often approaching a problem without understanding it well enough.

    132. Re: Have u thought about.. by turbidostato · · Score: 1

      "All guarantees have limits. With cars, it's a set number of miles or months, whatever is reached first."

      Oh, c'mon, not again...

      Please do NOT compare physical goods to immaterial ones.

      You can come back with your car analogy the day your code wears out and it fails because too many zeroes have thinned out into ones.

    133. Re: Have u thought about.. by turbidostato · · Score: 1

      "When you understand the Halting Problem, and you understand what that has to do with bugs, THEN you will have a right to critique programming as a profession."

      When a computer has effectively infinite RAM and infinite time *then* you can get back talking about the halting problem to hide your unprofessional attitude.

      "Why should I correct those bugs for free?" Well, because you introduced them for free too.

      "So, I have to support my software forever?" No, only till it has zero defects. The sooner you get to that point, the sooner you can go after other issue.

    134. Re: Have u thought about.. by turbidostato · · Score: 1

      "Would I, as a programmer, be expected to go back 15 years and fix a bug in a piece of software I wrote"

      Certainly not. Only if you introduced the defect yourself 15 years before.

      "For "free""

      Of course, not for free: you already got payed *in advance* for the product 15 years ago, so you have already taken advantage for 15 years of that money for an unfinished work.

      "The contract should specify a "warranties" period for items like this"

      But of course yes. It not only should but must be a warranty period for all the portions of your product that will wear out with use. Can you please tell exactly what zeroes and ones are subjected to wearing out in your code?

    135. Re: Have u thought about.. by turbidostato · · Score: 1

      "So, you're absolutely certain that your truck liner has no micro defects in it that aren't immediately obvious?"

      Of course he can't. But he can be sure there are no micro defects that will break the truck liner within the warranty period or the repair will go on the part of the vendor.

      Now, please tell me how this can be applied to software development. Zeroes and Ones don't wear out.

      "those are more of the type of bugs that would ship in software that's impossible to fix all of them."

      Do you mean they can't be fixed once they reveal themselves? Because if they can be fixed it means they could be not there from the starting point, right?

      In physical world, pieces wear out and break appart. In a software, defects don't appear themselves but get exposed, they are there from the begining because you introduce them. It's only natural to ask you to remove them since you introduced them to start with.

    136. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      the last 30% of the total project time should be dedicated to testing and bug fixes, with zero added functionality and features. it should be explained up front that the last X amount of project time is a completely different phase.

      Saying "the last 30% of the total project time should be dedicated to testing and bug fixes" is bullshit. That time should be integration testing, QA and product hand over, not bug fixing. Any developer that's not doing things properly with TDD should at least be unit testing their code as they write it - leaving it to the end of the project to find bugs is inexcusable.

    137. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      ^^ this ^^

    138. Re: Have u thought about.. by greenbird · · Score: 1

      My bugs are my responsibility

      So you are still providing free support for every piece of software you've ever written? Or do you think there are no bugs in the software you developed in which case you should stay out of software development because you don't have a clue what you are doing.

      A contractor is a supplier, not an employee, and should therefore be working to provide something to a contract.

      Depends on the contract. There's time and material contracts and there's turn key contracts. The former are much more common than the later in the software field. I won't bid a turn key contract unless there is a very detailed spec, detailed stipulations for acceptance conditions and some sort of support agreement after acceptance. I have yet to see any spec from anywhere that was detailed enough to even come close to what the spec writer actually wanted. Writing such a spec takes almost as long as developing the software and anyone other than an experienced software developer can very rarely do it.

      When I was at school, my parents hired a contractor to build an extension to the house. The project finished late, and the contract had penalty conditions for late completion, so my parents ended up paying less. This is standard practice in most contractor fields, so why should a coding contractor expect to be any different? Paying for bugs is effectively a bonus for late completion, which is a bit daft.

      Building an extension to a house is trivial when compared to the complexities involved in developing any kind of software. And I guarantee the submitter's specs aren't detailed to the point there are no ambiguities in what's needed. If you think otherwise you need to stay out of software development because you haven't a clue what you are doing.

      --
      Who is John Galt?
    139. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      Try chip design.

    140. Re: Have u thought about.. by greenbird · · Score: 1

      Interesting that you're not prepared to guarantee your work. It would make me wary of contracting you as it places the onus on me to ensure that I've throughly tested your code rather than on you. Is this common practice?

      I'm still laughing at this. I'm hoping you don't work in any field related to developing software. It's absolutely critical that someone other than the developer test software. Any but the most trivial software has a huge amount of variables involved. The developer tends to test what he thinks the program should do. She'll never test all the possible combinations of crap a user will toss at a piece of software. It just won't happen.

      --
      Who is John Galt?
    141. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      ... thank you for demonstrating EXACTLY my point, chief.

      I dashed off 5 rules for how I wanted the software to behave. You realized that there were things not covered by that spec, and asked for clarification.

      Now, before you accept the contract, it's YOUR responsibility as the developer, to either:
      1) Clarify those points with the customer, and add them to the spec;
      2) Modify the terms of the contract somehow;
      3) Refuse the contract;

      Don't accept flat-fee project contracts for work that's not well defined, or modify the contract to be hourly if the customer isn't able to clarify.

    142. Re: Have u thought about.. by Macgrrl · · Score: 1

      I'm in the middle of a building project at the moment. In Australia the way it works is the builder has contracted to supply to a specific set of plans and bill of materials to a set price. Should the plans or bill of materials change a Variation needs to be signed by both parties accepting the revised change, either up or down.

      If they have quoted to build a brick garage (as in our example), it's on the builder to have accurately estimated how many bricks they are going to need. If they have under quoted - that's their cost to wear. If we change our mind on the type of bricks which will result in them being more expensive - that's our cost to wear.

      --
      Sara
      Designer, Gamer, Macgrrl in an XP World
    143. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      If every contract ends up being a battle with multiple different programmers, the problem is you.

    144. Re:Have u thought about.. by Anonymous Coward · · Score: 0

      Bah, just about every comment in the whole thread is missing a key point. You can't spell 'contractors' without the word 'contract'. What are the terms? I've worked under a variety of scenarios.

      I've seen contracts with fixed pricing for the project - the contractor takes on the responsibility of meeting the specification for the negotiated price. Once the client signs off, he's going to have to pay for any more work - even if it's fixing a bug which was there all along.

      Another common model is T+E - time and expenses. The contractor provides an estimate, and then the client pays an hourly rate. If the budget runs out before the project is finished, then the client obviously wanted more than they could afford - and that's their problem, even if the contractor's estimate was wrong.

      You can do all sorts of other things - Cost + Incentive is another common option. The contractor works at cost - usually a very low hourly rate + expenses at cost - and gets a fixed incentive payment on completion. If they get sign-off early, the margin on their time is much higher. If the project runs late, the margin is slowly eroded (this risks getting to the point that the contractor will simply abandon the project).

      Saying "I do not pay for bugs" displays a worrying naivete about software. It is possible to produce bug rates so low as to be immeasurable - ask JPL if you don't believe me - but your cost per LOC is going to be massive. It's a fact of software development that you are going to pay for a certain bug rate.

      These are all things that your contracts should cover off. Your standard terms should stipulate all of these sorts of things, and you should write the contracts to provide appropriate protection for both your clients and your contractors. Trying to shuffle all of the risk to your contractor is asking to alienate all of your potential contractors.

      An increasingly popular contract model, if you can talk your clients into it, is the Agile pricing model - the client has a total project budget in mind, but rather than quoting to spend the entire budget, you quote for a sprint at a time. In the lead-up to each sprint, you negotiate what gets worked on in the sprint, and something workable is delivered to the client at the end of each sprint. The client keeps paying for sprints until the budget is all gone, or they're happy with what they have.

      You seem to think you're a pretty good project manager, but then you say "Every project ends up being a battle..." - which is a giant red flag that you're almost definitely a pretty bad project manager, and it's precisely because you haven't thought through all of these things and used good, forward-thinking contracts which protect both your client and your contractor from unnecessary risk.

    145. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      There is no way you have software development experience with that mindset. You put together routines that are based on user intervention. You can never anticipate every possible combination of actions an end-user will do and what issues may arise from all the various functions you wrote. That's why you have user acceptance testing. Bugs aren't there b/c they were "put" there. That's not at all how it works. Educate yourself before you start bashing people. This isn't like painting a fence.

    146. Re: Have u thought about.. by Sun · · Score: 1

      Grandparent is right, and so are you.

      The way I dealt with this conflict (back when I was doing contracting work) was twofold:
      First, I would try to convince the client to work on a time and material basis, rather than fixed price. To do this, I would point out two things that should have been obvious, but are usually not:

      1. Requirements change over time. With time and material, this is not a problem. With a fixed price project, every time this happens the entire project needs to be halted, percentage of execution calculated, payment for work already done given, and a new quote issued. This gives a very strong disincentive to trigger changes, which means the project stagnates for no good reason.
      2. When writing a quote for a fixed price project, I take the full risk of the project being bigger than anticipated. To accommodate this risk, I over price the quote. If I think a certain project will take me 50 hours to complete, a fixed price quote will typically bill around 70. Those 20 hours are a premium the client pays for me taking the risk.

      Often (not always) these were enough to convince the client that time and material was a better option for them. If not, however, I would define an acceptance test period. The quote would read something like:

      The project will be ready on X. Once delivered, the client will have a one month acceptance test period. All bug reported during the acceptance test period, and which are within the original scope of the project, will be fixed with no further charge. Any bugs found after the acceptance testing is over will be charged at $Y/hr

      This solves both problems. On the one hand, I take responsibility for my own bugs. On the other, I do not have an open ended commitment (which I cannot afford, as a small business) to solve bugs, free of charge, until the rest of eternity. As far as the client goes, it is unlikely that any really serious bugs will not be discovered within a month of testing (unless they order a project, and then never get around to test it once delivered, in which case, screw them).

      Shachar

    147. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      I think you have it backwards.

      When OP hire and pays contractors, he's contracting for their time, not results. If they charged for guaranteed satisfaction, he'd be paying much, much higher rates.

      OP seems to have no conception of what a deliverable is, or what SDLC is all about.

    148. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      That is, OP is the general contractor, the only responsibility for error lies with him, not his subs.

    149. Re: Have u thought about.. by Damarkus13 · · Score: 1

      Exactly! If the contract is a set bid he shouldn't be paying in full until he has an acceptable product. However, if his contractors are hourly then you do have to pay for bug fixes or they just walk away when they realize he wants them to work for free.

    150. Re: Have u thought about.. by Xest · · Score: 2

      "It's no different for the software industry."

      Yes it is, there are two types of project in the world - those where the time for production is a fairly well known and those where it's not. When you've built a few houses you know roughly how many bricks your bricklayers can lay in a day, you know how long it takes to install the plumbing, these are tasks that you do many times and within a certain degree of tolerance are highly predictable in terms of time required.

      You can't do that with software, because everything you write is new (and if it isn't, you're doing it wrong, why aren't you taking advantage of reusable components?) so you simply cannot predict ahead of time how long something will take with any reasonable degree of guarantee. The same is true for many research projects, the same is true for a lot of engineering projects. Projects in industries like these aren't like production lines where you have masses of historical data on identical or near identical tasks to go on - you know your factory can churn out 10,000 chocolate bars in a day on average, but you don't know that your team of software developers can definitely solve problem x in a day.

      "When requirements change, you change the contract through a renegotiation. If they don't want to change the contract, you don't change what you provide. That's standard practice for contracting."

      This shows a complete lack of experience on your behalf on dealing with clients. If you act like this you'll a) often be wasting more of your time and their time renegotiating contracts than you will just doing the changes because the changes rarely come in one big bulk lump, but normally come in at a trickle, and b) Your customers wont be your customers because forcing them to waste time with a contract renegotiation over say, roughly a days work is the quickest way to piss them off and show how inflexible you are. They'll go elsewhere.

      There's also the fact that it's impossible to write down a perfectly solid spec, if they want something different and you try to demand they pay for a change request or you demand contract renegotiation they're just as likely to find a hole in the spec (and there will be holes, writing a hole-proof spec is more difficult and time consuming than writing 100% bug-free software) and use that to make your life difficult. You may not even have a leg to stand on to even claim it's a change request or a contract renegotiation.

      You have to allow at least some flexibility whilst also catering for that fact. You can't apply programmer binary logic of "It's a change, therefore contract renegotiation is required" in the real world - real clients wont go for that, there are shades of grey in between that you absolutely have to cater to if you want to stay in business, especially if you want repeat business and to grow your business.

    151. Re: Have u thought about.. by Anonymous Coward · · Score: 0

      "Bless you my son."

      and

      "I'm trying to be less rude."

      So was that the polite way of saying "You're a fucking tool?"

    152. Re: Have u thought about.. by gmclapp · · Score: 1

      The car analogy works fine because I didn't expect the job to be perfect. I expected it to be free of functional defects. The only argument I've heard in reply to mine is a mixture of flame and hyperbole.

      --
      Common Sense (+1)
    153. Re: Have u thought about.. by TemporalBeing · · Score: 1

      "It's no different for the software industry."

      Yes it is, there are two types of project in the world - those where the time for production is a fairly well known and those where it's not. When you've built a few houses you know roughly how many bricks your bricklayers can lay in a day, you know how long it takes to install the plumbing, these are tasks that you do many times and within a certain degree of tolerance are highly predictable in terms of time required.

      You can't do that with software, because everything you write is new (and if it isn't, you're doing it wrong, why aren't you taking advantage of reusable components?) so you simply cannot predict ahead of time how long something will take with any reasonable degree of guarantee. The same is true for many research projects, the same is true for a lot of engineering projects. Projects in industries like these aren't like production lines where you have masses of historical data on identical or near identical tasks to go on - you know your factory can churn out 10,000 chocolate bars in a day on average, but you don't know that your team of software developers can definitely solve problem x in a day.

      As much as I disagree with how managers estimate time for projects, you can very well do that with software. However, you need software developers that are professionals, and not about being artistic. People that will stick to team guidelines, coding styles, design guidelines, etc, and people with experience. The more experience you have the better you'll get at estimating your own time.

      And yes, I've seen that even with myself. In the early phase of a brand new project it can be harder to estimate time correctly, but as some of the technology in the project matured, other phases became a lot easier. Following design guidelines have reduced bugs to very low levels - near zero across over 400 KSLOC, most things users complain about are not bugs but product maturity (e.g. I don't have infrastructure in place to support what they want yet) - i.e. it's not bugs, but new features to add. (Bugs being defined as defects in existing code, not missing features.)

      Software developers that insist that it cannot be done are simply (i) inexperienced, or (ii) do not know what they are doing and need to not be doing software.

      "When requirements change, you change the contract through a renegotiation. If they don't want to change the contract, you don't change what you provide. That's standard practice for contracting."

      This shows a complete lack of experience on your behalf on dealing with clients. If you act like this you'll a) often be wasting more of your time and their time renegotiating contracts than you will just doing the changes because the changes rarely come in one big bulk lump, but normally come in at a trickle, and b) Your customers wont be your customers because forcing them to waste time with a contract renegotiation over say, roughly a days work is the quickest way to piss them off and show how inflexible you are. They'll go elsewhere.

      No. It shows you know you have contracts work. You are bound to the contract you've signed. If you don't follow the contract and they have a problem, then you are on the hook for what is written in the contract. If they ask you for something that is not in the contract, then you can do it - but it won't be something they'd be able to hold you to.

      In the end, your customer may complain at first; but when they get what they want they'll be happy. Make the contract renegotiation easy for them, and show them that the renegotiation is as much about them getting what they want and keeping them happy as it is ensuring that you are properly paid.

      Yes, there is a line where you can say - well, the contract doesn't say that, but we'll do it any way. And that's a line you have to figure out how to walk. But you also cannot simply roll over and say "well, if t

      --
      Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
    154. Re: Have u thought about.. by Xest · · Score: 1

      "Software developers that insist that it cannot be done are simply (i) inexperienced, or (ii) do not know what they are doing and need to not be doing software."

      Oh do fuck off. Software developers that insist it can be done are simply inexperienced and unaware of the bugs that actually do exist in their software. See how that works? It's called the no true scotsman fallacy.

      Yes I agree more experience means better estimation, but it's still estimation, and therein lies the problem - estimation is not a guarantee of correctness, it's by definition, just an estimate.

      The only way software developers manage to hit time targets is simply by giving themselves plenty of leeway by overestimating, and sure you can get a rough idea over time of roughly how long things may take, if you have a number of estimates to stick together it may be that you overestimate some and underestimate others but on average hit a happy balance and that's great, providing those tasks do not change, but therein lies the problem. You estimated 2 weeks for translation support, but guess what? they found an ambiguity in the spec that allows them to gouge out of you full blown internationalisation. Suddenly your estimate is meaningless.

      Your blabber about contract is still completely ignorant of the way the real world works. It's pretty clear from your comments that you've always just worked as a developer and never actually acted in a client facing capacity - guess what, I have and I've delivered and delivered with happy clients and a healthy profit margin, that's why I know for certain that I've managed to figure out what degree of leeway to give and not give, but also why constant contract negotiation and haggling is not the solution unless you want to piss the customer off because it's utterly inefficient for both parties.

      "And, FYI, the Defense Industry operates on this very principle. The US Government puts out an RFP; contractors respond with their proposals; one of them wins, and then immediately renegotiates the proposal before any work is actually done. They seem to be doing very well."

      You couldn't have picked a worse example, public sector, and the military in particular in both the UK and US (and probably much of the world in fact) are notorious for suffering project overruns, poor budgeting and poor planning. They only seem to be doing very well if you completely and utterly ignore the massive cost overruns that the world's militaries are absolutely famous for.

      "And ultimately, if they don't want to do it - then they're not worth having as a customer either as it will impose undue risk on you and your own business."

      This is one thing I somewhat agree on, as I said in a different post you have two options - you either have a client that you have a trustworthy relationship with where they'll gladly accept to pay for some changes when it's their fault as long as you fix bugs where it's your fault without dicking around with contract negotiation, or you work on a time and materials model where you charge them for fixed blocks of work for example by using Scrum and charging them per spring giving them a rough estimate of initial sprints, giving them visibility of the backlog and letting them increase/decrease the number of sprints as they see fit to get the required number of features they want and also giving them visibility of the impact on the backlog of changes as and when they make them. If you have neither of these then yes, walk away because it means you're dealing with a customer that wants more out of you than they're willing to pay for.

      Software just isn't as fixed as you're making out, specs aren't as fixed as your making out, it's a far more fluid process than you're implying and the impact of the fluidity is larger the longer the project runs. If it's a two year project the clients business needs may even have changed somewhat such that it by definition has to be fluid to be of any use to the client in the first place. You have to plan for that one way or another and it's the

    155. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      A much better practice would be for him to pay for bugs, but be choosy on which developers he re-uses. In any other profession, the cost of "mistakes" are passed along to the customer. While building a new building, if the electrician installs a plug then realizes "oops, this is supposed to be a GFCI plug", it's not like he stops the clock, goes and gets a new plug, removes the old plug, installs the new one and restarts the clock. He gets paid for the cost of his "mistake".

      I'm never hiring you as a contracts manager. His mistake, not mine: he pays. And that'll be in the contract. In fact, when my parents had an extension built on their house (as I related elsewhere), the contract included penalty clauses for late delivery. The building contractor paid the workers for the time, because it was his error, but he got less money from my parents on it. My Mum still reckons that the only reason the work got finished at all was that the guy was so far behind schedule that another week of delays would have meant he made a loss on the whole thing....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    156. Re: Have u thought about.. by phantomfive · · Score: 1

      no. It ways a way of insulting everyone who says, "bugs are no big deal."

      --
      "First they came for the slanderers and i said nothing."
    157. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      The other part when he/she talks about his/her client complains about bugs and he/she wants the developer to fix them for free. This is very important. What kind of "bugs" he/she is talking about? End users usually do not know what they want, and may expect something different from what the software introduces. As a result, the users complain and report the issue as a bug because it is not exactly what they want. If that is the case, the responsibility is for the OP himself/herself. However, if the bugs come from misinterpreting of the spec or incomplete implementations, it could be from the developer. I said it could be because there are some cases that the spec is not written clearly. This then refers back to what I said earlier, how excellent the spec writer the OP is?

      And this raises the big question that I haven't seen raised elsewhere: does "I do not pay for bugs" mean "I do not pay to fix bugs" or "I do not pay to identify bugs"? This, I suspect, is where the real problem lies.

      Manager: The client has reported a bug. Your problem — find it and fix it.
      Contractor: How do you know it's my problem? And are you sure it's even a bug."

      Anyone running a per project contract needs to have a clause included about bug discovery/verification: the contractor should be safe in the knowledge that if he can provide evidence that the bug isn't his, he'll be paid for the time he spent investigating. Most professional software support contracts I dealt with had such a clause -- I could phone up their support line and if it was a bug, we wouldn't be charged; if it was user error, we'd be charged for the time spent investigating. If it was a change request, we'd receive an invoice for time investigating and a quote for the CR implementation. Some of the more generous companies would agree to waive the investigation time if we signed off on the CR....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    158. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      You said you were a programmer once. What made you leave the field?

      Repetitive strain injury. A quick sideways move into desktop IT management saved me from the big old axe marked "redundancy". I'm heartily sick of desktop IT now though...

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    159. Re: Have u thought about.. by CptNerd · · Score: 1

      I wish I had mod points, this is exactly right.

      Do they even still teach the Halting Problem in Computer Science these days?

      --
      By the taping of my glasses, something geeky this way passes
    160. Re:Have u thought about.. by minstrelmike · · Score: 1

      ditto.
      That's the first thing I thought of, some cowboy programmer that 'always' wrote perfect, bug-free code and now he has moved ahead to writing perfect, bug-free specifications. ha ha ha (I'm a mathematician. Want me to validate your specs? It will cost you and I'll bet they aren't bug-free).

    161. Re: Have u thought about.. by slashdotwannabe · · Score: 1

      ...and negotiating holding a certain % of their pay in escrow until bug fixes are in? That's the stick. To add a carrot, negotiate a bonus for meeting certain schedule and quality benchmarks.

      --
      This comment is my opinion and does not represent an official position of Donald Trump or others I do not work for
    162. Re: Have u thought about.. by rpstrong · · Score: 1

      I'll second that. Programmers (including myself) tend to test for what works, not for what breaks. I'll always remember a guy I that I used to work for who'd include the "cat" test when he tested my code: What would happen if a cat wandered across the keyboard? That is, he'd just bang randomly on the keyboard and see what happened.

    163. Re: Have u thought about.. by localhost8080 · · Score: 0

      :D this. exactly.

    164. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      I'm no longer responsible for the code I wrote once the customer has accepted it. Acceptance is based upon their testing. If they choose, they can pay for a sustainment contract which will guarantee my continued support. Other than that, they got what they paid for. Analogies don't work across different fields. There are best practices in every one, and at first glance, my take is that the OP is doing it wrong, but I'd need more details.

      Again, that's all down to the specifics of the individual contract. And again, whenever there is a transferral of risk from one party to another, it's reasonable to expect the risk to be accompanied by additional reward.

      Properly managed risk is a profit to the party assuming it -- the sum total of insurance premiums paid in a year is higher than the total of insurance payouts. A contractor (in any sphere) who assumes risk should increase his margins to ensure that in most foreseeable circumstances, he ends up getting paid more per hour than he would have got if he'd taken the work as T&M. The risk he's taking is on catastrophic problems... and as we're talking software development that would probably mean the developer being hit by a car, in which case getting paid nothing (because he's forced to hire someone else in to do the work while he's in traction) is the least of his worries. And besides, any contractor with any understanding of risk will have professional insurance to cover contracts incompleted due to personal injury or death anyway.

      Moral of the story: the money's all in risk management.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    165. Re: Have u thought about.. by alexo · · Score: 1

      This is only true for suitably strict definitions of the term "bug".

      That's the definition that I, and all places I have worked at, use.

      O/S changes, configuration changes, hardware changes, data changes, requirements changes can all lead to "bugs" that should not be covered under the initial terms of development (and are rarely covered under the initial development contract).

      Those are not bugs.

      I have yet to see the customer that wants to pay to have the developer specify "exactly" how software will perform.

      The customer is the one providing the spec.

      Additionally, requirements can be misinterpreted between the customer and developer, such that the developer believes the system is working perfectly, while the customer thinks it is broken.

      Ambiguous or incomplete specs are usually the fault of the customer. Other than that, there are accepted ways of handling contract disputes.

      Look and feel "bugs" may exist where the customer expects a certain usability that is either non-standard or not explicitly covered under the requirements.

      The onus is on the customer to clearly communicate their expectations.

      The problem is he OP hasn't specified exactly what kinds of bugs he won't pay for.

      My assertion was independent of the OP's post. However, I would use the interpretation "implementation errors".

      If it is a case of scope creep, poor requirements, poor communication of requirements, new operating environments, new data configurations, etc and he wouldn't pay, then I'd hesitate to work for him either.

      Can't fault you for that. However, a good developer should be able to resolve a lot of ambiguities by either asking for clarifications or documenting their assumptions (and having the customer vet them). This should be done before writing code.

      A much better practice would be for him to pay for bugs, but be choosy on which developers he re-uses. In any other profession, the cost of "mistakes" are passed along to the customer.

      Not on the planet I inhabit. Of course they may try to pull it off, but that would be a scam.

      While building a new building, if the electrician installs a plug then realizes "oops, this is supposed to be a GFCI plug", it's not like he stops the clock, goes and gets a new plug, removes the old plug, installs the new one and restarts the clock. He gets paid for the cost of his "mistake".

      A friend of mine hired a contractor to put hardwood floors in his house. At some time before the job was finished, he noticed that the contractor was using thinner planks than he requested (and paid for). At the end, the contractor redid the floors at his own expense. This is as it should be.

    166. Re: Have u thought about.. by alexo · · Score: 1

      There is no way you have software development experience with that mindset. You put together routines that are based on user intervention. You can never anticipate every possible combination of actions an end-user will do and what issues may arise from all the various functions you wrote. That's why you have user acceptance testing. Bugs aren't there b/c they were "put" there. That's not at all how it works. Educate yourself before you start bashing people. This isn't like painting a fence.

      I don't know the intricacies of painting fences but I've been developing software for a living since the late 80s. I assure you that I do not hold others to higher standards than I am held to.

    167. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      Is that one hundred thousand (US decimal) or is it one hundred (Germany)?

      The German decimal notation wouldn't be strictly an integer though, would it...? And assuming the UK/US notation is not going to compromise the operation to the mainland Europe spec anyway. Document assumption, move on.

      --
      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. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      Are you even able to see the crashing non sequitur in that?

      It's not necessarily a non-sequitur. You may believe the two to be incomparable, but there is a strong argument against that. The human filter of perception is highly fault tolerent. You know what that last sentence means even though I misspelt the word "tolerant". You have no problem because there is no other likely interpretation of my sentence -- the meaning is unchanged. But the writer, or the coder, isn't restricted to meanings that are clear and ambiguous on the paper, because he already knows what it means -- he wrote it, after all. That known meaning can drastically alter his perception causing him to miss the error. I remember debugging someone's code years ago, and it took me all of five minutes to find the error, but it took at least 15 to convince the guy that wrote it that he'd inserted a single unneeded minus sign and turned 90 degrees clockwise instead of anticlockwise....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    169. Re: Have u thought about.. by Half-pint+HAL · · Score: 1

      The big problem with bug support isn't the cost of fixing the bugs, it's the overhead in finding and verifying, because more often than not what you've actually got is a user who's made a silly error and has immediately assumed it's a bug, reported it as such, provided insufficient detail and then is unwilling to really help you find out what's going because "I told the last guy everything. I haven't got time for this. Come back to me when you've fixed the problem." The strategy taken by many of the bespoke and specialist development houses I've had to deal with is to write costs into the contract for investigating false reports as support calls.

      Handled well, this can increase your profits, while giving the customer the assurance of "free bug fixes forever", because you not only get the reliable income stream of user error ;-) , but you also get a constant stream of bug reports that are really change requests, and you get the opportunity to quote for constant improvement. And you can generously offer to waive the call costs if they approve the CR. If they weren't reporting "bugs" to you, you'd never find out about these opportunities.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    170. Re: Have u thought about.. by Shadowmist · · Score: 1

      If you want that kind of guarantee, you have to be willing to pay for it. The responsibility is ultimately not the contractor, but YOU the person who's running the shell company pretending to be a software developing house. Since all you've done is essentially rent out a contractor to do the work that a publishing house would normally do in house, you only rented him for a contracted period of time. You're not supporting him on staff, so unless you work out a maintennce contract what you pay for, then you don't have an indefinite claim on his time and life for the finite sum you paid. You get exactly what you pay for. It works both ways. If you contract me to write software for you, you get a certain amount of work for a contracted amount. If it includes support, that will be part of the contract and will factor in the price. If you don't pay for anything other than the work done, than that exhausts any obligations between you and I. In the company I worked for, we paid an outside contractor to maintain and support our database as a long term ongoing partnership, he not only installed it but provided ongoing maintennce and updates because he was being paid to do so, a mutual arrangement that worked quite well. It's also why you don't do fly by night operations for major projects, it's why Microsoft does it's work in house. So lets leave big ticket development projects out of comparison because those are strawman arguments.

    171. Re: Have u thought about.. by alexo · · Score: 1

      If you want that kind of guarantee, you have to be willing to pay for it.

      The price is negotiated and specified in the contract, yes.

      The responsibility is ultimately not the contractor, but YOU the person who's running the shell company pretending to be a software developing house. Since all you've done is essentially rent out a contractor to do the work that a publishing house would normally do in house, you only rented him for a contracted period of time. You're not supporting him on staff, so unless you work out a maintennce contract what you pay for, then you don't have an indefinite claim on his time and life for the finite sum you paid.

      What the hell are you talking about?
      I don't run any company and I don't rent out any software developers.
      Lay off the dope for a moment and check my posts in this thread. I am not AC so I'm easy to follow.

      If you contract me to write software for you, you get a certain amount of work for a contracted amount. If it includes support, that will be part of the contract and will factor in the price. If you don't pay for anything other than the work done, than that exhausts any obligations between you and I.

      Should I ever contract a SW developer (not likely, but let's assume), you or otherwise, I would expect the finished product to be fit for purpose and work "as advertised", that is: as laid out in the spec. The contractor will then tell me the time they need for delivering the project and the price they will charge me. If I am satisfied with those, we will have a deal.

      However if, some time(*) after the contractor delivered, the application crashes because a user ID happened to be a Mersenne Prime, then the program does not perform as specified, ergo: terms of the contract have not been met and I would expect the contractor to fix it for no additional cost.

      (*) One year sounds reasonable to me.

      In the company I worked for, we paid an outside contractor to maintain and support our database as a long term ongoing partnership, he not only installed it but provided ongoing maintennce and updates because he was being paid to do so, a mutual arrangement that worked quite well.

      See my example above. If the program would crash because the US government decided do add another digit to SSNs then the contractor could argue that it is a specification change and fixing it would require a (new) maintenance contract. The same would hold OS upgrades, DB provider changes, change requests, bad specs or any other circumstance that is outside the contractor's control. Bugs, that is: implementation ERRORS, do not fall in that scope.

  2. Stop being cheap. by Anonymous Coward · · Score: 0

    Pay for the bugs. Done.

    1. Re:Stop being cheap. by Big+Hairy+Ian · · Score: 1

      Alternatively can I have double time when the bugs are in the specification or the client moves the goalposts?

      --

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

    2. Re:Stop being cheap. by gatkinso · · Score: 1

      Find a new job. Done.

      --
      I am very small, utmostly microscopic.
    3. Re:Stop being cheap. by scrib · · Score: 2

      The specs are never as good as the spec writers think they are.

      I've been a developer (contractor and employee) for nearly 20 years and have never seen specs that clearly defined everything. In any project of notable size, there are always huge portions of "it's obvious what I want," often with the UI. Spec writers are generally terrible at thinking about "edge case" behavior, focussing on the "normal flow" and trivializing the "alternate flows."

      Why do you think the OP always has battles at the end of the project?
      You find bugs in the code during development and testing.
      You find bugs in the spec when you deliver.

      --
      Help! Help! I'm being repressed!
    4. Re:Stop being cheap. by MrMickS · · Score: 3, Interesting

      The specs are never as good as the spec writers think they are.

      I've been a developer (contractor and employee) for nearly 20 years and have never seen specs that clearly defined everything. In any project of notable size, there are always huge portions of "it's obvious what I want," often with the UI. Spec writers are generally terrible at thinking about "edge case" behavior, focussing on the "normal flow" and trivializing the "alternate flows."

      Why do you think the OP always has battles at the end of the project?.

      Given the spec is incomplete, and your experience, wouldn't best practice be to analyse the requirements at the start and identify those edge cases and get decisions on them before starting.

      Whilst building out large systems I have written functional specification and detailed designs for clients that, in the end, stated absolutely what would be done and how each interface would look and perform. This made implementation simpler, because all of the decisions where made up front, and gave something to test against when completed.

      Way back in the early '80s when I got my degree the thing that was placed into our heads was to spend 90% of the time designing, 5% coding, and 5% testing. These days we seem to dive into coding way too early.

      --
      You may think me a tired, old, cynic. I'd have to disagree about the tired bit.
    5. Re:Stop being cheap. by Anonymous Coward · · Score: 0

      The whole software supply-chain would be much better managed if everyone was held properly accountable for their failure to produce code to the contracted specs.

      You really aren't as knowledgeable as you think you are.

      My last project was four million lines of code, and I've worked on projects as large twelve million lines of code, strewn across multiple languages and frameworks... and in fact things are so complex that it's damned near resembling emergent behavior when you get a bug. 'Contracted specs'? I'll bet that with the exception of the most trivial of projects I can eat your specs for breakfast and show you just how retarded you are.

    6. Re:Stop being cheap. by scrib · · Score: 1

      Given the spec is incomplete, and your experience, wouldn't best practice be to analyse the requirements at the start and identify those edge cases and get decisions on them before starting.

      Sure, that would be best practice. (Although, in reality, you often have to start coding the normal flow before all the edge cases are known just to meet deadlines.) I suspect OP isn't hiring contractors who will give him that bitter "90% of the work is before I start writing code" pill.

      The OP is looking for someone who works cheap, can divine intention from specs, and knows everything but how to find clients themselves.

      --
      Help! Help! I'm being repressed!
    7. Re:Stop being cheap. by Ash-Fox · · Score: 1

      Way back in the early '80s when I got my degree the thing that was placed into our heads was to spend 90% of the time designing, 5% coding, and 5% testing.

      Waterfall development methodology pale compared to Agile in my opinion.

      These days we seem to dive into coding way too early.

      Better to have something done than nothing at all in my opinion.

      --
      Change is certain; progress is not obligatory.
    8. Re:Stop being cheap. by plover · · Score: 1

      The specs are never as good as the spec writers think they are.

      I've been a developer (contractor and employee) for nearly 20 years and have never seen specs that clearly defined everything.

      Given the spec is incomplete, and your experience, wouldn't best practice be to analyse the requirements at the start and identify those edge cases and get decisions on them before starting.

      The fact is that no set of specs are ever perfect, and the dangerous fallacy is in believing that they can be made perfect. And even if you can hone and polish them to a glistening perfection today, the problem domain the design is addressing will often change between the time the specs are written and the time the software is delivered.

      Specs have several kinds of errors: errors of omission, conflicting requirements, and incorrect requirements. Design activities can identify conflicts, but often can't find the others.

      Way back in the early '80s when I got my degree the thing that was placed into our heads was to spend 90% of the time designing, 5% coding, and 5% testing. These days we seem to dive into coding way too early.

      The figures of "90% design, 5% code" is very much tied to physical world engineering, and is valid advice when you're creating an unchangeable physical thing like a car or a bottle-forming machine. But think about how much computers have evolved in the last 30 years - it shouldn't surprise you to learn that software development methodologies have evolved as well. Unlike hardware, software is infinitely flexible, and changes can be made cheaply and continuously throughout the life of a product. So instead of spending 90% of project time on Big Design Up Front, iterative or Agile project management methodologies and flexible design methodologies such as Test Driven Development leverage the facts that the world is constantly changing, software is infinitely flexible, its design is malleable, and having fully automated tests enables rapid changes and continuous deployment. By writing a test first, you ensure that requirement (as received) is being met. Understanding that coding is a design activity (and not a construction activity - construction happens when you click "build") is key. By applying good design principles, code can be refactored from a functioning solution to an elegant design, and this activity takes place iteratively during coding.

      --
      John
    9. Re: Stop being cheap. by Anonymous Coward · · Score: 1

      Yeah, that's called The Waterfall Model and over the years, especially through the 1990s, we've come to realize that in most cases, except avionics and space flight control, you almost never spec out the system that gets built before hand. You spend too much time updating the spec to match the realities of the business objectives, which also change over time.

      This has lead to the rise of Agile methods that accept you cannot and don't really want to specify in detail the whole product up front.

      Build in sprints with tests, refactor older code based on the latest understanding of the product by the stakeholders and write more tests. It seems to be a better model and leads to a convergence on the product where the stakeholders can determine during development whether a particular feature has merit or should be modified to fit the business goals.

    10. Re: Stop being cheap. by rschmitt · · Score: 1

      Yeah, that's called The Waterfall Model and over the years, especially through the 1990s, we've come to realize that in most cases, except avionics and space flight control, you almost never spec out the system that gets built before hand. You spend too much time updating the spec to match the realities of the business objectives, which also change over time. This has lead to the rise of Agile methods that accept you cannot and don't really want to specify in detail the whole product up front. Build in sprints with tests, refactor older code based on the latest understanding of the product by the stakeholders and write more tests. It seems to be a better model and leads to a convergence on the product where the stakeholders can determine during development whether a particular feature has merit or should be modified to fit the business goals.

    11. Re:Stop being cheap. by Anonymous Coward · · Score: 0

      Given the spec is incomplete, and your experience, wouldn't best practice be to analyse the requirements at the start and identify those edge cases and get decisions on them before starting.

      Who is going to pay for this analysis? Keep in mind that identifying even frequently occurring edge cases is going to require domain expertise that is beyond what any programmer is bringing to the table. It is NOT reasonable to expect the contractor to subcontract a review of the specifications to some competitor of his client--- but how else can he be reasonably sure that important edge cases are identified?

      A programmer has to code to the specifications stipulated in the contract. Edge cases that are not identified in the specification need to be treated as modifications of the original contract, with appropriate increase in payment. The contract can and should specify how such amendments will be negotiated. This suggests that the contract should often be in two phases: delivery of a "final candidate" that meets all stated specifications on a stated date completes one phase, and is paid for as soon as it is proven that it meets all specs. The client then has a specified window to identify unexpected edge cases or other problems, and these are addressed by a negotiated extension to the base contract. The terms of these negotiations should be stipulated in the original contract.

    12. Re:Stop being cheap. by dcw3 · · Score: 1

      There's a difference between having your customers beta test your products and selling a product that's fit for purpose. MS is infamous for the former, not the later.

      --
      Just another day in Paradise
    13. Re:Stop being cheap. by Anonymous Coward · · Score: 0

      It's possible to produce a car that will keep the occupant alive in virtually any crash. These cars exist. You probably don't have one, because you can't afford, say, a Ferrari. Consider that an operating system A. requires more flexibility and extensibility than a car, and B. probably won't kill you when it fails. Do you really want to pay three to ten grand for a Windows license instead of three hundred bucks? Even if you answer yes, do you think enough people would pay that amount for Windows to be produced to that degree of quality while maintaining an economy of scale?

      When you talk about bug-free software, you sound like a manager, or at best, a sysadmin.

    14. Re:Stop being cheap. by Half-pint+HAL · · Score: 1

      When you talk about bug-free software, you sound like a manager, or at best, a sysadmin.

      I prefer to think of myself as an "enlightened user". I don't want to be sold the latest bells and whistles. I don't want to be sold a new revolutionary version of Office that is faster for the untrained user to use, but slows things down for the power user. I don't want change for change's sake. I want to see software that lasts, and doesn't feed this constant replacement cycle when I'm still doing more or less the same crap I was doing ten years ago. Yes, my photos are bigger and have higher colour depth. But the sort of grunt my multicore, multimegahertz 64-bit machine has would have made the SFX team of Terminator 2 green with envy, and yet it still takes forever to insert a bloody gif into a word processing document!

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    15. Re:Stop being cheap. by minstrelmike · · Score: 1

      Design is the only part of the process where it is _possible_ to add value faster than you add costs.
      Every other piece of the development process incurs more costs than value.
      Perhaps more 'unpaid time' developing better specifications (design) would be a solution.

      sorry, I forgot, the OP's specs are always perfect. Must be something else going wrong.

  3. Wake up by Cenan · · Score: 5, Insightful

    Waking up would be a good solution to your problem. You don't pay for bugs? Oh shut the fuck up, if your specs were so masterfully created there would be no bugs. Own up to your part of the miscommunication and deal with it. Put a fault tolerance number into your contracts if your too much of a douche bag to realize that working with humans creates mistakes.

    --
    ... whatever ...
    1. Re:Wake up by merovingi · · Score: 3, Insightful

      It's good to vent out our frustrations and anger on others especially when they are asking for ideas.

    2. Re:Wake up by KraxxxZ01 · · Score: 5, Insightful

      Signed. Also "empathy for developers" and " I do not pay for bugs" does not compute.

    3. Re:Wake up by Joce640k · · Score: 3, Insightful

      if your specs were so masterfully created there would be no bugs.

      does not compute.

      --
      No sig today...
    4. Re:Wake up by Anonymous Coward · · Score: 1, Interesting

      Take negativity out, and you pretty much get the answer.
      Where people are involved - there will be errors, and in computers they are called bugs.

      Also, perhaps hiring someone bright who knows most of languages you need? If you are good with people, which i personally doubt, paying for him to learn one or two languages can also be a solution.(lets say, he has no job to do, he got spare time, make him learn those unusual languages) Don't get me wrong, i am average basement dweller, and i have 0 experience in business, but you needed 3rd party view, I gave my best shot.

    5. Re:Wake up by Anonymous Coward · · Score: 0

      pardon my English. i need to sleep or free coffee, as in one of recent slash dot readings. no free coffee for me :(

    6. Re:Wake up by hinchles · · Score: 1

      I don't pay for bugs either! My standard contract for contractors is that the project must be completed to specification (I allow for overruns and spec changes etc) but I expect the final product to be defect free at sign off and the contractor to provide bug resolution and support on any code they have produced at no additional cost.

      Expecting someone to pay for bugs is like buying a new car with a broken gearbox then having to pay for a new gearbox ontop of the initial purchase.

    7. Re:Wake up by Anonymous Coward · · Score: 0

      " I market myself", "empathy for developers." , "I do not pay for bugs" and "Every project ends up being a battle".
      This is uncanny! Last time I looked up "asshole incompetent project manager" in OED that is what was written there!

    8. Re:Wake up by Half-pint+HAL · · Score: 1, Offtopic

      Oh shut the fuck up, if your specs were so masterfully created there would be no bugs.

      If your post wer so well ritten their wood bee know mis-takes in my response.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    9. Re:Wake up by Anonymous Coward · · Score: 0

      I don't agree. In any other line of business, you have warranty repairs. Why shouldn't this apply to software development? If the software isn't according to specs, the customer shouldn't have to pay extra for having the developer fix it. I know this isn't how it's usually done, but there's no reason why it shouldn't.

      There will always be disputes regarding what is a bug covered under warranty and what's not, but that would be just as common anywhere else.

    10. Re:Wake up by Anonymous Coward · · Score: 0

      This.

      Sounds like the project 'manager' needs to be more involved in the project development process if multiple projects are reaching deadlines with unresolvable bugs or specification functionality gaps. Also, depending on where you are in the world, the behaviour of the OP might be considered illegal.

    11. Re:Wake up by complete+loony · · Score: 4, Insightful

      If your customers are complaining about bugs, and those conditions are covered by your spec, then you are at fault for not catching it before giving it to the customer. You must verify that the delivered code matches your spec.

      Either write automated tests based on your spec yourself, or get a developer to write them and review them yourself. Otherwise you will have to test everything manually, every time they deliver you new code.

      But even then, your customer may encounter issues that you didn't test for.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    12. Re:Wake up by jellomizer · · Score: 3, Informative

      Bugs happen even with the best developers.
      Not factoring in the cost of fixing bugs into your project is your mistake not theirs.
      Often these bugs are not true bugs but misinterpretation of the specs, and needs to be reworked.
      Do you rehire good contractors or at least give them as recon adaptions? If so the idea that these contractors will write bugs intentionally just to make money, is rather silly, as they are risking their future jobs.
      If you are so masterful yourself and you are also the boss, you should see what the bugs are, and if they make sense, to have happen or if they are just blatantly put in.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    13. Re:Wake up by ShakaUVM · · Score: 3, Interesting

      >Waking up would be a good solution to your problem. You don't pay for bugs? Oh shut the fuck up, if your specs were so masterfully created there would be no bugs.

      It's very likely that his developers are, in fact, not perfect, but don't have an incentive to bug fix after they got paid.

      Solution: Don't give them the final payment until the customer signs off on it.

    14. Re:Wake up by jellomizer · · Score: 5, Insightful

      Well half of the article is boasting how great he is.
      The next part is saying he doesn't trust his work force.
      Then he gives a vague business idea without much numbers.
      And phrased in in a form of advice.
      Sorry, he is only going to get ridiculed for being a pompas ass.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    15. Re: Wake up by Anonymous Coward · · Score: 0

      that is a terrible analogy. cars are not bespoke equipment like software, they are commodity items

    16. Re:Wake up by Anonymous Coward · · Score: 1

      This is what is "wrong" with IT in general.

      In what other industry in the world would it be acceptable that a consumer of services be expected to pay to put right defects and problems with a supplied product? If I go into a shop or store and buy an item such as a pair of trousers which doesn't have pockets and I'd asked for a pair of trousers with pockets then I wouldn't expect to pay for pockets to be sewn in.

      It is absolutely true there is a difference between a bug and a feature or capability that was never requested but your attitude fosters sloppy coding, poor practice and displays a complete and utter contempt for the person who is PAYING YOU.

      Seriously, if I've asked you to code a widget that does xyz and y doesn't work I'd damn well be expecting you to fix it at YOUR expense, not mine. It requires an excellently well written and clear brief, clearly defined specs and all those good things of course but end of the day if I've asked you to code x, you quoted me a price to code x that I've agreed to then when you finish x I damn well expect x to do everything I've asked for without defects or bugs. To come and state the individual has "misconceptions" because he expects something he has paid for to, well you know, work is just as bad and perpetuates the disgraceful state of affairs (or great PR job depending on your view) the software industry has managed to convince the law makers to adopt.

      G

    17. Re:Wake up by Anonymous Coward · · Score: 0

      If you think I would give you any work based on your post above, you're mistaken.

      No one is saying humans don't make mistakes, but if I'm paying for a job they better be minimized and that sounds like what this guy is dealing with. He's dealing with trying to be very fair with his guys, and they are pushing back at the point where they have him over a barrel.

    18. Re:Wake up by Anonymous Coward · · Score: 0

      Having been a dev and test lead for many years this smacks of the 'I only write stuff' attitude I encountered in what I termed 'coders' not 'software engineers'. Software engineers, in my book were the folk who understood the job is not done until it meets the need (not necessarily the spec) and is to the correct quality.
      If you don't care about the quality of your output I struggle to see how the industry will progress?

    19. Re:Wake up by BasilBrush · · Score: 5, Insightful

      Expecting someone to pay for bugs is like buying a new car with a broken gearbox then having to pay for a new gearbox ontop of the initial purchase.

      No. A car is a mass produced vehicle. That gives you one standard for what to expect.

      Contracting a software project is a one off, bespoke item. Built to your stated requirements (which are unlikely to be perfect in themselves.) It's not rational to have the same expectations as a mass produced item.

      A better analogy would be builders building a house based on your drawings. And I hope you ARE a qualified architect.

      Now I'm not saying that you wouldn't expect builders to come back and fix flaws. Of course you would. But it wouldn't necessarily come in with the original price. There would be a discussion about who's fault it was that the flaw happened.

      But my main point is it's foolish to expect the same flawlessness from a bespoke item built to your specification, and a mass produced item.

      Come to that, you could have a car analogy, but it would have to be a custom car, again built to your drawings. And if you expect that not to have flaws...

    20. Re:Wake up by Cenan · · Score: 3, Insightful

      Correct. You agree up front what kind of repairs the retailer is responsible for. You don't come running when it turns out that the windmill you thought you ordered turns out to be a batch of tulips. You word the contract appropriately, and you have a process to verify that what has been delivered is the actual wanted product. Saying "I don't pay for bugs" is more telling than anything that this guy has NO process, and no clue.

      --
      ... whatever ...
    21. Re:Wake up by CptNerd · · Score: 4, Insightful

      Most of the time the customer asks for xyz and doesn't tell the developer about w, and complains that it's not there. Or the customer forgets to tell the developer that their data integrity isn't checked, and that data outside the spec sometimes slips in. Sometimes the customer forgets to mention that other systems are used with the data and will sometimes make changes to the data that weren't documented in the spec. Putting all the blame on the developer is nice from a pure management perspective, but it breaks too often in the real world.

      --
      By the taping of my glasses, something geeky this way passes
    22. Re:Wake up by Bearhouse · · Score: 5, Interesting

      Well, a little rude, but not totally wrong.

      1. I've been told I write "excellent" specs before; notably on one project where the devs then went 3x over budget, (estimated AFTER they had read the specs). Even before this experience, I never believed such a thing as an "excellent" spec existed. A little humility, guy...I'm sure you're good, but is everything you do "excellent", everywhere and every day? Anyway, spec has very little to do with the ability of the team to translate into code. I've known plenty of people capable of turning a bad spec into good product, and vice versa.

      2. As the OP said, add a realistic budget into your contracts for testing & bug-fixes. That will help you build loyalty into your core team of contract devs. You're better off sticking with a regular team who you can trust, especially as you're asking for a very wide competency base.

      3. Don't hire fixed costs; they'll kill you, and it sounds like your hiring criteria are totally unrealistic anyway. Also, your logic is flawed; why would you be prepared to pay a salaried employee to fix (his/her) bugs, but not a contractor?

    23. Re:Wake up by Cenan · · Score: 4, Insightful

      Of course you fix your bugs - this guy however signs off on code and then expects to be able to un-sign off on it at a later date. That is not how sane software development works. You boil down tests in every phase to a yes/no response, and that is your basis of signing off. If he signed off on shit, then it later proves to be shit, then that is all on him for not doing proper unit/integration/acceptance/whatever testing. So yeah, again, fuck him - his type is what is wrong with software development - he acts the middleman and peddles absolute shit to paying customers and expects to pass the turd on to someone else.

      --
      ... whatever ...
    24. Re:Wake up by Cenan · · Score: 1

      No - he is dealing with his own lack of a process model. I wouldn't take work from him or you either, what I would do is go straight to your customer and offer a better product at a cheaper price, because I know process models and I just cut out the greedy middleman.

      --
      ... whatever ...
    25. Re:Wake up by Anonymous Coward · · Score: 0

      IT is common in construction to not pay for defects and they don't pay for deficiencies in the spec. You must make a working system.

    26. Re:Wake up by Cenan · · Score: 2

      I certainly care about the product I deliver. I don't care much for middlemen though, and I certainly don't care for middlemen who thinks their job is done when they deliver the specification. Where was the acceptance testing? Why was this code signed off on? Why does he even have this problem to begin with? He sets himself up to sound like a fucking legend, yet it smells to high heaven of greed and incompetence.

      --
      ... whatever ...
    27. Re:Wake up by Cenan · · Score: 3, Informative

      Yeah, and more importantly he needs to agree with his contractors on what a "deliverable" is, and when one is "done". He might be the victim of poor developers, but since his entire business model is "shopping around" for developers, that's all on him.

      --
      ... whatever ...
    28. Re:Wake up by terminal.dk · · Score: 1

      Not only that, if he is such a master as he claim to be, he would detect the bugs when things moves along, and there would not be the pile in the end.
      IMHO most of the "bugs" are not really bugs, but changes. Customer don't like that button etc. Most often when the product does exactly what is specified, the customer is unhappy. That is what comes from pre-project specifications. Expect 50-100% extra time making things like the customer wants it, rather than what he told you he wanted.

      Or change development method. Pragmatic programming / LEAN etc. Have the customer (or yourself if you think you can read the custumers mind) see the intermediate results / the developing prototype, and they can change things as they go along. Total price will probably be cheaper.

    29. Re:Wake up by Kjella · · Score: 3, Insightful

      As a general rule there's two kinds of contracts, fixed bid and time&material. The former usually means a predefined scope at a fixed price, formal change orders and bug fixes are usually free within a given testing period. The other is basically "do whatever I say" and yes I will, but I don't own the specification and I'm not making any sign-offs on what I'll deliver - I just work hours for you. You get various forms of hybrids - I consider agile one of them - but that's the archetypes. I've coded off "specifications" that were a yellow post-it note, rushed it to production with hardly any testing or documentation and if it works for them it works for me. If you're overall not happy with my work stop the contract, but I charge you every hour even when I'm bug fixing my own work.

      It sounds to me like you're asking for the best of both worlds, contractors that'll work regular hours during most of the project and do bug fixes for free at the end. That is going to be trouble, every time. Hell, when you say "programming project manager" I'm starting to think they're not even in full control of the code, far less the spec. Contractors tend to love repeat business, have you them coming back for more? No? Probably because they feel railroaded by the process. Do your contractors ever reject your specs? Can they reject your specs? Or are you just telling them these are the specs and I'm saying they're good enough, get to work? What about when things undoubtedly come up, is there a formal change process or you just improving or amending the spec?

      Good enough to work by and good enough to sign off on are two entirely different things, try doing a proper fixed bid project and I think you'll find out.

      --
      Live today, because you never know what tomorrow brings
    30. Re:Wake up by Anonymous Coward · · Score: 0

      Cars work as an analogy if the said software sells million licenses per year at 10-20k per license. That way you can also design and code the software for years per version, and have hundreds of thousand developers. Until then the analogy just falls apart.

    31. Re:Wake up by hinchles · · Score: 1

      Perhaps the car route was a little incorrect but the point still stands.

      Obviously anything outside of spec IS paid for that I fully agree with but if I specced the system to add 1 + 1 and your system returns 16 then that is a bug/fault/defect and I'm not paying for it resolving. There is always the muddy ground in the middle where the spec was 99% there but missed one thing and thats open to discussion I've not found a contractor yet that wouldn't do say "10 mins extra" just to finish off that little bit to keep me happy so I'll reuse them again.

      There's abit of both ways here and both sides have to agree, but out and out bugs aren't paid for as you're providing a product that "isn't fit for purpose" the purpose being the spec. Now if your product meets the spec 100% and still doesn't function as the end user requires or the spec writer expected then thats not a software bug that mis specced and I (not saying what others do here) would certainly be paying for it as its been MY fuck up not the contractors.

      I say the above as someone who contracted as a software developer for 20 years and I'm now the owner of a software development house with 20+ inhouse developers. I use contractors when I need additional hands on to deliver larger projects within required time scales. (Note I say contractors not freelancers as most people mix them up)

    32. Re:Wake up by Cenan · · Score: 5, Insightful

      Well, a little rude, but not totally wrong.

      Yeah, although that was not by accident at all. Somehow people like the AC who asked the question pushes my buttons. The whole story reeks of a lack of understanding of how software development works, yet it is somehow the fault of somebody else. God forbid he looks at his own process with an eye towards making improvements.

      Some /.-ers see through the smoke and recognize that "empathy for developers" is a marketing stunt because he knows /. - and knows that half the audience is going to eat that right up.

      When asking questions at least be honest and, as with all homework, show the work you have so far. Setting himself up to be some kind of hero defeats the purpose. If he's such a God among mortals, why is he having these basic problems at all?

      --
      ... whatever ...
    33. Re:Wake up by Anonymous Coward · · Score: 0

      The spec often turns out to be wrong, software that solves the problem is generally much better than software that's up to spec. Also goalposts are moved all the time. I think this is a typical case where implementing Agile can lead to much better project management. Basically you involve the customer in the team and let them steer the project to what's most important, if that's fixing bugs, then fix bugs.

    34. Re:Wake up by home-electro.com · · Score: 1

      Yes. If I as a customer can't find any problems with the s/w within a predetermined period of time, then I sign off the project, and all the bugs discovered further down the road will have to be fixed for a fee.

    35. Re:Wake up by Minupla · · Score: 1

      This. I've worked projects where there was a 30% hold back until my work had been signed off, even as a contracted manager.

      That way I still had skin in the game to deliver on the end project deliverables (e.g. documentation)

      Min

      --
      On the whole, I find that I prefer Slashdot posts to twitter ones because I don't get limited to 140 chars before
    36. Re:Wake up by Impy+the+Impiuos+Imp · · Score: 2

      A house builder typically gives 1 year to find problems. After that year, you do a walkthrough with them and show them a list.

      So give support for bugs for a limited time, and then that's that. Bigger companies with ongoing multiple contracts or a desire for more work would be more flexible. Also, slightly different features are not bugs, but sometimes you cover those,!too, for the same reason.

      Ironically, I think it would be easier for an independent contractor to fix their own bugs since they could do it on their own time if necessary. If you bid poorly such that that is costly, over and over after you should have learned, stop being unethical.

      --
      (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    37. Re:Wake up by khakipuce · · Score: 1

      Fact is if he has got a module with bugs in it and he has paid the contractor then HE HAS PAID FOR BUGS. His issue seems to be that he now lost his leverage to get the bugs fixed. He ought to insist that all code comes with a complete set of tests that ensures the code complies fully with the spec. He can then verify/validate the tests, run them and only pay when the the code is "bug free". But that would bump up the price.

      It may be better to pay 50% on delivery and 50% on UAT with the proviso that if the original contractor can't/won't fix it the second 50% will go to someone else who can.

      --
      Art is the mathematics of emotion
    38. Re:Wake up by gatkinso · · Score: 1

      To a point I agree. If the software passes agreed upon acceptance testing, then the relationship is over and payment is due. Should bugs be found during that testing, those bugs should be fixed. However if a bug is found after that point, withholding payment is wrong.

      --
      I am very small, utmostly microscopic.
    39. Re:Wake up by Anonymous Coward · · Score: 0

      Give me any spec and I will point to a requirement that can be misinterpreted in under ten seconds. When you fixed that one, see the previous sentence.

      Writing specs is hard. Much harder than most people think. Unless there is a detailed functional and technical design with pre- and postconditions and an extensive test set available before coding starts, you will have bugs and plenty of them.

      In stark contrast to with most non-technical people think, programming is not the same as typing class.in high school.

    40. Re:Wake up by geoffrobinson · · Score: 1

      Not to mention use cases the spec writer hasn't even thought of.

      --
      Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
    41. Re:Wake up by Atzanteol · · Score: 1

      No. A car is a mass produced vehicle. That gives you one standard for what to expect.

      Contracting a software project is a one off, bespoke item. Built to your stated requirements (which are unlikely to be perfect in themselves.) It's not rational to have the same expectations as a mass produced item.

      So much THIS (replying since you're already at 5). Even COTS software is buggy and it's closer to the analogy of "production line" than bespoke business systems.
      The best specs in the world won't change the fact that a custom system is inherently more risky than you think it is. MOST large software projects fail. Expecting those that don't to be bug-free is just naive.

      --
      "Ignorance more frequently begets confidence than does knowledge"

      - Charles Darwin
    42. Re:Wake up by Anonymous Coward · · Score: 0

      It's good to vent out our frustrations and anger on others especially when they are asking for ideas.

      "Take your head out of your own asshole" is, in fact, an idea. Probably a good one too, since the OP here is clearly suffering from a profound case of cranial-rectal inversion: anybody who's ever dealt with real clients knows that 75% of "bugs" are actually "hey, I didn't tell you I wanted this but I want it NAOW"...

    43. Re:Wake up by Anonymous Coward · · Score: 0

      Also, your logic is flawed; why would you be prepared to pay a salaried employee to fix (his/her) bugs, but not a contractor?

      No, he expects his loyal employees to work overtime, for free, to fix the bugs they created. After all, if the employee had done a good job in the first place, then there wouldn't be any bugs ... right?

    44. Re:Wake up by Andover+Chick · · Score: 2

      Two hallmarks of an extreme narcissist is that they lack "empathy", even if they speak of empathy, and they are self congratulatory. A person saying they write "excellent" specs is clearly an egomaniac and someone asks for bug free code in no way has empathy.

    45. Re:Wake up by Anonymous Coward · · Score: 1

      if your specs were so masterfully created there would be no bugs.

      That's not exactly true. The contracted programmer might not test their code well (I know *I* don't). I also didn't see him say that he expects the code to be bug-free on the first submission. What he did say is that he doesn't want to pay for the bug fixes, and I think that's appropriate. When I bid on a job, I assume that I'm bidding a price for me to deliver code which behaves as spec'd. If I had some bugs, then what I gave them doesn't meet the spec and I fix them for free. If I didn't - if I charged for fixing my own bugs - then I'd be incentivizing myself to either purposely introduce bugs or, at least, not to care much about avoiding them, since they're money in my pocket, later.

      I've also seen a few rants here about how the dude shouldn't be relying on the customer to find bugs, etc. I didn't see him state that, either. I didn't see anything about who catches the bugs. For all we know, he's doing thorough acceptance-testing and he catches all of the bugs himself.

    46. Re:Wake up by darkstar949 · · Score: 1

      I think this is a typical case where implementing Agile can lead to much better project management.

      Sure that might be a good point, but how do you write up the contract for a situation like that? Unless there is an agreed upon endpoint for the project the customer can keep iterating indefinitely without paying anything additional. Going into the contract you need to know what the final product is so you can estimate your time and come up with a bid and you also need to know what the final product should look like so you know when the project is complete.

    47. Re:Wake up by darkstar949 · · Score: 1

      does not compute.

      Why doens't it compute? If someone delivers a perfect specification you should be able to deliver software that meets it without any bugs and any flaws would rightly be a bug in the spec as opposed to the software itself. The problem is that most specs don't take into account edge cases or even worse they want you to interface with $DEVICE_OR_SOFTWARE which introduces a giant hole for the bugs to com in through.

    48. Re:Wake up by bill_mcgonigle · · Score: 1

      Come to that, you could have a car analogy, but it would have to be a custom car, again built to your drawings. And if you expect that not to have flaws...

      "I want it to go fast and look really nice, and get me to the grocery store, take my family on vacation, win on the race track, and get 60 MPG! Can you get this done in 30 days for $12,000?"

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    49. Re:Wake up by meta-monkey · · Score: 1

      But even then, your customer may encounter issues that you didn't test for.

      One could be overly critical and call that "bad spec," because the test case wasn't in the spec. But you can't get a perfect spec any more than you can get perfectly bug-free software.

      More appropriately the cause is "real life" and "human beings." Digital software does not map perfectly to analog reality. Expecting perfect spec or perfect software is madness (except in Sparta, natch).

      His problem is that his contracts are ending too early. Bugs, testing, and changes to the spec are part of the software development cycle. My contracts (the good ones, anyway) extend past go-live. A contract should include planning, development, dev testing, training, and user testing, and he's leaving out those last two parts.

      --
      We don't have a state-run media we have a media-run state.
    50. Re:Wake up by Cenan · · Score: 1

      I've also seen a few rants here about how the dude shouldn't be relying on the customer to find bugs, etc. I didn't see him state that, either. I didn't see anything about who catches the bugs. For all we know, he's doing thorough acceptance-testing and he catches all of the bugs himself.

      Even if that assumption is true, he still has a problem with the contracts he signs. If there is no legal recourse (he does not imply that there is even talk of suing, so I will assume that there is no breach of contract involved) then it means he seriously fucked up his contract. At the very least he accepted a devliverable, paid the money, ran the tests and found the bug (spot the wrong order here?).

      This implies a basic lack of understanding of how software development works, which could lead to the conclusion that

      A) He is fucking with us, and the whole Ask Slashdot is a lie and he is masturbating furiously right now
      B) He has no business being in software development - yet (He could go back to school or ally up with someone more knowledgeable than him).

      --
      ... whatever ...
    51. Re:Wake up by Anonymous Coward · · Score: 0

      It does compute because the author of the article claims that his specs are so great that there is no excuse for there being bugs in the software. Which is of course nonsense.

    52. Re:Wake up by Anonymous Coward · · Score: 0

      He thinks he's one of the 1% - a Job Creator and the world should bow before his munificent magnificence.

    53. Re:Wake up by rjstanford · · Score: 1

      This is what is "wrong" with IT in general.

      In what other industry in the world would it be acceptable that a consumer of services be expected to pay to put right defects and problems with a supplied product? If I go into a shop or store and buy an item such as a pair of trousers which doesn't have pockets and I'd asked for a pair of trousers with pockets then I wouldn't expect to pay for pockets to be sewn in.

      However, if you'd asked for "a pair of trousers" and hadn't specified whether or not it had pockets because you were accustomed to them - even though not all styles of trousers have them - would that still be an issue? There's not delivering code to spec which I would argue isn't a bug, its not an accepted delivery. Then there are issues like the pockets - is that a bug?

      What if you'd specified pockets that you could put your phone into (generic, but it worked) and 3 months after getting the pants you got a new phone that was larger and didn't fit. You didn't specify "current phone" so you could argue that the trousers now contained a bug because you'd specified that they should work with all generic phones, but was that a reasonable expectation to make? Maybe it was, maybe it wasn't.

      --
      You're special forces then? That's great! I just love your olympics!
    54. Re:Wake up by Bearhouse · · Score: 1

      Yeah; get your point. But we both bit the bait anyway...

    55. Re:Wake up by Anonymous Coward · · Score: 0

      3. Don't hire fixed costs; they'll kill you, and it sounds like your hiring criteria are totally unrealistic anyway. Also, your logic is flawed; why would you be prepared to pay a salaried employee to fix (his/her) bugs, but not a contractor?

      Because like any "good" manager that acts like he seems to, he intends to exploit them by not paying them overtime.

    56. Re:Wake up by quetwo · · Score: 1

      If you pay me by the project, I'll fix the bugs until you sign off on it and pay me. Simple as that.

      If you pay my by the hour, I'll charge you for each minute I'm working on your project whether it is for bugs, features or anything else you ask me to do.

      You can't have it both ways. Choose one, and stick with it. The first option removes all risk from you, but at the same time you remove any chance of making additional profit. The second option has lots of risk, but if things work out right, you reap the rewards.

    57. Re:Wake up by Anonymous Coward · · Score: 0

      If I go into a shop or store and buy an item such as a pair of trousers which doesn't have pockets and I'd asked for a pair of trousers with pockets then I wouldn't expect to pay for pockets to be sewn in.

      The problem in custom software is that you're not asking for something which "everyone" expects in a certain way. So, a "bug" may be no pockets because your spec didn't explicitly say "pockets." Or it may be pockets that tear out with more than four quarters because you didn't explicitly state a breaking strength. It may be pockets as deep as the knee, where you can't reach the bottom. Or it may be pockets lined with tinfoil because you didn't explicitly state cotton. Better yet, it may be water soluble pockets that look perfectly good and meet all of your careful specs, but disappear in the wash; or disappear only when washed with a particular brand of detergent.

      Everyone knows what's important for a pocket, because we've all seen thousands of them. We all agree on the general scope of pocket performance and we more-or-less agree on the variability. In custom software, no such expectations exist. Even adding: how many significant figures do you need? Will they be bigger than 1e308? Can the numbers be complex? Can they be entered in Roman numerals? ASCII? Bases other than 10?

      My point is that all of these people trying to equate a software bug to a truck with square wheels, trousers with no pockets, or a leaky roof are making bad analogies. Those flaws are failures to comply with implicit specifications, and very different from WoW crashing when you enter Isle of Thunder with GTX 580.

    58. Re:Wake up by Anonymous Coward · · Score: 0

      Good specs also include verification requirements! Have your contractors bid of modules. Pay your contractors for delivered verified code.

  4. Sounds like a partnership by Anonymous Coward · · Score: 2, Interesting

    You can always offer stock options, a share of the company/profit etc. If you're as good a manager as you say, getting someone on board shouldn't be that difficult.

  5. Hiring? by Anonymous Coward · · Score: 2, Insightful

    How about hiring a decent tester and catching the "bug" a lot earlier?

  6. Outsource to cheaper place. by kampangptlk · · Score: 0

    Outsource to someone who can understand English, has good reputation, from countries with smaller pay / hour.

    --
    àà®à¥à®à¾à¦ààYà¥àà àà
  7. Why don't you pay them like everybody else? by Anonymous Coward · · Score: 0

    ....payment by results, where results involve sign-off for the code after it has passed through the customer's independent test and acceptance process?

    Are you actually saying that you do not have such a process, and that people get paid once they have delivered code which they claim meets your specs? If so, that's where the problem lies...

    1. Re:Why don't you pay them like everybody else? by Ice+Tiger · · Score: 1

      Agree, you need to have some acceptance criteria and process where you pay for functionality that you have deemed acceptable. The product specs and so one would form part of that criteria along with any testing cases to support it.

      Once past that stage any further bugs that come to light after acceptance is a paid for change request as you've accepted the unit of work and have to have taken responsibility for it being deemed correct.

      Software development is like creating a prototype for something new every time, if it wasn't you'd just buy or subscribe to an existing service. It's the nature of the beast that bugs will crop up that might not even be captured until hit by an edge case that the user creates no matter what spec etc have been written.

      Finally you saw what happened at Jurassic Park when the 'I won't pay for bugs no matter what' line is taken :)

      --
      "Because we are not employing at entry level, offshoring will kill our industry stone dead."
  8. Don't do business in California. by Narcocide · · Score: 1

    You will get sued for that crap here.

  9. Try a different approach by Anonymous Coward · · Score: 0

    Well, you should be paying them to fix bugs really... it's analogous to not paying a sports team if they lose. I'd be surprised that you'd get developers of any real quality with that approach, especially if you're mentioning it up front. Despite best intentions and well authored specs even the best developers are going to miss some things. Maybe some Utopian world exists somewhere where bugs don't exist, but it ain't this one. A better approach might be contracting a decent tester to work with your developers?

    1. Re:Try a different approach by Half-pint+HAL · · Score: 1

      Well, you should be paying them to fix bugs really... it's analogous to not paying a sports team if they lose.

      No it's not. A contractor is not an employee, but a supplier. If Amazon sends me the wrong book, it's their mistake. They cover the costs of my return postage and them sending out the correct one. I do not pay directly for their mistake. Instead Amazon track the cost of their mistakes and factor it into their pricing. A contractor should be able to do the same: "OK, I generally make X bugs per 10000 LOC, so I'll need to have a contingency of Y days for this project..."

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    2. Re:Try a different approach by Anonymous Coward · · Score: 0

      A bug in a computer program is not like getting sent the wrong book, it's like an error in a book. Try to return a text book because the proof of theorem 20 is erroneous. Good luck.

    3. Re:Try a different approach by Anonymous Coward · · Score: 0

      It would be analogous if you had a separate team of coders working against you, like it happens in (most) team sports. If anything, I'd say software development is more like golf, where the final result depends solely on your own skill (for the most part) even if, at the end of the competition you get ranked against others. And, still, when comparing to any kind of sport we're leaving out the element of chance or luck.

  10. Completion Bonus by CaptQuark · · Score: 5, Interesting

    Hold back 10-15% of the total cost as a completion bonus. Pay the completion bonus when the project reaches a completion milestone of no critical bug reports for three weeks or version 1.1 coding begins.

    This gives the programmers an incentive to finish the bug testing and getting to a stable release status so they receive their bonus.

    Many contractors have a bonus waiting at the end of a project and know that any mistakes will come out of that bonus. If a new contractor is needed to fix something the original contractor is unwilling to do, then the bonus should be just large enough to pay for the new contractors work.

    1. Re:Completion Bonus by Anonymous Coward · · Score: 1

      Hold back 10-15% of the total cost as a completion bonus. Pay the completion bonus when the project reaches a completion milestone of no critical bug reports for three weeks or version 1.1 coding begins.

      This gives the programmers an incentive to finish the bug testing and getting to a stable release status so they receive their bonus.

      Many contractors have a bonus waiting at the end of a project and know that any mistakes will come out of that bonus. If a new contractor is needed to fix something the original contractor is unwilling to do, then the bonus should be just large enough to pay for the new contractors work.

      I wish to mod this up.

    2. Re:Completion Bonus by Anonymous Coward · · Score: 0

      Now, that's sane.

    3. Re:Completion Bonus by Anonymous Coward · · Score: 0

      Hold back 10-15% of the total cost as a completion bonus.

      I have no up votes to gives but this, a thousand times this. When my customer is happy, I'm happy, and I give you the rest of your money and you are happy and we're all happy. In several projects where I've been on the receiving end of this, it has been as much as 50% at completion. It certainly incentivized me. But that incentive lead to a good product with a happy customer and repeat business even in dark hours of looming deadlines where I wanted to give up and walk away.

  11. Good luck with that! by Kwyj1b0 · · Score: 5, Insightful

    But how can I make that transition? The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"

    So let's see: you want (a) A person who knows a lot of languages, (b) Proficient in all of them - i.e. many years of experience, hopefully very skilled (i.e. not resume padding), and (c) Relatively inexpensive.

    Good luck with that. You can't have all three. Hell, getting one really good developer who is inexpensive is hard. Fresh out of college, sure. Someone who has a lot of real world experience in a lot of languages? Nope.

    Also, since you are talking about difficulties with transition, you want your outside developers to either do a knowledge transfer, or the new guy to spend time reading the old stuff independently - i.e. it will take him/her weeks (if not months) while learning, making it a loss of money early on. If you want to make a clean break (and not support your old work), then you can skip this step (assuming you found someone).

    And finally, you do NOT pay for bugs? Then recover your costs (SLAs) or do your testing and refuse to pay till the code is clean. Saying developers are fine with it till bugs are brought to light means that the developers are not fine with it! And assuming your specifications are great ("there is no excuse for not testing their code") then either the devs are keeping testing to the end, or the timeline is too stringent, not giving enough time for testing. So your project management skills aren't great (you are being optimistic in what you tell your clients as a schedule), or you are picking lazy developers.

    Ever project ends up being a battle...

    So you don't learn from your mistakes either? Why do assume moving things in house will solve all your problems? The common factor for a lot of your projects seems to be you...

    1. Re:Good luck with that! by Anonymous Coward · · Score: 0

      Good luck with that. You can't have all three. Hell, getting one really good developer who is inexpensive is hard. Fresh out of college, sure. Someone who has a lot of real world experience in a lot of languages? Nope.

      Np. Offer a good chunk of the company instead (if it's worth anything, obviously). Many good developers don't need money urgently, but they aren't likely to work for you out of sheer goodwill.

      So you don't learn from your mistakes either? Why do assume moving things in house will solve all your problems? The common factor for a lot of your projects seems to be you...

      A bigger chunk might fix this too..

    2. Re:Good luck with that! by neoshroom · · Score: 1

      As someone whose written apps in the last year in Objective-C, Java, C# and Object Pascal...

      ...and who also knows C and C++, which are really just subsets of Objective C...

      ...and Delphi, which is just a varient of Object Pascal...

      ...and who has dabbled in Python and PHP a bit to make some web-related stuff...

      ...and then like really who couldn't code in Visual Basic or .NET (but who would want to?)...

      I'd like to just point out that all languages these days really aren't that different. Fundamentally you have strings, integers, arrays and the like and you spend a little time learning a new IDE and some syntax and you're more than halfway there.

      And maybe when he says he can't afford $100k/year he means $90k is his max? Probably not....but maybe... ;)

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    3. Re:Good luck with that! by mjr167 · · Score: 1

      Have you tried explaining that to a manager? According to management if you haven't built a major system in it you aren't proficient and can't learn it on the fly quickly. That's why they label as "c programmers" or "java developers", etc.

    4. Re:Good luck with that! by Anonymous Coward · · Score: 0

      A common practice is to have testers that are not the developers.
      So this guy could either do the testing (if he writes the spec he can write the tests) or he could hire a tester that provides more continuous feedback to the devs.
      That has many advantages:
      - independent testers are much better at finding bugs
      - the test harness can be in a different language or at least requires little expertise in the language, so the tester's skill set is less impossible to find
      - the devs can fix bugs while developing and save time on writing their own tests
      - you can link tests with specs very strongly and use tests to illustrate the specs, write formal specs that can be read by your test harness etc, use fitnesse etc.

    5. Re:Good luck with that! by Anonymous Coward · · Score: 0

      Come on. Knowing the language is not about knowing the syntax. It is all about framewroks and librarys. For example I know Java, but could not write some Apache Struts web application, without reading several books and making few apps.

    6. Re:Good luck with that! by charles2678 · · Score: 1

      I'd like to just point out that all languages these days really aren't that different.

      I'd like to point out that you didn't include one purely functional language in that list, or one LISP. If you stick to one family, sure, you can observe commonalities.

    7. Re:Good luck with that! by Anonymous Coward · · Score: 0

      Seriously since you're the asshole that posted this as an AC and are now running around defending yourself, you are even more of a two faced liar than previously thought. Stop lying and trying to fool people and just do decent work and treat people decently, your life will be much better in the long run.

    8. Re:Good luck with that! by Deltaspectre · · Score: 1

      Being proficient in a language is much less about knowing syntax and the IDE and much more about knowing the idioms of the language.

      --
      My UID is prime... is yours?
    9. Re:Good luck with that! by CastrTroy · · Score: 1

      While I admit that the language takes very little time to learn, the programming API can take quite a while to learn. This is the hardest part about learning a new language, and can actually slow you down more than learning the language. I have very little problem doing code in C#, even though I spend most of my time using VB.Net, but switching to something like Java is a pain. Even though the syntax is largely the same as C#, figuring which function to call to get the job done can be very frustrating.

      Add to that the nuances with some languages such as PHP (yes I'm singling it out) where you have to know really weird things about the API, like why you shouldn't call mysql_escape_string but instead call mysql_real_escape_string, but it's ok to call mysqli_escape_string or mysql_real_escape_string because one is just an alias of the other, or how "implode" lets you put the arguments in whichever order you want, which may or may not get confusing based on how the variables are named.

      Also, working in VB.Net, I'd have to say the .Net framework has a lot going for it that a lot of other languages seem to miss out on. The API is consistent and extensive. You don't need 3rd party support to do things like simple date arithmetic (Java, I'm looking at you), and it has a built in support for Base10 Decimal values which makes it really easy to work with financial programming and not have to worry about binary floating point problems. Also, all strings are UTF32 by default, and as are all functions which operate on strings. I really miss this kind of stuff when I go to other languages.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    10. Re:Good luck with that! by Slashdot+Parent · · Score: 1

      And maybe when he says he can't afford $100k/year he means $90k is his max? Probably not....but maybe... ;)

      Depends on the location. In a major tech center (Silicon Valley, NYC, DC, etc.), nobody who is proficient in even one language is going to get out of bed for 90 or even 100k.

      Fundamentally you have strings, integers, arrays and the like and you spend a little time learning a new IDE and some syntax and you're more than halfway there.

      Not halfway, by a long shot. You should be able to learn the basic language constructs in a few hours. But that doesn't mean a thing. Each language has its own idioms, APIs, standard libraries, typical addons, development frameworks, testing frameworks, etc.

      If I sub some Java work out to someone who writes Perl code translated line-by-line into Java, I will reject it for the unmaintainable garbage that it is. If a sub reimplements a JDK or apache commons function, that's a rejection.

      To verify proficiency in a language, I usually ask a few compare/contrast questions in an interview because those are hard as hell to answer if you've just read a "_____ For Dummies" book (e.g. "What's the difference between C and C++?" "What's the difference between SOAP and REST?". That type of thing.). Then, I ask to see one of their projects in that language on GitHub. Generally, that tells me all I need to know.

      --
      They don't grade fathers, but if your daughter's a stripper, you fucked up. --Chris Rock
    11. Re:Good luck with that! by AuMatar · · Score: 1

      When that language family accounts for 90% of all professional development (with the remainder going almost exclusively to Javascript, perl, and php not functional languages) that's perfectly ok. In 12 years I've never seen a functional language used anywhere I've worked. Heard rumors of it, but never seen one put into production. Even the rumors weren't about production, but some one off dev tool some guy wrote for his own use.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    12. Re:Good luck with that! by Anonymous Coward · · Score: 0

      The devil is in the details.

      Sure, all languages during all of history are not and are not going to be but a way to express computations and thus all be 'basically' the same, but the way they implement things varies between languages. Little things like argument passing can change the semantic of otherwise literal translations from language to language, garbage collection strategies can change sensibly the performance of the code, even different architectures or run time environment setups can change how the same piece of code works thus causing bugs that are hard to catch and fix (and even harder to fix without breaking something else).

      Furthermore, support or lack of support for some rich syntax like continuations, reflections, abstract collection operations, anonymous functions, etc. can change the difficulty of expressing a computation (that will ultimately represent a business rule) from trivial to very high.

      Even knowing bugs or non documented behavior in specific versions of compilers and interpreters accounts to expertise in a particular language, thus actual experience in real world projects on a language is very valuable.

    13. Re:Good luck with that! by neoshroom · · Score: 1

      I agree with you. It is also a lot about frameworks and libraries. But a quick Google to stackoverflow will often tell you what you need to implement something in library B that you already know how to do in library A.

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    14. Re:Good luck with that! by neoshroom · · Score: 1

      Is that you, Kermit the Frog? I'm not the AC. From my perspective both you and the original poster are the AC's here. :)

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    15. Re:Good luck with that! by neoshroom · · Score: 1

      I guess everyone has their favorite language. I like ObjC personally. Cocoa also is a pretty nice API.

      Also, doesn't C# share all those features you mentioned about VB.NET or no?

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    16. Re:Good luck with that! by CastrTroy · · Score: 1

      Yeah, C# and VB.Net share most of the same features. I was talking about the .Net framework in general, and only mentioned that I work in VB.Net as a reference point. VB.Net has a few features that C# doesn't have (inline XML for example) and C# has a few features not in VB.Net (Unsafe code blocks). But largely most of the features are the same. Looking at this comparison it seems that there's a lot of stuff in VB that isn't in C#, but C# has very few features that don't exist in VB. However, if you're working with older versions it's important to note that many features were in C# first, such as lambdas and operator overloading.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    17. Re:Good luck with that! by charles2678 · · Score: 1

      When that language family accounts for 90% of all professional development (with the remainder going almost exclusively to Javascript, perl, and php not functional languages) that's perfectly ok. In 12 years I've never seen a functional language used anywhere I've worked. Heard rumors of it, but never seen one put into production. Even the rumors weren't about production, but some one off dev tool some guy wrote for his own use.

      Dunno 'bout you, but quite a lot of places I've been at have deployed installations of RabbitMQ or ejabberd.

      I was also at MessageOne when they built a high-volume real-time metrics processing system in Clojure (which blew the socks off of the Python system it replaced in terms of scalabilitiy -- transactional memory is great for that), and have deployed production code in Clojure at other sites since then.

    18. Re:Good luck with that! by AuMatar · · Score: 1

      Never even heard of either of them. Of course there are a few stories of functional languages being used- they're just a sub single digit percentage of apps.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    19. Re:Good luck with that! by charles2678 · · Score: 1

      Never even heard of either of them.

      I'm a little surprised -- RabbitMQ is one of the most widespread implementations of AMQP, which is what basically everyone [founded after 2000 or so] uses when they want a distributed message queue.

      What do you do? I can't imagine it involves distributed systems.

    20. Re:Good luck with that! by AuMatar · · Score: 1

      I've done a bit of everything (firmware, mobile, back end systems, etc), but admittedly have never set up a distributed message queue. I did work at Amazon for 2 years, they didn't use Rabbit or AMQP for their middleware at that time. No idea if they do now or not. But I have friends who do that stuff and talk shop frequently, and they've never mentioned either. I wonder if its not quite as big as you think it is.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  12. 100k/year sounds low. by Anonymous Coward · · Score: 0

    That said, you could offer principle in your business in addition to direct compensation. Someone disciplined and good probably expects more than 100k/year.

    And now for a derail: There are always bugs, and for a reasonably complex project they're probably most of the actual development time (testing or not). I'm surprised anyone agrees to your terms.

    1. Re:100k/year sounds low. by jellomizer · · Score: 1

      Depend on location.
      In Boston or NYC, that pay is low. In Albany that is a really good salary for skilled workers.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  13. Every project ends up being a battle? by Anonymous Coward · · Score: 0

    Every project ends up being a battle because they aren't writing 100% bug free code first time (for anything moderately complicated no one can) and you refuse to pay them to fix bugs?

    Am I missing the point or is this entirely a problem of your own creation?

    1. Re:Every project ends up being a battle? by Anonymous Coward · · Score: 0

      >for anything moderately complicated no one can

      utter twaddle. go look up test driven development.

    2. Re:Every project ends up being a battle? by Anonymous Coward · · Score: 0

      Oh great - 100% perfect tests that cover every possible eventuality. No mistakes ever!

      It must be great living in 'no fucking clue' land!

    3. Re:Every project ends up being a battle? by Anonymous Coward · · Score: 0

      Well, you could write extremely simple software (like a NAND gate)... but you would have to do it with relays since no CPU/chipset is bug free (or OS). But I guess that would not work either since relays might develop whiskers and you would have bugs again... I would suggest a mechanical hand driven device that is made out of brass and is services before every execution... but what about the human factor. WAIT! I got it; you could make a mechanical NOP that would be 100% bug free! (depending on the input, if it has electrical input and the input is too high it might bur it out and you would not have a NOP but a HALT). Damn! Its hard to make a 100% bug free system!

    4. Re:Every project ends up being a battle? by scsirob · · Score: 1

      If your tests find zero errors then the bugs are in your test procedures as well.

      --
      To Terminate, or not to Terminate, that's the question - SCSIROB
  14. best practice employment practices by gbjbaanb · · Score: 1

    in general am a programming project manager with empathy for developers. I don't ask them to work weekends and I provide detailed, reproducible bug reports and I pay on time

    hardly true. If you want 100% bug free code then expect the devs to take twice as long to provide the solution (and that's being optimistic). If you don't want the tested-to-death solution, and want to take a pragmatic approach where you assume some bugs will fall through the dev process, then you'll get the solution quicker overall. (obviously there are some devs to whom a bug is a way of life, I assume you will not hire them again)

    BTW good for you, not wanting devs to work weekends. Do they get national holidays off too? You are just the kind of empathic boss Dilbert would die for.

  15. scrum by Anonymous Coward · · Score: 0

    specs? are people stilll writing specs? how wonderfully waterfall of you.

    use agile techniques.

    for example...

    2 week sprints. you are the product owner. split your "spec" into stories (thin vertical slices of the system). you and the contractor negotiate how many can be done in a sprint. at the end of each sprint he delivers you *working software*, you (or the real customer) test it and pay for the two weeks. if its buggy you dont pay. if all was well you pick the stories for the next sprint.

    repeat.

    if you've never come across scrum or xp before you have some reading to do.

    1. Re:scrum by prionic6 · · Score: 1

      Great, if the customer is prepared to pay for n sprints, without knowing n before the end of the project.

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

      Even agile developers write specs. It's just that those specs are automatically testable, and thus go under the name "test case".

    3. Re:scrum by crutchy · · Score: 1

      Even agile developers write specs

      program spec;

      uses
          dialogs;

      begin
          dialogs.showmessage("hello spec");
      end.

    4. Re:scrum by crutchy · · Score: 2

      damn that all sounds awfully complicated... cowboy coding rulz...

      you tell me what you want mr customer and i'll code while you're talking. if i run into something that is too hard to code while you're talking (or i can't be fucked right now) i'll just scrawl some notes in a todo. you'll have your first feature in about an hour. it will be very basic and won't do much and will likely be full of bugs, but together we'll get something running quicker than you can say "that drawing of a cannon looks like a huge penis" and go from there. by the way, the price will be a lot less because i don't spend all your money fucking around, but you will spend some money working closely with me. we'll be so close it'll probably get creepy :)

    5. Re:scrum by crutchy · · Score: 1

      the reason why waterfall usually falls on it's ass is because even if you think you know n at the start of the project, invariably the customer changes their mind midway and n becomes as meaningless as the rest of the wasted planning and specifications you spent half your budget preparing.

      if you lay down some code quick you can actually guide the customer with program use, because the as the program evolves you can adapt to changes in direction more easily because the customer is more focused on results and any changes tend to be smaller and more feature-specific (and manageable) rather than affecting the whole project. the customer also tends to be more content because they're regularly seeing results and they know their money is being spent on something tangible. often they also get to start using the product much earlier and getting something out of it, even before the product is complete.

  16. Dear Slashdot, by Anonymous Coward · · Score: 0

    I need a full time bug fixer but I'm too cheap to pay one.

    Please help me.

  17. Uh ... yeah -- by Anonymous Coward · · Score: 0

    The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"

    Yup: Get a new business plan where you can afford to pay for that which you wish to purchase. You know - services in, money out. It's like yin/yang - a balance.

    Every project ends up being a battle [...]

    Dare I suggest that it just might be possible that you are not the genius project manager that you think you are?

  18. Why is this on /.? by Anonymous Coward · · Score: 0

    This must be the dumbest thing I have ever read here. That OP is a total idiot is one thing but why is Soulskill not doing his job as a shit filter? This should have been sent to write only storage as soon as it got here.

    1. Re:Why is this on /.? by crutchy · · Score: 1

      you just can't help being a douche bag can you... go lick a window you drooling brain dead vacuum cleaner fucker

  19. In denial much? by dsmithhfx · · Score: 1

    "I do not pay for bugs" Actually you do, but you clearly don't like it.

  20. If you are going to wishing for things by OzPeter · · Score: 1

    If you are going to be wishing for things like the perfect employee (knows lots of languages, is proficient in all of them, is cheap) then you might as well just wish for peace on earth, good will to mankind .. and a pony.

    And while you are doing that, take a look a what people with experience in only a few areas are being paid, and then factor in some overheads. Or in other words, is that $100k as salary to them and you will have a bunch of overheads to carry, or is the $100k including overheads? Because if it is the latter then you are going to realistically be offering well less than $100k salary.

    You get what you pay for, and if you cheap out on a salary you are not going to get people anywhere near as good as you think you need which has the potential to damage you business.

    --
    I am Slashdot. Are you Slashdot as well?
  21. Stop being cheap. by Half-pint+HAL · · Score: 0, Troll

    Do your job properly first time round. Done.

    Seriously, aren't you upset when Microsoft sells you a new operating system and it's buggy? Didn't you pay for finished, working software rather than an extended beta test version? The whole software supply-chain would be much better managed if everyone was held properly accountable for their failure to produce code to the contracted specs.

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  22. Find a way to catch bugs earlier? by Anonymous Coward · · Score: 0

    Sounds like a nice setup you have there, but seems odd that either you or the contractors are surprised that there are bugs come the end of the project. Also sounds like the contractors are might be in the easier position at that point because they can just walk away.

    Is there any way that you could alter your project plans to catch bugs before the end of the project? Smaller deliverable within larger projects?

    Or employ someone at a more junior level (easier to teach and mentor?) and use them to look for issues as code is created by your contractors?

    1. Re:Find a way to catch bugs earlier? by crutchy · · Score: 1

      Is there any way that you could alter your project plans to catch bugs

      use heavier paper to print them on... when you go waving it at the bugs they won't have a chance

  23. You do not pay for bugs? by Anonymous Coward · · Score: 0

    So, do I understand you correctly, if the code you get has bugs, you don't pay the developer for it? Well, hopefully you then at least consider the code copyright still belonging to the developer. Because otherwise, it sounds like a scam to get code for free (because face it, every non-trivial code will have bugs). I can understand that the developers would not be happy with that.

    1. Re:You do not pay for bugs? by Anonymous Coward · · Score: 0

      I think the submitter is saying that they will not pay additional hours/money to fix bugs that are discovered after the code is delivered and accepted.

      Dev: Here's the program.
      Subby: Thanks, this is great. Here's your money.
      *time passes*
      Subby: Hi Dev, I found a bug. I need you to fix it immediately and for free. I don't pay for bugs.
      Dev: I'll be happy to investigate and fix the bug, but I don't work for free.

  24. No such thing stable software. by Anonymous Coward · · Score: 0

    I think you just a marketer. get 40% down payment. push to developer to build. then paid the developer 10% value. if bug you chase developer. lol..

  25. Software *is* bugs by Anonymous Coward · · Score: 0

    If I'm reading this correctly, all your issues come from one assumption: you are assuming that "the right spec should produce no bugs". I'm afraid that's impossible. Bugs don't occur because incomplete or missing specs, at least not only. At the end, they occur because probrams are written by humans. And humans make mistakes. A spec, no matter how well written, can't "fix" that.

    You are not structuring your incentives to match your needs (or your clients') on that false premise. Once you have payed them, the devs will (naturally) not have any incentive to fix any bugs for free.

    Most projects actually accept that bugs are inevitable, and set aside an amount for fixing them. It is usually called "maintenance". I encourage you to try that. Your developers won't work for free, and everyone will have the right expectations.

    Also, notice that this doesn't mean you will pay more; you could try lowering your rates per hour a bit, so that the project costs you more or less the same (less $$ per hour, but more hours). Etc.

    As in any other business, the trick is knowing what everyone wants, and finding the right compromise.

    1. Re:Software *is* bugs by CptNerd · · Score: 2

      Not to mention that for any project maintenance is the largest percentage of the project's lifetime. It kind of sounds like this guy doesn't really understand what constitutes a "bug," at least doesn't understand that not all bugs are caused by developers making mistakes. There are bugs caused by invalid data entering the system by user error, or by parts of the system outside the control of the developers, or by bugs in the compiler or libraries used in the system that only show up during run-time, or by changes in the business rules after development starts, and many many other causes. To hold the developers responsible for finding these beforehand, and refusing to pay for any work needed to come up with fixes or work-arounds, sounds like he's not really interested in maintaining the systems he builds.

      He also sounds like a real peach of a guy to work for in other respects, as well. I wish him good luck in finding his cheap experienced expert developer.

      --
      By the taping of my glasses, something geeky this way passes
  26. Respectfully by Anonymous Coward · · Score: 0

    Go fuck yourself!

  27. There's no such thing as non trivia bug free code by HungryHobo · · Score: 2

    There's no such thing as non trivial bug free code. only code which has not been tested in enough circumstances.

    No. really. Even limiting it to just security related bugs with an author who put an insane amount of work into making it bug free who knew exactly what he wanted with no communication with a client bugs still turn up when code is exposed to the real world.

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

    Totally bug free code is insanely expensive to write in even small amounts so you're basically having the developers spin the wheel, if your clients do massive amounts of testing they end up working for months unpaid. if they do little testing and can live with lots of little bugs then the Dev gets a good deal.

    Here's a sane solution to your problem: pay for bug fixing.

  28. Pay for the tests by mangu · · Score: 4, Informative

    with the specifications I write there is no excuse for not testing their code.

    In every engineering project I've ever worked on, the specifications included acceptance tests. Obviously, his specifications aren't good enough.

    He should detail with his customers the functional specifications of the product and generate a set of acceptance tests. The end product of this would be a test procedure, which both the customer and the contractors have previously agreed upon.

    There is no excuse for a contractor to blame the programmers who did not conduct testing, if the way the testing should be done has not been previously detailed. The formal test procedure is what separated bugs from features.

    1. Re:Pay for the tests by Anonymous Coward · · Score: 2, Insightful

      That's test-driven development. Write the tests first, then write code which satisfies the tests. Done.

      It doesn't work like that, because there is no way to completely specify a non-trivial program through tests. For (a trivial) example, suppose I specify that I want a program which takes two numbers, adds them and outputs the result. For acceptance, the program shall be tested with the following test cases: "1+1=2", "2+4=6", "100000+234=10234". Now if you're a good programmer, you're going to write the program such that it takes any two numbers (positive, negative, large, small, integer, non-integer) and adds them arithmetically. That program would surely pass the acceptance tests. A lazy programmer might just write a program which looks up the result in a table and consequently satisfies only the acceptance test but is otherwise useless. Note that the specification was vague and didn't include any information about the types of numbers you want to add. Was it wrong not to include imaginary numbers? What is the input format for floating point numbers? Decimal comma or decimal dot? E-Notation? What about rounding and input and output ranges?

      Program specification is like writing laws. It's not context-free (in the real world sense, not in the computer language sense). We all make assumptions about the scope of the specifications. Almost always a programmer can only decide what the actual requirements are by making use of extensive application knowledge.

    2. Re:Pay for the tests by DudeTheMath · · Score: 1

      This.

      I worked as a contract programmer once, and it ended up being so awful I've never done it again. I'm sure it was my fault in part; I was quite young, I signed a vague contract, moving goalposts, acceptance was "I say it does what I need," blah blah blah. I know that "next time will be better," but it made me so averse that there's never been a next time. Employee status works for me.

      I'm not doing that again unless the acceptance tests are specified in the contract ("If it does this, this, this, and not this, it's done").

      --
      You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!
    3. Re:Pay for the tests by biodata · · Score: 2, Funny

      So sorry to point this out but 100000+234=100234, not 10234, so your test spec contains a bug itself. You need to hire someone else to test the tests.

      --
      Korma: Good
    4. Re:Pay for the tests by home-electro.com · · Score: 1

      No amount of acceptance test will guarantee bug free software for any non-trivial project. Creating automatic acceptance test for a piece of software might take as much or more time than the project itself. And it still will not give you 100% guarantee.

    5. Re:Pay for the tests by Anonymous Coward · · Score: 0

      Are you sure that I didn't intend input numbers larger than 10000 to be clamped to 10000?

    6. Re:Pay for the tests by tubs · · Score: 1

      When I was at university, ohh, a long time ago, we were forced to use a mathematical notation for design and testing of software.

      Of course, the tests were only as good as they were written, and we all said "no programs are bug free", the lecturer who was an expert in RT systems suggested that a rail signalling system or a fly by wire system should not have unexpected bugs, but his final suggestion, was that you get what you pay for.

      --

      try to make ends meet, you're a slave to money, then you die

    7. Re:Pay for the tests by Lonewolf666 · · Score: 1

      That would be rather unusual and should be separately noted in the specs. Without such an explicit requirement, I'd assume that you just produced a typo.

      In practice, if I was the contracted programmer, I'd send you an e-mail with a request for clarification.
      I'd also expect that such errors in the spec are the exception. If I get the impression that the spec is full of such carelessness before the contract is signed, I might decline to take the job on a fixed price basis.

      --
      C - the footgun of programming languages
    8. Re:Pay for the tests by Anonymous Coward · · Score: 0

      That illustrates the problem. By asking that the intention "should be noted separately in the specs" you admit that the tests are not the primary specification. If the tests are not the primary specification, yet passing the tests is the acceptance criterion, then you have to expect discrepancies. Why would a programmer care about the intention when it doesn't move him closer to getting the program accepted, especially when the intention is informally specified and open to interpretation.

    9. Re:Pay for the tests by Lonewolf666 · · Score: 1

      In my experience, very few specifications are perfect, even if written by knowledgeable people. Things like a typo (in this case omitting a zero) happen easily. So if you program strictly to the specification, it may give you a quick acceptance of the program because the specs are technically fulfilled, but still an unhappy customer.

      I'm aware that some people have no problems with that, but I have a somewhat higher priority for getting things done right. So I'm willing to put in a reasonable effort to double-check suspicious specifications.

      Of course there is a limit to that - if the spec is obviously written by incompetents and grossly inadequate, I might insist on being paid by the hour so the (presumably plenty) extra work of revising the specs does not end up being unpaid work.

      --
      C - the footgun of programming languages
    10. Re:Pay for the tests by rjstanford · · Score: 1

      Interestingly enough in some tests (where it matters) I'll actually try to work in some randomized round-trip testing so that, for this example, we will create two numbers A and B, add them together to get C and then subtract A expecting B. Naturally they need to be in addition to expected hard-coded tests, but occasionally I've found interesting random defects in my assumptions that way.

      Besides, very few specs will actually give you information like the maximum values of those numbers. When they do, there's probably another unwritten assumption that the answers display somewhere - what do you do when the length of the result overflows the screen real estate? Scroll? Wrap? And whatever your answer, how does that work with screen readers? And does it print?

      There are always unwritten expectations - but there are also always situations where there may be no right answer. That's just the reality of the current state of development. One man's bug is another man's stupid user.

      1+1=3 is a bug. Not displaying + 1 in its entirety is not a bug, even if the specification was written in such a way as to make it so.

      --
      You're special forces then? That's great! I just love your olympics!
    11. Re:Pay for the tests by rjstanford · · Score: 1

      Please mentally insert the symbol for pi between "not displaying" and "+ 1" in that sentence. You'd think that I'd remember that slashcode can't handle high-byte characters by now, but apparently not.

      Looks like a bug to me...

      --
      You're special forces then? That's great! I just love your olympics!
    12. Re:Pay for the tests by mangu · · Score: 1

      For (a trivial) example, suppose I specify that I want a program which takes two numbers, adds them and outputs the result.

      If you think that example is trivial, it's obvious you've never heard of Giuseppe Peano.

      For acceptance, that program should be tested to see if it implements a correct mathematical induction algorithm for addition.

  29. Change your payment terms by Anonymous Coward · · Score: 1

    Wow, lots of vitriol in this thread. I think you pissed off some developers >: ).

    Based on what you've said, and the sounds of having done multiple projects, you should just switch your tactic but still using contractors. Personally, using contractors can be cost effective, but managing them is the difficult part. It sounds like with the exception of bugs, you're managing them well enough.

    The best approach is to negotiate milestones and have your contractors sign off on it at the beginning of the job. The most important milestone being acceptance of completed project by customer. This is standard practice, I agree you shouldn't be paying for bugs. If your spec is detailed enough, you shouldn't be paying by the hour but I understand some guys do to keep contractor costs under control.

    Empathy is a good skill to have, but remember this is business on all sides. Contractors get the benefit of charging more than full-time employees, but you have advantages as well when you hold the purse strings.

  30. Project management includes handling QA. by joe+user+jr · · Score: 2

    "with the specifications I write there is no excuse for not testing their code" - so why don't you test their code, then? (If you can't do this yourself, hire QA.) Regard the contract as complete when all your tests pass (note: *your* tests!).

    If bugs are found after the project is complete, it is because the test coverage was incomplete, or QA failed, and you should be happy to take responsibility for having them resolved (including payment if necessary.)

    --
    .sigs: Just Say No!
    1. Re:Project management includes handling QA. by hal2814 · · Score: 1

      Yeah, QA is where you need to start. Our company has a mix of in-house and contract developers, but ALL code goes through QA. If it doesn't meet acceptance criteria and pass all tests, it's not complete.

    2. Re:Project management includes handling QA. by mcmonkey · · Score: 1

      The key phrase from Subby is that the customer is complaining about bugs.

      If the specifications are so excellent, bug tracking and source control available, and bug reports so detailed (Subby told us so him/herself) why isn't the project manager catching these bugs before they get sent to the customer?

      These failures are happening during testing and QA. The issue is not with the developers.

  31. Learn how to code by scsirob · · Score: 1

    Writing very good specs means having a good understanding of the business needs for that project.
    Both getting to understand the needs and writing great specs take a lot of your time and effort.

    So perhaps you should learn how to code yourself. Spend just as much time understanding the business problem, then write the specs in a brief way (you obviously know what you need to do anyway), then code it yourself. No miscommunication possible. Any bugs are yours and yours alone.

    I'm pretty sure you will gain a lot of respect for those who do coding as a living..

    --
    To Terminate, or not to Terminate, that's the question - SCSIROB
  32. Sounds reasonable to me by GeoSanDiego · · Score: 2

    I am a developer who also has some experience paying other developers for a project. I do not agree with some of the criticism you are getting. If you say up front you won't pay for bugs then the developer should not accept the work if they don't want to work under those conditions. It is easy to say "all code has bugs" but it is also true that cleaner and well thought out code will have less bugs and the more unit testing that is done on code the less bugs it will have. Why reward sloppy behavior? Nothing wrong with getting developers to own it. The project I subbed out was a fixed priced project. Bugs and omissions were plentiful, and although I wish the developers were more careful, at the end of the day it was their own time that they were expending on fixes.

    1. Re:Sounds reasonable to me by Anonymous Coward · · Score: 0

      If he wants to sub out a fixed priced project he should just say that. Saying you're not paying for bugs is foolish because there's no way you're not paying for every piece of code in one way or another. You're not paying for the hours it takes for the developers to go back and fix bugs? You might not be out of pocket extra money, but you'll never get those hours you didn't have "what you paid for" back. All code probably has some bugs because as everyone has pointed out, it's impossible, yes, provably not possible, to test the entire operation of any amount of non-trivial code in a reasonable amount of time. This is a known thing in computer science. I think I learned it in the first CS class I ever took. How any developer can pretend like it's only due to incompetence or not enough rigor is beyond me and luckily most of the posters agree.

    2. Re:Sounds reasonable to me by Anonymous Coward · · Score: 0

      And will you be surprised also when that person doesn't want to work endlessly for free, therefore each project will cost you one contractor, until you have N unfinished projects, and 0 contractors left who will work for you?

      W

  33. Acceptance tests for the contractor by rvw · · Score: 1

    In your contract, you should have acceptance tests specified. The contractor that hires you should test and approve the product. If it's not what they want, contains bugs, or is not as specified by them, they should not accept. When they have accepted the product, they should pay for bugs. You should agree about this before starting.

    For now, fix those bugs, and think of it as a good and valuable lesson.

  34. Not in touch with reality by eennaarbrak · · Score: 4, Insightful

    Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code.

    This hugely contradicts my experience. Although it may be possible to write specs that are so good, so coherent and incorporate so many edge case that any code realizing it *must* be bug-free, I have never seen it happen for any modestly complicated software project.

    Software development is a continuous process (like gardening). If you are worried about bugs, then you must be pro-active about it. Tools like Sonar can give you valuable information about which parts of the code base are under-tested, overly complicated and require careful attention. Also, testing is a multi-level discipline - you can't get away with *only* unit testing, or *only* integration testing. If you want your code to be bug free, you need to invest a lot of time and effort in automating your different test strategies.

    There is no guaranteed, affordable process for having bug-free code. You *will* end up with bugs, without requiring this to be attributable to someone's incompetence. You need to actively manage this.

    1. Re:Not in touch with reality by CptNerd · · Score: 1

      No matter how thoroughly tested software is, there will be places where it breaks in production, through no fault of the developers and testers. If you don't believe this, you haven't worked on enough systems, or they haven't been complicated enough.

      --
      By the taping of my glasses, something geeky this way passes
    2. Re:Not in touch with reality by johnjones · · Score: 1

      a good specification can be written, only difference is then translating that into machine code and proof is relatively easy

      in fact IBM etc tried and was successful in producing a model that worked only thing was it took someone who knew how to write the specification in a formal language and guess what... those very same people with those skills where programmers/engineers that the "management" got annoyed about after they told them to do things like please produce a "traffic control optimisation system" (in relation to what...).

      all I can say really is "do not be a DICK"

      cheers

      John Jones

  35. Start by being honest with yourself by Anonymous Coward · · Score: 1

    Quote:
    "I market myself as being able to handle any technical project, but only really take the fun ones..."
    "I write excellent product specs, provide bug tracking & source control and in general am a programming project manager with empathy for developers."
    "I do not pay for bugs."
    "...with the specifications I write there is no excuse for not testing their code."
    "Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs."
    "Every project ends up being a battle."
    "The guy I'd need to hire would have to know a lot of languages and be proficient in all of them."

    So you're a great salesman with a perfect pitch, until it's time to deliver the final product and the whole project unravels as a sordid mess. Of course, "bugs" are the developers fault, and as long as "they are fine with it", everything looks great! Until the customer sees the final result of course, and starts demanding getting value for money..

    The best advice I can give is: Be completely honest with yourself! Question everything!

    You're a great PM? Says WHO? I'm sure you have a great personality and are a good marketing / salesman guy, which is a good start to start your own business. However, if you're going to stay in your current role without burning out, you and "your" developers, you need to completely rethink your attitudes towards project management.

    To start:
    What are the critical success factors, the most crucial outcomes, for the customer?
    Did you spend 50% of the time on gathering and refining requirements from the CUSTOMER? Are you completely sure your customer knows what he wants, and that you FULLY understand the scope of EACH and EVERY requirement? How many iterations did you walk through the specs with your client and developer?
    Did the customer sign off the specs, SLA and test cases (what is the acceptable level of quality?), and you are fully confident the customer knows what he's getting and what he's not getting? Are you fully confident all the developers and customer is on the same page?

    If you truly want to improve the process instead of blaming your developers and neglecting your customers for lengths of time, I suggest you learn "Lean IT", and apply what you can to yourself and the processes you can affect positively. Sadly, you can't really change all customers / clients, so a PM should expect some fires in their projects. However, with the right focus on quality and drive to get ROI, you should be seeing improvements quite soon if you're truly any good (DO expect to work weekends in the beginning). To succeed, you NEED to be hungry for it, and stop patting yourself on the back!

    To be blunt: Going the other way, from lean to a "thicker" model, where you're expected to provide to the livelihood of someone else, I suspect these same problems will pop up, but then you're stuck with what you have so it's either do or die. I suspect you stay afloat now by running away from your problems, which is not going to work when actually hiring someone for good.

    I like the fact that you take on the fun projects! When you truly follow the heart, you will find ways to make it work and things will go more smoothly. Just make sure it's not just fun for you, but also for the customer and developers. I sense you have a happy spirit behind this all, and that is a great start. So what can be done as early in the process as possible, to keep the happy spirit throughout the entire project? True happiness is the only true measure of success, and also, with happiness and good spirits, success will tend to chase you, and not the other way around.

  36. One language to rule them all by Ruliz+Galaxor · · Score: 1

    The guy I'd need to hire would have to know a lot of languages

    There's your problem right there. If you are doing in-house development, you should stick to one language. Especially if you have a small company, but it kind of holds up for larger companies as well.

    e.g. if you have four programmers, two proficient in C, two in Java and a Java programmer quits, then suddenly your single Java programmer needs to do all the Java work. If you have 4 programmers proficient in Java, then if one quits, you still have 3 Java programmers left.
    In the end multiple languages just means less flexibility in capacity.

  37. automate as much as possible by crutchy · · Score: 1

    if your problems are bug related, maybe focus your contracting efforts on testing, validation and verification because that's the stuff that you shouldn't rely on yourself to do, and you shouldn't rely on your contractors to test their own code either.

    you then need to write your code to take most advantage of the testing. don't just test once. test, record the test, and use the recorded test in automated regression testing so that the test can be repeated for every build (without having to pay for a tester to repeat the same test manually).

    also, everyone knows how important it is but few do it... unit testing... code the test before you code the function to be tested, and don't skimp on unit testing. some think you must unit test absolutely everything, but they are fruitcakes. test what you must, but test those things properly. a poorly designed test isn't much better than no test at all.

  38. Remote "in-house"? by Anonymous Coward · · Score: 0

    I'm not sure what the outrage is about - not paying for bugs is a reasonable policy to strive for. But you DO have to pay for testing and bug fixing as they are important pieces of the software production cycle.
    In my experience for general-purpose development you need a project manager, developer, tester and designer. Those don't really need to be four different people, but it's also unreasonable to expect one guy to do three or four of those jobs while being proficient in all languages and technologies required for your various projects. It's also generally more expensive to have your developer twiddle with UI or do his own testing.
    Anyhow, I think you can still pull it off given a certain definition of in-house. Example: I'm from Eastern Europe and I've worked full time for US-based clients (with contracts and everything). $50k is quite enough to get a top-notch developer here. Personally I've done projects for iOS, Android, Windows mobile (complete with reading credit card data and payments over 3G), both front-end and back-end development for web sites, C++/Python search engine, plugins for Photoshop, small Java desktop apps and even software for car clusters (FYI that's what they call the dashboard electronics) in C. While it's not exactly easy to find good experienced developers here (or anywhere else) it's definitely possible.
    In short there are quite a few places in the world where $100k per year gets you a small office and a competent development team that will work for you full-time.

  39. no fit all response by Anonymous Coward · · Score: 0

    if you're the boss then
        hire one in house
    if you're the contractor
        don't accept in house job

    you seem to be the boss. Want to hire a real good one?
    aim for 25-30 years old with not so much professional experience BUT a huge amount of collaboration on open source projects that can show off his own projects via github or else.
    Put priority on the young geek with a decent ego that has 10 years+ of linux background as a hobby.
    It's hard to find but not impossible. You'll get more for your money than say a 30ish contractor like me who will charge 5KE net/month.

    It can be the other way around depending on the length of your projects (6 months ? then go for a contractor, more than a year? go for inhouse)

    you have to balance the length of the projects where your geek will be active, the knowledge required for the project and how much who want to put in his salary.

    there is no fitting response to this question, it's a balance between your requirements (type of project, length, money to invest etc...)

  40. Pay to Test or Pay to Fix by fishous.com · · Score: 1

    I had a problem when contracting that the client didn't want to pay me to fix bugs. I told him he could either pay me to test it for 8 hrs, or he could pay me for 15 minutes here and there to fix tiny bugs.

  41. If every job is a battle by Anonymous Coward · · Score: 0

    Then you're doing it wrong. Let me try and explain with your points:
    I run a small software consulting company who outsources most of its work to contractors. I market myself as being able to handle any technical project, but only really take the fun ones
    Fun for who exactly. You should be taking work based on your known good contractors, their availability and the cost of the project. Fun is a meaningless adjective you've added to make yourself seem like a nice guy. This is a lie any programmer will see through.

    I write excellent product specs, provide bug tracking & source control and in general am a programming project manager with empathy for developers. I don't ask them to work weekends and I provide detailed, reproducible bug reports and I pay on time.
    Paying on time is the only thing of worth here. It's not hard or expensive to set up bug tracking or version control. If they're contractors they work their own hours, so your weekend point is totally redundant.

    The only 'rule' (if you can call it that) is: I do not pay for bugs. Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code. Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs. Then all of a sudden I am asking my contractors to work for 'free' and they can make more money elsewhere. Ugh. Every project ends up being a battle
    Oh boy, Mr Empathy has turned into Mr Hollow in one sentence.
    I'm guessing you're the type of employer that doesn't pay people when they get sick? After all they could have taken more precautions, right?
    Contractors should be measured by cost vs average, quality vs average, ease of working with vs average, time to deliver vs average. You're so far off the ball here it's not even a joke.

    If you're wondering why each contract is a fail (in your words) this is why.

    Solutions:
    Pay for all the work, bugs, feature changes, everything that person does.
    Pay on time.
    Listen to your contractors and make sure they listen to you.
    Choose contractors that don't make thousands of bugs to pad their payslip, make working relationships with good contractors, make sure they're available for the jobs.
    Question their bugs if you think something is fishy. Get advice from a contractor you trust.

    If you've burned all your bridges by burning all the good contractors then honestly you're stuffed. Stop exploiting people so you can make a living.

    If you want some-one cheap, then get someone who you can train. Can't train them because you don't have the knowledge? A bit of a pickle really.

    Bottom line is, treat your staff and contractors as human beings and maybe you'll reap the reward. Treat them like thieving sub humans and enjoy a stressful and unhappy life.
     

  42. Fall back asleep. by neoshroom · · Score: 1

    I am a contract software developer and have this exact same same policy myself. That is, when I get a client I ask for detailed specifications and we put them on paper. Then I go to work on the project. If when done they want a feature that isn't in the spec, we create a new milestone and they pay for it. If they find a bug and want it fixed, I fix it for free. It's just another way of saying "I guarantee my work."

    There is no possible way that masterful specs can eliminate all bugs. In fact, I'm guessing you don't quite understand what he is referring to by "specs." Typically, specs from non-developers are a list of features they want, things they want the program to do, what they want the workflow to be and possibly how they want the program to look or wireframes. This isn't things at the level anywhere near code or pseudo-code and so it isn't really possible to eliminate bugs at this level. Putting a fault tolerance number wouldn't even help because whether something is one bug or two bugs is often somewhat arbitrary and some mythical evil programmer could easily put intentional bugs in the program to run through this artificial limit (which is why I'm pretty sure Microsoft uses the system you described...;) ).

    I've been using basically the same policy he describes for years without issue. So, my advice to you is chill out and my advice to the poster is I'm sure there are other developers like me out there who you could use for contract freelancing. I mean, you wouldn't hire an architect who would built you a house but if there are structural problems post-construction would refuse to repair them at no cost (or would only repair three and after that you have to pay him extra). It's a pretty reasonable policy.

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    1. Re:Fall back asleep. by Cenan · · Score: 1

      In fact, I'm guessing you don't quite understand what he is referring to by "specs."

      Possibly, I put in the word he used himself. The "spec" was not the pivotal point either, as you seem to think. The point was that he has a severely broken model and has done nothing to remedy that. He commits the basic sin of delivering a piece of paper to someone else and then act surprised when their work turns out to be less than expected. Everybody seem to forget that he himself hired the developer, presumably on merit, and as such the developer's quality is on OP alone. He commits another basic sin of having no provisions in his contract for handling bugs, and is now surprised that it got him stuck.

      The only thing that is not his responsibility in all this is acceptance testing, which it sounds like his system is failing. He really has nobody to blame but himself. Instead of crying over developers not wanting to work for free, maybe he could solicit advice as to how to improve his process - a few pointers on how to correctly identify bugs in early development instead of having his end users find them, and so on. But no, it is of course the developers fault, it's the easy target.

      --
      ... whatever ...
    2. Re:Fall back asleep. by Cenan · · Score: 1

      I've been using basically the same policy he describes for years without issue

      I'm sure you have, and I'm sure "basically" covers a lot of little differences that make your model viable, and his not. The only clue that we really have that his model is flawed is him asking here, on Slashdot of all places, for advice on how to force developers to work for free or how to hire a senior developer that he admits he can't afford.

      I'm guessing your contracts contain at least basic provisions for how you and your contractor deal with faults and bugs discovered after sign off. This whole thing would be a non-issue if that had been the case for the OP.

      --
      ... whatever ...
    3. Re:Fall back asleep. by Anonymous Coward · · Score: 0

      You are the AC who posted this, that is why you are all over this thread defending yourself, cut the crap and stop lying.

    4. Re:Fall back asleep. by neoshroom · · Score: 1

      Wow, you followed me every time I posted, ironically posted as an AC yourself and on top of that were wrong about my identity, which I wasn't even hiding. Sometimes the cigar is just a cigar.

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
  43. Re:There's no such thing as non trivia bug free co by DanielOom · · Score: 1

    It may be expensive to write bug-free code, but it is always better than having software with bugs in it (which you then have to test and fix).

  44. Cars dont have bugs WTF ?? by johnjones · · Score: 2

    right and rockets dont blow up because the spec has been followed and tested several times the tolerances tested etc\

    never heard of a car being recalled ? - BTW they try not to do this but...

    WTF - seriously everyone involved in this thread seems to have very little to say... study some history or repeat yourself...

    cheers

    John

    1. Re:Cars dont have bugs WTF ?? by Anonymous Coward · · Score: 0

      Cars are recalled for big flaws. Warranties cover medium flaws.

      Small flaws are the price of doing business, owner pays if they're so picky.

  45. Change the specs by Anonymous Coward · · Score: 0

    Include in the specifications the bugs you want. Problem solved.

  46. Hire the contractor you work best with by RicRoc · · Score: 1

    My suggestion is you look at your current list of contractors, order them by how well they cooperate with you, and make the "best" an offer. You won't find anybody perfect, better the developer you know than the genius you don't!

    --
    Who?
  47. Forget it by Opportunist · · Score: 3, Insightful

    You're looking for someone who is incredibly good (able to offer a wide variety of programming languages, good enough to not create any bugs, anticipate them and/or find them very quickly), that is essentially someone who could pick and choose his job, but pay him like some intern.

    Would you do it?

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  48. Sigh... repeat after me by mwvdlee · · Score: 4, Insightful

    Code is never 100% bug free, no matter how smart the programmer, how well tested the code and how many million hours it's been running without any problem.
    The only type of developer willing to agree to a "fix-bugs-for-free" contract is one who is either (A) stupid of (B) lying.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    1. Re:Sigh... repeat after me by Anonymous Coward · · Score: 0

      My company will fix bugs for free, but we decide what a bug is. Random thoughts, feature requests, and last minute design changes, no matter how much better they make the application, are not bugs and are not free.

      OP sounds like his faith in "the specifications I write" has blinded him to the fact that maybe somebody can read that text and come away with a different idea.

    2. Re:Sigh... repeat after me by Anonymous Coward · · Score: 0

      This is correct. A contract should not include a "bug-free" clause. And remember, it takes two parties to form a contract.

      The OP says "with the specifications I write there is no excuse for not testing their code". Hmm... I do wonder... are those requirements quantifiably testable? Can you define tests which test each requirement independently and completely? If reliability is critical, the spec should include statements such as "Function X should fail no more than once per 1000000 invocations".

      If your requirements are not testable, then you should ask yourself whether they should be included at all.

  49. 100k/year is on the low side for what you want by gweihir · · Score: 1

    If you want an excellent engineer, you need to pay at least reasonable.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    1. Re:100k/year is on the low side for what you want by Registered+Coward+v2 · · Score: 1

      If you want an excellent engineer, you need to pay at least reasonable.

      True, and if he can't afford a 100K/year for a full time hire it makes it seem that he is trying to get A+ work at at C+ prices and discovering that it is not a sustainable business model.

      --
      I'm a consultant - I convert gibberish into cash-flow.
  50. Can't afford a good developers' salary? by Afty0r · · Score: 2

    Then it sounds like you will need to give some equity in your business away.

    Or, consider this - why are you allowing the same guys writing the software to be responsible for testing it? If you genuinely write good specs you should be able to find someone who will write automated testing (and/or engage in manual testing) to meet your spec and apply it against the software provided by the contractor. This should eliminate a very large number of potential bugs. If your specs are good enough you could even offshore this fairly easily - it's very simple work.

  51. Some advice from a inhouse developer by Barryke · · Score: 1

    1) If you want bugs to be their problem, agree on a fixed project/product price beforehand.
    You set the priorities, they set the planning, you only care about the finished product/milestone which is of course bug-free.
    Its near impossible to get this planning right though: often development is research, and (i found that) research can inherently not be scheduled in a strict sense, only time limited or at most steered/supervised to align with priorities. An answer of research can be "no", in which case more research is needed unless you've foreseen this casus and have a workable alternative to drop in (always wise to accommodate for / have in engineering).

    2) If you want to prevent bugs from being a (contractor) problem, work agile / in sprints. Short reviews each week, allow you to prioritize bugs instead of these being piled up. Of course, some bugs are better left for last.

    3) If you want to hire someone new, consider hiring an intern first. Or two. Get some first hand experience in managing an IT project, agree on a schedule and try to stick with it, and you might just end up with some insights that help understand why your contractor works/talks the way it does.

    Also,
    You shouldn't save bugs for last. Aside from the "working for free", in software development 1 bug + 1 bug is 5 bugs and a lot of confusion, so this results in more work/costs anyway.
    Also, there is a difference in "getting functionality complete" versus "postponing bug fixes until later due to priorities" and you should never do both at once, for any given part of the software.

    --
    Hivemind harvest in progress..
    1. Re:Some advice from a inhouse developer by Xest · · Score: 1

      "1) If you want bugs to be their problem, agree on a fixed project/product price beforehand."

      The problem is that this is fantasy. The only contractors you'll find that will sign up to this are the not very good ones who are completely naive as to what it means until it burns them and if you end up with them you'll be lucky to even deliver full stop.

      Talented and experienced contractors know that this means the risk is being put onto them, and know to go look elsewhere. Given that there isn't a shortage of contract work in the world right now due to the fact companies have no idea what's going to happen with the economy from one minute to the next and haven't for a few years means you'd be hard pressed to try and find anyone desperate enough to take this risk.

  52. The solution that worked for me by Anonymous Coward · · Score: 1

    I was in the exact same position a year ago, and decided to try out an option suggested to me by a veteran in the IT outsourcing business:

    Realization: Nobody write bug free code, not even the best coders on the planet. Writing buggy code is part of the process towards a finished product.

    1. Use only established contractors you know provide good quality artifacts. Getting these at a price you can live with is the hard step.
    2. You pay for bug fixing like everything else.
    3. Pay a bonus if hours spent bug fixing 5% of total project hours. This is an incitement to have focus on quality.

    It works amazingly well.

    What's harder to deal with is misinterpretation of specs. This has killed a couple of projects for me. Spend a LOT of time initially getting the spec right and communicate every detail about it so you know contractors understand it.

  53. Do Agile by Anonymous Coward · · Score: 0

    It's not easy. But done right following an Agile implementation, like Scrum, will allow you to monitor progress, let the customer decide what get's build, allow you to make reliable estimates and more.

  54. Moving to employees by Paul+Sinnett · · Score: 1

    As a contract programmer I don't charge for bugs. Because I'm my own employer, I account for the bugs I expect to make in my rate. Moving from contractors to employees, this is just another hidden cost you have to account for. You should also account for ongoing training and so on.

  55. Check your ego at the door by gr8_phk · · Score: 2

    I do not pay for bugs. Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code. Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs.

    Anyone who says they write perfect specs or perfect code, or perfect anything is full of shit. Even if YOU write perfect specs, they're based on customer requirements and those are always incomplete. Customers do not have requirements, they have problems, and it's our job to devise solutions to those problems. Even if code is written bug-free the customer will not know exactly how it should work until you give them something to critique. Then they ask for changes - this is called a requirement change or clarification, not a bug, and not the developers fault. I'm sure your developers create bugs too, but I'm certain they're not the only cause.

    BTW, my subject line applies to developers too.

    1. Re:Check your ego at the door by Anonymous Coward · · Score: 0

      Agree 100%. The OP sounds like they see things too much in black and white, either it's writing to a spec and paid time or it's a bug and unpaid time. Whether you work with contractors or salaried employees we're all human beings not robots and a co-operative approach is miles better than a combative one. Meet them half-way: "this looks like a bug and I can't charge the client for fixing it so let's split the cost, I pay you half-time out of my pocket, later on if another project comes under budget I'll share the profits too."

  56. Wow, I'm glad I don't work for an arrogant twit. by Anonymous Coward · · Score: 0

    I don't know how anybody could think that all software bugs should be the "fault of the contractor who should fix them for free".

    Even if the meaning of bug is "not what my spec says should happen" that's still impossible. And in the real world, not even specs are ever perfect.

    Sometimes the customer is only able to see that what is necessary is the opposite of what is in your spec. Is that now a Feature, not a Bug?

    W

  57. To Pay or Not To Pay, That is the Question by neoshroom · · Score: 3, Informative

    Really is all depends on how he pays, doesn't it? I am a contract freelance software developer and I use the exact same policy he does with clients.

    However, even though I am fixing bugs for "free" they really aren't free. The extra time it takes to fix bugs is simply factored into the initial contract costs. If the contract payment is too low, nothing is forcing you as a freelancer to accept it. You simply take those contracts which have a payment requisite to the amount of time you think it will take to make the software and fix its bugs relative to the complexity of the software you are creating.

    I mean you can say "I don't pay for bugs," but really everyone is paying for bugs whether they think they are or not.

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    1. Re:To Pay or Not To Pay, That is the Question by Anonymous Coward · · Score: 0

      You are in fact the AC that posted this drivel and is now trying to defend himself. Just look at the comments - everyone knows that you suck and are just trying to rip people off and are now whining because it's not working.

    2. Re:To Pay or Not To Pay, That is the Question by bill_mcgonigle · · Score: 1

      Right, this is how grown-ups pay for projects. It sounds like the OP may not have had a grown-up contract with his subs.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    3. Re:To Pay or Not To Pay, That is the Question by neoshroom · · Score: 1

      Ha...I'm not the orignal poster. It sounds like his problem was he didn't originally make clear that he wasn't paying for bugs and thus the freelancer didn't have the opportunity to add that to the original contract fee (in which case he is trying to rip people, but he could easily fix that in the future by adding it to the contract and making it clear to his future contractors). Who knows if it is drivel or not? He left out the key information that would allow us to determine that...the contract.

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
  58. I like that! by Murdoch5 · · Score: 1

    Not paying for bugs makes sense, there is no reason you should release code to someone if it doesn't work. That being said any new graduate should be willing to work for about 50k out of school and they usually come equipped with lots of languages. Just make sure you pick from the middle of the grade pile, the people at the top are usually just show boaters with no real programming skill and the guys at the bottom just don't give a shit.

    1. Re:I like that! by Anonymous Coward · · Score: 0

      Not paying for bugs makes sense, there is no reason you should release code to someone if it doesn't work.

      A program having a bug doesn't mean the program doesn't work (although the program not working would certainly also be a bug). It might be the condition that it fails if you happen to put a log file ten directory levels deep, without such a limitation being documented. Or it might be the condition that a message which should read "connected to server" actually reads "connected to sever". Or it might be the condition that if you happen to start the program with more than ten parameters, and in addition the configuration file contains a specific setting, and all this happens on a system with less than 2GB of memory and at least 4 cores, then you'll get a segmentation fault.

    2. Re:I like that! by Anonymous Coward · · Score: 0

      MWUAHAHAHAHAHAHA. You sir just lightened my day :p

  59. Re:There's no such thing as non trivia bug free co by Anonymous Coward · · Score: 0

    Always better? Rubbish. Whether having software with no bugs is "better" or not is determined by a cost/benefit analysis between the business impact of having the bugs versus the cost of fixing them.

    Real businesses make decisions this way; at least the ones that plan to be around for a while.

  60. Here's how I would approach this... by houbou · · Score: 1

    If I were in your shoes...
    1) Do you provide Unit Tests for your code
    2) When you write your specs to your clients, you probably breakdown your project into phases, so, for each phases, do you clarify the deliverables and the expectation of functionality?
    3) Based on number 2), you should be able to provide functional testing, which in this case, if it passes and your unit tests passes, would then qualify your product as deliverable and I would make sure that these would be the criterias for the software I'm writing.

  61. You want the best of both worlds? by RobinH · · Score: 2

    So you're paying these developers some kind of contract rate "by the hour" but you then want to impose a fixed scope and hold them to it later? I mean if you're providing them with a complete (perfect) functional spec, then ask them to bid on it as a fixed price, make sure they include a 1 year warranty for any software defects, and then by contract they have to fix the bugs. Sounds like you just want the benefits of paying by the hour without any of the negatives.

    --
    "I have never let my schooling interfere with my education." - Mark Twain
    1. Re:You want the best of both worlds? by Jah-Wren+Ryel · · Score: 1

      > Sounds like you just want the benefits of paying by the hour without any of the negatives.

      Bingo. He didn't explicitly say he was paying by the hour, but reading between the lines it sure sounded like it.

      --
      When information is power, privacy is freedom.
    2. Re:You want the best of both worlds? by mrego · · Score: 1

      $100K a year (plus benefits, naturally) sounds good, but if that's too much then presumably he is paying $50/hr. or less to his contractors and they are supposed to assume all risks, provide their own benefits (health care, vacation/bench time) and cover all taxes (payroll/social security taxes) and unemployed time as well as their own marketing and educational expenses, etc. So the post really should have began, "I'm a cheapskate middleman leaching off the work of others..." If the contractor(s) is(are) supposed to be collectively making the equivalent of $100k, then they should be paid at least $100/hr. especially since it is probably less than full time work with no long term assurance. It sounds nice in theory that all bugs should be eliminated at the contractor's expense (and honorable ones probably would fix them for free if they want future work), but often it is not possible to fully test outside of production if there is no good test bed or realistic data to test with. If such a test environment is not provided, then the contractor should not be held at fault since what they can test is limited. This depends on the type of software being developed. Perhaps we are talking about simple smart phone apps or something or he is employing off-shore foreigners.

  62. Hey Slashdot, racist jokes are not OK anymore by I'm+New+Around+Here · · Score: 2

    The QOTD at the bottom of the page is currently this:

    Q: What do you say to a Puerto Rican in a three-piece suit? A: Will the defendant please rise?

    WTF?

    --
    If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
    1. Re:Hey Slashdot, racist jokes are not OK anymore by TheMathemagician · · Score: 1

      Yes somewhat surprising ... of course this is a very old joke. In the UK I've heard it as a Scouser (someone from Liverpool) in a suit.

    2. Re:Hey Slashdot, racist jokes are not OK anymore by Anonymous Coward · · Score: 0

      That's not racist. It's like making fun of Canadians for being overly polite or of making fun of Americans for being extremely nationalist to the point of silliness (America, fuck yeah! USA USA USA). It has the same theme of racism in stereotyping a group of people, which is always going to be unfair to some of the people in that group, but that only becomes racism if you do it based on race. By the way, you can still say that the joke is in poor taste without making false accusations of racism.

    3. Re:Hey Slashdot, racist jokes are not OK anymore by iggymanz · · Score: 1

      actually, you're behind the times, the PC era is coming to a close because it is just pandering to psychological marshmallows with chips on their shoulders, and making jokes about anyone different is ok again.

      Though I'll always agree a Puerto Rican in a three piece suit isn't always a defendant, might just be a thief.

    4. Re:Hey Slashdot, racist jokes are not OK anymore by Anonymous Coward · · Score: 0

      Maybe he's a lawyer?

    5. Re:Hey Slashdot, racist jokes are not OK anymore by I'm+New+Around+Here · · Score: 1

      Yeah, I'm sure Puerto Ricans would read that joke and think it's the same as calling Canadians polite.

      As to whether it's racism, or just ethnic stereotyping, I'm sure if this was a discrimination case in court, the claim would be it is a "racist joke".

      --
      If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
    6. Re:Hey Slashdot, racist jokes are not OK anymore by I'm+New+Around+Here · · Score: 1

      actually, you're behind the times, the PC era is coming to a close because it is just pandering to psychological marshmallows with chips on their shoulders, and making jokes about anyone different is ok again.

      While I do hope you're right, and political correctness should go in the dustbin, it is still not what I expected to see on the front page of a major website with visitors and members of many groups. Especially since it is now owned by an employment company.

      --
      If you think I voted for Trump because of this post, you're wrong. I voted for Dr. Jill Stein of the Green Party. Again.
    7. Re:Hey Slashdot, racist jokes are not OK anymore by iggymanz · · Score: 1

      Get real, of course all employment companies and HR departments operate on bigotry and stereotypes and discrimination, the lying needs to stop. For example, in the United States, "affirmative action" means government subsidized discrimination and sexism.

  63. Ask Dilbert by tedgyz · · Score: 1
    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  64. X, Y, Z, Buffer Overflow Error by neoshroom · · Score: 1

    there is no way ever I would sign an f***ing contract where someone else can determine how much work I need to do for a fixed amount of money.

    As a contract freelance software software developer (and I happen to be one as well) nobody else is determining how much work you need to do for a fixed amount of money. You are the one determining this. Really the trick is just getting a detailed feature-set and being good at estimating how much time things will take you. After you do that then you simply double the amount of time (because things don't always go smoothly). On half the projects where things actually do go smoothly it will work in your favor.

    If someone else says "I think it will take this amount of work to write this iPhone app and I am willing to pay this amount of money" and it isn't in your opinion enough, you can just walk away and not take the contract.

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    1. Re:X, Y, Z, Buffer Overflow Error by Anonymous Coward · · Score: 0

      Wow, could you post your business name here please? Just so no one accidentally hires you without knowing that you are so oblivious, but you and I both know that you are not a, "freelance software software developer" (sic). You are a web designer that thinks that html, css and cut and paste js makes you a "software software developer" (sic).

    2. Re:X, Y, Z, Buffer Overflow Error by fractoid · · Score: 1

      Really the trick is just getting a detailed feature-set and being good at estimating how much time things will take you. After you do that then you simply double the amount of time (because things don't always go smoothly).

      My mum told me this rule for estimating back when I were a lad. Make your best guess then double it. Still works to this day.

      --
      Rampant carbon sequestration destroyed the Dinosaurs' tropical paradise. I'm here to help repair the damage.
    3. Re:X, Y, Z, Buffer Overflow Error by Anonymous Coward · · Score: 0

      there is no way ever I would sign an f***ing contract where someone else can determine how much work I need to do for a fixed amount of money.

      If someone else says "I think it will take this amount of work to write this iPhone app and I am willing to pay this amount of money" and it isn't in your opinion enough, you can just walk away and not take the contract.

      That's exactly what he just said

    4. Re:X, Y, Z, Buffer Overflow Error by neoshroom · · Score: 1

      I mostly code in Objective-C, so you are pretty far off-base. I do desktop and mobile development.

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
  65. Hours and hours of work. by Barryke · · Score: 1

    "The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"

    This one guy, assuming he has a finite amount of time, and you have a lot of projects, would barely have time to flex his muscles at each language. Descide if you need designers or implementers or stenographers, (in that order) and realize you might be better off with 2 (cheaper) implementers, even if they should climb some time consuming learning curve for some project.

    --
    Hivemind harvest in progress..
  66. Bonuses for no/few bugs looks like a good solution by S3D · · Score: 1

    Pay bonus for product of acceptable quality and make sure contractors confirm online that you are actually paying bonuses. Build yourself a reputation of trustworthy client and you would attract qualified contractors.

  67. EXACTLY by Anonymous Coward · · Score: 0

    There is nothing wrong with your model, you just to be up front about it. You have delivery X with features A and B and then .

    However the "respect developers" part must include that not everything is a bug even if it's unexpected. If something is unspecified then it's "according spec". Also if the customer changed their minds, it's not a bug. You have to be able to show it's not done upto spec. Changes cost money.

  68. I have an idea. by Anonymous Coward · · Score: 0

    How about you go fuck yourself, you fucking cheapskate.

  69. Here's a solution by mordejai · · Score: 1

    Remove the quotes around "free" and put them around "empathy".

  70. contract developers by Anonymous Coward · · Score: 0

    Your in the wrong business, start a lawn service!

  71. Informed consent by XNormal · · Score: 1

    Make sure to explain the scenario to the contractor up front. In detail. More than once. Give them a chance to raise their offer to include this. Ask them again how certain they are about their ability to estimate their bug rate. Let them sign a separate page describing this in simple language.

    Have a process to clearly separate bugs that are covered by this from modifications for which they are paid separately. For some small things that are arguably not bugs but modifications let them have the benefit of the doubt and pay them for it, anyway. Make sure they know it.

    I think it can be done.

    --
    Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
  72. Why do the bugs only surface toward the end? by Stolpskott · · Score: 3, Informative

    My first thought as I was reading the summary is "why are the bugs only being highlighted at the end of the project?".
    Granted, that is when the users have something approaching a "complete" product to work with so that is where they will do most of their testing... wait, have I just answered my own question?? It seems I have, yes.
    Welcome to the wonderful world of the project manager and analyst - if the client is coming with bug reports, there are 3 potential areas where someone screwed up - either the client explained it badly (in which case, it is not a bug as such, it is a functional change - paid work), or you did not do as good a job as you should have of writing the spec (in which case, in my opinion, you should eat the cost and learn from the mistake), or the developer botched the implementation of your spec (in an ideal world, the developer *should* fix that, as they caused the problem).
    If the client or you screw up, just about the only way to catch that is during a user acceptance test. Determining whether the screw-up is yours or the client's comes down to a review of your spec and needs some honest appraisal by you - if the spec is unambiguous and the product does what the spec says, and the client has signed off on the spec, then it is their fault. If the spec is ambiguous and open to interpretation (typically this is going to be when the spec matches what the user wants, and what the product does, but the product and the user's expectations do not match), then you have the fault. Yes, it is incredibly hard to write clear, unambiguous specs and then get a client to read through them and understand them... but in that case the spec is a bit like a EULA - the user does not have to read and understand them, they just have to sign on the dotted line to say "the spec matches what I want".
    If the dev screws up, getting them to hold their hand up and admit to the fault and fix it is hard, as you have found - why work for free when you can work for money - but if you structure the contract correctly, with a completion bonus that they get when the client takes delivery, then you have some kind of hold over them. For example, a basic wage of $60k/year pro rata with $40k/year pro rata paid after sign-off. Some/most contractors will be put off by that, and they are typically the ones who will cut and run at the first mention of "bug" and "free". But the ones who are willing to take that on will probably be more conscientious in terms of self-testing, unit testing, analysis and possibly querying the spec, because if they can get it right first time, they get the bonus without doing any extra work...
    As for the other side - getting the users to test and validate earlier in the process, for that you need to deliver functional prototypes early in the process and implement some manner of testing window - most of the companies I have worked for as a PM/analyst have contract clauses that give clients a 30-60 day window from delivery of a new version of an application to report bugs as bugs - after that, any errors are categorized as billable change requests, so the client has both incentive and responsibility to perform testing of their own.

    It does mean that you get to have some tough conversations with a client because they are reporting a "bug" after 5 minutes of use, 6 months after you delivered the application, and if you want to be flexible and client-focussed, you can look at whether that bug should have been caught by in-house testing to confirm compliance with your spec.

    Lastly, when you find a couple of good contractors who are able to write good code and who take enough pride in teh quality of their work that they are willing to work on fixing bugs in their code (they do exist, honestly, they are about twice as common as unicorns, and are sighted more often than flying pigs), either offer them a permanent position, marry them off to your sister so that you can keep track of them, or tell them that they do such good work you will want to call them back next time you get a juicy and interesting project.

    ok, maybe I am a bit too naive for this job, but I have been working as an analyst/PM/IT implementation consultant in the banking and finance industry for the last 10 years.

  73. Tighten up your contract by Drethon · · Score: 1

    I work for a software contracting house. We do some work at fixed price so we get paid X to finish a job, no hourly pay. This means we work until the job is done, even at our own expense as long as the customer does not ask for anything beyond the initial contract.

    1. Re:Tighten up your contract by Andover+Chick · · Score: 1

      Right, and the trick here is knowing that the customer will inevitably not include something they really need in then specifications. Only a terrific egomaniac thinks he writes "excellent" specifications. I work at a bank where we have so many stake holders with conflicting specifications that we inevitably do things on a cost-plus basis with external vendors.

  74. two ideas by Anonymous Coward · · Score: 0

    If you have good specs why don't you require unit/system tests? The overhead is about 30% for writing testing code.

    My contracts were: 25% down, 50% on completion, 25% when they were 'happy'. If the customer was dishonest I found out when I lost either the 50% or the last 25%. If they had bugs they could withhold the last 25% until they were satisfied.

  75. Your employee should be a unit tester by bugnuts · · Score: 2

    Instead of an end product coder, hire a unit tester. Hand him the specs that you send out, and have him code unit tests for all input categories of the different modules, and check results and fail modes. Hell, have him send out these tests as he finishes, so that the contractors can use them, too.

    If the unit tests are correct and the software is failing, don't send out paychecks until it passes. Getting the test suite running may take a week or two once the code is delivered, so you might be a little later than you usually are. But you contracted for working code, and the easiest way to verify it's correct is to pass a test suite. Once it passes that, you'll know that it passed YOUR specs. At this point, if there are bugs despite meeting the specs, it's your fault.

  76. There's no I in TEAM... by Anonymous Coward · · Score: 0

    I run a small software consulting company who outsources most of its work to contractors.
    I market myself as being able to handle any technical project

    I'd clean toilets before working for this guy. He's pretty clear on the fact that he doesn't pay his 1099's
    (I didn't say he was stupid, but it's clear he's paying his employees on 1099 to leverage his negotiating
    position to get "free" labour) "employees" in a timely fashion - I've see how these guys are which is why
    I never contract on 1099 (in the USA 1099 treats an employee as a regular creditor unlike W2 which has
    very strong laws to protect the employee - in some states, failure to pay a W2 wage is an indictable offence).

    This is probably the worst kind of person.

    The fact that he uses "software" as a vehicle for exploiting people for his own gain doesn't give his terrible
    business practices any more credibility or justification.

    and I'm pretty sure the /. crew (or my cat) could come up with a relatively simple technical challenge that even
    he couldn't deliver bug-free the first go-around (no offence to Fluffy, my cat).

    Just sayin'

    CAPTCHA = 'careen' ?

  77. Wait, are you sure? by neoshroom · · Score: 1

    He commits another basic sin of having no provisions in his contract for handling bugs, and is now surprised that it got him stuck.

    Wait, are you sure about that? He called this a rule of his and so I assumed it was in the contract. Basically, if he didn't put this in the contract it is his bad and he should pay extra for bug fixes and if he did put it in the contract then the developer shouldn't complain (as long as it is a real bug and not a stealth feature). You'd assume if this was a rule of his though he'd spell it out formally in his agreements with developers.

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    1. Re:Wait, are you sure? by Cenan · · Score: 1

      I can't be sure no, I assume from the context given. The basic assumption would be that all relevant facts have been laid forth, if not there really is no point in asking a question. If we assume that his post contains all that there is to it, he has a serious problem of either hiring way too cheap or spending way too little time on wording a contract - and probably that would be a symptom of knowing too little about software development to begin with.

      "Shopping around for developers" is not a viable business model all on its own, and leads to exactly the kind of problems he is trying to solve - except there is no solution if the only options are hiring a developer he can't afford or try to force people to work off-contract, for free.

      If on the other hand he forgot to mention this little bit of information, at the expense of using half the post to sing his own praises, well then by inference we could come to much the same conclusion really - he has no clue what he is doing.

      --
      ... whatever ...
    2. Re:Wait, are you sure? by neoshroom · · Score: 1

      "Shopping around for developers" is not a viable business model all on its own, and leads to exactly the kind of problems he is trying to solve

      I kind of agree with you there. It sounds like he doesn't really add much to the process.

      --
      Big apple, new Yorik, undig it, something's unrotting in Edenmark.
  78. You're failing to understand software development by Anonymous Coward · · Score: 0

    1) Given any sufficiently complex real-world programming task, the avoidance of bugs is actually *impossible*. That's even true under the gracious assumption that the true nature of some things you end up calling "bugs" aren't actually caused by deficiencies in your requirements. It's not just that one or two bugs will slip through occasionally as a result of programmer shoddiness. All complex software *always* has many bugs at any given time. Even if you go years with nothing but bugfix work trying to perfect the codebase, you will never rid the codebase of bugs. It's fundamental to the nature of software. The complexity is far, far higher than you think it is even for relatively "simple" programs.

    2) Contract programmers are never a good solution if you want a stable long-term codebase of high quality. You need developers to *own* their code in the long term if you want that. The same guys that wrote it need to be responsible for maintaining it and debugging it in the long term. They need to refactor it as their own skills grow. That you've been trying to build higher-quality code with contractors is a really bad smell that you don't understand so many fundamentals about how high-quality software actually gets written. It's a slow process that involves art and love. A good codebase gets that way after years of evolution. An initial write of a chunk of software is never great. It's not like hiring a contractor to pour a new driveway for your house.

    3) You'll never find your one highly-skilled in-house multi-language developer for under $100K. If whoever you hire is that cheap, they're not as good as you want. Hiring one badass developer to try to wrangle the efforts of all those contractors is a poor plan anyways.

    In short: you're way off base in your thinking. If whatever you're doing is making you a profit as a small business and you can sleep at night, just keep making a profit and be happy. But don't delude yourself into thinking that you're currently producing great software, or that your business model is even remotely close to being capable of such things. Sometimes contract programmers happen to be richly-talented awesome programmers; this isn't a dig at the contractors themselves. But the process of contracting programmer effort pretty much kills your ability to generate a high-quality codebase even from high-quality programmers, and your view of software bugs is juvenile at best.

  79. I think you have to pay for some bugs... by Anonymous Coward · · Score: 0

    Can you really say that all the bugs your customers are complaining about are the developers' fault? Are you making developers use libraries or frameworks they wouldn't have chosen themselves? Are the deadlines sufficiently loose to allow time to do sound analysis, engineering, testing, and refactoring? Are you contracting developers with sufficient experience and education, and paying them competitively?

    If you dictate the technologies, leave the spec open for interpretation (did YOU specify how the app should behave when various hardware fails, a third-party service is slow to respond, etc?), have tight deadlines, or recruit inexperienced developers then you're as much to blame for the problem as the developers.

  80. You are so right! by Anonymous Coward · · Score: 0

    When you buy software it should work without bugs. And I'm sure those lazy programmers could do it too!

    Only drawback would be that software would take a lot longer to make. There would be proper designs, actual testperiods and no managers shouting "ship it already!" behind them. Be prepared to pay an obscene amount of money for properly designed and build software.

    Or quit your bitching and accept that you get a metric ass-ton of software with not-a-lot of bugs for less money than you spend on "designer coffee" in a week.

    1. Re:You are so right! by Half-pint+HAL · · Score: 1

      Or quit your bitching and accept that you get a metric ass-ton of software with not-a-lot of bugs for less money than you spend on "designer coffee" in a week.

      I'm not a coffee drinker, and I don't much appreciate your attitude, young man...

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  81. Then hire a tester, not a developer by Anonymous Coward · · Score: 0

    As a software engineer working for a managed engineering services firm mostly in the Avionics and embedded fields, what it sounds like you need is an in-house tester. Forget them coding anything other than test harnesses and/or regression scripts, assuming you don't use one of the few test development tools out there such as VectorCast or Rationale (which would further increase costs based on it's own cost-quality analysis), as a dedicated tester would simply be designing requirements based tests for the specs you provided. It more effectively solves the problems with both your requirements, which I doubt are perfect, and any code implementations, which I doubt are perfect. A tester only needs to know enough about any given language to write a test case which is also the case for the lower pay of a quality control engineer which satisfies one of your other needs. Not wanting to "pay" for bugs is fine, no company wants to, but facts are facts: You're going to because they'll be there in either the implementation or the requirements. Minimize the potential issues with a dedicated test team to validate both the requirements and the implementation. Solid quality control requires time and budget but is realistically the only way to reduce the error overhead while providing faster feedback to the dev team: devs code, testers test and the PM keeps it all straight until delivery of all artifacts, including 'valid' PRs.

  82. *How* do you pay? by bradley13 · · Score: 2

    What is your agreement with the contractors? From your statement that you "pay on time" I have the feeling that this is where your problem is.

    If you have agreed: "I will pay you $x per hour of work", then you are paying for their time. If bugs need fixed, you need to pay for some more of their time.

    On the other hand, if you say "I will pay you $x if you write a program that meets this specification", then you simply do not pay until you have such a program. If it's a big project, it may make sense to define some intermediate milestones, where the programmer receives partial payment. However, a large portion of the payment (at least 1/3) should be released only after the program has passed acceptance tests.

    A contractor ought to charge you slightly more for the second option, because the contractor is carrying the risk.

    --
    Enjoy life! This is not a dress rehearsal.
  83. Re:There's no such thing as non trivia bug free co by HungryHobo · · Score: 1

    I don't think you quite grasp the scale of "expensive" in this case.

    Even with modern processes it can still come to hundreds of dollars per line to actually be certain.

    http://www.mail-archive.com/sc-l@securecoding.org/msg01278.html

    Though that only covers making sure it does what you think it should do, it doesn't cover making sure what you think it should be doing is what the client thought they were telling you it should be doing.

    What you actually want is code which *probably*
      has very few bugs which you can create for a sane price and at a sensible speed because most clients want their software this year, not 10 years from now.

    There's always a tradeoff.

  84. I call BS. by generic_screenname · · Score: 1

    >Developers can make more work for themselves by causing bugs And project managers can attempt to get free work by disguising features as bug reports.

  85. Interesting by Anonymous Coward · · Score: 0

    And yet, what would the programmer do in this case? Code to spec, code as he thinks it should work, or go back to get better specs?

    In a fixed price project you bet I'd do the first! I don't have time to do the correct thing (get better specs) and I'm not failing any tests on my own dime.

    1. Re:Interesting by plover · · Score: 1

      And yet, what would the programmer do in this case? Code to spec, code as he thinks it should work, or go back to get better specs?

      In a fixed price project you bet I'd do the first! I don't have time to do the correct thing (get better specs) and I'm not failing any tests on my own dime.

      This is sadly true, and I've seen it a lot. When a developer is motivated by a deadline, other people's screw ups are just things that interfere with meeting that date. Any fixes will come out of the padding in the estimates, and once that padding is gone, so is the programmer's motivation to fix them. Those kinds of bugs then get quietly swept under the rug, or if they do get brought up in advance, people start arguing about who made them, who should fix them, who will test them, and in which future release will they go out to the customer.

      In this particular example, the bug is egregious, and I'd expect the programmer to make the 5 minute effort to clarify the spec. The difference is that most programmers understand math well enough to catch a math error, but not every spec error is in their field of expertise. What if the mistake was in the calculation of tax, and the programmer doesn't understand the tax laws well enough to spot the error? That bug is going to sail right through every test, and the developers will deliver their perfect-to-spec-yet-still-buggy code.

      --
      John
    2. Re:Interesting by Anonymous Coward · · Score: 0

      Mod parent up, "+1, Sad but true".

    3. Re:Interesting by minstrelmike · · Score: 1

      Or what if it is some rocket specced to land on Mars but someone mixed up the meters and yards (USA/Burma measuring system).
      The rocket actually landed on Mars but not at a speed that kept it in one piece.

  86. Hire the outsourcing employee...... by Anonymous Coward · · Score: 0

    Remember this guy:

    http://it.slashdot.org/story/13/01/16/0354218/employee-outsourced-programming-job-to-china-spent-days-websurfing

    Obviously perfect for the job. He might even be available due to his former employers lack of vision.

    AC

  87. Lies by neoshroom · · Score: 1

    I will prove you wrong right here:

    #import "stdio.h"

    int main(void)
    {
    printf(''Hello, world!\n'');
    return 0;
    }

    (Really, it has a bug and I proved him right.)

    --
    Big apple, new Yorik, undig it, something's unrotting in Edenmark.
    1. Re:Lies by Anonymous Coward · · Score: 0

      You have a bug.
      printf has a return to signal success in the bytes written. But you returned 0 from main without testing this fact. BUG, in cases where printf fails as documented.

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

      Is it characters written or bytes? are they the same? oh the horror.
      All I wanted to do is print something and be notified if it did not!

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

      But... How many "bugs?" Also, what's a bug? I don't read English, can that be changed to Arabic? What happens if it's exec'd with arguments? What (and where) is "stdio.h"? Does it matter that the parent process isn't getting the child exit signal? What if fd 0 is redirected or closed?

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

      Actually, there is no bug since that code won't even compile. So there!

  88. Being a Publisher on the Cheap by Shadowmist · · Score: 2

    The OP essentially wants to be able to act like a software development company on the cheap. A software development company has it's own full time staff to develop code and budgets time for things such as beta testing and fixing the INEVITABLE bugs that come up, especially for major pieces of software. This of course is not cheap, you're paying salaries and benefits to maintain such resources.

    If you're going to try to do this on the cheap by outsourcing it, then you're going to have to admit that you're not a developing house, you're just a shell game trying to hide the fact that you're not the publishing house you're making yourself out to be to your customers.

  89. If you don't know how to code... by Anonymous Coward · · Score: 0

    You are not qualified to supervise someone who does code. People who view themselves as "project managers" who manage by purchase order or with "specifications" and "bug reports" but do not possess the actual knowledge of how to code simply do not have the right to any opinions on the subject. Most of these 100% skill-free people were laid off during the Great Recession.

  90. UAT ? by mrmangosir559 · · Score: 3, Insightful

    Sounds like to me there is no UAT going on. Old method but, Development->UAT->Product, should be the most basic method. Sounds like you are handing over the software without any sign off from the customer. If they are signing it off, are you getting them to test it first? As part of your contract with the developer, you should be making sure the developer is aware of this process. That "within reason", the customer should be testing the software according to your specification. Any bugs can be returned to the developer. Once it meets the specification, then the customer signs it off. The customer is then aware, any issues after that period they pay and the developer knows after that period they get payed. Having an employed developer, means you have an overhead if you have no business coming in.

  91. This guy is an ass by Anonymous Coward · · Score: 0

    I wouldn't work for you if you 'could' afford to pay a decent wage you prick. Shove those bugs up your ass.

  92. good developer under 100k? by efarng · · Score: 1
    Everyone else has already commented about writing clean code and that everyone always has lots of bugs, good developer or not. Bug free code is a team effort.

    However, I'm wondering about the 100k price range. In general, as in life, you usually get what you pay for. But, if you happen to find someone good in your price range, they will likely change jobs as soon as they find something better.

    But I see a few ways to save money. Your best bet is to move away from SF, NYC, Boston, Seattle, or any other major city. You can also consider recent college grads. Though they may not have lots of experience, you can possibly find a true hack0r that spends all their free time doing coding for fun and has learned lots of languages and tools. Also consider H-1B workers. They usually have lower salaries. (You can also go for the trifecta, recently graduated international student in a small college town)

    However, given that you keep hiring poor contractors, you should carefully examine your interview process before hiring a full time employee.

  93. Thoughts from an Analyst by realsilly · · Score: 4, Insightful

    I am an analyst and I often write requirements, test code and write user documentation. I've been in the industry for 20+ years. I have never met a single developer who doesn't have bugs in code. I've read some of the posts in this thread and many of you are comparing building contractors to software developer contractors and I honestly think you're comparing apples to oranges.

    I don't know what the small business owner is making but I believe, to some degree his demands are unreasonable. When a contractor comes into your house to install an item, there are a limited number of ways in which that contractor can perform the tasks to complete the job. If that contractor must deviate from standard specs they run the possibility of having issues with the installed item. And under their contract, under normal conditions, they have limited liability to correct the issues after installation. If the house has a non-standard configuration, and the contractor must fit a square peg into a round hole, this is usually discussed before the work is performed and agreements are made. However, it happens all the time where a contractor faces a hidden issue in their goal to complete the task correctly without issue.

    From that description comparing a building contractor to a software developer contractor is feasible. But code is different. With code there are several ways to skin a cat and depending on how rigid the specifications are can influence the amount of bugs that can be created. As good as I would like to think I am in writing requirements there are always hidden requirements that can't be considered until a software developer gets into the process of writing the code. The small business owner claims to have written the specifications, and I don't believe he has developer experience, and to write a chunk of code to capture data in one place may open several doors within the product on how to handle that captured data. Unless the specifications are that meticulous there will be bugs. My question would be, have you hired a tester? Just because requirement 1 says "capture data", and requirement 2 says "store data", where is the requirement on the length and type of data to store? Boom, bug. If specifications don't get down to that level of detail everywhere, there will be bugs. And if your specifications are that meticulous, then how much time is over used up front.

    On top of that, you're requesting that a developer be able to write in multiple coding languages. How much would you pay an interpreter to speak five spoken languages? A lot of money, software developers who can write in multiple coding languages and are proficient in all of them don't come cheap. Specifications to interpret one to one from one language to the next.

    I'd say the following:
    1. raise your prices you're charging your customer
    2. insist on a very small subset of development languages
    3. hire a full time employee and find someone who cares about success in your company
    4. perks, perks, perks
    5. hire interns for testing
    6. Most important, demand excellence, but be realistic.

    --
    Life takes interesting turns, but the most interest is when you're off the beaten path.
    1. Re:Thoughts from an Analyst by gnasher719 · · Score: 2

      I am an analyst and I often write requirements, test code and write user documentation. I've been in the industry for 20+ years. I have never met a single developer who doesn't have bugs in code. I've read some of the posts in this thread and many of you are comparing building contractors to software developer contractors and I honestly think you're comparing apples to oranges.

      A friend of mine built a house. One contractor drove a nail through a water pipe. Well, mistakes happen. He then wrapped a plastic bag over the hole and plastered over it. Everything actually looked fine for a month (must have used an excellent plastic bag) until a dark spot developed and became bigger and bigger.

      I must laugh when people say there are fewer bugs in different professions.

    2. Re:Thoughts from an Analyst by realsilly · · Score: 1

      The bug was hitting the nail through the pipe. Hiding it is laziness. There are some similarities, true, but if the individual fixed / replaced the pipe immediately, that would be similar to a mistake in coding during development and unit testing caught it. Hiding it blatantly is grounds for termination, that isn't a bug anymore.....that's just douchebaggery.

      But I see your point.

      --
      Life takes interesting turns, but the most interest is when you're off the beaten path.
    3. Re:Thoughts from an Analyst by Xest · · Score: 1

      But that wouldn't be classed as a bug in software because as the contractor intentionally implemented that solution then it would be classed as outright incompetence and would be grounds to recoup money back from the contractor through the courts if necessary. This would be akin to accidently breaking some code, and then rather than fix it, implementing some additional code that masks it but works on a timer and breaks half the program after a while - a contractor doing this wouldn't have a leg to stand on.

      "I must laugh when people say there are fewer bugs in different professions."

      If you believe this then you don't understand why software is different to building a house, and if you don't understand that you don't know enough to even be engaging in this discussion.

      Software is difference because you're always doing something new (if you're not you should reuse existing code/libraries) and so it's always an unknown as to exactly how long it will take and what the bugs might be. This isn't true with building a house, you know how long it takes to dig the holes, lay the bricks, plaster the walls, do the plumbing and so forth - you know because it's a set of tasks that have been repeated a thousand times before. The people you hire also know what can go wrong, they know what to look out for, and how to do it to minimise issues. You may not know exactly but you know enough for a ballpark figure for each task, that, on average, will balance out across the whole build.

      But here's news for you, a bug in the sense of building a house, the sort that will make it through to UAT would be as simple as an ever so slight dent in the wall, some corner not quite being a perfect 90 degrees, the wiring being a bit tacky, sealant not being put on quite tidily enough. Guess what? You wont get any of these things fixed for free either.

    4. Re:Thoughts from an Analyst by Xest · · Score: 1

      " I've read some of the posts in this thread and many of you are comparing building contractors to software developer contractors and I honestly think you're comparing apples to oranges."

      This is because there are two types of people engaging in this discussion - developers and analysts with real world experience of involvement in the full software project lifecycle, and everyone else.

      Everyone else would be the people you describe, these are the students on Slashdot, the IT support folks, and a handful of end users. None of these have the first clue about the topic but you'll get their (incorrect) opinion regardless.

      See the person who responded to you completely unable to grasp why software with it's combinatorial explosion of branches that can do markedly different things in markedly different ways, many of which have never been done before making it a complete unknown is not quite the same as doing building work which has been done literally millions of times before by millions of people in the exact same way and is so very much a known.

      People who don't know anything about software, don't know anything about software. News at 10.

    5. Re:Thoughts from an Analyst by minstrelmike · · Score: 1

      After reading all the house-building analogies, here's some more facts to think about:
      How many houses have been built? How many of those have no problems whatsoever? (I too am an analyst).

  94. How do you define good project manager? by Anonymous Coward · · Score: 1

    First, good project manager with empathy for developers knows that bugs are fact of life and plans ahead for them. No amount of threats will make your developers bug free, in house or contracted. Second, if you truly believe that your specification is so perfect, then there is no chance for you. No analyst is perfect, just as no programmer is perfect. Those two facts of life are the the core of your problems.

    Add freaking testing into your process. Hire capable testers. You do not mention testing at all. Get customer feedback as early as possible. Issue tracking and source control are easy to set up and maintain. The real value is in testing.

    You do not pay for bugs, do you pay for changes caused by faulty or unclear analysis? Or by analysis not being in tune with what customer want? Or do you call everything programmers fault and ignores when they are trying to point mistakes in your analysis? If it is latter, then you should stop believe your own marketing.

    1. Re:How do you define good project manager? by Anonymous Coward · · Score: 1

      This.

      "I don't pay for bugs" is about as unreasonable as douchebaggery can get. Bugs always happen, and no software is ever bug free, nor can it be. It's unpossible.

      You are basically accusing your contractors of fraud in advance, by assuming they will create bugs just to generate work they can bill you for.

  95. Living in a dream world by Anonymous Coward · · Score: 0

    "I market myself as being able to handle any technical project, but only really take the fun ones, then shop it around to developers who are interested."

    So, he's lying to his potential customers. He can handle any technical project, but in most cases, he's not the one doing the work. Right out of the gate, he's setting himself up for failure.

    "I write excellent product specs"

    Oh Lord, if I had a dollar for every time I heard that. I'm sure he THINKS he writes excellent product specs. Let's ask his developers. I'm willing to bet they have other opinions. In 20+ years of software development, I have never seen "excellent" product specs--ever.

    "The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"

    Yeah, here's an idea--do all the work yourself. Here's another idea--stop being cheap--you get what you pay for.

    One last thought. If you're having some issues in Production, get used to it--that's the nature of software development. If you're having serious issues in Production, then your software development process is flawed. Fix that first. Blame the developers only when you know (that is, can quantitatively prove) they are the problem.

  96. You're not a nice person!! by Andover+Chick · · Score: 1

    Don't "don't pay for bugs"!?? Code of sufficient complexity will ALWAYS have "bugs" especially when deadlines are tight and it inevitably uses third party libraries/frameworks. Nothing in the universe is bug free. You're either an incredible egomaniac or you don't understand basic engineering. You're both asking developers to work for free and you don't want to pay market rates, how does that provide "empathy"???? If you want cheap coding then outsource to a developing country where coders w/poor communication skills will write obfuscated code to guarantee their employment, then you won't be able to get rid of them so you might as well make them employees.

  97. With all due respect... by Anonymous Coward · · Score: 0

    ... you're an asshole.

    Seriously, you are. I own a small development company with a handful of contractors, and I treat them just like my regulars. Bugs are par for the course, and your "I don't pay for bugs" attitude simply betrays your lack of understanding a) of how to treat employees and b) how software engineering and development actually works, or worse, c) you're clever means of exploiting contractors for free work.

    To sit there underneath your little tin foil hat assuming your contractors are trying to take advantage of you is no way to run a business, and there is probably a two-way street there as well. I would venture a guess that you have probably succumbed to the temptation to file a "bug report" that had a new feature or specification change cleverly disguised in it, and had contractors tell you to go fuck yourself.

    In any case, you're not someone I would ever do business with, let alone hire to manage anything, because the only thing you've made clear here is that you're a terrible person to work for, don't know how to run a business, and don't have any clue how to manage software projects.

    Scruples are important if you want to be successful in running a business. I didn't get to be the owner of a multi-million dollar company by scamming my employees out of work. They're your most important resource, above everything else, and you have no idea. I have; however, summarily fired plenty of people like you over the years.

  98. Allow me to defeat you with your own logic by sootman · · Score: 1

    "I write excellent product specs, provide bug tracking & source control... with the specifications I write there is no excuse for not testing their code."

    You, as the owner of the company, are responsible for the code you ship to customers. If you write excellent specs and feel there is no excuse for dev's not testing their code, then YOU, as the owner, ALSO have no excuse for not testing the code you ship to customers.

    The good news is, testing should be very easy because have such excellent specs to work from. Right?

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  99. What's missing from the question by MadKeithV · · Score: 5, Informative

    What is missing from the question, and being filled in by expectation by many of the previous posters to this story, is how you define your bugs that you want your developers to fix for free.

    If you define a "bug" as an operation that clearly and objectively fails to meet the expectations set out explicitly in your requirements and specs, then you are in the clear. Basically the situation where your specs state: "When presented with A and B the software will do C", and the software does D. Not conforming to the explicit spec is a clear defect that the developer should have caught.

    If the "bug" is actually "something the client didn't like in your implementation", then tough. The software performs to spec. It doesn't matter how obvious it seems to you or your client now that you see the software that this isn't desired behavior - the desired behavior was not described in the spec and not included in the quote you got. You made an error of omission in your spec - it's your error to fix, not the developer's.
    If you think through on this path you will start to realize that writing a totally air-tight spec is outside of your ability. Stop trying. You aren't that good. No, you really aren't. There are going to be areas where you, the client, and the developer have very different opinions on the severity or "correctness" of certain behaviors not specified in your spec.

    Finally, realize that you are actually taking a passively antagonistic stance to your developers. A priori you are assuming that they will deliberately add bugs to inflate their income. This is bullshit. Contract developers are smart people. They know "recurring business". These guys may be *smarter than you*. The good ones are not out to get you, they want you to be happy with their services so you come back the next time. So drop the antagonism and work with them on the actual issues. Meeting each other at a reasonable half way point works wonders in any relationship, including professional ones.

    1. Re:What's missing from the question by booch · · Score: 1

      I have a saying: "a bug is just something you forgot to specify". I do TDD, BDD, and ATDD, so not meeting the specs is never an issue.

      --
      Software sucks. Open Source sucks less.
    2. Re:What's missing from the question by rjstanford · · Score: 1

      I have a saying: "a bug is just something you forgot to specify". I do TDD, BDD, and ATDD, so not meeting the specs is never an issue.

      Since the specs never cover all situations, but are instead interpreted by humans no two of which think alike, I would argue that meeting the specs does indeed continue to be an issue.

      --
      You're special forces then? That's great! I just love your olympics!
    3. Re:What's missing from the question by Anonymous Coward · · Score: 0

      What is missing from the question...

      I suggest that you go back and read the summary again. There's nothing missing from his question, because he doesn't ask a question.

      He basically spends 150 words to tell us that he thinks he get some benefit by hiring a developer full time, but he's not sure. Then he asks for ideas. Ideas for what? Is he looking for ideas about how to write up a business plan? Ideas about how to approach all of his friends and relatives and ask for seed capital? For the life of me, I could not figure out what he thinks he wants help with.

      (As a snarky aside, if he writes up specs like he writes questions, I think I see a big part of the problem...)

  100. You can't afford to be in business by drinkypoo · · Score: 2

    If you can't afford to pay someone what it costs to do the job right, then you can't afford to be in the business you're in. You can do it for a while, until you build up a reputation for overpromising and underdelivering. You should focus on work you can afford to do.

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  101. Pay by the project, not the hour by Anonymous Coward · · Score: 0

    By "not paying for bugs" it seems that you're paying hourly. If you can't trust your contractors, pay them by the project. Sometimes you'll "lose" money if they finish it under budget, but you know up front what the project will cost (assuming no change requests). Just pay them 50% up front and 50% at the end.

    How are you billing your customers? Are you billing them by the hour worked or by the project?

  102. Warantee Period by Anonymous Coward · · Score: 0

    I work for a major consulting firm, and the way we handle it is dead simple:
    We deliver the code, and our clients know that we will only stick around for three months after we deliver it.
    They will pay us for those three months, and we will fix any bugs they find in that time.

    Do the same with your clients and your contractors.

  103. Two suggestions.... by sonamchauhan · · Score: 1

    You're just a bit too much a programmer, and a tad too sharp an entrepreneur.

    Become somewhat more a manager and factor in some 'fat' -- both in the invoices you charge your customers, and in the time you allocate your contractors. Remember, crap happens. If it doesn't, and your contractors manage to deliver bug free code ahead of time, give them a 'performance' or 'quality' bonus (i.e. payment for the full time allocated). Do not chase profit maximisation like big shops do. They have adequate manpower buffers to beat you at your own game.

    Alternatively, hire someone skilled --- but don't be cheap. Remember, if you chase cost reduction like the small shops, your employee obtains the hunger (he already has the skills) to beat you at your own game.

  104. Ugh. by TheSpoom · · Score: 1

    The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now.

    Sounds like you're screwed.

    Look, if you're not willing to pay for talent, and consider that a cost of doing good business, then you have no right doing what you're doing. Speed, cost, quality: pick two.

    --
    It's better to vote for what you want and not get it than to vote for what you don't want and get it.
    - E. Debs
  105. There is no such thing as a software bug by Anonymous Coward · · Score: 0

    Only unintended features

  106. Structure Your Contracts Correctly by Anonymous Coward · · Score: 0

    1. Write very good project specification so the client and the developer know exackly what is expected (changes in scope cost you and the client).
    2. Only write fixed cost contracts.
    3. Structure the delivery of software and money in equal parts (exa. pay one half of the money for delivery for one half of the software).
    4. Warn the developer that he (an you too) only get the final payment when the client accepts the final project as specified in step one (bugs fixed and all).

  107. Let's pick apart your requirements by satch89450 · · Score: 2

    "I write excellent product specs" -- are these product specifications sufficiently detailed to have a consulting Software Quality Assurance person be able to test each feature of the product? Sufficiently detailed so the multiple people you hire can seamlessly do integration testing? What scaffolding do you provide for each of the developers? Do you have the same "source control" of your specifications as you do for the code generated from them? How do you handle "feature creep"?

    "Bug tracking and source control" -- Do you have staff or contractors who confirm the bugs? And how do you handle regression testing during development and subsequent maintenance? How about code reviews? Who handles customer service queries?

    "Empathy for developers" -- demanding bug-free code without the tools and processes to give the contract developers a fighting chance? How well do you anticipate corner cases in your products, so you can include them in your specification? What practices do you insist on to catch bugs early in the product development cycle?

    "...hire someone full-time...know a lot of languages and be proficient in all of them...can't afford to pay someone $100k/year" -- Sounds like a version of the Universal Specification: "I want everything, now for, $1.98." As for pay, that one is easy: make him a partner, and he earns from the bottom line just like you do. You will probably have to take a bit of a pay cut to attract what is essentially a do-everything maintenance programmer, not exactly the career track that anyone with the type of experience you are looking for would choose. Have you looked at the pool of experienced programmers? There are quite a few who have been put out to pasture because they don't have the "zing" in their resume that most [In]Homan Resource people look for. Learning languages is a skill easily picked up. Learning how to un-muddle code written my others is an art, and people skilled in the art of decoding a mess are much harder to find, let alone identify.

    Transition? One possibility is to find a contractor highly skilled in maintenance programms. If he works out, offer him a partnership.

    As for the attitude that any piece of software can be completely bug-free: that's a holy grail. The ADA Programming Language was invented to try to provide an underpinning to achieving the holy grail -- when was the last time you heard about it seriously? Several research-based languages have been developed that purport to "prove" that they are correct...but watch what happens when an unanticipated corner case hits the code. Many of the advances in languages and compilers focus on finding easy and trivial problems quickly, so a programmer doesn't have to spend time finding and fixing them. (Scripting languages, particularly those that compile "on the fly" such as TCL and most shell scripts, point out the advantage of a proper compilable language; you lose some flexibility, but the overall programmer cost is far lower than tripping over mistakes one at a time, particularly if the programs run are measured in minutes and hours.)

    Your business model will need to change. Count on it.

    1. Re:Let's pick apart your requirements by darkwing_bmf · · Score: 1

      As for the attitude that any piece of software can be completely bug-free: that's a holy grail. The ADA Programming Language was invented to try to provide an underpinning to achieving the holy grail -- when was the last time you heard about it seriously?

      Ada is a perfectly fine language. We use it in aerospace all the time. You'll still have bugs though. The Ada compiler can catch certain types of bugs at compile time (such as assigning an out of range value) and this is very handy. But if you have a design error, that's something the compiler isn't going to catch.

      That being said, don't dismiss Ada out of hand. It's a very good programming language for many types of tasks and most of the arguments against it are based on the circular logic of "nobody uses it".

    2. Re:Let's pick apart your requirements by Anonymous Coward · · Score: 0

      The guys is a liar. I have worked for over two decades as a "Programmer" and i know from personal experience that you can never guarantee anything perfect on all of the points you mention when it comes to "Software Development". There is a reason it is not considered "Engineering" in the same way Classical Engineering fields are. The way he writes, he has thought of everything, does everything excellently and it is the dumb programmers (contractors or not) who screwup things. He is the very definition of a douchebag PHB.

  108. I wish I knew who this joker is... by Anonymous Coward · · Score: 0

    ... so I can be sure to never interview with him or send someone to him. This is either a joke or the guy knows nothing about software development.

  109. Need a partner, not an underling by moeinvt · · Score: 1

    I have more sympathy than some here. I know from experience that all of the regulatory hurdles associated with hiring full time employees are a pain in the ass. Going from 0 to 1 is a big leap.

    If you can't afford $100K (don't forget benefits, matching FICA taxes, etc.) forget looking for an underling well versed in multiple languages. I think you should be looking for a business partner instead of trying to get a developer on the cheap.

  110. You, sir, are a jerk by Anonymous Coward · · Score: 0

    You come off as supercilious and holier than thou. "I keep the fun ones for myself" and leave the scut work for my lessers? "perfect specs, perfect bug reports" It's just those pesky lame coders who keep making mistakes and I don't pay them for mistakes.

    Unless it is a trivial homework problem in school, there is no such thing as a perfect spec. What are your statistics on number of issues that turn out to be "misunderstanding of requirement" or "change in user needs"?

    Pay for decent workers, pay them to solve all the problems during the full life cycle, and they won't go elsewhere. Adjust the rates you bid to account for it, which is what *real managers* do. You're acting like a slave master on a plantation: "more cotton! work all night, work all day, don't drop any!"

    This must be a spoof article or a troll on a large scale.

  111. What types of bugs? by The+Lurker+King · · Score: 1

    You don't state what types of bugs that you are finding.

    Generally speaking, developers are good at testing functional issues - for example, if they are asked to code a "print report" function, they typically will be able to test the "print report" function so that it works as expected. What developers are poor at testing are use-case issues, where you are integrating a function within the larger scope of program. They test to make sure that the "print report" feature works, but not check to see if it handles cases where someone logs out before printing or if someone edits the data right before printing.

    You have 3 choices.

    1. Hire a separate tester who tests from a use-case perspective.

    2. Pay for your contractors by the hour, instead of per-project.

    3. Pay for a full-time employee.

    As others have mentioned, developers are notoriously bad testers, especially since it sounds like that you are hiring developers for one-off jobs. A lot of development knowledge comes from working and refining the same code. Hiring one-off developers will generate more bugs than having a single person working and re-working the same code.

  112. Subby isn't as good as he/she thinks. by mcmonkey · · Score: 3, Insightful

    Developers can make more work for themselves by causing bugs, and with the specifications I write there is no excuse for not testing their code. Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs.

    There is no excuse for developers not testing their code, because you shouldn't expect that to be the final testing. That's your job. I think the analogy someone else posted above is apt, programmers need testers just as writers need editors.

    What the developers send you should be reasonably complete, as in not a first draft. But it shouldn't be assumed to be a finished product ready to pass to the customer.

    So why are customers complaining about bugs? If you write "excellent product specs," "provide bug tracking & source control," and "provide detailed, reproducible bug reports," why are you passing along buggy code to your customers? Why aren't you doing your job as a project manager?

    It sounds like you're not sticking to your product specs, not using the bug tracking & source control, not reading those bug reports.

    That you've been moved to ask /. leads me to think this is a recurring problem. Remember Subby, the common aspect of all your failed relationships is you.

    1. Re:Subby isn't as good as he/she thinks. by LifesABeach · · Score: 1

      My perspective of the poster is analogous to the difference between a Hobby, and a Job. When it's your Hobby, you don't take crap about it.

  113. Lots of assumptions by digitalnoise615 · · Score: 1

    I see a lot of assumptions in these comments, like the OP is an ass, doesn't know what he's talking about, etc.

    How about this: Programmers are NOT gods, and contractors will ALWAYS try to get out with the minimal amount of work done that gets them paid.

    If I hire a contracted programmer to build something and deliver it, and it turns out it has bugs in it, then I'm going to demand that they fix them - after all, the contract required that the deliverable actually WORK to the spec I provided. Why this is such a foreign concept to so many people on here I'll never understand.

    If you're a freelance programmer - great, I think that's awesome. Working for yourself is incredibly rewarding. That said, if I contract you to complete a task, and you deliver something that's buggy and doesn't work right, you haven't fulfilled your contract until it meets the specifications that I provided and that were written into your contract, even if that means you have to spend more time on it than you originally estimated because you didn't do it right the first time. I'm not going to pay you for that extra time, as it's your fault.

    If, on the other hand, I wrote a bad spec and the software you deliver works to the spec I gave you, but not what I actually need, and I need it changed, then I WILL pay you for the extra time to modify it, because I didn't do my part correctly.

  114. Change your specs. by hajo · · Score: 1

    Use your specs to write your acceptance tests and your acceptance tests to write your specs. There are plenty of tools available. We use cucumber.
    Cucumber comes with a very English-like language (Gherkin) that can easily be converted to actual tests. We pay our contractors only when all tests pass.
    No confusion: The actual spec is also the acceptance test.
    Our 'user stories' in Gherkin get written by business analysts, not programmers.

    --
    Hajo Monogamy: Belief so strong that millions of people end perfectly good relationships in order to start a new one.
  115. Have a defined warranty period by Anonymous Coward · · Score: 0

    I don't believe in "insourcing" on these types of project work - you're not going to find the kind of resource you want with the skillsets you desire. The right approach is to explicitly have the contractors understand the cost of fixing bugs needs to be baked into the project estimates. Additionally, ask for a 30 day or 90 day warranty under with bugs would need to be fixed. Fixed bugs would extend the warranty (for the bug fix itself and resultant issues) by the number of days it took to fix the bug.

    I do believe in using bonuses for deliveries with exceptionally few number of bugs. But I am concerned that this can be abused if it is not an objective measure.

    I also believe payments based upon milestones achieved and delivered - with a penalty for late delivery when not accompanied by a change order justifying the delay.

    YMMV.

  116. how to make the business work by Anonymous Coward · · Score: 0

    Find a good coder and make him/her a partner in the business. Eat what you kill. Stop trying to profit disproportionately off the labor of others.

  117. I hear you by holophrastic · · Score: 3, Interesting

    I'm in the exact other boat, so I can see the same problem from the other side. I run a web development business, I don't write specs, I do everything in my languages of choice, I also market being able to handle any technical project for my clients. In my case, however, I specifically don't charge them for bugs. Everything's either project-based pricing or feature-based pricing. Bug fixing, cosmetic alterations, and cursory data field/presentation changing is free. I do all of that in order to justify not writing specs in the first place -- because I'm not you.

    I tried paying contractors to work for me. I tried paying employees to work for me. And even paying them proper salaries I got the same results as you're getting from contractors. As employees, instead of running away, the work effort got sloppier and sloppier as bugs and client changes were hacks ontop of hacks. Their speed dropped to nill, and it basically sucked me dry to the point where I could easily lose all of my personal take-out when bug repairs ran longer and longer. And you can't tell a client, especially before they've signed off on a project, that a huge expense is to fix bugs that don't exist yet in something that should be written properly the first time, especially in their minds.

    So my advice to you is going to be different. My advice to you is to find contractor developers like myself who do fix bugs for free. But I'm going to tell you that the only way to make that fair to them is to let those developers choose the tools -- i.e. the languages they use. I've spent two decades building up my own tools, to the point where now I can easily handle bugs and after-the-fact client changes so it doesn't cost me anything to fix bugs -- and if you're telling me that you'll produce the test case, then you've saved me 80% of the work. And if I know that you're the one doing it, then I can upgrade my platform to show me exactly what you tested, which will ultimately point me to the very code itself, and that's a total of 90% of the work 90% of the time.

    Find the right contractor who knows how to appreciate your policy. I can guarantee he exists, because I'm one of them. There must be others.

  118. Comment removed by account_deleted · · Score: 2

    Comment removed based on user account deletion

  119. Do the specs include unit tests? by Dareth · · Score: 1

    Do the specs include unit tests?
    I could see that if the requirement states that the code must meet spec and demonstrate it by passing the provided unit test that might be reasonable.

    This would be part of the review process and acceptance testing, not as you quote:

    "Developers are always fine with it until we get toward the end of a project and the customer is complaining about bugs."

    Don't wait until the end of a project to demand what your project management is supposed to provide.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
    1. Re:Do the specs include unit tests? by AuMatar · · Score: 1

      And are the unit tests bug free? Do they test every corner case possible? Please note that even 100% test coverage doesn't mean all corner cases are tested if you're using an exception based language.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  120. Hire a QA Contractor by RiveraLabs · · Score: 1

    The solution should be to hire a QA subcontractor. Yo can never trust the developer to do 100% of the testing because he's too familiar with the code. Hiring a subcontractor to do QA should be cheaper than hiring a full time developer and more flexible.

  121. You need to look for win-win solutions by scgops · · Score: 1

    IMO, the main problem is that you are giving contract programmers an incentive to do the wrong thing.

    If I am reading your submission correctly, you are paying programmers hourly only for time spent writing code before handing it over to you. If issues are found after handoff, you expect them to fix the issues without being paid anything additional.

    If I were your subcontractor, the first thing I would do is hire a subcontractor of my own to do QA. And I would bill you for his hours plus mine. As things stand, your subcontractors have a strong incentive to take as much time as they need / bill you for as many hours as they want in order to ensure they give you perfect code.

    If you want to keep a similar arrangement in place and improve code quality, you need to add a positive inducement rather than just pushing them to fix bugs without being paid. At present, you are asking them to take all the financial risk related to bugs while you get all of the potential reward from finishing quickly. Look for a way to flip that around, perhaps with a fixed dollar amount budget for bug fixes. If they spend fewer hours than expected fixing bugs, they get the bonus of a higher than expected hourly rate. If they have more bugs than you forecasted, they get paid a lower hourly rate but they still get paid something.

  122. Acceptance Testing by Frankie70 · · Score: 1

    Do you have acceptance tests define before farming out a project to contractor? Are the bugs outside of those caught by these acceptance tests?

  123. Flawed Business Model by jekewa · · Score: 1

    If you can afford to hire consultants, and you're keeping a little for profit, you're probably able to hire full-time employees. That's making some assumptions about lags between jobs, what the employees expect in terms of "bench time" and corresponding pay.

    You may not be able to hire the same consultants as employees at the same rates, as you may have to reduce your pay rate to cover some of the employee overhead. Reasonable contractors willing to work full-time should be able to accept this as they would then not have the same responsibility for accounting for their own taxes, and may appreciate whatever benefits you may be able to offer.

    Consider not only the obvious things like health insurance, but also the PTO and sick days where you have to pay even when they aren't earning; built into the overhead correctly, it still comes out of the billable hours. It may be that you have to offer a package that includes a "base" rate that covers what they'll get paid on the bench, and a "job" rate that pays more while they're working; it might be that you have to do some math and figure out that less pay means more bench buffer; perhaps even build in a "profit sharing" mechanism that returns that buffer to the employee if the bench fund isn't used. None of this is new; check around the Interwebs for what other small houses do.

    As for the bugs, I would stake a cross-country ride on the back of my motorcycle that at least some of the time something changes, and that's why there are bugs.

    You hear the customer requests and from these you make outstanding designs and documents. After whatever negotiation and complete requirements gathering and design review they accept the designs and documents and your bid. Your programmers see and understand these documents, and their code reflects them beautifully. Then the customer sees the work at the delivery points, and perhaps finds things that aren't right. Maybe they see what has been delivered is right, but want a little more; or they see that it works in the cases everyone thought of, but not in the cases no one thought of; or they see that you've built what they said, but not what they wanted.

    This could be the result of an iterative development cycle, communications, or straight-up missed things. This could be because something was done right, then a change was made (a new idea, incremental development, or previously undiscovered use case)...now the code and plan and customer are out of sync.

    The hard reality is that bugs occur.

    I understand the sentiment of avoiding developers who make bugs to extend contracts, but you have to realize that none of us is perfect, as hard as we may try, and any time another party is involved, there's an increase in opportunity for things to not go right. Work hard to compromise on fixing the things that have gone wrong (charge the customer, pay the developer) and things that are "malicious" or otherwise on purpose with an intent of dragging on contracts.

    Be critical and strict with your developers, and keep them in line in terms of design compliance and coding standards, and make sure they aren't trying to stretch contracts; mitigate it with TDD or TDD-like practices like using unit tests to conform code to contracted specs. Also be aware of customer changes that sneak in...even little things like "that should be over more or bluer or say this instead of that" can introduce both distraction and unintended changes that can lead to the deviations from existing code or on code for which future work may depend.

    It's a chore, but you can either build some "bug time" into your estimates and project plans, be hyper-vigilant about change control, or be super-strict about deviating from the plan. Somewhere between the first two is where reality lies, if you were thinking about the last two.

    --
    End the FUD
  124. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  125. I want a Porsche, but I don't want to pay for it. by Anonymous Coward · · Score: 0

    When your business model depends on the charity of employees, you need a new business plan. An above average programmer, fluent in a plethora of programming languages, for under $100k? Apparently your business is not successful enough to actually pay for the requisites needed to survive.

    The only real solution is to do the work yourself, small business man. You cannot expect an employee (or a contractor) to sacrifice for your dream, particularly when only you will reap the rewards. Otherwise, bring them in as a partner, so you can both scrape by for your joint business. Someday, you may be successful enough to hire help at the prevaling wage.

  126. S&D by shentino · · Score: 1

    Quality code is something you should think of as a commodity.

    Apply the laws of supply and demand to that, taking into account how hard it is to write perfect code, and how much you're willing to pay for it.

  127. Not a problem! by Anonymous Coward · · Score: 0

    However you decide to pay them through the course of the ongoing project, hold back the last 33% payment until all possible bugs have been fixed, so if they don't fix them or want to work somewhere else at that point, they will not only lose that 33% of whatever they had agreed for the job start to finish, but they will be blacklisted by you and will hopefully find themselves in a world of shizzle they have created for themselves, being not able to get work elsewhere when their names pop up on the shizzle list of all shizzle lists for all the world to see with a master shizzle list you create, starting with the people that have already dissed you, complete with profile pictures and details.

    Then you can take that 33% and strike a deal with someone else possibly familiar with the project, and finish the job, toast a toast, and move on.

    Good Luck!

  128. Dear Anonymous Leech. by Anonymous Coward · · Score: 0

    Just kill yourself. Your sweatshop should die.

    P.S. Hire a a functional and performance test beginner.

  129. Change control.... by erp_consultant · · Score: 1

    Bugs don't just appear out of thin air. If you are only discovering them at the end it means you are not doing sufficient testing along the way. Either that or the scope of the requirements is changing. Pick a few key milestones and run through your test scripts (you do have test scripts, right?). If a bug is found at the next milestone that didn't exist at the previous one then you know where to look for the issue. Maybe think about contracting a dedicated tester? There is no such thing as bug free code...it's all about mitigating risk.

  130. Let me see if I understand the problem. by Minwee · · Score: 1

    Correct me if I'm wrong, but is this the core of the problem?

    "I contract people to do a set amount of work at a fixed rate, and have no problem getting them to work for me. After that's done I offer them a new contract where they continue working for an unspecified time and not get paid at all, but for some reason they refuse to do it. What is wrong with them?"

    If this is really what you're asking, and you actually have to ask it, then I think I see where the problem lies.

  131. Outsource to India or China by Anonymous Coward · · Score: 0

    Take advantage of the modern slave labor force and contract out to India or China. You'll be glad you did.

  132. move somewhere with cheaper developers by james_shoemaker · · Score: 1

    Relocate somewhere that coders are cheaper and hire who you want. Or hire someone and let them work remote.

  133. There is no such thing as a bug free code by Anonymous Coward · · Score: 0

    Asking for a bug free code is asking to pay for a car that will never break down. In the real world there is no such product.

    However there needs to be a certain amount of measurement what is considered bugs and all this is back to the spec. As a developer, you will need to have time to review the spec and ask any question, however small, that you may have. If the spec hasn't change and the code doesn't perform as described then it's a bug. Otherwise any changes, however small, is considered scope creep or scope change.

  134. Feel for you. by DarthVain · · Score: 2

    I have the same problem.

    However half the time it isn't the contractors fault entirely, sometimes the local IT when setting up the contractors work screw up a script, or implement the DB incorrectly, or any number of things, causing the application to fail pretty fundamentally.

    As someone that has been on the business area testing side of things, it can be vastly frustrating when finding flaws that are so big and so obvious that there is no way the developer even bothered to test (sometimes I wonder how they could even code it without even trying to run it at least once). Or when you point or said flaw, they report that it has been fixed, you go back and test it again, and nothing has changed. Turns out they forgot and just said they did something about it when nothing was actually done.

    Much of this can be solved with contracts and good testing practices. DO NOT having testing as an after thought. Engage the users to exhaustively test. Have them sign off, but do not have the time truncated because the developer was slow or ran into problem. Have set scripted time for testing and build into contract. That way it is spelled out when the developer fails (and so does payment) or when the user client fails to spot bug and they have to take some responsibility also.

    Any many have mentioned, bug free code pretty much doesn't exist for any systems of any size or complexity, or they don't stay that way for very long if they do exist. However you can try to keep it to a reasonable amount of non-core functionality. There can be those bugs that only happen when all the planets align on a prime number Tuesday. Even the most diligent development or user testing can miss it, and only find out much later. Thankfully usually these things are pretty low impact due to the rarity.

    In any case hiring internally is fine, and will allow for more continuous updates to these applications. Find a rare bug a year afterwards, no problem, you have an in house guy that can fix it no problem. The only difficulty is that you better make sure who ever you hire does meticulous documenting, in code comments, and is very organized. An organization can become very dependent on these folks for obvious reasons. When they leave (for whatever reason), you could be quite screwed, and even going back to contractors may be difficult. Languages really don't matter, keep up their training if they have to deal with a lot. Hire someone that has a lot of experience in the primary languages you deal with (or the most immediate need), and let them develop the rest. In your situation, I wouldn't be looking for the "genius level hacker" type but rather the "OCD organized, meticulous, steady" type. Heh, neither are likely fun to be around... :) Someone who is a competent programmer to be sure, and shows some flexibility and range of ability/knowledge/experience but primary skill should be fastidiousness.

  135. QA? by Anonymous Coward · · Score: 0

    Any development model that puts the onerous of testing on the developer and the customer, skipping QA, is bound to fail. Developers are very unlikely to effectively locate all the bugs in their own code, that's just a fact. You seem to think that your amazing specs are sufficiently detailed so that if followed to the letter QA should be unnecessary. I think you are highly delusional in that thought.And then you want to hire some sort of universal genius at sub-par pay to shield you from the hassle? Good luck with that/

  136. No testing done? by Anonymous Coward · · Score: 0

    Who QAs the software before it goes out to the customer? Having the developers test their own code does not count, and is no substitute for running it through an independent QA process. Sending untested software to a customer is just asking for trouble. If the customer is complaining about bugs towards the end of the project, why were the bugs found earlier? If the bugs were found earlier, then metrics need to be taken to ensure they are being addressed in a timely manner and not allowed to pile up.

    Also, if you pay cut rate wages, you will likely get cut rate developers. In the end, that approach often costs more than paying the going rate in the first place. This seems to me a business management issue rather than a developer, quality or cost problem.

  137. Hire full time testers. by darkwing_bmf · · Score: 1

    Keep the programmers as contractors. But hire a full time test team in house to make sure the bugs are found and fixed before the customer gets the software.

  138. Maybe.... by Anonymous Coward · · Score: 0

    How about letting go of some of the profit put in your own pocket?

  139. Reformulate your question by Anonymous Coward · · Score: 0

    The OP does not formulate his options to pose a question to the community. I am sure he has thought long and hard on his problem but has not formulated something other than send in your fix for my vague options. Really it is not worth our time, and as it is I have wasted 10 min reading the thread and 5 minutes commenting on it. I am billing at 300$ /hr as an analyst, so where is my money?

  140. SOS by Anonymous Coward · · Score: 0

    Same old stuff. I'm a career contractor, I have several small companies like this contact me every month, they want some one who is highly experienced, highly skilled, and willing to work for well below market rate. World is full of loosers trying to get something for nothing. These people have never written any code, yet they always think there an expert with the technology. They have no experience with software ENGINEERING yet they want to be in the software business. Maybe they should move to India , lots of cheap crappy coders for you to hire over there.

                                                    MM

  141. Citation Needed by Anonymous Coward · · Score: 0

    Okay parent.

    AC is now curious about your shop.

    But I can't tell if you're actually genuinely competent and have had bad luck, or are an idiotic douchebag. You sound like you're reasonably competent, but don't quite *really* understand programming.

    But maybe you're one of the incredibly rare gurus that exist in about 1/2 of a % of the s/w population.

    So...

    Please post three sample specifications.
    And the subjects of your bug reports

    Because based on your tone and the way you phrased things, I'm... more confident than not that your specifications actually cause bugs by being internally inconsistent, incomplete, or through total failure to understand the real operating environment.

    But maybe, just maybe... I'm wrong.

    I'd like to be wrong.

  142. You get what you pay for by Anonymous Coward · · Score: 0

    Right, wrong, or indifferent, you always have to pay your contractors for their time. Big fixes must be included. If someone is writing shoddy code, you should be able to pick up on this early in the process and replace them. You get what you pay for, and if you want good work done, you're going to have to pay for it--no way around that. If you're going to udercut and push back about bug fixes, a contractor is going to tell you to get stuffed.. Our skills are simply too highly sought after to put up with people who nickel and dime and complain how much we charge.

    And really, you're congratulating yourself for paying on time?? Is the bar for a good manager really that low? To quote Chris Rock, that's like bragging because you "ain't never been to jail."

  143. Payment by Anonymous Coward · · Score: 0

    I particularly like "I can't afford to pay someone $100k/year," which is junior rate for a contractor while he's expecting a flawless product.

    Buddy, NASA, the guys who put people in orbit, spend an order of magnitude more on software development than a dev shop spends, and they still have two or three defects per thousand lines of code. I can't imagine you've never had a coder laugh in your face for your "no bugs" policy. What will you do when your contractors quit? Sue them? Factor in the cost of bugs and quit being such a pussy.

  144. Re:There's no such thing as non trivia bug free co by rjstanford · · Score: 1

    It may be expensive to write bug-free code, but it is always better than having software with bugs in it (which you then have to test and fix).

    That's pretty naive I'm afraid. Let's go back to the all-popular house analogy. When you build a house you expect it to be correct within tolerance. Countertops level to within a certain amount of slope, et cetera. You can get a "more perfect" house/car/software-product, but there are always tolerances - and reducing tolerances begins to cost orders of magnitude more the further you go.

    Most specs are also dreadfully naive (they have to be). They will almost certainly contain contradictions, such as a maximum size (database should grow no more than xxGB/day based on current user growth projections) and a flexible entry system (comments should not be limited in length) - in the Real World those requirements will almost certainly work, but if someone (who is a projected user) pastes in the Linux source code into new comment blocks all day every day it'll fail pretty quickly). Is that a bug, or (like demanding .01mm tolerances in house construction) just an unreasonable expectation?

    --
    You're special forces then? That's great! I just love your olympics!
  145. A perspective from a non-professional programmer. by Vitriol+Angst · · Score: 1

    Yeah I dabble -- but I cannot rent myself out as a programmer. So I don't have baggage here. The following sentence however scares me;
    "But how can I make that transition? The guy I'd need to hire would have to know a lot of languages and be proficient in all of them. Plus, I can't afford to pay someone $100k/year right now. Ideas?"
    "

    Transition? This guy sounds like the Art director who hires me because I know all the apps, and can do everything including put it on the web and make it dance in multimedia. So he writes "specs" that are perfect? That's like a description of the "perfect art piece for the client" without anyone being the artist and seeing the art. Neither of the people in this situation has the ability to 'visualize" what they want or they wouldn't hire you.

    The "transition" is difficult because finding that perfect programmer who doesn't need OTHER programmers is a person who doesn't need a glorified agent.

    I would appreciate a well specced out job -- but I'm not going to long suffer doing 90% of the work for someone taking 90% of the profit.

    There isn't enough to PAY both you and the perfect developer.

    >> The PERFECT SPEC here, is obviously under-budgeting the De-Buggging process. Having done graphics work for people who don't know what they want -- 50% of the work occurs AFTER they say; "I like it, but can we try this other thing for a second?" I suspect programmers spend 50% of their time in debugging as the application meets the real-world. So this person is has a little bit of knowledge which is more dangerous than none. He THINKS he could be the programmer but doesn't have time for the "details".

    I don't know for sure, however, but the problem described here would "send my spider senses tingling." We have a delusional dabbler coupled with pimp/contractor.

    --
    >>"ad space available -- low rates!!!"
  146. Stop now by Anonymous Coward · · Score: 0

    If you want to do this for a living, start by getting a job in a company that does this kind of thing and learn how to do it. Perhaps you've been lucky to get this far, but the way you're doing business it's just a matter of time a pissed off client takes you to court and strips the skin off your back.

    So what's missing? How about you include acceptance criteria with your subcontractor as well as client? Include support clauses on both sides? Include unit test code coverage requirements? etc.

  147. Generate Conflicts by vigmeister · · Score: 1

    1) Contract 3 developers:
    - Developer to develop the code
    - Tester to test the damn thing and find bugs
    - Bug fixer to fix the damn bugs

    2) From your experience, you should be able to set bonus related targets for each guy...

    3) ????

    4) Profit!!

    --
    Atheist: Buddhist in a Prius
  148. Your signoff process is borked. by Anonymous Coward · · Score: 0

    If you are not reporting bugs until the end of the project it sounds like you are not testing and signing off on the components in a timely manner. Developers need quick feedback about issues and it is your responsibility to ensure they get it. A developer friendly approach would be for you to guarantee signoff to the developers within x days of the date they delivered the software. You can and should highlight this in your contracts and discuss your policy up front. If you are unable or unwilling to guarantee signoff then you are being disingenuous.

  149. Software is living by elloGov · · Score: 1

    Software is a living thing with ongoing needs throughout its full life cycle, including BUG fixes. You need to understand and acknowledge this and communicate it to your clientele. Inform them that they will have "software needs" well beyond the duration of your contract. This is why maintenance support exists which might be another source of revenue for you.

    Ignoring the nature of the product you are delivering will not do anyone any good.

  150. Can you afford your own business? by whitroth · · Score: 1

    For one, as others have noted, no code will wind up bug-free (except, of course, for *mine*....). Why is it that the *customer* is finding them? You say you hire programmers... but do you hire *testers*, a *whole* 'nother skillset, and who will do things like regression tests? If you're not hiring them, you're doing an inadequate job.

    For another, you say you can't afford $100k/yr - well, I know a *lot* of folks who don't make that - hell, I'm not there, and I've been working in the field nearly 30 years. But what *are* you paying them... and if you're in the US, do you provide a health plan they can buy into? If not, why shouldn't they look for more money, given the insane prices that the health insurance monopoly charges for their extortion?

    If you can't afford what you need, perhaps you're not ready to run that larger business.

                    mark

  151. Do it. by Anonymous Coward · · Score: 0

    Fix the bugs yourself you insensitive clod.

  152. Re: Have u thought about..BONUS by ancientt · · Score: 1

    I like the idea of using a bonus driven bug system. Tell the customer that he has X days to get them fixed for free, tell the developer that every bug resolution comes out of the bonus structure.

    --
    B) Eliminate all the stupid users. This is frowned upon by society.
  153. Bugs are never free by Anonymous Coward · · Score: 0

    You will always pay for bugs. Money to fix bugs will either get rolled in to the project cost with the initial bid or bugs will be invoiced when discovered. If the subby expects certain functionality, then it needs to be in the contract with appropriate means to verify acceptance.

    I do not work with clients that expect bugs to be fixed for free. It's a strong indication that no amount of money will make the project worth doing.

  154. Unreasonable Expectations by Anonymous Coward · · Score: 0

    So basically you want your cake and eat it too...we all want someone that knows everything and never makes a mistake. That doesn't exist. There are several problems with your business model, all of which are self-imposed:

    --I can guarantee you your specs aren't as fantastic as you think they are, your own story gives it away. What you want us to believe is that your specs are always perfect, yet you "get toward the end of a project and the customer is complaining about bugs" but that clearly none of your developers are perfect. Nobody is perfect and that includes your part of the job of nailing down iron-clad/unchanging specs
    --No one is perfect and your "logic" for describing how bugs should not be possible is flawed. After all, clients almost never pay for adequate testing (unit and user testing) and when you pitch a deal with adequate testing in your estimate, you find you are not selected, your competitor gets the contract instead.
    --Telling programmers you are going to expect them churn out perfect code in unrealistic time-frames guarantees unhappy employees (if you got the job, there's a 99% certainty that adequate testing hasn't been budgeted for, and I've NEVER seen a 100% accurate up-front requirement doc that didn't involve clarification, changes, and feature-creep)

    Now how do you fix all this? The above should be self-evident, you need to recognize reality a little bit more, but the bigger problem that sets you up for all this trouble is this: "market myself as being able to handle any technical project, but only really take the fun ones"

    You claim to offer your potential clients something you really don't have: the skills for any job that comes along! Instead of that (false) advertisement, and "only taking the fun ones" you need to target contracts you have the skills to deliver on. To expect you are going to hire someone that is perfect in every language/tool that exists so you can go after every opportunity is very unrealistic indeed, and you set yourself up for the types of failures you are describing in your post.

    Who do you hire? Well look at your strong skill set and compare it to your most successful (and plentiful) contracts. Find someone with a cross-over and complimentary skill set and hire them. Yes you will have to pay them appropriately. Then only market your business to clients with contracts you are actually capable of delivering on, only taking additional jobs that might require occasional additional temp-contract-employee hires to round out your skill set and that of your hired employee's skill set.

  155. Thou Shalt Not Hire by dentin · · Score: 1

    I've run a small company in several jurisdictions now, and my SO does small business accounting. I generally run my own taxes and I've had a good look at the tradoffs of hiring an employee versus hiring a contractor.

    Every time, in every jurisdiction: Thou Shalt Not Hire.

    Between the additional paperwork, onerous red tape, and ridiculous unemployment regulations and fees, I've decided vehemently against hiring every single time. IMHO, the only place where it makes sense are things like fast food, where you have a ton of necessary employees, can amortize the costs, and don't really have any other options.

    YMMV, but in my opinion, local and state governments have seriously screwed themselves in this regard. The hiring environment is so business unfriendly that contracting will win pretty much every time.

    --
    Alter Aeon Multiclass MUD - http://www.alteraeon.com
  156. Isn't this why contracts exist? by Vrtigo1 · · Score: 1

    Not to put too fine a point on it, but I think this is precisely why contracts exist...so people can't commit to something, not deliver and expect to still get paid. If they refuse to fix bugs, have someone else do it, then take the dev to court and get damages in the amount of your costs of having someone else fix their bugs.

  157. Plumber? Burger flipper? Mechanic? Receptionist? by robcohen · · Score: 1

    Have you thought of another occupation for yourself?

  158. There is actually a way to do this... by the-build-chicken · · Score: 1

    ....but you have to be a lot bigger fish than you are.

    Outsourcing generally comes in two flavours "time and materials" or "fixed price quote". Small contractors will generally always go TM, but medium sized consultancies like to chase FP because taking on more risk equate generally to more reward.

    I've worked for a few investment banks that have large internal development teams, but still outsource certain components of work to FP companies...which components? The high risk stuff...that stuff that is technically complex and likely to end up with a high defect count.

    So, you identify the stuff that's going to be high risk, you shop it around to small shops that want to increase their profile by working with [insert multinational name], you get them to do a fix price quote...and here's the trick, you get your team of lawyers to draft an absolutely iron clad contract with specific UAT milestones including acceptable defect rates/priorities and knife edge specific definitions for each defect type/priority....you also include tiered financial penalties for missing milestones and/or metrics, ensuring that top level penalties are capable of recovery of monies over and above the total cost of the contract as required to cover things like marketing campaigns that had to be pushed back, opportunity costs, re-engagement etc etc. You then have your lawyer brief the testers on what they're trying to break, and what financial penalties get enacted if they do. If you have good enough testers you can really screw down the cost of delivery.

    So:

    1) Get realistic about what someone will charge you to take on all the risk of your product. Risk and reward go hand in hand in life, if you don't want the risk, you're gunna pay.
    2) Get a bigger name....consultancies will drop their quote to get a known brand on their books.
    3) Get better lawyers (yes, multiple)....you're gunna need them for the multiple drafting of the contracts and the ensuing law suit if you're looking to enact penalties.

    or...you could just realize that TM means exactly that, pay your contractors what both you, and they, know they're worth and be thankful that they even work for you, because without them you're a very small fish with a pretty spec that's worth nothing to no one.

  159. "empathy for developers" my ass by JimtownKelly · · Score: 1

    "I write excellent product specs" is bullshit, for bad requirements lead to most of the sloppy code out there. The choice of "programming project manager" as a title is a clue that anonymousreader has no clue of what else goes into SW development. Things like requirements gathering, test planning, code review, release planning, etc. Igorance is further displayed with the expectation that programmers "test their code"; assuming that they should, wouldn't this be restricted to unit testing? Are the same programmers also responsible for the system, integration, and user acceptance testing? Quality assurance is not the programmer's responsibility. Don't blame code-flunky for your incompetence.

    --
    -- Jimtown Kelly
  160. Trust issues by Anonymous Coward · · Score: 0

    "Developers can make more work for themselves by causing bugs" Your trust issues are sufficiently bad that you can't see what a stupid position you've put yourself in. Stick to the contractors.

  161. Can anyone try to actually answer his question? by rpkehoe · · Score: 1

    It seems to me that he is admitting that his current system does not work, and he want to hire someone full time. So quit bashing him about the system that doesn't work already. How does he find the right guy to make the transition to full time?

  162. Look in the mirror by gymell · · Score: 1

    This question clearly demonstrates that the OP has no understanding of the software development process. I've been doing software development for the last 15 years, mostly as a consultant, and have been on A LOT of projects at many different clients. I have yet to see one with "excellent product specs" completed up front. Why? Because customers never know what they want until they see it. And even when they think they have defined something well, they don't understand what they will actually get back.

    Software is very abstract and unless you are a developer or a technical person (which most customers/users aren't), then it's very difficult to conceptualize how it will work once implemented. Then there's the reality of changing customer requirements and priorities. I'd like to know how the OP is writing perfect specs when such a thing doesn't exist in the real world. And there are many other aspects to development which the OP doesn't seem to understand either. Who is doing the business and technical analysis of these requirements? What's the process when requirements change? Where is QA and user acceptance testing in all of this?

    I suspect nobody is doing these things. What's really happening is that he writes something up based on vague requirements (which are likely to change), throws it over the wall to a developer, and expects a polished product to be thrown back over. Meanwhile the customer didn't understand what they were asking for in the first place, changed their requirements, increased scope, got something back that was maybe close to the written spec but actually wasn't what they wanted in their mind, with no analysis or design having been done, that wasn't ever tested by anyone other the developer who wrote it. And all of those scenarios are called "bugs" by the OP. This is a dysfunctional process that is unfortunately all too common. No wonder your developers balk at fixing this stuff for free.

    I don't doubt that there are bugs in the code, especially if the OP is trying to do this on the cheap. There is no substitute for experienced programmers, and there's a reason that people who are experienced cost more. So the first problem is that the OP thinks he can get something for nothing or next to it. But the main problem here is the OP's lack of understanding about the software development process.

    If you want to improve things and not have your customers complaining all the time, then start with yourself - read up on software development methodology, ditch the waterfall/throw over the wall approach, and pay up for developers who know what they are doing. I'd suggest a more agile method where customers are very involved in the process, are able to get their hands on the product as it's being developed and provide continuous feedback. Otherwise, look in the mirror and expect more of the same. Developers don't need your empathy, they need a competent project manager.

  163. Bugs by rpstrong · · Score: 1

    Major bugs have little bugs,
        which being fixed, can cause'em.
    And little bugs have tiny bugs,
        and on it goes ad nauseam.
    The bigger bugs themselves can be
        pernicious, tangled creatures;
    So suck it up and ship the code
        and we'll just call them "features".

    (author unknown)

  164. promote by meowhous · · Score: 0

    Why does it have to be a "guy"--or do you mean like "dude" in the generic, gender-neutral sense? At any rate, it sounds more like you need a partner--offer someone the promise of making even more money, should your tiny consulting firm make it really big and/or get bought by some big company (like, one you've done many projects for--worked for a place I worked at), or stock, and this person may work for less. If you're in the US you could also consider hiring someone on an H1B visa who's scurrying to get a new position--almost all of the folks I've met in this position are hard working and know a lot of different programming languages--and if you make a pledge to help them with Green Card issues, you could definitely negotiate a lower salary. But think about the hire as more of a stakeholder in your enterprise--you can still be the boss, but you're looking for a trusted deputy. It will be cool, trust me--just pick someone smart you feel comfortable with, with a varied resume and good contacts/references. Maybe even one of your past contractors.

  165. Checks and balances by Evgeni+Sergeev · · Score: 1

    "Developers can make more work for themselves by causing bugs..."

    Many people have an element of dishonesty. Any management system must be robust to that.
    On the other hand, working honestly, we still end up with plenty of bugs. As comments on this page attest to.
    A disincentive might help (e.g. lower rates for maintenance than for initial development), but it's no good asking to do maintenance for free, because you'll soon lose your best developers.
    A disincentive will also help the honest developer slow down and take more care with their coding, which will boost productivity enormously.

  166. Possible combinations by Anonymous Coward · · Score: 0

    Better testing, you say?
    Try to count every possible combination of ways to interact with the software that was just coded.
    That's how many tests a programmer would have to run EVERY time a change is made in order for him/her to prove the software is bug free. It's not practical.

  167. How about $20-35? by akrita · · Score: 1

    I don't know about other companies, I can suggest you to work with http://www.softteco.com./ Rates are between 20-$35/hour. They have different developers in the company, QA, marketing, support and you can check their profile. It's anyway cheaper and faster to deal with a company that has everything in one place than to hire a worker and believe that he can do the same cheaper. One person will need a hell of time to do the same job. Don't you agree with me?

  168. Always One More Bug by Anonymous Coward · · Score: 0

    Look long enough, throw enough input at it and anything but the smallest, self enclosed program will have "one more bug", with each subsequent bug representing a diminishing return. I'm sure some talented users could even find defect in "Hello World". Therefore from the contractors perspective, there should always be a "good enough" clause - often timeboxed/as a % of project at the end.

    Or, perhaps, if his specs are as good as he claims, he should be writing the test cases and paying developers to pass them?