Slashdot Mirror


The #NoEstimates Debate: An Unbiased Look At Origins, Arguments, and Leaders

New submitter MikeTechDude writes: Estimates have always been an integral part of the software development process. In recent years, however, developers, including Woody Zuill and Vasco Duarte, have begun to question the efficacy, and even the purpose, of using estimates to predict a project's cost and time line. A fierce debate has sprung up on Twitter, between those calling for an end to estimates and those who continue to champion their use in a professional setting. On the surface, it would appear that the debate is black and white. Proponents of the #NoEstimates Twitter hashtag are promoting a hard stop to all estimates industry-wide, and critics of the movement are insisting on a conservative approach that leaves little room for innovation. However, the reality of the debate has unfolded in far more complex, nuanced shades of gray. HP's Malcolm Isaacs digs deep and pinpoints where the debate started, where it now stands, and what its implications are for the future of software development. Meanwhile, Martin Heller offers his less unbiased approach with his post, #NoEstimates? Not so fast.

189 of 299 comments (clear)

  1. Estimates by Anonymous Coward · · Score: 3, Insightful

    Correct:

    How long will it take you to do this list of things?

    Incorrect:

    How long will it take you to do this thing that nobody has ever done before and which may or may not have these features, and we may need to add new requirements when we're halfway through but we won't know until we get there.

    One of these is merely difficult. The other is doomed to failure from the time The Boss opened his mouth.

    1. Re:Estimates by gweihir · · Score: 5, Informative

      Not so. The second one has a correct and professional answer: "I do not know. This will require a pre-study. But adding new requirements during the process is right out, then the pre-study has to be repeated and the project reset." and on the pre-study you _can_ deliver a reasonable estimate.

      It is not only bosses demanding infeasible things. It is also coders not enlightening them on what is possible and what is not.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:Estimates by Anonymous Coward · · Score: 1, Informative

      The second one has a correct and professional answer: "I do not know. This will require a pre-study. But adding new requirements during the process is right out, then the pre-study has to be repeated and the project reset." and on the pre-study you _can_ deliver a reasonable estimate.

      Ha, ha, yeah, and the response to that is going to be: "You have N days to finish it and I don't mean the pre-study. Get it done or else.", where N is wildly inadequate.

    3. Re:Estimates by Anonymous Coward · · Score: 1

      Actually I'm finding that our technical deficit is the biggest inflator of estimates. I can't review code that solves a problem I want to address for my own work until I consume and deliver all the "also like"s of everyone else that couldn't be bothered to fix the problem themselves. Basically using the code review system as a bargaining chip to get the functionality they need.

      Dicks. Dicks everywhere.

    4. Re:Estimates by PopeRatzo · · Score: 3, Insightful

      Not so. The second one has a correct and professional answer: "I do not know. This will require a pre-study. But adding new requirements during the process is right out, then the pre-study has to be repeated and the project reset." and on the pre-study you _can_ deliver a reasonable estimate.

      You are assuming the corporation you work for is a rational actor. They are not. They are products of paperwork and exist as golems to extract maximum profits at any cost.

      The management you work for isn't to blame, because they're just trying to feed Moloch too. They are also consumables.

      Looking for rational expectations and behavior in the 2015 workplace is like Captain Yossarian looking for rational expectations and behavior in the military. If you're not crazy, you're not paying attention.

      --
      You are welcome on my lawn.
    5. Re:Estimates by Spazmania · · Score: 4, Insightful

      If you can't produce a reasonably accurate estimate you may not have asked the right question.

      How long will it take you to do this thing that nobody has ever done before

      This is not the right question. The right question is: how long will it take you to assess this thing that nobody has ever done before, and devise strategies for doing it, and develop them to a point that you can estimate how long executing these strategies will take.

      Nothing wrong with saying, "I need four weeks to research this before I'll be able to give a reliable estimate on implementation."

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    6. Re:Estimates by Spazmania · · Score: 1

      Also perfectly reasonable to say: "I don't have the background in this field of study to implement or reliably estimate the cost of implementing the requested technology. I would need assistance from experts in X, Y and Z before I could produce an estimate."

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    7. Re:Estimates by turbidostato · · Score: 1

      "You are assuming the corporation you work for is a rational actor. They are not. They are products of paperwork and exist as golems to extract maximum *short term* profits at any cost."

      There, corrected for you. Corporations, not being rational, as you said, usually act childish: they'll take one today even if it obviously mean lose ten tomorrow (yes, that's an hyperbole: change "today" with this quarter or next and "tomorrow" with in two years).

    8. Re:Estimates by Anonymous Coward · · Score: 1

      Not so. The second one has a correct and professional answer: "I do not know. This will require a pre-study. But adding new requirements during the process is right out, then the pre-study has to be repeated and the project reset." and on the pre-study you _can_ deliver a reasonable estimate.

      It is not only bosses demanding infeasible things. It is also coders not enlightening them on what is possible and what is not.

      I can estimate very accurately the time-to-delivery of my own work but I will not work to a manager's schedule. When I sign-off on any code I have written it is only after it passes my QA which is 1000% more demanding than any "professional QA tester" in the organisation. I once told a manger if he did not stop interrupting me by calling every 15 minutes for a status update, I was prepared to file a complaint about irregular business practices with the US Security and Exchange Commission. He uttered a threat. I reminded him threats over the telephone are federal crimes in both countries where he was located and where I was working. Did he want me to call law enforcement and file a criminal complaint? The jackass hung up.

    9. Re:Estimates by gl4ss · · Score: 1

      yes. you can say "I don't know" and then SOMEONE will make some sort of estimate anyways. because you need that for budget for making a quote to sell it to the client.

      could just as well be #noquotes.

      what's really needed is for the sales people to not sell something they don't know what they're selling, because then you end up with a project that's starting and has a deadline before anyone knows wtf it's supposed to even do.

      --
      world was created 5 seconds before this post as it is.
    10. Re:Estimates by plopez · · Score: 1

      That sounds like a waterfall.

      --
      putting the 'B' in LGBTQ+
    11. Re:Estimates by khchung · · Score: 2

      "You are assuming the corporation you work for is a rational actor. They are not. They are products of paperwork and exist as golems to extract maximum *short term* profits at any cost."

      There, corrected for you. Corporations, not being rational, as you said, usually act childish: they'll take one today even if it obviously mean lose ten tomorrow (yes, that's an hyperbole: change "today" with this quarter or next and "tomorrow" with in two years).

      If the chances of being there "tomorrow" is small enough, giving up ten tomorrow to take one today is the *most rational* choice.

      After seeing the umpteenth coworker being "let go" for not reaping in enough short term profit, you need to be *irrational* to still think long term for the company.

      The blame starts all the way from the stock holders demanding short term profit.

      --
      Oliver.
    12. Re:Estimates by Maxo-Texas · · Score: 1

      Based on experience, I'd go a little further.

      "We have X months to get this project done. You have X weeks to explore the new technology and tell us if you can do it in 6 months. We'll expect a weekly report on your research and progress. If you can't we are not going to do the project."

      The RUP methodology says to work your risks like new technology first. Don't spend 50 million bucks and then find out the linchpin of the project isn't even stable yet.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    13. Re:Estimates by Dahamma · · Score: 1

      And the correct response to that is to go find a better job...

    14. Re:Estimates by Dahamma · · Score: 1

      Even though we all know most of your AC story is bullshit - if it wasn't, the right response for the manager (instead of hanging up) would be to fire you on the spot. Even if you were actually a good programmer (again... AC bullshit) your attitude is the kind that ruins teams, let alone projects.

    15. Re:Estimates by gnupun · · Score: 1

      What kind of completely incompetent idiot can't put an estimate on something based on past experience?

      LOL, are you in one of those jobs where you implement the same thing over and over again, only slightly different each time? That's a shitty job or a shitty design. If you're doing something new it's unlikely you have experience enough to estimate the time. Time estimation works well for non-programming tasks that have been done before, not new tasks that have not been done before. Management has been screwing and stressing programmers demanding artificial/made up deadlines.

    16. Re:Estimates by sexconker · · Score: 1

      Fuck you.
      If there were an abundance of good jobs available people wouldn't have to put up with that shit in the first place.
      Software development is hell for 99% of the people doing it because the only competition is between the employees and the H1Bs.

    17. Re:Estimates by Anonymous Coward · · Score: 1

      or the bosses or customers do not really care what you think is possible or what isn't.

      Estimates have a funny way of usually entrenching themselves as the final deliverable schedule or budget. People get bent when the estimates are revised to be more realistic or to reflect actual deliverables that have a high probability of being delivered on time.

    18. Re:Estimates by Dahamma · · Score: 2

      Well, I know I certainly wouldn't hire you... regardless of your qualifications... because you are an asshole. But we have a bunch of open positions for non-assholes right now.

      There is a MASSIVE abundance of open recs for good engineers in Silicon Valley right now. It's such an employee market even many crappy companies are offering 6 figures for new college grads, large referral bonuses to existing employees, etc. Salaries are skyrocketing since the lack of available talent means companies must continue to poach those who are employed.

      The unemployment rate for SW engineers in the US is about 3.6%, and closer to 2% SV. Which basically means it's almost 0 at a practical level, because WAY more than 2-3% of SW engineers in the field are so bad they are basically unemployable.

      If you find your job to be hell and are having trouble competing with H1Bs, you may be one of those...

    19. Re:Estimates by swilver · · Score: 1

      To which you respond: "Sure, here's the keyboard and a pre-configured develop environment".

    20. Re:Estimates by angel'o'sphere · · Score: 1

      In most countries you can not fire one on the spot.
      Especially if there is no reason. From the excerpt of that AC I see no reason to fire him. Except for not playing along as the boss wants ... which is not a valid reason in my country.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    21. Re:Estimates by Zontar+The+Mindless · · Score: 1

      Classic example of an Internet Tough Guy.

      --
      Il n'y a pas de Planet B.
    22. Re:Estimates by tompaulco · · Score: 1

      Yes, by all means, because management doesn't know how to do their job, software developers should spend ANOTHER $60,000 re-educating themselves to do a job that is not the one they fundamentally enjoy doing other than the red tape.
      Then they can land a job in another industry where the management is similarly incapable of clue and start over on the bottom rung.

      --
      If you are not allowed to question your government then the government has answered your question.
    23. Re:Estimates by tompaulco · · Score: 1

      I decided to go looking on Dice to see what I could find in SV. Entry level positions seem to be very few and far between. Almost everything was a level 2, 3 or 4, Senior, Principal, Team Lead, Manager, Project Manager, Agile lead, etc. There were very few plain old Software Developer positions posted, and the ones that were required at least 3 years experience. Maybe 1 in 10 had a salary posted. I found two that had a salary posting, one was for $70-90k for three years experience. The other was for $120k and didn't specify years of experience, but did mention lots of requirements that you are not going to get in school. Plus it was Cybercoders, which means that they don't pay for your bench time or benefits and treat you as if you were an H1b. Wouldn't touch them with a million foot pole.
      In my area of the country, companies hire direct from college for $30-$35k and expect the people coming out to have years of experience in programming. So they also complain that there is no one to hire. Of course, coming out of college with 3 to 5 years of experience is impossible, unless they worked through college, which I happened to do, but very few people do these days. However, there are thousands of unemployed, talented software engineers in the U.S. that could be had for $70-80k. The official number is only about 4,000, but that doesn't include ones who couldn't find work and dropped off the unemployment list. I know several who have gone into other higher paying industries, such as welding, auto mechanic or HVAC repair.

      --
      If you are not allowed to question your government then the government has answered your question.
    24. Re:Estimates by tompaulco · · Score: 2

      In most countries you can not fire one on the spot. Especially if there is no reason. From the excerpt of that AC I see no reason to fire him. Except for not playing along as the boss wants ... which is not a valid reason in my country.

      In my country you can ONLY fire someone for no reason. If you give them a reason, then they have the grounds to sue you and prove that the reason was valid.

      --
      If you are not allowed to question your government then the government has answered your question.
    25. Re:Estimates by KGIII · · Score: 1

      I had a call on my cell asking me if I was interested in some programming job in the valley. Now, I have no idea how they got my number. I can only assume someone gave it to them as a joke. I'm retired. On top of being retired, I'm a mathematician who wrote *some* code to be used internally.

      It gets worse.

      My code was so bad that eventually I hired capable people who were kind enough to tell me to stop writing code - "You're not helping. Code comments do not go on coffee soaked index cards."

      I listened politely to the man on the other end of the phone. They were willing to fly me out, put me in a hotel, and then give me an interview. I almost said I'd do it just to have something different happen but I'm already on the road. I can't wait until they get to the code example part of the interview. I'd have fun with that. I seem to recall that it was for an R or GO coder. Both are languages that I've never even looked at except in passing - I was thinking of writing more bad code (in fact, I'm going to).

      Anyhow, the gentleman on the phone asked if he could call again about new job offers. I didn't want to ruin a potential for amusement so I told him that he was welcome to call any time. He never did ask me any history questions or if I actually wanted a job.

      --
      "So long and thanks for all the fish."
    26. Re:Estimates by KGIII · · Score: 1

      I suppose the counter might be the adage concerning a bird in the hand being better than two in the bush but, in many cases, you're likely correct.

      --
      "So long and thanks for all the fish."
    27. Re:Estimates by KGIII · · Score: 1

      I suspect that "most countries" is incorrect. Do you have some numbers to back that up?

      --
      "So long and thanks for all the fish."
    28. Re:Estimates by meta-monkey · · Score: 1, Offtopic

      What the fuck did you just fucking say about me, you little bitch? I’ll have you know I graduated top of my class in the Navy Seals, and I’ve been involved in numerous secret raids on Al-Quaeda, and I have over 300 confirmed kills. I am trained in gorilla warfare and I’m the top sniper in the entire US armed forces. You are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on this Earth, mark my fucking words. You think you can get away with saying that shit to me over the Internet? Think again, fucker. As we speak I am contacting my secret network of spies across the USA and your IP is being traced right now so you better prepare for the storm, maggot. The storm that wipes out the pathetic little thing you call your life. You’re fucking dead, kid. I can be anywhere, anytime, and I can kill you in over seven hundred ways, and that’s just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the United States Marine Corps and I will use it to its full extent to wipe your miserable ass off the face of the continent, you little shit. If only you could have known what unholy retribution your little "clever" comment was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn’t, you didn’t, and now you’re paying the price, you goddamn idiot. I will shit fury all over you and you will drown in it. You’re fucking dead, kiddo.

      --
      We don't have a state-run media we have a media-run state.
    29. Re:Estimates by ranton · · Score: 1

      Yes, by all means, because management doesn't know how to do their job, software developers should spend ANOTHER $60,000 re-educating themselves

      He never said to change jobs because management can't do their job. You will find incompetent management in every industry. But if you are not marketable to leave a company that has bad management, then you may be in the wrong industry. Either that or you aren't applying yourself enough. This is what I believe the AC meant when he said to consider changing careers.

      Poor developers tend to gravitate towards poor management, since those companies are the only ones that will hire them.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    30. Re:Estimates by Agent0013 · · Score: 2

      And you get the experts to help make the estimate. Then they say it is too long and cut it down to 1/3rd the time estimated. And the project ends up going way over what was estimated.

      I have stopped caring about the estimates. The boss can make his fantasy timelines all he wants. Sometimes, when it is a small project I come in on time. Other times the project ends up going over. It ends up cutting into the next project, which has a firm stop date, so they don't give even the original amount of time estimated for that project even though that was already estimated to be too low. So that project goes over also. I don't even look at the schedule. If you use unicorn farts for your estimates then I don't play your game. If you want to get rid of me for that, your projects will be even later while you spend time looking for new people to hire and train. Plus, I would be better off finding a new job anyway since pay increases much more with a job hop rather than staying loyal to a company.

      --

      -- ssoorrrryy,, dduupplleexx sswwiittcchh oonn.. -Quote found on actual fortune cookie.
    31. Re:Estimates by schnell · · Score: 2

      what's really needed is for the sales people to not sell something they don't know what they're selling, because then you end up with a project that's starting and has a deadline before anyone knows wtf it's supposed to even do.

      Then how would anyone every buy or sell any professional services work, or custom system development? If you are building a new ERP system for a client, you can't tell them "Well, we'll build it for you and then tell you how much it will cost after we're done." Maybe you can get away with a "cost plus" approach in the government (and we've all seen how well that works in terms of conserving taxpayer dollars), but in the real world a customer needs to budget for development well before it's delivered.

      Or take another example: commercial airliners have a multi-year sales and development cycle; should Boeing salespeople not solicit any orders on a new plane until it's rolled off the assembly line (and how would they even know how many to build)? The fact is that in most industries you need to have customers pre-sold on any new product (software or physical) in order to 1.) know how much of it to make, 2.) to know what features are vital, and 3.) to have a reasonable payback period on your investment.

      The fact is that there will always be things being sold or committed very early in the development process. The only way to keep things from going sideways is to have good salespeople managed by good managers and working with good engineers who all collectively communicate frequently to keep expectations manageable. And that requires good people, which is hard. There is no magic bullet to get this right or else everyone would be doing it.

      --
      "95% of all Slashdot .sig quotes are incorrect or completely fabricated." -Benjamin Franklin
    32. Re:Estimates by gweihir · · Score: 1

      Indeed. Working under unprofessional conditions is, obviously, unprofessional. Of course, for coders that are at the lower-end of the competency spectrum (i.e. "incompetent" or worse like so many of them), this is not an option, but they are just as much part of the problem. Competent coders can always find a different job.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    33. Re:Estimates by gweihir · · Score: 1

      I am trained in gorilla warfare

      Hehehehehe, nice!

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    34. Re: Estimates by gweihir · · Score: 1

      Indeed. A pre-study is also of course what is done on said bridge and in any other engineering discipline that deserves the name.

      On the Ad Hominem side of the person that just called me "not a professional", I think he is a clear example of what is wrong in the IT industry: Cretins with big egos that do not even understand the basics of solid engineering and then mess it up.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    35. Re:Estimates by gweihir · · Score: 1

      My bosses and customers very much care. That is why I work for them. Not delivering good results is not an option for me, so a professional approach is absolutely mandatory. Of course, I can back that up with skill, experience and education wayyyyy above what the average (typically abysmally bad) coder brings to the table. And business is booming. Not everybody wants cheap coders that can then at best deliver some half-assed abomination.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    36. Re:Estimates by turbidostato · · Score: 1

      "If the chances of being there "tomorrow" is small enough, giving up ten tomorrow to take one today is the *most rational* choice."

      Only if chances are less than 10%. But if you aren't there tomorrow, then there's nothing to lose tomorrow, therefore my assertion still holds.

      "After seeing the umpteenth coworker being "let go" for not reaping in enough short term profit, you need to be *irrational* to still think long term for the company."

      True, but irrelevant. We were talking here about the corporation, not the individuals with in. If we were talking about where the irrationality comes from (goals misaligment), then yes, it would be relevant.

      "The blame starts all the way from the stock holders demanding short term profit."

      Probably yes. But then, not all companies are publicly traded.

    37. Re:Estimates by turbidostato · · Score: 1

      "I suppose the counter might be the adage concerning a bird in the hand being better than two in the bush but, in many cases, you're likely correct."

      You just ask Kodak or SCO.

    38. Re:Estimates by sexconker · · Score: 1

      There is a MASSIVE abundance of open recs for good engineers in Silicon Valley right now. It's such an employee market

      Another fuck you to you, buddy.

      You're talking about the same Silicon Valley where all the big players are guilty of colluding to artificially keep employee pay low.

    39. Re:Estimates by sexconker · · Score: 1

      Every "engineer" not working with an actual engine does not deserve to be called an "engineer".

    40. Re:Estimates by Zontar+The+Mindless · · Score: 1

      And I will PERSONALLY hunt down and administer the CLUEBAT OF THE GODS to the sorry dumbass who modded you down, girly-boy!

      --
      Il n'y a pas de Planet B.
    41. Re:Estimates by kaladorn · · Score: 1

      Horsepuckey.

      Engineer is derived from use of ingenuity. That's not germaine only to something with pistons. Nice try.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    42. Re:Estimates by kaladorn · · Score: 1

      I wish I had a pile of mod points. Anyone who can get Moloch, Captain Yossarian, and the reasonable use of the word golem into a post is all right in my books.

      And your comment was spot on too.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    43. Re:Estimates by meta-monkey · · Score: 1

      That is my favorite part of that copypasta. Any time I see it I imagine a bunch of gorillas ripping shit apart and I smile.

      --
      We don't have a state-run media we have a media-run state.
    44. Re:Estimates by Dahamma · · Score: 1

      Yep, they were caught about 6 years ago and are likely going to pay over a billion in damages and fines.

      And now those are some of the very companies that are paying insane salaries to poach the same people back and forth. I know several people who have been at both Apple and Google twice over the last 15 years. They all make WELL over $300k with bonuses, etc. And probably 2-3x that from stock options if they timed it right.

    45. Re:Estimates by Rakarra · · Score: 1

      There is a MASSIVE abundance of open recs for good engineers in Silicon Valley right now. It's such an employee market

      Another fuck you to you, buddy.

      You're talking about the same Silicon Valley where all the big players are guilty of colluding to artificially keep employee pay low.

      Yeah, and they got in trouble for that, and despite even that, SV tech tech jobs are still the most overpaid (yes, overpaid) employment positions in the US outside of professional sports and upper management. Few people have it better than us.

  2. Just stop by Anonymous Coward · · Score: 5, Insightful

    No, hashtags are not movements. If you think so, you either have no clue what a movement is or no clue what a hashtag is, and I'm guessing it's the former. Talking about things on Twitter is talking and that's it. It's not some kind of political action.

    1. Re:Just stop by Anonymous Coward · · Score: 1

      They're bowel movements.

    2. Re:Just stop by Tablizer · · Score: 2

      No, hashtags are not movements.

      If you eat a lot of Chex Mix, your movements will look like hashtags.

    3. Re:Just stop by Dahamma · · Score: 1

      If it's anything like Twitter movements, then you should really take some Immodium.

    4. Re:Just stop by Darinbob · · Score: 1

      It's Twitter. They could allow 160MB of characters and still not have any depth.

    5. Re:Just stop by gl4ss · · Score: 1

      that's like saying that this message thread is a movement.

      well, if enough people hop on the thread -and do something- it is a movement.

      --
      world was created 5 seconds before this post as it is.
    6. Re:Just stop by angel'o'sphere · · Score: 1

      It becomes political when the amount of people is high enough.
      As it is "making news" I guess it is a high enough involvement of people and hence: political and hence: a movement.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Just stop by tompaulco · · Score: 1

      Do they not see the irony of arguing about anything remotely technical on twitter? That's like locking the barn door after the horse has run off.

      --
      If you are not allowed to question your government then the government has answered your question.
  3. My rule of thumb by Trikoloko · · Score: 1

    3-5x the initial estimate. If the team is good.

    --
    My cellphone ringtone is a ring tone.
    1. Re:My rule of thumb by phantomfive · · Score: 1

      How accurate does that method tend to be?

      --
      "First they came for the slanderers and i said nothing."
    2. Re:My rule of thumb by swb · · Score: 1

      A method's accuracy is less important than the persuasiveness of its arguments about why it was inaccurate.

    3. Re:My rule of thumb by phantomfive · · Score: 1

      A method's accuracy is less important than the persuasiveness of its arguments about why it was inaccurate.

      In other words, "how can I take this failed estimate and blame it on someone else?" lol
      In that case, your company has serious problems, of which estimates are the smallest.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:My rule of thumb by Maxo-Texas · · Score: 1

      I measured the over under for individual developers. Within a few projects I could tell who would meet their estimate, who was padding their estimate, and most importantly the ones who never met their estimate.

      It didn't matter how cool or neat the work was. What mattered was a predictable schedule. Corporate minded the padders a lot less than the ones who missed estimates or even the ones who made their estimates 90% of the time but missed it 10% of the time.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    5. Re:My rule of thumb by Ash+Vince · · Score: 1

      3-5x the initial estimate. If the team is good.

      Then your estimates are crap. You should multiply them by 4 then they will be at least in the right ballpark.

      --
      I dont read /. to RTFA, I read /. to offend people in ignorance.
  4. Re:Huh? Probability. by viperidaenz · · Score: 2

    Book writing duration is random. This is known. Why should book authors be special in their inability to estimate task times using well known probability distributions? They've been writing books for thousands of years.

    Finish your draft late? Publisher won't pay you.

    Better yet, authors should be properly licensed.

  5. Re:Well, it's about time... by tnk1 · · Score: 3, Insightful

    I agree that having enough time taken to make a good product is a good thing.

    However, there does need to be some accountability to business goals and the ability to actually get features to customers in a reasonable time frame.

    Prioritization is important. There are times where something has to get done by a certain date, or you'd have been better off working on something else because you lost the customer who wanted the feature to the company who did produce it.

    In some ways, I blame customer expectations. If they're always hunting to get the most features they can, for the cheapest possible price, they're pretty much accepting the bugs and design flaws that come from software houses that are fulfilling their criteria. And that's basically what happens. If customers did something like insist that bugs in the software would require significant financial penalties or credits as part of their contract, they'd get a better product, but they'd also pay through the nose for it, and probably also have to wait a substantial amount of time for it.

    So, I think we're at an equilibrium. Customers hate shitty software, but as long as they pay for it, that's what they're going to get because they don't choose the quality software over the quick and cheap.

    And until that changes, businesses need to be able to predict when their software is going to be more or less complete.

  6. We have this already; it's called agile by Anonymous Coward · · Score: 2, Insightful

    We have this already; it's called agile. Forget about the scrum and the planning meetings, they're get emphasized by shitty teams and PHBs because they're something people are used to, namely meetings, and they're easy to do. They're not required and arguably the least important aspects of agile.

    The point of agile has always been:
    1) Figure out what the most important feature you need to do next.
    2) Build it and make sure it's rock solid.
    3) Keep repeating #1 and #2 until the client is satisfied.

    You add on top of that the minimum number of things (which can include standups and planning meetings and even, (gasp) documentation, if it's helpful to the implementation team, not the PHBs) to make the process work. A key point is there are no hard ship dates; you keep building until you're done.

    1. Re:We have this already; it's called agile by Entrope · · Score: 1

      You forgot that sometimes you need to stop when the client runs out of money, and agilistas mostly strive for that endpoint rather than shipping a completed work.

    2. Re:We have this already; it's called agile by turbidostato · · Score: 1

      "You forgot that sometimes you need to stop when the client runs out of money"

      Agile focus on each deliverable being, well, deriverable: when the customer runs out of money it should get a fully viable product.

      "agilistas mostly strive for that endpoint rather than shipping a completed work."

      Another tenet of agilism is that it is a thing of the customer as much as it is a thing of developers. If the customer doesn't make its part is no surprise it ends up with burned fingers.

    3. Re:We have this already; it's called agile by Entrope · · Score: 1

      No, Agile focuses on each sprint ending in an output that does something -- ideally something sensible, but not necessarily something useful. If you're replacing an existing process or product, it is not useful until it becomes more functional or efficient than what it replaces, and that will probably take many sprints.

      Every time I hear agilistas talk about their tenets, I am reminded of Zed A. Shaw's rebuttal to them, and how they don't have effective counter-arguments to his "what they mean" interpretations.

    4. Re:We have this already; it's called agile by Entrope · · Score: 1

      I didn't forget about cancellations due to management shuffles. Agile doesn't help there. If the customer is happy with what they have, the original AC post claimed work would stop; if the customer isn't happy, the project still gets canceled.

      When I make estimates for my own work, or for people who have worked for me long enough, I can produce pretty accurate estimates that depend both on what the scope of work is and how rigorous the customer wants verification to be. I can't control what higher-level management does to those estimates, or whether the customer is happy with the estimate or with getting what they asked for (plus negotiated changes for). If the customer wants an agile process, I would advise them that it's a good way to look like you're doing something without necessarily making much progress. Storyboards and mock-ups are usually a much more cost- and schedule-efficient way to clarify goals that are not sufficiently clear.

    5. Re: We have this already; it's called agile by Dragonslicer · · Score: 1

      No, agility involves taking a large, seemingly intractable thing and breaking it down into parts small enough for the brain of the average programmer.

      Back before the Second Comin- I mean, invention of the Agile methodology- we called that functional decomposition, and it was assumed that you pretty much always did it.

    6. Re:We have this already; it's called agile by turbidostato · · Score: 1

      "No, Agile focuses on each sprint ending in an output that does something -- ideally something sensible, but not necessarily something useful."

      Priorities are set by the customer. It's up to him to decide what's the most useful output as of today.

      "If you're replacing an existing process or product, it is not useful until it becomes more functional or efficient than what it replaces"

      For a man with a hammer... If you are replacing an existing process or product you shouldn't be using anything "agile" since there's no need for customer involvement and (iterative/decomposed) waterfall is demonstrably more efficient. But it's no wonder they use it, since Sturgeon's Revelation applies here as good as everywhere else: probably as much as 90% of "agilism" goes not beyond cargo cult.

    7. Re: We have this already; it's called agile by Cederic · · Score: 1

      Sorry, you expect us to treat your comments with any credibility when you conflate inept Scrum with "Agile"?

      With twats like you on the team no wonder there are issues.

    8. Re:We have this already; it's called agile by Entrope · · Score: 1

      If I'm replacing a warehouse full of fingerprints or photographs, and want a computerized database that will do preliminary matches, should I avoid agile? If I want a messaging system that will replace (in whole or in part) walking down the hall for a chat, inter-office memos, or email, I should avoid agile? If those are not good cases for agile, exactly what is agile good for?

    9. Re:We have this already; it's called agile by Entrope · · Score: 1

      Also, your claim that "Priorities are set by the customer. It's up to him to decide what's the most useful output as of today." is a total capitulation to Zed A. Shaw's claim that that particular agile tenet is really about valuing "Instability and plausible deniability".

    10. Re:We have this already; it's called agile by turbidostato · · Score: 1

      "Also, your claim that "Priorities are set by the customer. It's up to him to decide what's the most useful output as of today." is a total capitulation to Zed A. Shaw's claim that that particular agile tenet is really about valuing "Instability and plausible deniability"."

      Probably yes, if you think about it as an "us versus them" scenario. If you think about it as a "we" scenario, giving the owner of the service the saying on what should go functionally-wise and what shouldn't is nothing but aligning authority and responsibility.

      The part of instability is nothing but the recognition that the world the service is meant to go to is unstable.

      But if you are going with the "us versus them" scenario, you should remember that every time you put something in written you are playing the "plausible deniability" card so Shaw's cynical claim is empty of value: full specs before writting a single line of code? What for? Maybe in order for you to be able to say "yes, there's no door in this house: show me were did you ask for a door". No specs? Maybe in order to deny that something was ever said. Adapting specs as the problem realm's knowledge grows? Maybe in order to deflect blame after the fourth change of priorities...

    11. Re:We have this already; it's called agile by turbidostato · · Score: 1

      "If I'm replacing a warehouse full of fingerprints or photographs, and want a computerized database that will do preliminary matches, should I avoid agile?"

      Why would you need it? You already have a clear understandment of both process and inputs/outputs: you just need to plan, execute and deliver it.

      "If I want a messaging system that will replace (in whole or in part) walking down the hall for a chat, inter-office memos, or email, I should avoid agile?"

      Just the same as above: you already know inputs, outputs and process, no need for a special customer involvement along the building process. Even more: the two processes you talk about (and so many others more or less similar) can't benefit of an iterative delivery because, being the process already in place, your customer has no advantage in migrating to the new one till full feature parity is achieved. You may claim, for instance in the second case, your new development could only partially substitute the old one but that only means you were wrong about your project's scope: it was not a single project but one per isolated (sub)process and for this to be done, you'd better make a good forefront analysis -against the very root of agile.

      In both cases a methodology alike to (maybe iterative) waterfall will add minimal cruft and bureaucracy and will deliver in minimal time and cost.

      "If those are not good cases for agile, exactly what is agile good for?"

      Agile is good for cases were the problem realm is unknown or ill defined even for the customer (or product owner) and/or relative value of outputs are unknown. There are a lot of projects within this definition, but there are a lot others that are not.

    12. Re:We have this already; it's called agile by Entrope · · Score: 1

      "Why would you need it? You already have a clear understandment of both process and inputs/outputs: you just need to plan, execute and deliver it."

      Putting a large database in a computer, and computerizing very mental tasks like matching photographs or fingerprints, are not always well understood. The inputs are the original warehouse and human workers; the output is a computerized database that hopefully allows people to do work much more quickly or accurately or both. It verges on frivolous to say that the process is well-understood. Similarly for replacing a communication mechanism with a computerized version: The only reason to replace it is to improve on it in some fashion, and that's where the goals are usually unclear.

      It seems to me that your defining-down of when agile is useful is a capitulation to Zed A. Shaw's restatement of the value of "customer collaboration" to really mean that agilistas value "bleeding clients dry" -- because you are restricting agile to cases where nobody really knows what is a good idea, making an excuse to run down tons of blind alleys by writing throwaway code in pursuit of understanding a problem, when there are vastly more productive ways to understand the goals.

    13. Re:We have this already; it's called agile by turbidostato · · Score: 1

      "Putting a large database in a computer, and computerizing very mental tasks like matching photographs or fingerprints, are not always well understood."

      You are changing the target. The original process *is* well understood, to the point of it being done daily by the human operators. Maybe the problem is that you (the provider) don't know how to do it on a computer: that's not your customer's problem; you sold him you knew how to do it, right?

      "The inputs are the original warehouse and human workers; the output is a computerized database that hopefully allows people to do work much more quickly or accurately or both."

      Wrong! Those are your deliverables. The input are the fingerprints and the output is whatever the human operator do with them. And you already have that. You are conflating the service you sold your customer (a computer program that do this or that) with the process you are going to substitute (looking at pictures or fingerprints to find this or that). That's wrong, very wrong: *your* R&D is not your customer's concern. The problem here is that your customer perfectly knows what he's doing, but it is you the one that doesn't know how to do his job (with a computer). That's what Subject Matter Experts are for, not Agilism. And again, you already have all the info you need: the human operator's output: you (internally) work with it till your program is as good or better at doing whatever the human operator is doing and you will use the human operator's output to test it.

      Point it case: Papanicolau test. Do you know what is it? In case you don't, is a method of cervical screening used to detect potentially pre-cancerous and cancerous processes in the cervix (opening of the uterus or womb). The human operator basically looks at a microscope field and tells if he sees cancer cells or not. It's been automated. Direct users's input? Zero. You just take thousands of past photographs and their operator's associated results and you replicate them with a program. After that, you do the same in parallel to the operator and see what happens. Once you achieve the expected results, you present your product to your customer.

      "It seems to me that your defining-down of when agile is useful is a capitulation to Zed A. Shaw's restatement of the value of "customer collaboration" to really mean that agilistas value "bleeding clients dry""

      It seems to me that you already made your mind for whatever reasons (maybe you are certified on a competing process and you don't want your investment to lose value -I still didn't here a word from you on what would be a process better than the one you are despising) and you just repeat your tantrum no matter if it makes sense or not. But still, it can't be "bleeding clients dry" when the client can get out every two weeks with something of value for him. You yourself could very well being the customer on an agile project: would you allow your provider to bleed you out? Probably not since by the end of the second sprint you would tell your provider "you don't know what are you doing: you are fired starting now". Compare that with learning that your provider doesn't know what he's doing anyways, only after a full year is payed and you see the full results being crap.

    14. Re:We have this already; it's called agile by Entrope · · Score: 1

      "you sold him you knew how to do it, right?"

      I never said that. You introduced the software team's prior mastery of the problem domain as a reason that agile was not appropriate to the problem. I didn't assume that -- I was thinking that both sides would have the opinion "we can just ask the human workers how they match these images", not realizing that this is a hard AI problem, or that there is still argument over whether a computer system should try to find one match or just produce a relatively short list of close matches.

      I have been through training on almost a dozen different quality management approaches and systems, not all of them software- or even R&D-focused. The one thing I have learned is that there is not one process that is right for all software organizations or projects. I tend to think that there are much better ways to handle uncertainty and change risk than agile. For example, I expect storyboards and mock-ups to be more cost-effective ways to clarify the "known unknowns" than agile's sprint methodology -- which basically says to put something in code, and react to errors. I think both agile and other methodologies require good architectural decisions to avoid costly rework when a requirement unpredictably changes (an "unknown unknown"). Keeping both sides in the loop when assumptions are made or goals change is not an agile-specific process -- it is common sense and basic relationship management.

      So that is why I asked you what kind of project agile is good for, and your answer seems to be that it is only good for a kind of blue-sky research that hardly ever happens. Most leading proponents of agile claim that it is good for a much wider problem domain, so I conclude that either you or they are wrong -- and if they are wrong, that speaks loudly to the agile approach itself being wrong.

  7. The real problem by wonderboss · · Score: 5, Insightful

    is giving estimates without a detailed design.

    Imagine this interaction:
    Customer: I want you to build me a house.
    Contractor: Ok, How many square feet?
    Customer: I don't know. When can you start?
    Contractor: We can't start until we have plans drawn up.
    Customer: I don't have time for that. How much will it cost?
    Contractor: I can give you a rough idea once we've nailed down the square footage, number of stories, type of foundation, and some other details.
    Customer: You are wasting my time with all these questions.
    Contractor: Go Away.

    Yet software developers agree to this situation, or are forced to agree to it, all the time.

    --
    more cowbell
    1. Re:The real problem by NotInHere · · Score: 2

      And building a house is a fairly simple task compared to writing some programs. You should better compare software to digging tunnels in the mountains. You never know what type of stone is ahead, and if you reach sand, you have to cool it so that it's stable etc.
      You can make small test drills in order to find that out, but you won't know it for the complete length of the tunnel. And if management now demands that the tunnel has to be larger, it means alot of effort, the longer your tunnel already is.

    2. Re:The real problem by phantomfive · · Score: 4, Interesting

      Robert Martin recently wrote a book called Clean Coders which discusses exactly how to deal with that problem.

      Essentially, he says if you want people to treat you like a professional, then you need to act like a professional. I highly recommend that book, it's good.

      Refusing to do estimates is not acting like a professional.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:The real problem by khasim · · Score: 1

      Isn't that known as "gathering requirements"?

      It can be difficult and they can change and they will probably be incomplete ... but as you get more experience you should be better prepared to deal with those issues.

      I've seen a company build a new production center and not know where the people would be who would be operating it. Some of it was backwards. We ended up putting down tape to delineate the different areas so they could be painted. So yeah, stupidity is rampant.

      But the contractors all got paid. They didn't care whether what they were delivering met the customers actual needs (that the customer could not identify) as long as what they delivered met the specs and was up to code.

      Software should, for the most part, be the same way. I'd guess that less than 1% of the programmers out there are really doing anything new.

    4. Re:The real problem by phantomfive · · Score: 1

      Any time you are putting an estimate on the table without sensible requirements behind it, you are gambling.

      Then get the sensible requirements. Work with the customer to figure out what they want and need (and maybe also what they think they want).
      That is part of being professional.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:The real problem by Noah+Haders · · Score: 2

      You should better compare software to digging tunnels in the mountains. You never know what type of stone is ahead, and if you reach sand, you have to cool it so that it's stable etc.

      and yet tunnel diggers manage to work on-time and on-budget over and over and over again...

    6. Re:The real problem by plopez · · Score: 1

      Part of the difference is that a house is a tangible object. You can see it, feel it, smell it, etc. Software is not, it is largely an intellectual excesses. That makes it hard even for good developers. I have even used a house metaphor at times when talking to customers as in "you're asking us to tile the second floor bathroom before we have the foundation in place".

      --
      putting the 'B' in LGBTQ+
    7. Re:The real problem by Anonymous Coward · · Score: 1

      You should better compare software to digging tunnels in the mountains. You never know what type of stone is ahead, and if you reach sand, you have to cool it so that it's stable etc.

      and yet tunnel diggers manage to work on-time and on-budget over and over and over again...

      Name one recent instance where that has happened.

    8. Re:The real problem by dougg76 · · Score: 1

      Actually, I have heard of many digs going over. I even have a local example:
      http://www.washingtonpost.com/...

      --
      I laugh at inappropriate times.
    9. Re:The real problem by Dahamma · · Score: 1

      And building a house is a fairly simple task compared to writing some programs.

      And writing a program is a fairly simple task compared to building some houses.

      That was the OP's whole POINT. If you have clear and complete architectural and engineering plans, both can usually be estimated with reasonable accuracy. If you don't, then neither can.

    10. Re:The real problem by Darinbob · · Score: 1

      Replace customer with product/project manager and that sounds right too.

      But reality need not intrude on the process. I remember something I worked on that got a product of the year award based solely upon a mock-up when the real product wasn't even functional.

    11. Re:The real problem by Darinbob · · Score: 1

      I think people that are good at estimates are doing the same things over and over. Such as adding a small feature to an existing product. But designing and building a new product from scratch, you just can't estimate that.

      A: "How long will it take to write the driver?"
      B: "I don't know, we don't have documentation yet."
      A: "Well make a wild ass guess then, I need a number to fill in."
      B: "Um, 6 months."
      A: "Stop sandbagging."
      B: "Ok, six hours."
      A: "Really, that fast?"

    12. Re:The real problem by Darinbob · · Score: 1

      But they don't. Seriously, they don't.

    13. Re:The real problem by 31eq · · Score: 1

      No, an estimate isn't a gamble. It only becomes a gamble if you treat it as a target or a promise, and commit resources to it. The real problem may be not allowing an estimate to change as more information comes in.

      I don't know how long it takes to build the average house, but I'd guess between a week and a year. I'm sure people who build them all the time have a pretty good idea (along with the uncertainties) assuming some implicit context like where you're having the conversation. If you expect a mansion in the desert on a mountain to take the same amount of time, you're an idiot. Of course the estimate will change if there are unusual requirements. Another problem with software engineering is that it's full of idiots like this, so we get frightened of providing the estimate.

    14. Re:The real problem by kaladorn · · Score: 1

      Sales people and execs agree, software developers simply try to invent tomorrow's answer today for a deadline yesterday. Often they end up inventing a duck billed platypus with the intention that it function in the vacuum of space (to wit, not a very successful design or outcome).

      I should know. I've built that damn platypus against good sense but under orders.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    15. Re:The real problem by kaladorn · · Score: 1

      Mostly not.

      For instance, Ottawa was having a train tunnel put through downtown with a limestone geology. The company did test drills all along. Then they agreed to a fixed top end cost (the City forced that as they knew this could go badly). Along the way, sinkholes, collapses, and the predictably bad geology making things tough on the contractor.

      Most of these big projects either are so overpriced to begin with to cope with the massive uncertainties or they end up being so late and overbudget it isn't funny.

      The thing about the software world is in many cases, if you told the customer actually how much the thing the customer wants done and done right would cost, they'd give up at the start.

      Once they are $600K into a project, another $50K here or there (adding up possibly to another $200 or more) is absorbed with ill grace but follows the doctrine of sunk costs and not wanting to lose that investment so sending more money down the hole....

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    16. Re:The real problem by kaladorn · · Score: 1

      You don't watch many of the shows where people go into screwed up housing and repair things often done by professional contractors (a lot done by non-pros too, but that's an aside here). Even professionals get in over their head.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    17. Re:The real problem by Dahamma · · Score: 1

      Same with ridiculous customers who don't know what they want. The OP made it sound like building a house never actually went like "build me a house, but I don't know what I want".

      There are plenty of examples of just that - in fact, more than you'd think, because by definition those people who ask someone else to build them a house want something custom (vs. developers building and then selling from pre-desgined models). Of course you have the extreme examples, where the house was basically in continuoous development (Winchester House, Hearst Castle, several of Frank Lloyd Wright's projects) for years.

      Not unlike a software customer who wants a huge project implemented, doesn't really know what they want, and are willing to keep paying over and over for delays (usually seems to be related to to the government, since they are the only large entity with "investors" who keep giving them mountains of money to waste on these projects...)

    18. Re:The real problem by Noah+Haders · · Score: 1

      Name one recent instance where that has happened.

      http://waterbriefing.org/home/...’s-lee-tunnel-completed-on-time-and-on-budget

      kiss my ass AC

  8. Not time consuming by phantomfive · · Score: 1

    One of the major complaints about estimates is that it "takes too long." Seriously, if estimations take any appreciable amount of time, you're doing them wrong.(unless you need to estimate some massive project, in which case you understand why estimates are needed).

    If you want to remove the "time sucks," get off slashdot, get off twitter. When I turn off the internet while working on difficult code, I literally get twice as much done. I've measured this several times (and you can tell from this comment how much I will get done today).

    --
    "First they came for the slanderers and i said nothing."
    1. Re:Not time consuming by Kjella · · Score: 1

      One of the major complaints about estimates is that it "takes too long." Seriously, if estimations take any appreciable amount of time, you're doing them wrong.(unless you need to estimate some massive project, in which case you understand why estimates are needed).

      Usually this is because you've already estimated it to the best of your ability but the powers above aren't happy with the uncertainty, where they harass you into giving a magic number or narrow little gap or to talk down your estimate until it's the number they're happy with. Or if you're really lucky get a litlte time for research/experimentation/prototyping but in practice it'd just be faster to start on the implementation, if you know this is a task that in practice will need to be done regardless. I've been in five-person meetings where we spend half an hour debating the schedule and estimates when in fact we'd have a better estimate with a head start on implementation by simply testing it out if key solutions are feasible. Unfortunately some people think that if you just have people work on an estimate long enough, it'll get better. It might work for a plumber who can probably enumerate every task down to the last bolt that needs tightening, but it rarely works in software development. Unless it's really a doer-job of adding one more field to a form just like all the existing fields.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Not time consuming by phantomfive · · Score: 1

      Usually this is because you've already estimated it to the best of your ability but the powers above aren't happy with the uncertainty, where they harass you into giving a magic number or narrow little gap or to talk down your estimate until it's the number they're happy with.

      If someone makes an estimate for you, or forces you to make a lower estimate, then you have no obligation to meet that estimate.
      Be professional, and hit your estimates, but learn to let people know that things take time. These are soft skills.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Not time consuming by phantomfive · · Score: 3, Insightful

      If someone makes an estimate for you, or forces you to make a lower estimate, then you have no obligation to meet that estimate.

      Yes, you do. It's called keeping your job.

      If your job depends on you meeting impossible estimates, then you're not going to be in it very long, no matter how hard you try.

      --
      "First they came for the slanderers and i said nothing."
  9. Be honest by cowwoc2001 · · Score: 4, Interesting

    Estimates should be used to prioritize features (cost / benefit) as opposed to being used to set hard deadlines.

    Estimates should be one of "hours", "days", "weeks", or "months". It is fairly easy for most people to differentiate between features that take hours to implement vs weeks. In my experience, exact durations with multiples for padding have proven to be less useful / accurate than the former method.

    1. Re:Be honest by Anonymous Coward · · Score: 1

      have to break everything down into something that will fit in one sprint

      You forgot the Agile requirement to break everything down into something that a stakeholder can verify. Some tasks just can't be broken down that granular. For example, I'm working on ACA reporting now, and we can't display anything on the report until a ton of prerequisites are met. Some of them don't have a component that can be done in a single sprint that a product manager can verify so our certified scrum master won't let us start those tasks. ACA reporting is legally required at the end of this year, so we are going to lose most of our customers since there's no way for us to provide that feature. Agile is a literal suicide pact. My contract states that I get to keep all of my equipment if the company goes out of business so I'm riding this sinking ship out until the end to keep my 30" monitor and new MacBook Pro.

    2. Re: Be honest by Anonymous Coward · · Score: 2, Insightful

      > Agile is a literal suicide pact.

      To be fair, any process can be when the process is considered more important than actually getting things done, but with Agile it seems to happen more often than not.

    3. Re:Be honest by turbidostato · · Score: 1

      "Agile is a literal suicide pact"

      In fact it can be so. Agile was meant to be people and results over processes, with a strong accent in empowering people. But then, what happens when you empower stupid people? "A literal suicide pact" sounds a good aproximation.

    4. Re:Be honest by Noah+Haders · · Score: 1

      wtf is a 'user story'. are those like comments?

    5. Re:Be honest by Xyrus · · Score: 1

      And how long do you think it takes and how many people are involved before the first shovel hits the ground on a major new construction project?

      --
      ~X~
    6. Re:Be honest by goose-incarnated · · Score: 1

      And how long do you think it takes and how many people are involved before the first shovel hits the ground on a major new construction project?

      Once you have the land surveyed it takes six months, mostly due to the approval process for construction permit. If the approval process alone did not take 2 months then it would take far far less than six months. Architects are damn quick repurposing an existing mall plan for different geography.

      --
      I'm a minority race. Save your vitriol for white people.
    7. Re:Be honest by angel'o'sphere · · Score: 2

      A user story is a short description of some functionality in a certain stile:
      As an anonymous user
      I want to be able to browse the web site
      to see if there are interesting articles.

      As a logged on user
      I want to be able to post on the web site
      to comment on other posts.

      As a moderator
      I want to have the option to up- or down mod other posts
      so that the quality of posts is shown with their rank/mod level.

      User stories are usually written in that mantra:
      As ... role
      what: feature to implement
      why: benefit

      The point is that in the beginning you are unable to formulate many features in such simple sentences. That is the phase where your software is either not under construction or in a very simple state.

      The more the software evolves the more easy it becomes to add such requirements (in wording as in coding).

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:Be honest by nine-times · · Score: 2

      Estimates should be used to prioritize features (cost / benefit) as opposed to being used to set hard deadlines.

      I have argued for a long time that, when managing projects, people should focus less on deadlines and requirements, and more on prioritization. For example, all the stakeholders can agree on a project to be completed with a certain feature set by a deadline of November 1st for a budget of $20k, but often enough, that's not really the information you need to know. What's just as important as knowing those project requirements is knowing, when you reach the point where not all of those requirements can be met, which requirements should give way?

      For some projects, it's better to come in one time and under budget, even if it means sacrificing a substantial part of the feature set (and some features are more important than others). For other projects, you can go over budget and the implementation can be a bit sloppy, but you must meet the deadline with the complete feature set, because other things are dependent on your project's completion. For some other project, the feature set may be paramount, and running a little late and over budget might be fine, as long as the result is solid and thorough. I've worked some projects where if I'm coming in early and under budget, they want me to wrap things up and save time and money, while others would prefer that you take the extra time and money to polish things, clean things up, and maybe add some more tasks to the project.

      So whenever I take on a project, I always like to know that sort of thing. What's the minimum I need to do to consider the project a success, and what are my priorities? A list of requirements, a budget, and a timeline are not enough information to do a good job.

    9. Re:Be honest by kaladorn · · Score: 1

      Well, I agree with days, and maybe weeks, but likely never months. Generally in my experience, if you can't estimate a thing in days or a few weeks, you haven't broken it down enough and don't understand it well enough. Plus shaving time to make tight bids or to satisfy management is a lot harder when you are working in terms of weeks because a week can be a lot to lose.

      The problem most times with estimates for truly new types of work (like some I was involved in during the mid nineties on mobile computing for our federal police) was that there are a lot of technical unknowns and some may actually be insoluble or very lengthy to address. That can blow those very low granularity estimates all to heck. I think that project was months late and finished $200K or more over budget on an $800K or $1.2M project (I forget now exactly).

      On the other hand, I've been on projects where we did a $46K technical investigation/requirements development assistance first on a $250K project after and totally de-risked the thing from a technical perspective as well as being sure we knew what features we wanted and what tech was best. So we built the $250K project on-budget and within about 1 week of the planned schedule (just to take out some final glitches).

      I've also worked on Agile projects where they estimated by sprint and the only larger scale planning was feature planning per sprint. Of course, that was for a product company, not a contracting company - they have very different project planning requirements in my experience due to how they get their funding (customers won by bid versus from corporate leadership investing in a new product).

      The problem with Agile and the world of big companies is that most accounting departments and management techniques and de-risking analysis wants definitive progress indicators and deadlines for market and costs for funds allocation in accounting ahead of when Agile can provide these things. Many managers and accountants still love the fiction inherent in waterfall project planning. Our Agile work did deliver excellent product in what I think of as minimum time (my opinion) but it gave many of the waterfall lovers apoplexy and dealing with higher level management and accounting apoplexy isn't always a simple thing for project technical managers/leaders.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    10. Re: Be honest by kaladorn · · Score: 1

      If you don't understand the requirements well enough to create broad users stories for features (to be refined and broken down further into smaller subordinate user stories in the iterations where those featurs are worked on), you certainly don't know enough to estimate them and you'll never be able to tell a client or funding source how much the work is going to cost (even broadly).

      User stories can be as big a mire as you choose. When we used Agile on a $1M+ contract, we delivered in something like 18 sprints (the last ones were bug killing sprints) and the major items sought were delivered. Lots of 'nice to do' were too, but not all. We only ever spent about one afternoon doing sprint planning (for a team of about 6 at our end and another few overseas) for any sprint (there was preplanning for major features by sprint but we'd have to develop the subordinate user stories at the start of each sprint and put our estimates in).

      The project was very successful.

      The way a manager of mine once put it: You need process, but just enough. Too much and you die under the weight of it, too little and you get lost in the bushes with no idea when you'll finish or if you'll finish. That applies to any methodology: Waterfall, Objectory, Rational, Agile, etc.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    11. Re:Be honest by kaladorn · · Score: 1

      The way you are pursuing Agile may be suicidal, but that is not necessarily Agile's fault.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    12. Re:Be honest by kaladorn · · Score: 1

      Because you are enamoured of process (obviously or these guys wouldn't be employed) and have picked expensive tools, you get down on the method as if it is responsible for those choices....

      We used Rally (Rallye?) and it worked very well for us and I don't think it was extortionate in costs.

      I've seen a lot of waterfall projects die under the weight of tools and management ideas (too terrible to be methodologies). Same with other ideas like XP Programming (always doing pair work is insane for experienced teams but having that as an option is not).

      You can always mis-apply a technology or conceptual approach poorly enough to kill a project.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    13. Re: Be honest by kaladorn · · Score: 1

      Not accurate. Management usually has broken out content by major features and knows roughly how many sprints will be needed. It is quite possible to use Agile and have a view to the future, it just isn't set in stone and inflexible.

      It sound like most Agile detractors (or detractors of any tool or technology) have had issues with them being put in place in a very inflexible way.

      Flexibility (just enough process to be useful, not enough to be cumbersome) is generally the best approach. It's not always a clear point and it sometimes needs to be dynamic. What is known though is that if you try to treat any technology or methodology like a religion (zealotry and can't get enough), bad outcomes ensue.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    14. Re: Be honest by kaladorn · · Score: 1

      Our approach to that same problem would be:

      You have a story that looks like 20 story points but your average velocity for the team is 13. We need to either have a slightly longer sprint (say a third week which should yield about an additional 7 points based on your 13 over 2 weeks or we need to add some manpower to increase our velocity. If those aren't feasible, then we should create two substories that each describe a portion of the work and then work on one in one iteration and one in the next.

      You can't be religious about every assertion made in theoretical models of how to apply something. We built (ported) a huge system from one OS to another (N-tier, multiple host types, complex interactions within a software stack on a host and across between hosts) and of course there were some big stories at the start. So we broke them down.

      We also knew that in the early sprints, until enough things were together, we couldn't do much functional testing (too many bits needed for anything to work). So we set the testing expectation moderately in the early sprints with more weight on that as enough of the structure came together to allow functional testing.

      Seriously, it sounds like you guys are too rigid and too unimaginative by an order of magnitude.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    15. Re:Be honest by cowwoc2001 · · Score: 1

      I believe you misunderstood what I meant.

      "hours" means = 1 day and = 1 week and = 1 month (there is no upper limit to the amount of time it will take)

      The difference between each level is meant to represent an order of magnitude. Breaking down the task is only useful if you plan on using the estimates to schedule delivery dates, which we do not.

      The problem with Agile is that it takes credit for ideas that have existed for over 30 years (incremental software development) and by now the term has become nothing more than a loaded buzzword. Every company is practicing their own form of "agile" and in most cases it's utter crap. The proof of this is that most companies nowadays claim to practice "Agile" but project failure rates are just as abysmal today as they were 30 years ago.

    16. Re: Be honest by kaladorn · · Score: 1

      Misuse of a tool to justify not moving forward is insanity. It's also a choice.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
  10. Downward Spiral by phantomfive · · Score: 1

    In the 70s, we got Mythical Man Month
    in the 90s we got Extreme Programming, followed by Agile.

    Now we get #NoEstimates. I think we can do better.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:Downward Spiral by angel'o'sphere · · Score: 1

      Extrem programming is-an agile method.
      So saying Agile came after XP makes no sense :D

      And in agile methods you do estimations ... but in our times usually not based on time but complexity.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Downward Spiral by phantomfive · · Score: 2

      eh,

      Agile Manifesto - February 11-13, 2001
      Extreme Programming Explained - published October 1999

      That's good enough to say "it came first" :)
      As long as you understand, I'm not going to argue about the definition of "first."

      And yes, I learned this tip about estimation from agile:
      When you make an estimate, afterwards check to see how accurate the estimate was, and use it to improve the next time.
      Using this method, over time I've gotten fairly good at not missing estimates. The only times I miss are when there are a lot of unknowns (and even then, I can usually give a reasonable outer-bound).

      That seems like an obvious tip, but it's amazing how many people don't use it.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Downward Spiral by phantomfive · · Score: 3, Interesting

      Incidentally, This Manifesto against the agile manifesto entertains me.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:Downward Spiral by Greyfox · · Score: 1
      If you follow along at the Cunningham and Cunningham website, it's pretty easy to see the clear evolution of both concepts. Agile very much evolved from extreme programming. Most companies that I've encountered that claim they're agile really aren't, though. They're agile but they don't have time to write tests, they don't empower their programmers to limit the number of stories in a cycle, and they very frequently have half-hour to hour long daily scrums. In short, they just add a bunch of agile paperwork on top of their previous micromanagement practices.

      A couple of previous companies I've worked for would jump on some new bandwagon for managing their code and processes every year or so. They'd try it for a while and when it didn't magically fix all their problems, they'd jump on a new bandwagon. The old timers would just shrug and keep doing what they'd been doing all along because they knew the company would lose interest in a few months and be on to something else. I never thought there could be a learning disability on a corporate level before working at those places. Maybe there was something in the water supply in that state...

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    5. Re:Downward Spiral by phantomfive · · Score: 1

      I've wondered about the C2 website......did the ideas get developed there, or Was it a place people merely recorded after the ideas were developed?

      --
      "First they came for the slanderers and i said nothing."
    6. Re:Downward Spiral by angel'o'sphere · · Score: 1


      Agile Manifesto - February 11-13, 2001
      Extreme Programming Explained - published October 1999

      Does not change the fact that XP is an agile method, too :D I guess if we dig a bit around we find a few more agile methods that come before the "Agile Manifesto". After all the manifesto was written down as several agile methods showed that they work (in a certain context)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Downward Spiral by Cederic · · Score: 1

      A bit of both, but mostly recorded then refined.

    8. Re:Downward Spiral by craigtp · · Score: 1

      Yes, and don't forget that the C3 project, upon which most of "agile" (or at least XP) is founded was, ultimately, cancelled and considered to be a complete failure

  11. Re:The other real problem by mveloso · · Score: 1

    Customer: build this
    Developer: OK, it should take X
    Customer: great

    Customer: why is it late?
    Developer: oh, I used a bunch of new technologies and techniques. Now it does all this crap you never asked for, but I was able to pad my resume.
    Customer: but it doesn't even do what I asked for
    Developer: you idiot, you didn't spec it correctly.

  12. Re:Huh? Probability. by Trepidity · · Score: 3, Informative

    Finish your draft late? Publisher won't pay you.

    That's more common than you think. Especially if you're not already an established name, contracts usually have terms stating that if you don't meet the deadline, the publisher has the right to cancel the contract, and demand return of the advance (if any). Whether they actually exercise this right or not varies.

  13. Initial Estimates Stupidity by Dutch+Gun · · Score: 1

    When I was working on a videogame a number of years ago, I was asked by the publisher to come up with an initial schedule. We had a more or less fixed deadline, and while we knew roughly what we were going to be working on, the design phase of the game hadn't even begun. I started working on a very rough outline of the phases of the game development based on my previous experience with such projects. Naturally, it was somewhat vague, because we didn't have a design yet.

    The publisher rejected the timeline proposal, complaining that it didn't enumerate specific tasks in enough detail. For a year long project, they wanted each task broken down into 2-3 day increments optimally, and no more than one-week tasks. The only thing I could do was to break each task into more techno-babble bullshit, but it really just muddied things. Still not happy with my work, they found someone else to create a nonsensical schedule with lots of detailed tasks that were pulled out of the air. That was then our fixed schedule for the game which, again, hadn't yet been designed. It was entered into a clunky custom project manager we used, and whenever a task came due, we dutifully marked it off as "checked" whatever it was - it certainly had no relation to reality. But we were right on schedule!

    What we actually ended up using was a simple Excel spreadsheet with all the *real* tasks listed, and assigned to each person. The project manager kept it organized for us, and as the project evolved, we drilled down and refined the tasks from larger goals to specific items. We had a list of features from core to "nice to have", and we kept focus on what we needed to do first, and only added the superfluous features later in the project. It was just common sense to us, and not surprisingly, it worked fairly well.

    I always chuckle a bit at how people/organizations keep looking for some magical "methodology", which needs a fancy name to identify it, with method-specific terms and rules. In my opinion, the more you formalize stuff like this, the more likely you are to value process over projection, and you'll just end up getting mired in that process instead of focusing on the product. I like a lot of the concepts of "agile", but I just cringe whenever I hear about "sprints", "user stories", "stand-up meetings", and so on.

    And creating a hashtag-based term doesn't provide any new insight.

    --
    Irony: Agile development has too much intertia to be abandoned now.
  14. Re:#YouAreCows by phantomfive · · Score: 1

    I'm going to need an estimate for how long it's going to take you to say Mooooooooo........and can you come in and work on Saturday? Yeah.

    --
    "First they came for the slanderers and i said nothing."
  15. Not a developer, but... by nine-times · · Score: 4, Insightful

    I'll admit that I'm not a developer, so I may not have a firm grasp on the relevance of everything being talked about. However, I've managed my share of projects, and I definitely think there's reason to doubt the value of estimates for all kinds of projects. Software development projects are not unique in that regard.

    Now, I want to start by pointing out the obvious that you often have to make some kind of estimate. Even if the estimate isn't very precise, you have to make some kind of guess-- is this going to take 1 day, 6 months, or 5 years? Being practical, people have to have some idea of what they're getting into, or they can't make decisions.

    On the other hand, estimate can only be accurate insofar as the scope of the project is well defined and well understood. For tasks that you do frequently and know exactly what needs to happen, accurate estimates are not very difficult. Even if you are bad at estimating, you can measure how much time and money is spent on those repetitive tasks, and then use that data to figure out how much time and money it typically takes. However, as the scope of work is less well defined, or the nature of the work is less well known, the accuracy of the estimate will be worse.

    Imagine building a house. If you're building 100 houses in a development, and you do that work often, and you've already build 30 houses and know how much the labor and materials cost, then you can probably make a good guess of how much time and money it will take to build the remaining 70. However, if someone asks you to "fix all the problems with their house," and you don't know what shape their house is in, what it means to "fix" it, what the laws are regarding construction in the area, or what the local materials/labor cost, then your estimate won't be worth much.

    And this brings me back to the issue of "precision" rather than "accuracy". I think part of the issue is to provide an appropriate expectation of precision when providing estimates. I frequently have to provide estimates, and some of them are wildly wrong, but when I'm not confident in the estimate I'm providing, I'll also provide some kind of disclaimer. I admit that I don't know all the details about the situation I'm getting into, and that my estimate could be off. The thing that I'm saying will take 6 weeks might take 2 months. Maybe 2.5 months. Maybe more. Not 6 months-- at least not unless there's something really unexpected or some kind of mission-creep.

    But this is really part of a larger problem: the ineffectual nature of "plans". There's a famous quote, something along the lines of, "no battle plan survives the first contact with the enemy". Again, there are projects where the scope is defined and the work to be done is well understood, and in those cases, you can do conventional project planning. You can set milestone dates and make gantt charts, and develop a whole timeline and budget. But on the other hand, Donald Rumsfeld was on to something when he talked about "unknown unknowns". Often when you are embarking on a project, you're not even aware of the obstacles you're going to face, and so you can't account for them. This doesn't mean there's no point in developing a plan or a schedule. It means that your schedule has to be flexible in proportion to the likelihood of "unknown unknowns" and other contingencies outside of your control.

    I think if you want to improve the situation, the answer isn't to stop making estimates or project plans, but to develop better methods for quickly estimating the precision of your estimates, providing a margin of error, or the level of flexibility needed in a project. However, I think the #NoEstimates people are correct to point out that there is often diminishing returns on trying to set deadlines and budgets. It doesn't make sense to spend a week refining your plans for a two-week project.

    1. Re:Not a developer, but... by Greyfox · · Score: 2
      That very much hits the nail on the head. Most of what I've done has been maintenance and not new development. If I'm doing new development on my own and I'm trying to learn something new, it's hard to estimate. If it's tools I'm familiar with, I can be reasonably accurate.

      There's another side to that story as well -- most programming positions are actually not new development. Even if you're getting in early on a project, there's probably already a lot of framework code in place and likely a design. If you're not familiar with the code, your work won't be as efficient as someone who is, and your estimates will also be less accurate. I've found that in general it takes about a year to get to the point where you can start being reasonably efficient and reasonably accurate in your estimates. You start to get familiar with the code, the company's products and customers and their management practices. The longer you work with any one code base, the better you get at working with it.

      Ironically most programmers seem to stay at a job for a year or two tops and then move on. I've seen rounds of layoffs in the past that have caused companies to "forget" how to make entire products lines.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    2. Re:Not a developer, but... by davide+marney · · Score: 2

      Actually, when you don't know the scope in advance, you need to FLIP the estimate into a maximum allowed effort. Ask the customer how much they are willing to spend on the problem for now, and then do all that you can for that amount and cycle back. When you report how much you did, you'll also know much better how much is left to do. Then you can make another ask.

      Works every time.

      --
      "We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
  16. More of a Problem by SuperKendall · · Score: 1

    Giving estimates without a detailed design is bad.

    But the thing is, often giving estimates WITH a detailed design is no better.

    So much of software development is utterly variable - perhaps you get a guy who doesn't know some aspect of the system they are building in and needs an extra week, while another person does not. That alone is a whole week lost or gained depending on perspective.

    And there are thousands of things like that in any given bit of software. The approach you take to design, the overhead of process, even just unexpected interpersonal contention between team members who may not have even been allocated to a project before you are supposed to give an estimate.

    I had never even heard of the "#NoEstimates" movement but I am right on board, because from over twenty years of professional software development for companies large and small I have seen that all estimates are horrific lies, that sometimes you get lucky and the estimates match the actual work performed - but far more often people are pulling long hours or other tricks to make the work match the estimate. Sometimes they don't, and then you have what is called a "late" or "failed" project.

    To take it down to a macro level, look at a scrum iteration. You are supposed to give time estimates for the work in a sprint, about two weeks long - often even THAT short a timeframe an estimate can be drastically off. You are supposed to provide estimates to get a velocity but what is the point when at any moment you can totally blow out an estimate because of some unexpected factor? You could get the same effect without estimates by having a team agree what to take on in two weeks simply by understanding the work to be done, and measuring progress on tasks moved around during the sprint... saving all the time put into coming up with fake numbers. All of the estimates and thumbs/up down are dancing around the real goal of the whole process which is simply to have a team agree what it can get done in two weeks, something any decent software team can do pretty well without estimates.

    There are people who claim not giving estimates is not "professional". But since all estimates are really lies, why is it not considered *un-ethical* to lie to a client?

    Far better to my mind, would be some kind of presentation of a probability curve of when work would be done, and even that only from a team that had been working together in the domain the software is in. Otherwise all bets are off and you just need to wait for the team to tell you when they are approaching a point where they understand how much longer something might take to complete by a definition they provide.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:More of a Problem by turbidostato · · Score: 1

      "The approach you take to design, the overhead of process, even just unexpected interpersonal contention between team members who may not have even been allocated to a project before you are supposed to give an estimate."

      Yes. And the way RFPs work are not helping here. Even if we accept the RFP to be an excessively precise one (which is usually not the case) what does exactly the customer expects? For the providers having a team of people twiddling thumbs just in case they win the bid? No. What they usually have is a presales team spitting proposals as quick as they can which haven't work in a project for ages, if ever and, of course, the team will be put together only after the bid is won, with the people they have at hand at the time or hiring someone that more or less fits the position after the fact. Given the alleged fact that some developers can be 10x as productive as others, there it goes your gantt chart. That may work on engineering disciplines already stabilized but not on something as young as IT and with so much creativity involved: you make an RFP for a bridge but you don't make an RFP for a new car design (I don't mean here the look of it but the full process from the first draw to the assembly line).

  17. The counter-point article does not help by SuperKendall · · Score: 1

    From the article:

    That gave our VP enough confidence that he "only" doubled our estimates and offered the customer a firm fixed price. This contract was a success for all concerned: we came in under our estimated time and cost

    So two highly experienced developers came up with an "estimate" that was off by nearly a factor of two (in came in "under time" but surely not by half).

    How is that really an estimate? From the standpoint of raising that as a banner in support of estimates, how is that success? Remember that was essentially a port of a program already working in another language, and even THEN the estimate was absurdly wrong. How is that viable in any way as a continuing process? They got lucky that round because doubling the incorrect assumptions was enough, but that may (read "will") not always work.

    If a client is "allergic" to time & materials contract, too bad for them - in that case they would have expended more on building the physical plant.

    There is a big disconnect in the world between people who imagine that software can become bricklaying, and those that know the harsh reality of what really happens in software development and how unrealistic time estimates are.

    If bricklayers often got wrong by 3-4x the number of bricks needed for a project something would be changed. But that happens every day in software and we just all carry on as if it doesn't matter.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re: The counter-point article does not help by SuperKendall · · Score: 1

      The reason we can blame Agile is because Agile is a process. Human beings inherently turn process into rigid law, instead of flexible guidelines on how to work.

      You have never seen a human being freak out as much as if you tell a scrum master you have started a second story before the first has ended, even if it makes the most sense to do so.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    2. Re: The counter-point article does not help by Cederic · · Score: 1

      Look fuck wit, Agile is not a process.

      The reason you're blaming Agile is because you're too fucking idiotic to realise that the problem is the cunt blaming it.

      Take some fucking ownership, show some professionalism and start addressing your own very evident ignorance.

    3. Re: The counter-point article does not help by Entrope · · Score: 1

      CMMI claims to not be a process, but it certainly dictates a lot of processes. Agile dictates an awful lot more. It doesn't tell you what you should eat for breakfast each morning, but to most people, it prescribes enough to count as a process. If a scrum master throws a fit when some developer optimizes for total work expended rather than following the order that the scrum master thinks the process requires, is it the fault of the process, the scrum master, or the developer? I would say it sure isn't the developer's fault.

  18. Furthermore by Anonymous Coward · · Score: 1

    There is no way in hades clients are going to write you a blank check on the software they want you to write for them. If you can't tell them what it will cost, they will go find someone else who will.

    You cannot talk them out of this. It is impossible. They want to know the price before they buy, and that's that.

    1. Re:Furthermore by turbidostato · · Score: 1

      "There is no way in hades clients are going to write you a blank check on the software they want you to write for them."

      That's why 'agile' processes born: at the very least they let the customer feel if they are partnering with the right provider as soon as possible -if they take the minimal time and effort it takes. Too many customers doesn't give space even for that minimal hassle.

      "If you can't tell them what it will cost, they will go find someone else who will."

      Exactly that: they will *tell* how much it will cost and by when will it be delivered. Of course it still will cost as much as the customer can throw at it and it will be delivered as late as the customer can tolerate. If there were only one software project in history, it would seem natural customer acting that way, but the trend is obvious and it's astounding why the customer doesn't end up understanding it was the first provider the honest one and, probably, the one that would have delivered the better results.

      "They want to know the price before they buy, and that's that."

      Quite understandable also. But then, they should refrain themselves from custom projects and stay with COTS (and even then, given the obfuscate licensing policies of so many a vendor, they'll be surprised from time to time).

    2. Re:Furthermore by Anonymous Coward · · Score: 1

      There is a very good reason for why clients want that information, and one they are not able to change so easily once it's been set.

      For the software developer that missed that class in Business 101, a budget is an estimate of future costs vs potential funds based on previous costs and currently available funds. You should have one for your household so that you understand how much money you have coming in and where the bulk of it is going; for those that don't, just think of all the times you've heard about the government yearly budget and deficits.

      Contrary to popular belief, companies are not made of a never-ending supply of money. They budget for a full year at one time (major, or capital, projects have projected costs for over greater periods, sometimes for a decade or more, but those long-term budget costs are divided up into yearly segments), setting aside funds to pay for all of the projects they're expecting to have going during the year. Those funds are set aside so that the project can be eventually paid for instead of relying on the company to just have the money on hand whenever it's necessary to make a payment (particularly with smaller companies that don't have a lot of operating capital and very large companies that have most of their funds in non-cash assets like accounts receivable).

      On top of all of that, contract software engineers are typically paid for hours worked. No company in their right mind is going to write a blank check to a contractor to get the work done just whenever. They want to know how long this project is expected to go for so that they're not paying the contractor while they waste time in Wikipedia/TV Tropes hell not getting anything done for months on end, or worse paying them while they work on a competitor's project.

    3. Re:Furthermore by SuperKendall · · Score: 1

      There is no way in hades clients are going to write you a blank check on the software they want you to write for them. If you can't tell them what it will cost, they will go find someone else who will.

      It doesn't have to be a blank check. It could be a flat "let's see what can be built in six months for $100k"

      If you have examples showing you can get work done, someone would be willing to commit to that very specific amount, because something could come of it. Then you both decide from there if they want to go other routes to continue work on it, or if they want to pay you time and materials to continue, which they will then get used to being a predictable factor.

      The best part about it is that because it's open ended, a lot of the weight of what must get done within the starting timeframe shifts to the client being able to provide direction and avoiding churn. From the client side there is benefit as it allows as much churn as they like without having to haggle over contract change fees. It gives them the flat fee they always want, with the caveat that there is no definition around what exactly will be produced by the end. If the whole thing totally flames out the developer can walk away and the client is only out $100k.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    4. Re:Furthermore by SuperKendall · · Score: 1

      For the software developer that missed that class in Business 101, a budget is an estimate of future costs vs potential funds

      Just like any other comparison from software to real world objects, yours fails because the real world object is far more predictable - you have a budget because you know about what is coming in, and then you plan about what you can spend.

      Well what happens to your precious budget when the inflow of money varies by 10x, as happens with real time spent on a software project? You can try to budget for just the low end but then you have squandered a lot of potential.

      Basically what you have is no longer a budget and not really any good for planning what you can do.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    5. Re:Furthermore by Hognoxious · · Score: 1

      If you can't tell them what it will cost, they will go find someone else who will.

      Of course it's totally different if you can tell them what it will cost; in that case they'll go to someone else who tells them it will cost less.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    6. Re:Furthermore by Hognoxious · · Score: 2

      Just like any other comparison from software to real world objects, yours fails because the real world object is far more predictable

      Is the F-35 a real world object? How about those road tunnels in Boston?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    7. Re:Furthermore by SuperKendall · · Score: 1

      Is the F-35 a real world object? How about those road tunnels in Boston?

      Well that escalated quickly. I don't see how you can make the leap to software being like budgets because building some physical things also goes wrong at times.

      The thing you are not grasping here is that with software, EVERY PROJECT is going to be as far off estimates as both of the things you mentioned.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    8. Re:Furthermore by kaladorn · · Score: 1

      One of the reasons clients come to software companies is because they DO NOT understand software. Thus, they want things that they would ask for in other business areas or engineering areas where concrete schedules and tasks (such as building buildings) are not particularly new.

      Educating your customer is difficult but having done so, you reap some significant rewards. Also having an uneducated customer can sometimes be worse for your team than no customer at all (I've been on the sorts of projects that broke project teams and lead to significant talent outflow).

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    9. Re:Furthermore by kaladorn · · Score: 1

      This is a great way to do things. It's just hard to get some clients to understand that.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    10. Re:Furthermore by Hognoxious · · Score: 1

      No it isn't. Whether it's software or spacecraft, some projects are sufficiently similar to stuff that's been done before that you totally can produce reasonable estimates.

      And don't presume to tell me what I do or don't grasp, you pompous arrogant ass.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  19. Re: Huh? Probability. by HairyNevus · · Score: 1

    The poster is not suggesting people should get docked when they miss deadlines.

    Yes, that's exactly what GP said:

    Finish late? Get docked or don't get paid at all.

    --
    You were critically hit for no damage. The bruise will look nice, and maybe the scars will make good party talk.
  20. Re:Well, it's about time... by turbidostato · · Score: 1

    "And until that changes, businesses need to be able to predict when their software is going to be more or less complete."

    It is usally said the customer is always right. In this case it means it is the customer the one that has to move first, which it's difficult because the customer doesn't have the expertise which makes software development basically into a "market for lemons" which, in turn, it's an stable albeit undesirable state for as long as the good (or service) sold is percieved as of any value.

  21. There are formulas for this. by MrKaos · · Score: 3, Informative

    There are *several* formulas to do an estimate and several more to tell you if your estimates are on track.

    If you understand why estimates are required, you are a business person, if you understand why they are so difficult you are a developer. Managing estimates is a 'Project Management' task and a good PM will keep the pressure of the team by also managing the stakeholder expectations, which is what we are really talking about here.

    Complex estimates are closer to the contract and simple task estimates are closer to the metal. If anyone asks for an 'accurate estimate', run - they are an oxymoron who won't de-scope so that deliverables are met. To me it is an immediate sign of project failure.

    Estimates are just a tool that are a balancing act for getting the budget required to do something. Good estimates are achievable by iterating three simple questions pessimistic, realistic and optimistic estimation for a smaller task of a large project. After that there are several other formula to determine if you are ahead, behind or on schedule. Ahead or on schedule - great, behind - de-scope. What the final product looks like is a function of the contract that determines the critical path and managing the expectations to get there. Estimations on a small project however are usually a waste of time.

    The last thing you want to do is go back to an accounting department or client for more budget because the estimates are way off anymore than having no estimate at all and asking for a big bucket of money that won't get approved and no developers will ever get employed to do that project.

    Using 120 characters to discuss such a complex subject, that can't possibly hope to encapsulate the arguments required to understand it, is pointless.

    --
    My ism, it's full of beliefs.
  22. Re:Well, it's about time... by msobkow · · Score: 3, Insightful

    There are many products which have a very limited life span as well. Products who serve a purpose six months from now, are retired in two years time, and never touched again. Products where failing to deliver on time is as bad as failing to deliver at all.

    Then there are the projects and products which are only part of a greater whole, where delivering late means holding up that entire larger project, and which has a financial impact which may well exceed the total budget of your entire project.

    Despite that, I've never encountered an estimate that was any more than the gut feel of someone giving their best guess based on their experience and what they know so far about the requirements. Customers really need to wake up to the fact that changing requirements and vague/unfinished requirements mean that the actual delivery could be +/- 50% of the estimate, or even more.

    The worst overruns I've ever seen were always on projects where the tools to be used were selected before the developers were ever consulted about what made sense to use for developing the project. The inane buzzword projects where someone decides they're going to use NoSQL, or SQL, or flat files, or whatever storage system because that's "company policy" or because some "architect" was in love with that particular technology or product.

    Woe betide anyone who lets the buzzword mafia decide the course of their project, for they are doomed to expensive failure in the vast majority of cases.

    --
    I do not fail; I succeed at finding out what does not work.
  23. "My God, it's full of waterfalls!" by plopez · · Score: 1

    In reading these comments the phrase "Giving estimates without a detailed design is bad" pops up in one form or another. Basically that is asking for a waterfall. I am somewhat uneasy how often it has appeared even in this day and age. Here are my observations on the topic:

    1) Forget good requirements, no one has them. No one knows what exactly the software will do at the beginning of the process. One thing I am certain of is that in about 18 months, if you are competent and lucky, you will start to have a good piece of software.

    2) Instead think of "Initial Requirements". That the best you can do. Customer has a problem to solve, start solving the problem.

    3) As you solve the problem new requirements appear. This is due to two factors, the customer does not know what they do not know until an analysis is done, analysis is often the biggest pay off of a software project in my opinion[1], and the customer starts to see possibilities. Once you give customers new capabilities they often use those ideas to springboard more features. Often too software requires a review of business process which shed light on how a business is *actually* run, not how management *thinks* it is run. This will cause requirements shift.

    4) Work more on your customers rhythm, not yours. Don't roll out major changes in December if your client is a retailer for example.

    5) Keep the customer happy by giving them continual improvements in functionality. Lots of little releases to throw them a bone and to get feedback since requirements always will shift. Stay close to the end user and listen to them.

    6) Good software is a living breathing thing. Expect to live with it for decades and continually improve it. It is never really done.

    The core of Agile gets some of this right. Though I am worried about a natural impedance when projects become very globally distributed and in terms of Agile scaling.

    [1]Anecdote. I was working on a database development project for a mid-sized company with 2 main offices in two cities 300km apart. I began by learning the business processes and by diagramming them out. The principals of the company were flabbergasted when I showed them my diagram. The two offices were doing things very differently. We spent the next 2 months realigning core business processes before writing any code. It was actually fun.

    --
    putting the 'B' in LGBTQ+
    1. Re:"My God, it's full of waterfalls!" by dcollins · · Score: 1

      " Often too software requires a review of business process which shed light on how a business is *actually* run, not how management *thinks* it is run. This will cause requirements shift."

      That's a great line, and your anecdote [1] is awesome. Thanks for sharing.

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    2. Re:"My God, it's full of waterfalls!" by ThePhilips · · Score: 1

      Forget good requirements, no one has them.

      ....

      It is never really done.

      ... and the loop is closed.

      Though on global scale, IME, another problem is that the former is relatively well accepted, but the later should be never mentioned to the customer. Or to your sales. Or to your PM. Or to your colleagues.

      Most people need the certainty about the results. Because result is something concrete, while the process is something distant. Because most people spend to little time understanding the whole development process and their role in it.

      P.S.

      Lots of little releases to throw them a bone and to get feedback

      Not all customers are OK with that. For business-critical software, installing new (even minor) release and testing could be in itself medium/major project. For example, if deployment of a new release could take a month, it doesn't make sense to have a monthly release schedule. Some customers also see the too many point releases as an attempt to shift the review and/or testing burden onto them. (And I have seen that abused in real life. En lie with submarine major architectural changes in minor releases, and later demanding money from the customer to rollback, because, duh, you should have caught earlier that the architecture was changing not the way you liked it! you have all the 123 point releases which show the whole transition in fine detail!)

      --
      All hope abandon ye who enter here.
  24. Payer vs. payee by Tony+Isaac · · Score: 1

    Those who are paying the bills want estimates. Those who are getting the money want a blank check. It's that simple!

    There are ways to create good estimates, but it does require discipline and training. Steve McConnell wrote an excellent book on the subject. Unfortunately, many software developers aren't well trained in this art. This is a serious failing in many of our computer science degree programs.

    1. Re:Payer vs. payee by wisnoskij · · Score: 1

      No, everyone wants estimates. No one wants or is willing to start a software project they do not have some idea how much work they will need to do to finish it. And if you are unable to estimate the time it will take to do, you are equally unable to program it. I would probably not write a single line of code if I could not tell a 30 minutes project from a 500 million man hours one.

      --
      Troll is not a replacement for I disagree.
    2. Re:Payer vs. payee by Tony+Isaac · · Score: 1

      If only all programmers were as conscientious as you!

    3. Re:Payer vs. payee by phantomfive · · Score: 1

      Estimation is such a crucial skill, too. If you can't do it, you can't make good design decisions. Imagine this scenario:

      You are adding a feature to your project. Should you:
      A) Spend time integrating a library into your project
      B) Spend time writing the code to do that feature.

      If you don't know how long B will take, you can't possibly make the right decision. Estimation is just one part of the skill involved here, in addition you'll need to know how the library will affect the long-term stability of your project, how likely it is to be supported in the future, how you'll be able to handle if it is no longer supported in the future, etc.

      --
      "First they came for the slanderers and i said nothing."
  25. Estimates are useful if used correctly by joe_frisch · · Score: 3, Interesting

    Estimates are useless as a measure of how well an engineer is performing. How far he is ahead or behind schedule only indicates the extent to which he was able to get away with padding his estimate in the first place.

    That said, estimates ARE very valuable when you have a complex set of interlocking projects and resources that can be tasked in different places. This is especially true if external pressure require that a project be done on an exact date.

    To take an extreme example, if the launch window for Europa is at a known date, the spacecraft firmware must be fully tested and installed by that date. Working backwards that says when the first version must be ready. The estimate helps decide what resources should be applied, and later it lets you know if you are so far behind that you need to change the launch date to the next window (over a year away). That affects budget etc.

    At SLAC we have complex projects that require the work of lots of people to all come together. This results in very rigid schedules - There is typically a 2 month window for major upgrades, if you miss it, you wait a year. If someone working for me doesn't like doing estimates, I basically say "we need a guess. I can guess or you can, but since you are doing the work, your guess will be better than mine".

  26. Re:#YouAreCows by BonThomme · · Score: 1

    #Moo

  27. In the #ESTIMATES Camp by Ronin+Developer · · Score: 4, Interesting

    I have worked in the industry for 20+ years and here are my observations - granted, I have worked in smaller companies (i.e 25-4000) and startups.

    Estimates work as a means to determine the work effort for a given set of features. They are not to be used for setting schedules and deadlines by themselves. They are to be used for budgeting and cost planning. And, they are not to be done without a detailed design meeting the agreed upon requirements.

    Unless your client is very rich and/or stupid or you have a large surplus of venture capital in your startup, you better be concerned with the work effort and time to have your product in a usable state. When you can tell a client that a project is going to take time X and cost Y and meet those values, you gain credibility and trust. In the digital advertising world, those with credibility and trust become the agency of record (AOR). And, the client will stick with you as their AOR until you royally screw up and fail to deliver what was promised, when promised and for the agreed upon price.

    You DON'T ask a developer how long something will take - they invariably will underestimate the work effort. Instead, at least until you have measured delivery rates for your team members, you use industry standards. You can ask the developer and then compare their estimates with the actual time and effort. When their estimates start matching up, you can ask them estimate their own assigned work. It can be a good learning experience for them.

    Some projects don't require estimates. We had projects that fit a template model based earlier work. We knew how long it took, on average, to fill the various fields of the template. Throw in the project management, QA and deployment components and its pretty easy to do.

    When people claim Agile isn't compatible with estimates, it's probably because the team isn't concerned about documentation or planning. They tell you that the system has too many variables and they don't have time or resources to keep the design up to date. I call BS. If you can't do it, then add someone to the team who can. There are great tools for doing design work and capturing requirements at all phases of a project - use them.

    Even with Agile, you should layout out a basic design or framework in the early stages of the project. Then, you can determine how long other features will take and what their dependencies are before you attempt to implement them and emptying the client's wallet. Then, you base the number of sprints based on that information. Since you are supposed to have a working product at the end of each sprint, you should be able to tell the client what features will be in each deliverable and cost. If they want to change the requirements or add new features or change functionality, you still have to plan how long those features will take and in which sprint you will deliver a product that meets those changes.

    1. Re:In the #ESTIMATES Camp by originofstorms · · Score: 2

      Then, you base the number of sprints based on that information.

      I think your brain is hardwired to the waterfall method, and you're thinking of Agile as a series of smaller waterfalls, one after the other. The whole point of Agile is admitting that you don't know where you're going to end up. You try to figure out how to test your basic assumptions as soon as possible -- no, really, as soon as possible, maybe even without writing a single line of code -- then iterate based on what you discover.

  28. Re:Well, it's about time... by Darinbob · · Score: 1

    We're being asked to create a time machine. The physics for this does not yet exist. Execs tell us we have 12 months and they're already negotiating with a customer on this. Whoops it won't get done, no matter how many meetings we hold to discuss why we haven't achieved a scientific breakthrough yet.

    It's extreme, but there are real life roadblocks that you can't overcome and execs can never understand this (they don't even understand how their own products work). 9 months late on a project I was working on part time, most of that delay was due entirely to a partner being slow. Waited 6 months once for legal to finish up a NDA agreement so I could get access to source code (despite my 6 month bonus/goals being all tied up in that). I have hardware thrown over the wall at me that won't work right. Or developing using a chip that's still in beta, with tools that don't work, and third party support that take weeks or months to get questions answered. The schedule is planned before the project is fully defined, we were told we had to guess what tasks were needed and how long each task would take despite no one on the team ever having done something similar, the majority of those tasks changed or were dropped, some of the already too small team left the company along the way, etc.

    I was at once place that was the very best at estimating times. I was surprised at how detailed they got everything with all the parts showing up at the right time. But even then they had several releases where features were dropped at the last minute so the release manager could proclaim "we're on time!"

    If you can predict with certainty how long something will take on the first week of a project, then you're probably doing something short and simple, your certainty isn't matching reality, or you're in the management track.

  29. Estimating is easy by EmperorOfCanada · · Score: 1

    All I need to do is to look to see where a project lay in the realm of my experience and knowledge. I can tell you that if you want me to make hello world in a language I know well on a platform that I know well that it should be under 5 minutes from beginning to end. But if you want me to program an image recongintion system that can tell if a sparrow is content or agitated on a VAX/VMS. Then I will give you an estimate of maybe 5 years before I can even give you a proper estimate having gathered up the experts on sparrows, VAX, and image recognition.

    All other projects generally lay on a line between infinite and 5 minutes.

    But much more importantly my real estimates on real projects will largely not depend upon the projects, the code, the specs, or pretty much anything technological but will have a multiplier based upon the company and its culture. If the company is clearly prepared to play games with the contract then the project will slow way down to make sure that every damn checkbox is checked and arguable in court. If the company has a civil war going on and the project is going to be a pawn then the multiplier goes way up. If their is no clear manager of the project and the bosses wife becomes involved with turning a project to make a point of sale system into a dietary recommendation system for her stupid diet beliefs then the project may, again, have hit infinite time.

    Where most projects that I have seen blew up was when there was a failure to properly investigate the real project. Maybe someone asked to build a medical system that would do 100 features but failed to identify 1000 other critical features that made the 100 feature system completely useless. Or even worse 1000 features were ladled on after it began and the people running the project were too wimpy to resist.

    Also projects can become bogged down in stupid minutia. One project I was working on was a massive invoice system where one marketing guy kept changing the look of the invoice by pixels. Day after day after day he would move things tiny amounts. The project couldn't proceed without his approval and it turned into a demoralizing nightmare. Then to put icing on the cake the problem was that the PDF samples he was printing were coming out differently on the various printers he was using. Thus the changes requested were only possible to achieve if he consistently used the same printer.

    Thus this last one was a failure to create some contractual mechanism to prevent this stupidity not a failure in the original estimates which were generous in their margins.

    Then you get projects that have entirely outside forces. The project was never meant to succeed. This could be on the part of political desire of the client. Or it could be fraudulent hearts in the consultants. All together many projects are doomed before the contract is drawn up so the only viable estimate would be one written in blood using magical symbols.

    But to wholesale say, estimating is bad is wrong. Bad estimating is bad. But too many people get caught up in functionality points and whatnot and miss the fact that they are about to throw their entire project into a war zone. But that with a careful analysis the war zone can be calculated into a multiplier and the risks mitigated.

  30. Re: Huh? Probability. by Anonymous Coward · · Score: 1

    I've been a contractor for nearly a decade now, and I've never finished a project late, other than a few instances where I've asked (asked, not told) "look, is it ok if we push the date back 3-4 days to make things a bit nicer (or so I don't have to work this weekend)?"

    If requirements have changed, I'll often have to explain that pushes the date back. And on a couple occasions I've even been able to move dates forward for clients who are under pressure. Most estimates even have a variable for client behaviour (ie, known difficult clients are going to get much higher estimates because I know they will nit-pick or try to sneak in requirements changes, which requires more energy to confront even if not implemented).

    Estimates aren't by any means perfect, but to advocate throwing them out altogether is idiotic. After you've been working in any field for so long, you get an idea how long things are going to take. Yeah, it doesn't necessary apply to wholly inspired creative fields like writing or music, but programming is not THAT creative, stop kidding yourselves. You're not an artist because you write code, although you may be an artist who uses code to make art.

  31. choices by Tom · · Score: 3, Insightful

    As they saying goes: Fast, cheap, good - pick any two.

    You can usually solve one problem by another. If you see you can't hold the deadline, you can throw more manpower at it (not cheap anymore) or compromise on quality. If you see the budget runs out, you can put the project into idle times (not fast anymore) or compromise on quality.

    Sadly, quality is the part that management, customers, clients and developers understand the least. Everyone understands deadlines - either you are done on that day or you are not. Everyone understands money and to convert developer man-hours into money is not so difficult. But quality is tricky. If it runs, ship - because management, customers, etc. they see if it is running, but not what's going on under the hood. And developers too often don't understand that quality is subject to combinatorial explosion - shortcuts don't add up, they multiply.

    But because it's the least-understood part of the equation, and compromises matter so much but are not easily visible as long as the core operation functions, software in generally is so absolutely shoddy.

    --
    Assorted stuff I do sometimes: Lemuria.org
  32. clarity of expectations by Tom · · Score: 1

    I've been looking into building a house recently, and it taught me something about software development:

    To understand what I would get for how much money, I went to a "park" of houses. 20 or so houses of different styles and sizes, with price tags. So by spending a few hours walking through them all, I could get a pretty good understanding of what I would get for which price. From that point, I can start an informed discussion with a company asking for the house I want, based on what I saw, with an idea of what my expectations will mean in cost.

    I have never seen something like that in software. If I want to have a software written or even just a website made, where can I go to check out examples with price tags? It seems to me that everybody keeps the final, real prices a secret. They are not showing you that this website with these functions and this design cost $x to create, and that software tool with these features cost $y.

    The industry is based on estimated costs, not real costs.

    --
    Assorted stuff I do sometimes: Lemuria.org
    1. Re:clarity of expectations by Entrope · · Score: 1

      There's a lot less unpredictability in building a house than in writing a program.

      There is easily an order-of-magnitude difference in how productive different software developers within a typical organization are, and probably almost as much difference between software development organizations. Building contractors do not have that level of variability.

      Hourly rates are probably also an order of magnitude different between some little town in Flyover County and San Jose.

      On top of both of those, what infrastructure are you assuming for the software projects, and what performance, reliability and security requirements do you have for your software? Any of those variables can radically change what a cost-effective development approach would be.

      Finally, most custom software projects involve a lot more novelty than a house. Just about anybody can figure out how many square feet of marble are needed for a countertop, but it is quite hard to estimate (within a factor of two or three) how much effort it will take to develop a feature that the developers have never tried before and that the customer can't thoroughly explain.

    2. Re:clarity of expectations by Tom · · Score: 1

      There's a lot less unpredictability in building a house than in writing a program.

      That depends a lot on what software we are talking about. And it is also a consequence of the imaturity of software development. In the early stages of everything, it's hit-and-miss, trial-and-error with little predictability, see the first airplanes. But, as a matter of fact, predictability is one of the main factors that you use to measure maturity.

      On top of both of those, what infrastructure are you assuming for the software projects, and what performance, reliability and security requirements do you have for your software? Any of those variables can radically change what a cost-effective development approach would be.

      No difference to building a house at all, except for labels. Of course what you need in quality, or maybe earthquake resistance, or if it rains a lot or almost never, how much isolation you need for cold winters and hot summers, all these things matter, which is why you figure them into the total cost.

      Finally, most custom software projects involve a lot more novelty than a house.

      A lot of software is not half as custom as the customer thinks and the developer makes him believe.

      but it is quite hard to estimate (within a factor of two or three) how much effort it will take to develop a feature that the developers have never tried before and that the customer can't thoroughly explain.

      Strangely, architects also build buildings for the first time sometimes. Not family houses, but high profile buildings. And yes, there are sometimes budget overruns. But the whole thing rarely collapses on itself.

      --
      Assorted stuff I do sometimes: Lemuria.org
  33. And replace them with what? by nut · · Score: 1

    Has anyone ever told these people that someone somewhere up the line has to pay for them to f*** about? I'd like to build you a house. I don't know yet how big it's going to be, because I haven't designed it yet. I don't know how long it's going to take to build it. I want you to pay me an indeterminate sum of money for it... And I want you to pay for it before you get it. In fact I want you to start paying me now, and keep paying every month until it's done. I'll tell you when it's done. Who wants to buy my house?

    --
    Never trust a man in a blue trench coat, Never drive a car when you're dead
  34. Re:Well, it's about time... by tompaulco · · Score: 1

    And sales makes the sales. They get their commission, whether the sale is successfully delivered or not, whether what they promised to get the sale closed is possible or not. I hate sales at times.

    I don't understand why they don't take the money out of salespeoples pockets when they sell features that don't exist instead of the developers having to foot the bill with unpaid overtime. They should pay the developers for their extra time and deduct the cost from the salesperson's commission.

    --
    If you are not allowed to question your government then the government has answered your question.
  35. The problem is the variance, not the average by sjbe · · Score: 1

    Industrial engineer here. The problem with most schedules and by extension most estimates isn't the estimate itself. It is the failure to take into account the variability of the estimate. If you ask me how long a task will take for something that is a non-trivial task and you give me a point answer (like "14 days") then you are almost certainly wrong. The only question is how badly are you wrong. But if you tell me 14 days with a standard deviation of 4 days then the answer might have some credibility. Any answer without error bars is probably useless.

    My first job out of college was doing statistical production simulations. Everybody in management wants a single answer for how long something will take. Problem is that if I give them a point answer I'm doing them a disservice because my answer will be wrong. Fortunately finance people actually do know how to deal with a standard deviation if you press them to be bothered because they have to do it for expected return calculations.

    When I'm scheduling anything I care a LOT more about the variation than I do the averages, particularly if the averages are certified wild-ass-guesses.

  36. Not useful for budgeting by sjbe · · Score: 1

    As they saying goes: Fast, cheap, good - pick any two.

    Not a useful saying for budgeting. HOW fast are we talking about? HOW good? HOW cheap? Fast/good/cheap are all relative values and can mean hugely different things depending on the scope and difficulty of the project.

    1. Re:Not useful for budgeting by Tom · · Score: 2

      Not a useful saying for budgeting.

      Aphorisms are never good for hard numbers. They are good for making a point in a concise way.

      --
      Assorted stuff I do sometimes: Lemuria.org
  37. Getting better at estimating by sjbe · · Score: 1

    If bricklayers often got wrong by 3-4x the number of bricks needed for a project something would be changed. But that happens every day in software and we just all carry on as if it doesn't matter.

    Then software developers need to get better at estimating. I fully understand that it is considerably more complex than counting bricks but at the end of the day it doesn't really matter much. The only proper solution is to learn how to provide accurate assessments of resources required to do a project. It's no different in manufacturing, construction or any other complex field. I spend much of my time quoting work for complicated manufacturing assemblies, some of which I have very little experience with. I have to estimate the amount of time it will take our staff and allow for variation in productivity. If I overestimate the amount of work we risk not getting the job. If I underestimate the amount of work, we lose money and can be out of business very quickly. It's not really so different than with software.

    Now if you are being asked to estimate the cost of a project where the scope of work is undetermined and/or not fixed to within reasonable bounds then you are probably screwed. When we get asked to do this we turn the work down unless they are willing to sign an open ended time-and-materials contract. Never had one of them do that yet...

    1. Re:Getting better at estimating by SuperKendall · · Score: 1

      Then software developers need to get better at estimating.

      They are, this is as good as it gets. Remember these are all examples of estimates from people 20-40 years in professional development or more.

      What you do not realize s that IT IS NOT POSSIBLE to get better, because of the variability of EVERYTHING.

      The only proper solution is to learn how to provide accurate assessments

      Incorrect. The Proper solution is to accept reality and work around the FACT that you cannot get reasonable estimates for building software. Everything must be tailored around this fact, just as we design everything to take gravity into account rather than proclaiming gravity should just man-up and reverse on demand.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    2. Re:Getting better at estimating by JesseMcDonald · · Score: 1

      It's no different in manufacturing, construction or any other complex field.

      Unless you're doing something extraordinarily boring, like porting existing software to a new (but well-understood) platform with few, if any, unknowns, software development isn't like manufacturing or construction—it's research and development. The analogue to manufacturing or construction would be software deployment, which actually does tend to meet predictable cost and schedule targets. But when has R&D ever been known to follow a fixed schedule?

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    3. Re:Getting better at estimating by sjbe · · Score: 1

      Unless you're doing something extraordinarily boring, like porting existing software to a new (but well-understood) platform with few, if any, unknowns, software development isn't like manufacturing or construction—it's research and development.

      Well since I've done both software development AND manufacturing I'm going to have to disagree with you. Software development is quite a lot like low volume custom manufacturing for a complex product which is actually the kind of manufacturing my company does. Most of my time is actually spent engineering and specifying the product. Then we build it and typically spend some amount of time debugging. There invariably are errors in specification and frequently changes made to the product along the way. We have to build test equipment and we often have to revise the product based on those tests. It really is a lot like software development in a lot of important ways. Hell we even have the problems like throwing more people at it when it is late making it later.

    4. Re:Getting better at estimating by JesseMcDonald · · Score: 1

      Software development is quite a lot like low volume custom manufacturing for a complex product which is actually the kind of manufacturing my company does. Most of my time is actually spent engineering and specifying the product....

      You may call it "manufacturing", but what you describe sounds like R&D to me, with manufacturing as the final step. That's a bit like referring to the entire process of specifying, designing, writing, and deploying a new software package as "software deployment".

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  38. Re:Well, it's about time... by kaladorn · · Score: 1

    Accountability can kind of be built into Agile development by the way in which features for sprints are assigned and then results and velocity are tracked at the granular level. Of course, this depends on the how the Agile is attempted. I've seen it done in ways that didn't couple the product closely to the business requirements leading to wasted effort and inefficiency too.

    --
    -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
  39. Re:Well, it's about time... by kaladorn · · Score: 1

    Where I worked for, our rule was: We deliver on time. We deliver major features for the iteration. Others are negotiable and can be dropped or shifted to the next. This kind of strategy allowed us to develop projects of 18-20 iterations of 3 weeks each and be major feature complete and stable at the end while having delivered working code every 3 weeks to the client so they could start seeing progress and testing and writing manuals and so forth.

    On time delivery of an iteration (and repeatedly doing so) gives a customer confidence in your ability. Do this a few times then if you hit a big snag, you've got some cred in the client bank and can negotiate for a feature shift or a partial implementation in an iteration.

    When you don't deliver software frequently and regularly, you can get to the end of the project and the customer can shelve the excellently functioning product for some trivial reason (I have seen it happen - insane, but customers make choices like that). Deliver early and often and the customer's issues get identified early (good communication also required) and handled.

    --
    -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
  40. Push Back, Grow Up, or Get Out by r-diddly · · Score: 1
    Dunning-Kruger "I could manage this team better"
    +
    youthfully idealistic "life would be so much cooler without deadlines, schedules, goals, budgets, money, time, calendars, clocks, prices etc... but let's keep the paychecks please"
    =
    #NoEstimates

    There are shitty managers, but only when you've a) communicated what you (think you) know to them, and b) appreciated everything that goes into their decisions, can you say for sure whether you have a shitty manager. Managing is a thing, just like programming is a thing. But if you're pretty sure you can manage yourself better, start a startup.

  41. Estimates depend on specifications by sjbe · · Score: 1

    What you do not realize s that IT IS NOT POSSIBLE to get better, because of the variability of EVERYTHING.

    Very little in this world exists without variability. You might end up with a pretty wide standard deviation at the end of the day but I don't buy for a second the argument that there is no room for improvement provided the project demands are reasonable ones.

    The Proper solution is to accept reality and work around the FACT that you cannot get reasonable estimates for building software.

    There are circumstances when providing an estimate for building software is impossible but it is demonstrably not true that it is universally impossible to estimate time required to build software. If software development were truly random as you claim then it would be impossible to manage and it clearly isn't. Pretending that you can never estimate development time for software is preposterous. As long as you are willing to put error bars (possibly large ones) on your estimate then many projects can be estimated. Estimates are rarely exact (that's why they're called estimates) but they absolutely can be useful. If you have adequate and firm specifications early on then you should be able to provide a reasonable estimate of time to completion in many cases. If you don't have adequate and firm specifications then you probably are correct that any estimates that follow will be nothing more than guesses with a high probability of being wildly wrong.

  42. Re:Well, it's about time... by Darinbob · · Score: 1

    Right. But I'm on a brand new product. It doesn't exist yet. There are no customers. The internal requirements being driven from outside of engineering keep fluctuating as they try to identify potential customers and guess what they want. But there's no guarantee that the end goal is even achievable, the parts being relied upon don't do what their marketing claim for example.

    Even if it's just a feature added to an existing product, I have seen cases where there is just not enough evidence at the start to indicate whether the feature is even feasible much less how long it will take. Such as, will it fit in the remaining memory or will we have to wait for a next generation hardware platform? That's why it's called R&D - you start with the Research and then later the Development. But there are places that start with the D instead, and only occasionally get around to the R.

    But it's been a while since I've worked anywhere where customers were so closely tied to requirements. The releases and products are usually intended for many or all customers. Though I did work at one place a long time ago when every release was used only by one customer, and everything felt random and support was a nightmare. Never want to go back to that sort of environment.

  43. I'm mostly on the #noestimates side by booch · · Score: 1

    I'm a big proponent of Agile (mostly XP, mostly anti-Scrum) and have contributed some to the #noestimates "movement".

    I don't really mean that nobody should ever estimate anything. I mean that I've never seen useful (fine-grained) estimates anywhere. Here are some of the problems with estimates that I've seen frequently:

    1. We're not good at estimating how long things will take. We're usually optimistic about how quickly we can get things done, and almost always miss thinking about things that will take more time. I've never seen a case where a project is completed more quickly than estimated. I've only rarely seen fine-grained (story-level) tasks completed more quickly than estimated.
    2. Management asks for estimates and then treats them as deadlines. The team then learns to inflate their estimates. Then management learns to reduce the estimates they're given. Given fudge factors in each direction, the estimate no longer has much reliability. Even if you're using story points, the point inflation/deflation leads to less consistency and therefore reduced reliability.
    3. Estimates that are given are negotiated down, or simply reduced. This leads to the question why you'd ask for an estimate and not take the answer provided. If you're not going to listen to the answer, why are you asking the question? This is probably the craziest one on the list -- given my first point, increasing an estimate would make sense. Reducing the estimates is just magical wishful thinking.
    4. Plans change and work is added, but the deadline (presumably based on the estimates) is not changed to correspond with the extra work involved. So again, you're not actually even using the estimates that were given.
    5. Management dictates deadlines arbitrarily, without speaking to the people who will be doing the work. Spending time estimating how long each task will take when the deadline is already set is completely pointless.
    6. Almost every deadline is complete bullshit, based on nothing. Often the excuse is that marketing needs to know when something will come out, so that they can let people know about it. Why they need to know the exact release date way in advance, I've never been able to figure out. Many people intuitively know that the deadlines are bullshit, and will likely be allowed to slip. The only exception to bullshit deadlines I've come across are regulatory deadlines.
    7. Estimation at a fine-grained level isn't necessary. Many Agile teams estimate using story points, and determine a conversion from story points to time based on previous empirical data. This is fine, except that the time spent estimating the story is wasted time -- counting the number of stories almost always gives the same predictive power. Teams tend to get better at breaking up stories over time, so that they're more consistent in size, so this becomes more likely over time.
    8. The ultimate purpose of an estimate is to evaluate whether the proposed work will be profitable, and therefore worth doing. Or to compare the ROI (return on investment) between alternative projects. But to know that, you'll have to know what value that work will provide. I don't believe I've ever seen that done -- at least not at a fine-grained level. Usually by the time you're asked to estimate, the project has already gotten approval to proceed.

    I'll note that most of these pit management against the team, instead of working together toward a common cause. Most of the practices also lead to seriously demoralizing the team. And most of the time, the estimates aren't really even taken into account very much.

    My advice is to first understand the value of a project before you consider estimating the costs. The estimation at this point will be very rough, so make sure that you have a very wide margin between the expected value and the rough estimate of the cost. If you're pretty certain of the expected value, I'd probably want to make sure I could still be profitable even if it took 3 or 4 times as long to complete a

    --
    Software sucks. Open Source sucks less.
  44. Estimates by jgotts · · Score: 1

    Over my 25+ years of programming, being able to estimate my time was the last and hardest thing for me to learn how to do.

    No matter how much you've mastered computer science and how many clever encryption algorithms you're capable of writing, estimating how much time your work will take is a completely separate ability having nothing to do with your actual programming and/or mathematical skills.

    It is possible for every programmer to learn how to do. It's not something you'll figure out in a week or a year or ten years. I promise you that being able to deliver your software on time, every time, will make you the most beloved programmer at your company.

    The key is to, instead of jumping right into the coding, spend several days understanding exactly what work you need to do. Learn to be realistic about your abilities. Learn how to communicate with non-programmers so they understand exactly what they're getting. Keep explaining until it's clear that they understand what you're writing for them, and that's exactly what you're writing for them.

    When people throw changes at you, warn them that you'll have to start from scratch with understanding exactly the new work that needs to be done, think about the time those changes will take knowing that you may need to discard work you've already done, and continue to be realistic about your abilities. Make sure you get approval for the revised completion time before starting any work. Do not jump right into coding the changes.

    If your employer doesn't allow you do to this, quit and go work somewhere else. There is an oversupply of programming work.

    Time estimates are something that all professionals do. When you finish your work on time, you are acting professionally. When you reject estimates you look like a rank amateur and I'd never hire you.