Slashdot Mirror


The Programmers Who Want To Get Rid of Software Estimates

An anonymous reader writes: This article has a look inside the #NoEstimates movement, which wants to rid the software world of time estimates for projects. Programmers argue that estimates are wrong too often and a waste of time. Other stakeholders believe they need those estimates to plan and to keep programmers accountable. Is there a middle ground? Quoting: "Software project estimates are too often wrong, and the more time we throw at making them, the more we steal from the real work of building software. Also: Managers have a habit of treating developers' back-of-the-envelope estimates as contractual deadlines, then freaking out when they're missed. And wait, there's more: Developers, terrified by that prospect, put more and more energy into obsessive trips down estimation rabbit-holes. Estimation becomes a form of "yak-shaving" — a ritual enacted to put off actual work."

347 comments

  1. Simple methodology by Kjella · · Score: 4, Funny

    Good managers get my best guess.
    Bad managers get my worst case.
    Horrible managers get my resignation.

    Tag: WORKS4ME

    --
    Live today, because you never know what tomorrow brings
    1. Re:Simple methodology by Penguinisto · · Score: 3, Insightful

      One would hope that a good manager would have enough practical and direct experience in writing software to at least come up with a half-decent estimate, no?

      Most shops I've seen lately have the scrum masters spend a part of a planning session simply asking individual contributors "Here's a rough outline of the proposed project [...] now how long do you think doing that will take", and they come up with an estimate adjustment from there... most of the time, it's fairly close. PMs pad things a little of course, but the results tend to be fairly close.

      YMMV of course... depends on who is posting the final estimates - is it devs, or is it the MBAs.

      (If it's the latter, run like hell.)

      --
      Quo usque tandem abutere, Nimbus, patientia nostra?
    2. Re:Simple methodology by jellomizer · · Score: 2

      Well a good manager, will work with the developer and give them clear deliverables, adequate milestone achievements even if these milestones may not look like much. Then we can give a good estimate.

      A Bad manager will toss out a pie in the sky grand vision that does something. So the programmer will need to go back and rework idea over idea, going back and improving on the design.... So this will take a worse case scenario.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    3. Re:Simple methodology by lgw · · Score: 4, Informative

      You can't really give a good estimate up front on most projects, because even if the requirements are well defined (and they rarely are) they will change.

      That's all OK. That's the whole point of Agile, if you ignore the Agile BS that consultants sell. You can quickly do coarse-grained task breakdowns (say, to 2-week tasks) to get a reasonable estimate of the work as you currently understand it: that estimate is generally within a factor of 2, if the requirements don't change, so you can at least see if you have 1/3rd the staff you need or something way off.

      Then you measure real progress against that first-take estimate. Usually by about 6 weeks in on a team-sized project, you'll have the real multiplier. "We thought the first set of tasks were 20 programmer-weeks, but really as we understood it it was 30", and multiplying that initial "6 months" estimate by that measured 1.5 multiplier is a damn good estimation method. And it only gets better as work goes on. I can reliably give fairly accurate estimates from project completion now, on Agile projects, by the time we're about 1/3rd of the way done (and that's so much better than some teams are used to that it seems like magic).

      Selling that all properly to management is a different thing, but that's a whole job skill that any senior engineer just needs to have. Just like showing management the cost of each requirements change, as well as the skill to minimize that cost of change (which is the real point of Agile- the rest is hype).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    4. Re:Simple methodology by Anonymous Coward · · Score: 2, Interesting

      Yeah. Estimating the time to develop a simple web page is one thing. Estimating the time to design and engineer a new enterprise system is another. It seems that there are "managers" who think the first can be translated into the second. I'm sure Cheops asked his engineers to specify how long it would take to build his pyramid... The answer? "It depends!". Depends upon how many workers we can get, how far we have to go to get the stones, what the weather will be like...
       

    5. Re:Simple methodology by knightghost · · Score: 3, Interesting

      A well defined project can be estimated. Change Orders estimating needs to be done properly and BILLED - the cost of re-analyzing is a real cost and the business needs to see it. Once you get that across the number of change requests decreases dramatically.

      Software engineering is Engineering... some of the costs are inverted, but otherwise it's the same project management as other engineering projects.

    6. Re:Simple methodology by sjames · · Score: 3, Insightful

      Then something changes and blows the estimates out of the water. But the MBA's think since only one line in the spec changed, the schedule should stay the same.

    7. Re:Simple methodology by Gr8Apes · · Score: 3, Insightful

      When I have one of those... I just say - well, if it should stay the same, why don't we just change that one line back. There's no difference according to you.

      --
      The cesspool just got a check and balance.
    8. Re:Simple methodology by Gr8Apes · · Score: 2

      Agile is pretty much crap. You don't build a bridge that way, nor any other project, except maybe landscaping. If you have enough to sketch out a plan, you have enough to plan. You can't build something if you don't know what your target is.

      --
      The cesspool just got a check and balance.
    9. Re:Simple methodology by jlowery · · Score: 1

      Got asked about Agile planning estimates (you know: the Fibonacci scale) by our CEO, and why we didn't use time estimates. My answer was the developers a better at estimating complexity than time to completion. And complexity estimation accounts for the fuzzier initial understanding of harder problems. When you start measuring velocity, it stabilizes remarkably well and can be predictive.

      But complexity estimation is not a time estimate. If, for my team, a 1 is about 2 hours work, varying between .5 and 4 hours, then a 5 (5x as hard) is going to take between 2.5 and 20 hours. That's a big variance! But it more accurately reflects the uncertainty of the estimate.

      --
      If you post it, they will read.
    10. Re:Simple methodology by RabidReindeer · · Score: 2

      Then something changes and blows the estimates out of the water. But the MBA's think since only one line in the spec changed, the schedule should stay the same.

      More often in my experience the managers and the users refuse to believe the estimates and force new "more realistic" estimates to be submitted.

      Because "It's Simple! All You Have To Do Is..."

    11. Re:Simple methodology by Zero__Kelvin · · Score: 3, Insightful

      "One would hope that a good manager would have enough practical and direct experience in writing software to at least come up with a half-decent estimate, no?"

      No. That is the whole point, which you have seemed to miss. I'm the software engineer and even I can't come up with a reasonable estimate; why the hell would some manager several layers of indirection distant from the design be better at it?

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    12. Re:Simple methodology by DarkOx · · Score: 1

      That should not happen as often as it does though. Part of being a "professional" where it comes to software architecture is anticipating reasonable future needs and planning for them.

      If a one-line spec change blows the estimates out of the water many times that probably indicates major rework had to happen. It should not be that way most of the time. If it is the development team did a poor job of planing a head, likely, not always if someone changes "suitable for car wash automation" to "suitable for nuclear reactor automation" fine, you can toss the old estimate out the window entirely and none of the fault is your own.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    13. Re:Simple methodology by Anonymous Coward · · Score: 0

      When pressed for a time estimate, be a Scotty and overestimate the time, not a J. Cass Mason (the captain of the SS Sultana.)

      Better have the PMs miffed initially... but the deadline more than met, than making a fantasy estimate and going over the deadline.

      Been there, done that. Easy to make an estimate, then find out you missed some critical part... then realize your job just went offshore or to a H-1B. So, make the estimate, double it, and let it be known why. In some cases, the job is going to be offshored anyway, so might as well be let go for providing what appears to be too long a deadline as opposed to breaking a deadline.

    14. Re:Simple methodology by Anonymous Coward · · Score: 0

      That feedback loop, where you actually measure real against predicted progress - that's the step that's usually missing. Generally, what you get is something like:
      Manager: "You were supposed to spend two weeks on this. Why isn't it done?"
      Engineer: "The requirements changed. The client changed. You upgraded my computer, the server, and changed the software I'm licensed to use. And then the requirements changed again."
      Manager: "Get on with it! Work whatever hours you have to, we're late now!" ... instead of:
      Manager: "Okay, the past 20 projects have overrun their estimates by an average of 217%, clearly we need to do something about this. Any suggestions?"

    15. Re:Simple methodology by Anonymous Coward · · Score: 0

      Agile: undocumented, incomplete and poorly written code for dissatisfied customers by novice developers since 1990.

    16. Re:Simple methodology by AqD · · Score: 1

      A well defined project can be estimated.

      Well-defined by design not by functionality or goal. It's pointless when you can't be sure whether your design is seriously flawed.

      Which happens to us all the time because we do new types of projects every 2 years or so. My current project built on World Wind Java ended up having the core parts of WWJ re-analyzed, abandoned/replaced and partially rewritten due to very terrible rendering performance on modern hardware, which cannot be seen in prototype with small amounts of objects, plus lots of time tracking and fixing bugs inside Eclipse RCP and JavaFX.

      Can it be avoided? yes, by studying the source code of all libraries used in every new projects. That would probably cost us more than the entire project itself.

    17. Re:Simple methodology by Anonymous Coward · · Score: 3, Insightful

      Exactly - that is why there was been a growing recognition that Agile isn't getting the job done. At my last company a bunch of Agile zealots came stampeding my way trying to say that we had to change all our development processes to be "agile" because, well, just because. So I went through a simple requirements exercise with them. The first and foremost requirement is that when sales/marketing sales that they want 100 features in the product and there is no way that we can doo all 100 features, we have to be able to prioritize them. One of the primary factors in prioritization is looking at the effort/reward ratio. Something that is little effort but has a big payoff is high priority. Something that is big effort with little payoff is low priority. Now, please tell me how Agile is going to tell me how much effort is going to be required to complete a particular project when the whole Agile approach is to start coding and figure it out as we go?

      silence

      OK, here is another requirement. We need to put together timelines because Engineering doesn't operate in a vacuum. We are part of a company with many parts all of which have to be coordinated. Sales needs to be able to set expectations with customers. Marketing needs to make plans for when and how to introduce features to the market place and make forward looking statements on upcoming features. Support needs to plan out how it is going to support upcoming releases, which requires logistics in terms of when to apply which resources to which tasks. So how does Engineering give people these timelines if we don't take the time up front to plan out what we are doing prior to banging on our keyboards?

      silence

      The big problem with Agile is that it was created by Engineers in a vacuum who failed to recognize their responsibilities to the rest of the Company. Couple that with an increasing number of studies that are showing that software quality is lower now and that it seems that Agile is part of the reason (basically, the idea that somehow the coordination of effort required to make a large project come together would magically happen "organically" is being increasingly debunked) and, well, clearly it is time to re-evaluate how Engineering needs to operate within a Company.

    18. Re:Simple methodology by blue9steel · · Score: 2

      Of course they also don't usually decide that they'd rather have a skyscraper instead of a bridge when you're mid-project.

    19. Re:Simple methodology by BronsCon · · Score: 5, Insightful
      Depending on how far along in the project you are, it's reasonable to expect changing a single word in the spec to have a major impact on the project. Consider:

      Paint my car black.

      So you do all the prep work, car's primed with a dark primer, black paint is mixed and ready to go, then this change request comes in:

      Paint my car white.

      Well, now you've wasted the paint you just tinted black, and you can't paint white on top of dark primer (well, you can, but you need many more coats), so you've got to redo the prep work. That means waiting while the primer fully cures, so you can sand it off properly; otherwise, it'll gum your sandpaper. then re-prime, then you can paint. Assuming you don't see

      Paint my car forest green.

      in the meantime.

      That was one word. Yes, one line matters.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    20. Re:Simple methodology by Digicrat · · Score: 1

      And then there's Scotty's Miracle-Worker philosophy:

      Kirk: How much refit time before we can take her out again?
      Scotty: Eight weeks, sir. But ye don't have eight weeks, so I'll do it for ye in two.
      Kirk: Mr. Scott. Have you always multiplied your repair estimates by a factor of four?
      Scotty: Certainly, sir. How else can I keep my reputation as a miracle worker?
      Kirk: [over the intercom] Your reputation is secure, Scotty.

      Lt. Commander Geordi La Forge: Look, Mr. Scott, I'd love to explain everything to you, but the Captain wants this spectrographic analysis done by 1300 hours.
      [La Forge goes back to work; Scotty follows slowly]
      Scotty: Do you mind a little advice? Starfleet captains are like children. They want everything right now and they want it their way. But the secret is to give them only what they need, not what they want.
      Lt. Commander Geordi La Forge: Yeah, well, I told the Captain I'd have this analysis done in an hour.
      Scotty: How long will it really take?
      Lt. Commander Geordi La Forge: An hour!
      Scotty: Oh, you didn't tell him how long it would *really* take, did ya?
      Lt. Commander Geordi La Forge: Well, of course I did.
      Scotty: Oh, laddie. You've got a lot to learn if you want people to think of you as a miracle worker.

    21. Re:Simple methodology by Anonymous Coward · · Score: 0

      You can't build something if you don't know what your target is, but do you need a 300 page requirements document that takes over a year to get signed off due to minor wording changes?

      Anyone who thinks Agile is crap hasn't seen the worst of Waterfall.

    22. Re:Simple methodology by Maxo-Texas · · Score: 5, Informative

      I had no particular problem with estimates.

      At a minimum, you could break out easy "construction/recognized pattern" work from risky new stuff.

      As far as managing programmers... it was humorous.

      Few liked giving estimates. So they would say it couldn't be estimated.

      So I would ask, will this project take 2 years... and they would say, "oh no- of course not" and after a bit, we'd get down to 6 months or 6 weeks or 6 hours...

      So then we'd time box it to what could be done in a month and move any risky items up to the front so we could establish if a new technology wasn't going to work before we put a lot of work into the project.

      Then, I recorded over/under for every project and found (over about 24 programmer data set) that programmers consistently overshot or undershot their estimates. So after a few projects, I had a pretty good idea of their deliverables.

      Finally status reports and status meetings with function points and overall percentage delivered kept things on schedule or let us know well ahead of time there was a problem with the estimate/schedule.

      Programmers were not my problem- executives were.

      They...
      a) pushed us to violate standards.
      b) ordered overtime without ordering it. As in assign 80 hours work and then insist it be completed when everyone knew it couldn't be completed. Made worse by the fact the indian contractors said "I'll do my best" for "no- you are batshit crazy" and then things fell apart when the indians were unable to deliver. Of course, the indians were very good at delivering to the (crazy/incomplete) specifications on time. At least enough to be testable. I'm not sure if it is because they were contractor types or that they were indian- perhaps a bit of both. I learned in a contracting shop, you always say you can meet the estimate (to get assigned the work) instead of giving a realistic estimate. Then renegotiated it later when it wasn't going to make the schedule. If you didn't, then the three other people bidding on the work would get the work. Executives seemed to have zero memory for the fact that you delivered on time on estimate while the other people were usually late.
      c) made everything priority 1a. they had no ability to prioritize as far as I could see. Which really just pushed prioritization down to me or the programmers.
      d) cancelled projects without warning.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    23. Re:Simple methodology by Anonymous Coward · · Score: 0

      You're not a software developer then, or you wouldn't even think of "bridges". Software development is NOTHING like building a bridge.

      As for your second two sentences, that's exactly what agile is about, knowing your target enough to adjust to the right course during the project.

    24. Re:Simple methodology by sjames · · Score: 1

      First, keep in mind, to the MBA, a line in the summary plus 20 supporting pages is "a line", at least when it benefits him to call it "one line".

      Next, that one line can be HUGE sometimes. It can require whole new additional sub-susyems. Must interface with existing PCs -%gt; Must interface with existing PCs including the Univac in the basement. (and by interface with, they also mean translate between).

      And, as BronsCon points out, sometimes one WORD is a problem depending on when it changes.

      Dropping or adding the word 'not' can also make life interesting.

    25. Re:Simple methodology by ATMAvatar · · Score: 2

      The compile step is building the bridge. The coding step is drawing the blueprints, which *does* involve iteration.

      --
      "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
    26. Re:Simple methodology by Jane+Q.+Public · · Score: 1

      Then something changes and blows the estimates out of the water. But the MBA's think since only one line in the spec changed, the schedule should stay the same.

      And that's when you re-negotiate, or quit.

      From my experience, it's easy to make bad estimates because bad estimates are easy to make. If it's a big project, take your worst possible guess, and multiply by 1.5.

      One of the biggest reasons bad estimates are so easy to make, is that the stakeholders "forget" to include too many of the details. And even, sometimes, some of the big essential features. It's debatable how many of these things are really "forgotten", versus not known or just intentionally left out to lower the estimate.

      Therefore, I go about it this way:

      I write out clearly what the specs are. Often this is just a repeat of the stakeholder's own specs. I estimate each major "feature" in the specs.

      My standard contract states that this is only an estimate, based on the written scope of work just described. If at any point it looks like the work will take more than 10% over the estimate, it is time to examine why and the terms must be re-negotiated.

      If any significant changes or additions are made to the scope of work, the terms must be re-negotiated.

      These stipulations make sure everybody is talking, and if anything goes over estimate, everybody knows why. It also makes sure that if they add more work, I get more money.

      I have a third stipulation I put in every contract: single point of contact. The stakeholder(s) must appoint one person, and one person only, who is to give me instructions and discuss the specifications. Nobody else, even the CEO, is allowed to do that.

      I insist on these. So far, I have not had anybody turn me down because they thought the terms were unreasonable. That last clause keeps me from getting caught between conflicting instructions from different people. Other than that one, these are SOP for many engineering contracts. I just borrowed from those.

    27. Re:Simple methodology by mrprogrammerman · · Score: 1

      I think you can usually take your best guess and multiply 2.

    28. Re:Simple methodology by fyngyrz · · Score: 1

      Because "It's Simple! All You Have To Do Is..."

      Not just managers. Even working for yourself won't save you. Customers as well.

      --
      I've fallen off your lawn, and I can't get up.
    29. Re:Simple methodology by Anonymous Coward · · Score: 4, Insightful

      Now, please tell me how Agile is going to tell me how much effort is going to be required to complete a particular project when the whole Agile approach is to start coding and figure it out as we go?

      Sorry bro, but if you got silence in response to that question, those weren't "Agile zealots." They weren't even "Agile newbies." They were ignorant cunts.

      Agile does NOT say "start coding and figure it out as we go." Agile says "Take some small subset of the functionality you've declared "the most important," estimate that, and deliver that."

      Somebody has a list of 100 features? Great, estimate business value and level of effort - use story points, t-shirt sizes, etc. That alone gets you a pretty good way to prioritize your list - things that are "small-to-medium LOE, high value" go to the top of the list. Then you estimate those specific features, and start working on them - to start delivering business value as quickly as you can. Then as you go down your prioritized list, you continue refining and estimating the other features and pull them into your work queue as they reach the top of the "Effort x Most Valuable" ranking.

      So how does Engineering give people these timelines if we don't take the time up front to plan out what we are doing prior to banging on our keyboards?

      If you're a true Agile team, you're cross-functional, which means that proper representation from ALL of the organizations needed to deliver the product is present, embedded in your team. While devs are banging out designs and code, Testers are working on test plans and test automation given the specs that the devs produce, and Support people are building operations documentation and support matrices etc. - all in parallel, all coordinating with one another as the process goes. A team with proper representation from all functions SHOULD be able to provide necessary dates and timelines, because there is no "Dev team" just throwing dates over the wall to Support and Manufacturing.

      Agile DOES answer these questions - if you're able to sit there and pretend that you've never heard the answers, then you're incredibly ignorant, or incredibly invested in somehow feeling like you've "discredited" Agile by sneering at it.

    30. Re:Simple methodology by unimacs · · Score: 1

      Apparently the zealots didn't understand agile very well or they would have been able to answer your questions.

      Agile doesn't mean there is no plan. Agile just acknowledges that the larger the set of requirements and the longer the timeline, the less likely it is that those requirements are going to be accurate (or won't change) and that the timeline will be met.

      So rather than trying to establish all the requirements up front and then delivering when all those requirements have been completed, the idea is to focus on a minimal set of requirements in each cycle or iteration. Cycles are short, - a month at most. Prioritization is key.

    31. Re:Simple methodology by Anonymous Coward · · Score: 0

      #define TRUE FALSE // happy debugging

    32. Re:Simple methodology by blackicye · · Score: 1

      From my experience, it's easy to make bad estimates because bad estimates are easy to make. If it's a big project, take your worst possible guess, and multiply by 1.5.

      I've found that this rule generally holds true for most projects which have complexity or labor involved.

      In the case of construction and renovation, it doesn't even need to be that big of a job to exceed the worst case guesstimate multiplied by 1.5

    33. Re:Simple methodology by presidenteloco · · Score: 4, Funny

      My methodology:

      If someone gives me their estimate for a software project or task, I double it and add 30.

      If someone asks me for an estimate for a software project or task, I rough it out, then double it and add 30.

      It's really amazing how much stress that avoids (oh, and it also does a passable job of converting Celsius to Fahrenheit.)

      --

      Where are we going and why are we in a handbasket?
    34. Re:Simple methodology by Registered+Coward+v2 · · Score: 2

      A well defined project can be estimated. Change Orders estimating needs to be done properly and BILLED - the cost of re-analyzing is a real cost and the business needs to see it. Once you get that across the number of change requests decreases dramatically.

      Software engineering is Engineering... some of the costs are inverted, but otherwise it's the same project management as other engineering projects.

      Correct. Our rule was "Give away the initial project because we'll retire on the change orders..."

      --
      I'm a consultant - I convert gibberish into cash-flow.
    35. Re: Simple methodology by Anonymous Coward · · Score: 0

      You sound like a good project manager. Seriously, if I had to work for someone I'd check with you first.

    36. Re:Simple methodology by Kielistic · · Score: 1

      Next, that one line can be HUGE sometimes

      This system will be multilingual.

      This system will properly respect all time zones.

      Two very simple sentences that a lot of people think can be tacked on very easily but take a lot of work. Especially, as you said, if you are swapping a "not" out.

    37. Re:Simple methodology by Bengie · · Score: 1

      In my limited experience, what people claim to be "agile" is "I don't want to have to design or plan". Agile is a method for programming, and has little to do with design.

    38. Re:Simple methodology by Outtascope · · Score: 1

      Agile doesn't mean there is no plan.

      To further that thought, agile isn't about not planning, it's about not being stuck with a crappy monolithic plan for an entire project. A plan that isn't crappy because of incompetence or negligence, but because the initial plan can't possibly account for the realities that every project encounters as it progresses (missed or changing requirements, technical failings of infrastructure that could not be predicted, change of business needs, etc).

      Agile is intended to get you to stop trying to jam a square peg in a round hole. The alternative is to pound on that bitch 'till it's round. Which one is likely to result in a better engineered end product?

    39. Re:Simple methodology by Darinbob · · Score: 4, Insightful

      I've been programming for over thirty years, and I can't do estimates. At all.

      Even when I think something is easy, it turns out to be hard if there's some snag I didn't foresee. If I think it's hard then I may find out it's not so bad after all because there are already tools to help put. Something that seems intellectually easy may take a long time because it involves a lot of tedious programming or detailed testing. Writing documentation takes me forever, I can not do that quickly at all unless someone wants a plain text file (which no one wants anymore). One big problem here is that I almost *never* program something that's been done a hundred times before, it's always something new, something that requires learning a new system, new hardware, something requiring reading through a lot of documents first, something with a huge amount of unknown variables, and so on. I also want to deliver something that works with minimal to no bug fixes required later, as opposed to shipping on time followed by a long sequence of updates.

      Now certainly for some things I can say that I'll be done that night, because it's something really easy, like reverting a change, fixing up an obvious bug, and so on. But even then I occasionally hit a snag that's unpredicted.

      The big problem is that the people who want the estimates don't understand this. And they come in all types. There's the person who thinks that a little bit of pressure makes people perform better (ya, you gave us someting to do in 3 months that needs 9 months). There's the person who thinks the estimates are accurate and golden and then sells the product before any work has begun. There's the person who thinks that your estimate means you will be working 100% of the time only on that single project and nothing else. There's the person who has a preconceived idea of how long it will take and considers that any longer estimate is "sandbagging". There are the people who will put me on two of the companies most important projects of all time, at the same time.

      At one place, I gave an estimate of a simple task to be "two weeks after the main project finishes I will have the integration finished". So the sales rep wrote down a specific date based on that. The main project was late, but when that date arrived the sales guy comes up and asks me for my piece, which I had not started yet and could not start yet, then he panics because he's promised it to the customer (before even the product I am integrating with even exists). Ultimately I ended up with only two days to work on it.

      I seriously wish that people would switch to a model where they announce a product after it is finished, and schedules are not based upon when the next conference or trade show is.

    40. Re:Simple methodology by Anonymous Coward · · Score: 0

      > That's the whole point of Agile, if you ignore the Agile BS that consultants sell.

      And sucking from a tractor tailpipe is delicious, if you replace it with a taco.

      I'm sorry, what was the point of your statement?

    41. Re:Simple methodology by Areyoukiddingme · · Score: 1

      Then you measure real progress against that first-take estimate. Usually by about 6 weeks in on a team-sized project, you'll have the real multiplier.

      Only if you're willing to accept sort-of-ok software. The 80/20 rule has not been repealed. That first 6 weeks is the easy stuff. The REALLY easy stuff. The last 20 weeks is the hard stuff, if somebody cares about polish, fit, and finish. These days a lot of people are skimping on the polish, because it really does chew up an inordinate amount of time.

    42. Re:Simple methodology by Anonymous Coward · · Score: 0

      There is no reasonable way to commit to a maximum time. The best you can do is commit to a maximum cost. Of course that means you have to be willing to eat the cost if you are wrong - that means putting in your hours at no cost. And if you are really wrong, you have to be willing to walk away from the project so the buyer is not enjoying a free lunch either. There is no free lunch for either buyer or seller.

    43. Re:Simple methodology by Darinbob · · Score: 1

      And the specs and plans are all irrelevant when there are external forces conspiring against them. Oops, the parts we need aren't available yet or have problems... Or for something actualy happening now, the partner is late and the product manager is sweating bullets and asking us if we can still meet the deadline in two weeks despite not having done any integration yet. I was on one project that was about 6 months late because it took 6 months to get legal to approve an NDA agreement with a chip maker, which wrecked my 6 month goals/bonus.

    44. Re:Simple methodology by Darinbob · · Score: 1

      Sometimes there are plain bad companies. Not just a manager, but a large hierarchy of managers going up to the top. One company acquired by another was basically treated like crap the whole time. At one point the bosses cancelled one project completely because it missed the deadline, no extension allowed. Soon after a very similar product was proposed and so the designers started pulling out the documentation from the previous project. No, the bosses said they can't do that, the project had been cancelled and that this was a new project so therefore the design must start from scratch.

      (no names here, but it starts with S and ends in iemens)

    45. Re:Simple methodology by Anonymous Coward · · Score: 0

      If programmers were actually to read the software engineering literature they would see that the 1990s research of
      putting programming under statistical process control does produce good estimates in many situations to with as
      little as 15% error. See for inspiration the work of Watt's Humphries, the father of software engineering
      quality under whom I had the privilege of studying: https://en.wikipedia.org/wiki/Watts_Humphrey.

        In the meantime, one should assume the obvious: that the people who pose these statements are disgruntled
      software engineers who are too foolish to learn and apply techniques proven by the work of over 10,000
      programmers.

    46. Re:Simple methodology by BronsCon · · Score: 4, Interesting

      I have a project that was due last week that I haven't started on yet. I got the deposit check the day I handed over the SoW, but didn't get the signed SoW back until last week, 6 weeks later. As per the terms of the SoW, I'll reschedule it when I find time.

      Most of the delays I encounter are caused by someone else; either the need to refactor someone else's shit code (that I wasn't allowed to review before providing an estimate, of course), delayed approval for the work, delayed access to resources, any number of external forces. Very rarely do I exceed my estimated *hours* for a project unless changes are requested (but then I'm not exceeding the estimate, either, since I make the client either agree to a new estimate or accept a refund of any portion of their deposit not already applied to the hours I've worked), but all too often I find myself completing projects well past their due date because some resource wasn't made available to me until after that date had lapsed.

      Fortunately, I foresaw that unforeseen things would happen when drafting the boilerplate language of my SoW and covered all of those cases. I go over the entire SoW with my clients before starting a project and make sure they know what the triggers are for a re-quote, what will cause the project to be delayed, and under what circumstances they're entitled to a refund of any deposit they pay (e.g. if they back out of the project once I've started work, I'm deducting my hours from that). As a result of that, and perhaps a bit of luck, I haven't had any disputes over project scope, budget, or timeline, and the one client I did have back out of a project simply said they no longer had the budget (they were being sued) and told me to hold on to the remainder of their deposit as they'd be back to finish the project after they lawsuit ended, hinting that, even if that didn't happen, the small sum would make no difference going forward (of course, I'm sitting on that money for now, and if they fully back out of the project I'll insist that they either accept the refund or sign a document releasing the funds to me).

      That was one thing that really pissed me off when I was working for someone else; I had no control over external interruptions or delays and it was usually the person interrupting and delaying me who was holding me accountable for all of them. I'm not out to scam anyone, but I always felt like I was when dealing with my previous employer.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    47. Re:Simple methodology by lgw · · Score: 2

      The first and foremost requirement is that when sales/marketing sales that they want 100 features in the product and there is no way that we can doo all 100 features, we have to be able to prioritize them

      Yes, that's exactly how all Agile development works. Did that not work out for you?

      Now, please tell me how Agile is going to tell me how much effort is going to be required to complete a particular project when the whole Agile approach is to start coding and figure it out as we go?

      That's not quite Agile - you need enough of a plan and a design to know WTF you're doing before you start, you just don't need an in-depth design of stuff you won't even touch for 6 months. But you know what the components are, and about how big each one will be, at least relative to each other, and you know where the dependencies are. So how do you know ho long it will take? You measure you're progress! When you know you're 20% done, and it took a month, then you know it's a 5-month project. I've been within 5% on estimates for large projects, even as they changed significantly over the course of the project we could be that accurate on updated estimates.

      OK, here is another requirement. We need to put together timelines because Engineering doesn't operate in a vacuum. We are part of a company with many parts all of which have to be coordinated

      Schedule, scope, resources, quality. One of these four must be give when estimates are wrong or changes creep in. You have to pick one, or it will be quality be default. Agile is just saying "OK, so scope is what gives".

      I've been doing agile-style development since before that word was coined, and I've never failed to deliver the must-haves on time for a project. Really. Honestly goes a long way.

      The big problem with Agile is that it was created by Engineers in a vacuum who failed to recognize their responsibilities to the rest of the Company

      So, where'd you get your MBA from?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    48. Re:Simple methodology by lgw · · Score: 1

      That first 6 weeks is the easy stuff. The REALLY easy stuff. The last 20 weeks is the hard stuff, if somebody cares about polish, fit, and finish.

      Not if you're good at your job. It's only if you suck at estimation that you have "the first 90%, then the second 90%". If you know from experience how software projects go, that's what all your estimates are based on. Only a junior engineer will think "this will take me 3 weeks to code, so I'll tell my boss 4 weeks just to be safe"! Coding is ~1/3rd of a typical software project (and less for environments with inflexible auditing or external testing requirements).

      Of course, that doesn't stop managers from saying "ship it" the first time they see anything work. Heck, some will say "ship it" when the see the mock-up. But you have to manage those guys, or switch jobs.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    49. Re:Simple methodology by lgw · · Score: 1

      Manager: "Get on with it! Work whatever hours you have to, we're late now!" ... instead of:

      That actually happened to me once! It was a Thursday. By Monday I had a written offer for my next job and gave notice. That's the one nice thing about Silly Valley - bosses are as interchangeable as developers, so you're free to find one who's not a moron.

      Of course, if you're stuck, you just triple (minimum) all your estimates, Scotty style.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    50. Re:Simple methodology by Anonymous Coward · · Score: 0

      This sounds so easy and no matter how true, there are just too many people who will not accept reality because the boss above them will not. What I asked you for something I intended to tell you about, but forgot and that is going to take longer? But I know you are like Scotty and you can really get it done in 1/10 the time, really...

    51. Re:Simple methodology by duarte_vasco · · Score: 1

      Why estimate that way at all? If you have been working on a project for 6 weeks you already know the "real" capacity (throughput) of the project. Just take the velocity from the last 6 weeks (how many requirements/user stories) did you deliver to a production-like environment, and divide the remaining stories / requirements by that number. This will give you the number of weeks (take the average velocity/Week) that the project requires to be completed (if no requirements/stories are added ;) Me and many others have been working this way for many years (I started in 2005) and with great success...

    52. Re:Simple methodology by bsolar · · Score: 1

      Even with bridges you might have to show a preliminary to-scale model which gets discussed and iterated upon. The difference is that with bridges there is a fundamental difference and a huge delta in costs between building a to-scale model and building the real thing. So you don't build a bridge that way because you don't have the same capabilities as with software.

    53. Re:Simple methodology by Vorga · · Score: 1

      We've battled hard with internal managers and the customer to get some sanity in estimation. It's taken 3 years. The chrun and banter for estimation all comes back to mitigation to the vendor and the customer, for both delivery risk and financial risk. We start with a ballpark guess which we're happy to be wrong, but it gives a rough order of magnitude. If the ballpark is too high the work dies there. Then we do T&M consulting to construct a solution design, which also comes with an estimate (+/- 30%). During the T&M we happily accept variations to scope, as this is why it is T&M. After the Est is accepted we do a tech design, and then provide the quote as Fixed price. I'd love a fully T&M engagement, but many customers consider full T&M too open to abuse by dodgy vendors. Such is life in software development. At any point before accepting the quote the customer can pause and only pay the T&M for the design phase or ballpark phase to date. They only pay for the time we've spent, which limits their exposure and our risk. Customer likes it because they know in advance how big work will be, and we like getting paid for work and having expectations managed. If they accept the fix price quote, we work, and handle scope changes as changes; and we have a design spec and a tech spec to handle what is in or out of scope. There are very few arguments about scope these days. Our contingency in the estimate and quote is a very small percentage of the overall Dev and Test effort, but it almost always covers the little things we might have missed, which means no stress when we need a little extra funding to cover the gap. A key part for estimation for us is a work breakdown to at least x days or x weeks for each sub-part. If you don't know that then you're really not ready to construct an estimate and you need more thrashing out of the scope of work. Do the MBA types like it? I'm one, so well, yes. Devs seem to like it too.

    54. Re:Simple methodology by duarte_vasco · · Score: 1

      Making the cost of changes visible (or painful) is one way to make decision-makers in the future consider the cost. However it still does not answer the question "when will we be done". I've been using (rolling wave) forecasting to make that clear. For example: it may be expensive to re-analyze one portion of the project requirements, but what will be the impact on the release date? You know, by Xmas we must be out or we will lose one-third of the yearly sales... Forecasting continuously, and removing/adding/changing scope in the project allow you to manage your release date on your own terms. Without spending time "guessing" how long something will take, and constantly adjusting the project content to be able to meet your business goals.

    55. Re:Simple methodology by duarte_vasco · · Score: 1

      I can relate to these (anti)patterns of behavior. However, executives make those decisions because they have no way to evaluate (objectively) the impact of their decisions on the project. The software engineering community has been trying to solve this by adding more (and more, and more) complex estimation processes to software engineering. Only to discover that estimation fails very consistenly (I tackle that here: https://vimeo.com/111100275 / video from Oredev/2014). Because estimation is such a bad method to know the impact of decisions, the behaviors you describe have horrible consequences (I mean, how hard can it be, we are just asking you to change a field in a form....). We need a much better alternative to make project-schedule relevant decisions. I propose rolling wave forecasting, which builds on continuous and incremental releases that the Agile community has been advocating since the early 2000's. It is possible to make consequences visible, if we are just ready to accept that estimates are not the right approach to answering project critical questions.

    56. Re:Simple methodology by dotancohen · · Score: 1

      In regards to client handling, you sound like you are at the point where I want to be! Would you mind sharing your SoW with us, or with just me at least? My Gmail username is the same as my /. username. I really appreciate it, and you could possible save me quite a headache as I'm still too young (37) to have made enough mistakes with clients and continually shifting requirements!

      Thanks!

      --
      It is dangerous to be right when the government is wrong.
    57. Re: Simple methodology by jhoger · · Score: 1

      car.color = config.carColor; :-)

    58. Re:Simple methodology by BronsCon · · Score: 1

      You've got a few years on me, actually! I've just spent a little over 4 years working for a guy who's made some real boner mistakes and got to learn form him. :)

      I'll drop you an email in the AM, I really should be asleep right now.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    59. Re: Simple methodology by BronsCon · · Score: 1

      Well, yes, if a car was a data construct. Way to miss the point.

      Or were you going for funny? in that case, yeah I'll grant you that. ;)

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    60. Re:Simple methodology by hattig · · Score: 1

      Simple guide for managers:

      Double developer estimates then add some. Indeed, don't use days as a timeunit, just vague (fibonacci) numbers.
      If task includes the words "timezones", "character sets" or "dependency on another team" then triple ... no quadruple the estimate.
      And then consider unit tests, component tests and regression tests.

      Oddly enough some things that a manager might look at and think "oh, that'll take loads of time" due to their lack of experience (for example, service should return JSON instead of XML) actually can turn out to be quite quick (as simple as configuring a different content negotiator / resolver on your project). OTOH the developer will probably have to redo all the component tests as well.

    61. Re:Simple methodology by Anonymous Coward · · Score: 0

      I will tell you what I do:

      First there is usually no reason to give an optimistic estimate to manager or clients in general. Managers and customers are greedy and if you tell them it takes 2 weeks they will try to reduce it to 1.5 weeks. Therefore they will always get an pessimistic estimate, but the advantage is that usually I can guarantee that estimate and there is enough slack for the usual fuckups. Ifyou need/want a contract/job you have to find other ways to shine then skimming the estimates.

      Any estimates you give to third parties are always conservative.

      If I tell management it is finished in 3 weeks, then this means that I plan 2 weeks for the individual programmer and one week safety zone for integration/reviewing whatever. This safety zone might be shorter for very experienced developers or even longer for juniors. If someone is new in the team he is not considered a resource until I know he can deliver until then he is an extra cost (training).
      This means that you do not necessarily tell your developers the same story you tell management or the customer. The more senior, trusted and capable a developer is the more honest I am. There is no reason to alienate a competent senior developer by telling him a different story then management, but with juniors you have to be careful, because they typically overestimate themselves quite a lot.

      In practice I try list every single task that has to be done. I try to break down the project int o tasks as small as possible, because it shows how much has to be done and this ensures nothing is forgotten. Even small and simple tasks take a lot of time.

      The list will contain every single task: any application dialog, backend functionality, feature, test, dev op task, package creation, status reports, training, research, planning and so on. One reason for this list is to give any stakeholder a rough overview about what has to be done. Even if they have no clue it is at least an item on the list.

      Every single task takes at least 4 hours. Any task that is hard to estimate I try to break down even further. If there is research/planning to be done I break it down into several research planning items. For example knowing an API of a subsystem does not grantee that the subsystem works. So learning about an API/library is a different task from ensuring the stability of this API/library for our desired tasks. Learning the API is usually easy, but ensuring the stability is usually not.

      A lot of tasks are kind of easy to estimate. I know how long it takes to create a simple dialog if I have the specs.

      But of course there are always tasks left that have a high uncertainty/risk level. Typical examples are anything where I have to integrate with system APIs/3thrd party APIs in general, even worth if a third party component is supposed to be updated. And of course anything that requires any kind of research or additional planning.
      Whenever there is risk the gut estimate is multiplied by at lest 2; In some cases even by 3 or 4.
      If there is anything with a really high risk attached to it, nothing gets promised at all. I propose to create a prototype first that serves as a proof of concept and shows how to cover that risk. This might apply to single non critical features or the whole delivery.

      Then I add 20% slag to all the items and I have my estimate.

      I try to solve the risky items first to get a more accurate overview about the project status. If we are too fast I am nice when it comes to accept changes and we can improve on quality (general code quality, product quality, test coverage) whatever is important to management or the customer.
      If we get into trouble I communicate this ASAP push back harder when it comes to changes and we have to compromise when it comes to quality until we are back on schedule and in safe water.

      This works usually pretty well. Once in a while some manager/customer complained or even walked away, because somebody else claimed to be faster, but this is how it is.
      When I get my way projects do not fail and do not turn into death marches. I prefer to loose a project instead of loosing reputation or good team members.

    62. Re:Simple methodology by Anonymous Coward · · Score: 0

      I seriously wish that people would switch to a model where they announce a product after it is finished, and schedules are not based upon when the next conference or trade show is.

      Frankly if that were the case for the software companies I have worked (and supported) for:

      1. Nothing would ever be released (just need that one more fix, one more enhancement for that one customer oh shit we found a regression, oh no the market has moved on we need to catch up again etc.)

      2. The companies would no longer exist as everyone else would've been 'ahead' of us.

      As to a product being 'finished'? No chance, you always need to be one or more steps ahead of your competitors. No matter if the product is perfect or not.

      You can set certain lines in the sand for release and even dates - where those things that are still not 'ready' simply get left out (but you know what? That customer who says he needs X by yesterday will sure as hell wait another month if it means he gets the feature he wants) but until every single other competitor does that ... it will never happen.

    63. Re:Simple methodology by Anonymous Coward · · Score: 0

      Are you inexperienced or simply crap at your job?

    64. Re:Simple methodology by TapeCutter · · Score: 1

      Talk to them in MBA speak, call it "scope creep", they may not know what it means but they've been trained to avoid it.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    65. Re:Simple methodology by StormReaver · · Score: 1

      One would hope that a good manager would have enough practical and direct experience in writing software to at least come up with a half-decent estimate, no?

      No.

      I've been writing software for 30 years, and I have never calculated an estimate that was even remotely accurate. Every project is unique, and must be treated as if it has never been done before (which it hasn't). Time estimates are snake oil sales.

      [unrelated rant]

      I hate, Hate, HATE, HATE!!!!! Slashdot's forum rules. Who has the time to wait a billion years between postings?! Who's the moron who comes up with this shit?! I registered at soylentnews.org a few days ago, and this stupid Slashdot notice:

      Slow Down Cowboy!

      Slashdot requires you to wait between each successful posting of a comment to allow everyone a fair chance at posting a comment.

      It's been 3 minutes since you last successfully posted a comment

      is the last straw. I've been on Slashdot for about 18 years now, I think, and I've had it with all the stupid site decisions of the last couple years. I'm done with Slashdot. This is my last posting to Slashdot. Hello, Soylent News!

      [/unrelated rant]

    66. Re:Simple methodology by Anonymous Coward · · Score: 0

      I do dba consulting, and you seem like a really chill dude to do work for with a good head on your shoulders.

    67. Re:Simple methodology by Anonymous Coward · · Score: 3, Insightful

      I've been programming for over thirty years, and I can't do estimates. At all.

      I've been programming for over thirty years, and I'm pretty good at estimates.

      It comes from a practice that I learned at Microsoft. Before Microsoft, I did the usual "Oh, about two weeks" estimate for everything that I was shown.

      Design your feature or product. Then figure out how you're going to build it. Then break down that build into tasks that are no less than half a day and no longer than three days. Add it all together and divide by the fraction of a week where you're actually going to be productive. At Microsoft, I was using 0.8 because I'd inevitably lose a day a week to 'stuff'.

      Caveats? Sure. Unfamiliarity with the problem domain. Unfamiliarity with the development tools. Lack of control over one's own development time. Lack of access to development resources. And many more. If I'm working in an environment where I cannot use the above technique to get a good estimate of how long it will take to build the feature or product I'm responsible for, then I'm either the wrong engineer or I'm working for the wrong people.

      Note that when you do the above, you will come up with a shockingly-long period of time. But when you present that number to your boss, you will have the data to show that are a result of a detailed understanding of your tasks. You'll have your ducks in a row. Your boss will love you because the two of you can talk intelligently about how the schedule can be adjusted by altering the tasks in it.

      If your manager wants you to alter the time it takes to complete tasks, you're back to "working for the wrong people".

    68. Re:Simple methodology by Gr8Apes · · Score: 1

      Agile does NOT say "start coding and figure it out as we go." Agile says "Take some small subset of the functionality you've declared "the most important," estimate that, and deliver that."

      So your version of Agile is create mini projects? Because no where does Agile say that mini-projects are part of the process. (One of the many failings of Agile is that no where does it really say anything meaningful) What you're describing is project planning, not Agile.

      If you're a true Agile team, you're cross-functional, which means that proper representation from ALL of the organizations needed to deliver the product is present, embedded in your team.

      Um, no, this only happens in organizations that are small enough that everyone's involved in 1 project. In the real world, I may have 100+ people working on a large project. There's no way everyone involved with all aspects are part of all teams. All they'd do all day is meetings, which, btw, is another one of the major failings of Agile, it leads to meeting paralysis.

      While devs are banging out designs and code, Testers are working on test plans and test automation given the specs that the devs produce, and Support people are building operations documentation and support matrices etc. - all in parallel, all coordinating with one another as the process goes.

      That's a nice fairy tale.

      --
      The cesspool just got a check and balance.
    69. Re:Simple methodology by Gr8Apes · · Score: 1

      Agile is intended to get you to stop trying to jam a square peg in a round hole. The alternative is to pound on that bitch 'till it's round. Which one is likely to result in a better engineered end product?

      If I need a round peg....

      --
      The cesspool just got a check and balance.
    70. Re:Simple methodology by Gr8Apes · · Score: 1

      That's not quite Agile - you need enough of a plan and a design to know WTF you're doing before you start, you just don't need an in-depth design of stuff you won't even touch for 6 months. But you know what the components are, and about how big each one will be, at least relative to each other, and you know where the dependencies are.

      What you're describing is not listed in the Agile manifesto, and certainly not in the first few years of Agile crap. This is progressive project planning, and it existed decades prior to the Agile plague.

      So how do you know ho long it will take? You measure you're progress! When you know you're 20% done, and it took a month, then you know it's a 5-month project.

      That's utter crap, and you know it if you're any good at all. You have no way to measure it that accurately unless you're doing cookie-cutter code where the next 10% of features are just as hard as the previous 10%.

      I've been within 5% on estimates for large projects, even as they changed significantly over the course of the project we could be that accurate on updated estimates.

      Why weren't you 100% on target? After all, you updated estimates as you went. The better question is how close were you to the original estimate with allowances for the major changes along the way? I've been within 10% on a number of projects I was in control of. With a specific Agile project being run by a PM, a BA, and 2 stake holders we were about 500% off. Notice a problem there? Not a single technical person. Because Agile told them you didn't need a technical person running the project, and that costs would be contained, because, well, they were using Agile. They even had their Agile certificates hanging on the wall.

      --
      The cesspool just got a check and balance.
    71. Re:Simple methodology by Gr8Apes · · Score: 1

      Considering I've seen US Fed gov software development contracts pre-Agile and still think Agile is crap, I guess that proves you wrong. Granted, waterfall isn't great either, but therein lies another fallacy, for Agile people, it's waterfall or Agile, for everyone else, there common sense project planning which is in between those two.

      --
      The cesspool just got a check and balance.
    72. Re:Simple methodology by datavirtue · · Score: 1

      In other news....my 6 year old daughter wants to do away with brussell sprouts.

      --
      I object to power without constructive purpose. --Spock
    73. Re:Simple methodology by bluefoxlucid · · Score: 1

      A good project manager uses historical data and the expert judgment of the project team to estimate the complexity of the project and determine the time required to perform the work. This is done in many ways: projects are compared to similar projects and scaled to size for a ball-park figure; projects are broken down into work packages, themselves broken down into activities and tasks, all of which the project team estimates the complexity and time required for, accounting for how long it took them to do similar things; time variance from historical data and current contexts are accounted for, providing a low, most-likely, and high mark (2 weeks in the best case scenario; most likely, based on prior work and known information, 3.5 weeks; some disaster scenarios bring in a 9 week estimate--that kind of lag HAS happened).

      The more work is done, the more accurate estimates for budget and time become. Agile projects deliver in phases, iterations, and increments, and so can estimate work later in the project based on risk events earlier in the project--opportunities that cut time and can be exploited to cut more time, threats that cost time and may further cost additional time. In this way, "Historical Information" even includes work performance information for the parts of the project already completed.

      It's all probabilities.

    74. Re:Simple methodology by Gr8Apes · · Score: 1

      I design and build a data store, complete with an API in between. (the Foundation) It was designed with certain requirements in mind, because performance is a key metric I'm going to be measured on when it's done. Some Agile moron comes along 6 months later, and decides that he needs to filter with permissions in a new way that the DB was not designed for which works with today's traffic. Ideally this change requires a new foundation, because now, instead of an arch bridge, we're building a suspension bridge. The foundation requirements changed, and if we were doing it right, we'd tear everything down, but in the agile world we just slap some extra code (mortar) on the foundation, and voila, it runs/stands. Then traffic doubles, and the bridge fails.

      You will pay the piper, sooner or later. Agile advocates later, which is why it's so popular with business types. That's fine if you never plan on being anywhere longer than a year or two, and don't really care what happens after that.

      My last 2 sentences are how I run projects. It's not Agile in any way, although Agile did claim some of those features as its own, eventually. Do recall Agile, when it started, promoted XP, essentially code for how to take 2 developers and quarter their output. It's gone through several redefinitions since then, and just because it touts some ideas I've been following for years prior to Agile's conception doesn't mean those ideas are "Agile".

      --
      The cesspool just got a check and balance.
    75. Re:Simple methodology by Gr8Apes · · Score: 1

      The blueprints is the requirements and planning stage, with API definitions. This does involve iterations. Coding is the building process, where checks (testing) validate the components before the next layer is added.

      --
      The cesspool just got a check and balance.
    76. Re:Simple methodology by Gr8Apes · · Score: 1

      And that attitude describes exactly why Agile projects fail and have massive cost overruns and are late, because, surprisingly, there are more similarities between building bridges and building software than most suspect. Change costs money and time, and a change in a fundamental core component, can have outsized effects on everything else, including instability and poor performance, which can be overlooked during the Agile development process. I personally witnessed such a project where a component was designed and built, passed all its tests, but once it was to a point it could be connected to the other portions of the system, it failed miserably and the next 12 months was spent "fixing" it, which really never got to the point it needed to because every fix led to the discovery of a new problem.

      --
      The cesspool just got a check and balance.
    77. Re:Simple methodology by bluefoxlucid · · Score: 1

      Then the people you are working with are stupid.

      Get Rita Mulcahy's PM Crash Course (the green book) or RMC Project's CAPM Exam Prep, and the PMBOK 5th edition. Give a read through. Then you'll understand.

    78. Re:Simple methodology by Anonymous Coward · · Score: 0

      So your version of Agile is create mini projects? Because no where does Agile say that mini-projects are part of the process. (One of the many failings of Agile is that no where does it really say anything meaningful) What you're describing is project planning, not Agile.

      You're just being deliberately obtuse now. Yes, you divide your work up into "mini-projects" called "sprints." You fill those sprints with work from your product backlog. That backlog consists of the list of features and functionality desired in the product, and is prioritized by a product owner in such a way that the MOST VALUABLE work is at the top of the backlog. Most teams following Scrum (which is what I'm describing, and which is an Agile methodology) use what's known as the 'backlog iceberg' pattern to keep the top (most valuable) items in their backlog up to date, clear, well-estimated, and ready for inclusion in a sprint. Work that's further out than 2-4 sprints tends to be more vague and less-well scoped, based on the assumption that 1-4 months from now (2-4 sprints away), we can't accurately predict the state of things anyway, so there's very little point or value in trying.

      What I'm describing is project planning: which is absolutely part of any Agile methodology I've ever worked within. Agile simply says that your project planning is done iteratively, resulting in an emergent design, rather than in a single "up front big bang" of planning that pretends to be able to accurately predict the state of a several-thousand-person company 2 years from now, and fails miserably at it. Nowhere in any agile framework will you find something that says "lack of a plan is just fine - bang out that code and ignore everything else."

      Um, no, this only happens in organizations that are small enough that everyone's involved in 1 project. In the real world, I may have 100+ people working on a large project. There's no way everyone involved with all aspects are part of all teams. All they'd do all day is meetings, which, btw, is another one of the major failings of Agile, it leads to meeting paralysis.

      Scaling agile is certainly *difficult* - but not impossible. If you have several hundred people working on a single project, the hardest part is really breaking down the system they're working on so that the work each team is working on represents truly vertical slices of functionality with minimal interdependencies. Of course you're going to have lots of meetings with other teams - however, you don't need to have every team member in every meeting with every other team. Waterfall models are no different - you have SHITLOADS of meetings - status meetings, coordination meetings, planning meetings, etc. quickly become a major part of your development life in any large project. Coordination and communication is important, and Agile does nothing to eliminate that - in fact, Agile probably *emphasizes* the value of the person-to-person interactions in these meetings more so than waterfall - waterfall likes to pretend "everything you need was put in the plan 18 months ago, you don't need to meet." Agile, on the other hand, says "when we need to decide on these things, we should meet and hammer out the requirements."

      The difference is, Agile acknowledges that the planning is iterative, and requires those meetings. Waterfall projects try to pretend that the meetings aren't necessary.

    79. Re:Simple methodology by bluefoxlucid · · Score: 1

      Then, I recorded over/under for every project and found (over about 24 programmer data set) that programmers consistently overshot or undershot their estimates. So after a few projects, I had a pretty good idea of their deliverables.

      Doing it right.

      Made worse by the fact the indian contractors said "I'll do my best" for "no- you are batshit crazy" and then things fell apart when the indians were unable to deliver.

      This is a cultural thing. Asian cultures are strongly hierarchical: you always agree with the guy above you. Never argue. You need to either read the cues or break them of that.

    80. Re:Simple methodology by west · · Score: 1

      Next, that one line can be HUGE sometimes

      This system will be multilingual.

      This system will properly respect all time zones.

      Two very simple sentences that a lot of people think can be tacked on very easily but take a lot of work. Especially, as you said, if you are swapping a "not" out.

      This system will execute on Z/OS and iOS.

    81. Re:Simple methodology by Anonymous Coward · · Score: 0

      When you know you're 20% done, and it took a month, then you know it's a 5-month project.

      No. You're forgetting the 80-20 rule. If the first 20% took a month, the next 60% will likely take 3 months ... and the last 20% will take 16 months. (The first 80% takes 20% of the time, the last 20% takes 80% of the time.) So it's a 20-month project.

      Usually what happens is that most of that last 20% gets thrown away. That also usually turns out to be the wierd corner-case handling and security (i.e. all the hard stuff, which is why it was pushed out in the first place), which explains the crappy state of most software.

    82. Re:Simple methodology by Anonymous Coward · · Score: 0

      What you're describing is not listed in the Agile manifesto

      Really? From the Agile Manifesto:

      Through this work we have come to value:
      [...]
      Responding to change over following a plan

      Nowhere does it say "you shouldn't have a plan." It says that you should value *responding to change* over being so in love with your hand-crafted plan that no longer matches reality that you refuse to change and end up failing. You re-plan and negotiate changes in scope as you go. "Responding to change" != "Embracing complete chaos."

      With a specific Agile project being run by a PM, a BA, and 2 stake holders we were about 500% off. Notice a problem there? Not a single technical person. Because Agile told them you didn't need a technical person running the project, and that costs would be contained, because, well, they were using Agile. They even had their Agile certificates hanging on the wall.

      If by "running the project," you mean "delivering prioritized feature requests and defining targets," then they're correct: you don't need a technical person "running the project." If by "running the project," you mean "creating estimates and making commitments," then every agile methodology I'm familiar with absolutely *requires* that technical people perform those operations. The development team reviews the targets & functionality requested, delivers estimates in response, and after a process of negotiation with stakeholders and product owners, makes a commitment to deliver specific work. There is no agile methodology I'm aware of that says "A PM, A BA, and 2 stakeholders walk into a project, and estimate the whole thing."

      What you're describing sounds like somebody who had no experience with agile methodologies got put in charge of a project, tried to run it like a waterfall, and then didn't even listen to the estimates provided by the technical people working with them. That's not agile.

    83. Re:Simple methodology by Maxo-Texas · · Score: 1

      In my experience, unless you really really fight it, all programming collapses to waterfall.

      In my opinion, it is MUCH better to deliver a testable object every time-boxed period. Any changes (even just move one field) require a realistic re-estimate which must be signed off. But the actual creation of a testable object with feature sets that the testing department can test and confirm is key.

      First- testing big O time is exponential. So solving smaller sets of bugs takes much less time.
      Second- foundational bugs are found much earlier and can be fixed easier- or called out as significant problems.
      Third- you get an actual percentage of completion this way. We've delivered 27% of the promised features and we are 30% along our schedule. We are a little behind schedule so let's work a little overtime next period and get caught up.

      Never ever delay a build to get a feature in. Well, maybe a few hours- but not by a day.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    84. Re: Simple methodology by Anonymous Coward · · Score: 0

      Mod parent up to +5.
      Here's a quick how-to for you manager types:
      Break down your scope into smaller bits, estimate those based on parameters like relative size and complexity (simple High/Medium/Low is ok).
      Then attach weights to those values.
      Multiply by a guesstimated man day value for an average size, average complexity scope item.
      Calculate an estimate for scope in your first iteration based on those numbers.
      When first iteration is done, recalculate:
      - weight values
      - man day guesstimate
      to fit the actual time spent per scope item in your first iteration.
      Repeat until these remain stable. (usually 3 iterations)
      To be redone for each new project.
      Cheers,
      Witte

    85. Re: Simple methodology by Anonymous Coward · · Score: 0

      Ugh. Replying to self to clarify the weights thing.
      Medium weight values should be 1.
      Low could be 0.6 or something like that. High could be 1.6.
      These values will be different for different parameters, but always peg Medium to 1.

    86. Re:Simple methodology by Anonymous Coward · · Score: 0

      I've been held to aggressive estimates made by people that had nothing to do with the software development effort for this reason. Well, that and the fact that they promised it to the customer without asking anyone who really knew what had to be done.

    87. Re:Simple methodology by BronsCon · · Score: 1

      And yet, you still get know-nothings who insist that you're wrong and want to push forward anyway. Thankfully, for the ones I've encountered, money is not an object and they're more than happy to pay for the work to be redone. I had one client try and argue the point and I told them very plainly that their options were to continue the project as originally detailed, take the incomplete work, as-is, or pay for the changes they were requesting. Which option they took is irrelevant, but I'll say the project got done and I got paid.

      That doesn't negate the fact that people will still insist on changes, no matter how careful you are in communicating issues you find in their requirements and getting clarification before starting work. You're absolutely right, though; many people don't know how to handle it when it happens.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    88. Re:Simple methodology by BronsCon · · Score: 1

      And my comment was about clients making changes to the spec. It doesn't matter how good your estimate is or how perfect your project plan is if the client decides to change the project after work has begun. You can refuse the changes, but they can also refuse to pay. You can give up the job, but hey, you're still not getting paid if you do that. The best hope you have is for the client to understand that their change, no matter how trivial it may seem, means more work for you and, therefore, more cost for them.

      Or, to put it another way, go ahead and estimate the cost of that paint job. Then build a project plan for it that holds up in the situation I described. I'll be pricing you against a few local shops who are known for quality work; you high has to be competitive or I'll go elsewhere.

      This isn't as much of an issue when your client is internal to the company, but that was clearly not the case in my analogy.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    89. Re:Simple methodology by KingMotley · · Score: 1

      You realize you just said exactly what gr8apes said, right?

      Most teams following Scrum ... keep the top (most valuable) items in their backlog up to date, clear, well-estimated, and ready for inclusion in a sprint. Work that's further out than 2-4 sprints ... can't accurately predict the state of things anyway, so there's very little point or value in trying.

      So, you have no plan other than for a few weeks, and you are just sitting down and banging code out since "there's very little point or value in trying"...

      Nowhere in any agile framework will you find something that says "lack of a plan is just fine - bang out that code and ignore everything else."

      Yet, that is what you JUST said.

    90. Re:Simple methodology by Anonymous Coward · · Score: 0

      You realize you just said exactly what gr8apes said, right?

      No, in fact, that's not what he said - he said Agile says "you don't need a plan." I said "Agile says 'plan in small increments, and revisit your plan to refactor and rework it constantly.'" What part of "keep the top priority things up to date, clear, and well-estimated," says "don't plan anything!" to you? Because in my world, estimating, clarifying, and 'scheduling things for inclusion in upcoming sprints' is EXACTLY what constitutes "making a plan."

      So, you have no plan other than for a few weeks, and you are just sitting down and banging code out since "there's very little point or value in trying"...

      No, you unmitigated buffoon, you have a rolling window of "several weeks to months of planned work," for the lifecycle of your project. You engage in planning THROUGHOUT the project life cycle, you don't just say "We'll plan the first 2 weeks, and then wing it from there." Anybody who is still able to pretend that this is what Agile teaches in 2015 is a fucking moron. Are you a fucking moron? You might just be.

    91. Re:Simple methodology by Anonymous Coward · · Score: 0

      Ah yes. "I went off into the wilderness to write my API in the way I thought best. Then, it turned out that it didn't satisfy the needs of the users. Turns out it's the user's fault."

      The foundation requirements changed, and if we were doing it right, we'd tear everything down

      Ah yes, we should just tear everything down and start from scratch every time the requirements change. What a completely reasonable idea that should be implemented everywhere.

      Pro tip: if your api and your db layer are so tightly coupled that a change in filtering requirements makes it fall over, then:
      a) Your DB needs a lot of work;
      b) You might as well just give the users direct access to the DB, and skip writing the API.

    92. Re:Simple methodology by lgw · · Score: 1

      What does "running the project" mean here?

      Agile projects need a Product Owner (and that's usually where projects diverge the most from the ideal - I've never met a PM who actually attended scrums), to stack rank work and answer team questions about requirements. But he doesn't "run the project". It's often handy to have a formal Scrum Master, if you're doing scrum, but he's doesn't "run the project".

      Everywhere I've been, management "ran the project", just as with waterfall - they agreed on the delivery date and the staffing. One point of Agile is that the scope falls off, rather than the date slipping, but that's not all that different from tradition.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    93. Re:Simple methodology by eric_harris_76 · · Score: 1

      We've had the unpleasant experience of having an estimate being turned into a commitment. The company learned better.

      Mostly. Our team recently made our own commitments from our own estimates. We probably should have put some serious fudge factor in our estimates, due to unknown impact from additional non-optional activities, before making those commitments.

      On to cheerier things.

      A couple of interesting articles on the topic.

      http://www.mountaingoatsoftware.com/blog/separate-estimating-from-committing (especially relevant)

      http://www.svpg.com/managing-commitments-in-an-agile-team/ (coming at it from a different direction)

      --
      There's no time like the present. Well, the past used to be.
    94. Re:Simple methodology by Maxo-Texas · · Score: 1

      I looked at rolling wave and it looks good as long as the programmers are not allowed to do the easy predictable stuff first. That path leads to huge spending on failed projects.

      My experience was that unless a legal or customer deadline wasn't behind it, executives preferred predictable delivery over efficient delivery.

      I think another thing behind the executives odd behavior was they had a priority to get a "big win" fairly early in their time on the job. And they were often calculating in the fact they would be gone in 3 years or less to some other position.

      So different priorities than a long term programmer who might want to tune and refactor the code to a polished easily maintainable gem.

      --
      She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
    95. Re:Simple methodology by lgw · · Score: 1

      Isn't that what I just said, except without the Agile jargon?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    96. Re:Simple methodology by Gr8Apes · · Score: 1

      No, in fact, that's not what he said - he said Agile says "you don't need a plan."

      I did not, in fact, state that at all. What I said is "One of the many failings of Agile is that no where does it really say anything meaningful" and "Because no where does Agile say that mini-projects are part of the process"

      I said "Agile says 'plan in small increments, and revisit your plan to refactor and rework it constantly.'" What part of "keep the top priority things up to date, clear, and well-estimated," says "don't plan anything!" to you? Because in my world, estimating, clarifying, and 'scheduling things for inclusion in upcoming sprints' is EXACTLY what constitutes "making a plan."

      Perhaps because I deal with projects that cover 100s of developers with budgets in the millions? And a business doesn't want to know in 8 or 16 weeks that their budget is going to be run over by 200%, or their timeline is going to be double? Ie, before committing to rewriting, lets say, an airline reservation or large shipping logistics system as examples, they'd like some realistic idea of the cost and time involved. Agile as the "manifesto" and in practice is incredibly inept at doing what I consider real work. It may work fine for small projects and teams, but that doesn't legitimize it any more than a working car made of paper mache is ready for 150mph on the autobahn.

      So, you have no plan other than for a few weeks, and you are just sitting down and banging code out since "there's very little point or value in trying"...

      No, you unmitigated buffoon,

      That's pretty much exactly what you said, and now having been called out on it, you're resorting to name-calling. About as well thought out as the manifesto....

      you have a rolling window of "several weeks to months of planned work," for the lifecycle of your project. You engage in planning THROUGHOUT the project life cycle, you don't just say "We'll plan the first 2 weeks, and then wing it from there."

      And yet that is wholly the same thing as winging it for the scope of what I'm discussing. 2 weeks, 2 months, whatever your window is, is irrelevant. I don't need to know 12 months in that the costs are going to double, or the time line is going to be missed by even 1 month, or that I'm going to have to cut half my features, which basically means I miss delivery. This is the real world, and people don't like driving cars with 2 wheels and no seats, or flying in a plane with no windows. If you still don't get it, you're a... well, you ask it yourself, so, wear the badge with pride.

      Anybody who is still able to pretend that this is what Agile teaches in 2015 is a fucking moron. Are you a fucking moron? You might just be.

      --
      The cesspool just got a check and balance.
    97. Re:Simple methodology by Gr8Apes · · Score: 1

      What does "running the project" mean here?

      The person who "owns" the project. Generally they run it, as it's their ass in the fire.

      Agile projects need a Product Owner (and that's usually where projects diverge the most from the ideal - I've never met a PM who actually attended scrums), to stack rank work and answer team questions about requirements.

      I don't believe I've been on an agile project where PMs did not run the scrums. Most because they thought they should, and 1 that actually ran the project like I would have. That project succeeded by the measures stated when I joined, but failed by the original measures. I'm not sure I'd call that project Agile nor SCRUM, but more like a development sweatshop, unless that's what successful Agile devolves to. All the other PM run projects failed, due to missed deadlines, missing functionality, and/or cost overruns. I have missed on occasion in projects where I was responsible, as has everyone, but never by more than 20% on time and I've always delivered everything in the original requirements. (see below)

      ...One point of Agile is that the scope falls off, rather than the date slipping, but that's not all that different from tradition.

      I always agree to a core scope that must be met, and then the nice to haves that are negotiable. This approach leads me to a much better success rate, happier clients, and successful projects. The agile approach has left disaster and/or disappointment everywhere I've seen it. Because the world is promised, and only some is delivered, on "successful" projects. Success does not mean delivering everything on time and within budget. You at an optimistic best get 2 of those 3 with Agile.

      --
      The cesspool just got a check and balance.
    98. Re:Simple methodology by Gr8Apes · · Score: 1

      You are clueless. There are cases where the original requirements missed a key bit of functionality that wasn't realized until a later requirement change caused a core change in the DB structure. In fact, I just finished altering a DB structure for exactly that reason. It took 4 days, but then, this current work is designed by a team that approaches software like me, so what's a relatively large change in structure and functionality was accomplished with relatively little effort and almost 0 affect on upper layers. We have well-defined application boundaries and integration API layers which by their nature are extremely loosely coupled. I have seen similar changes on other projects take months and teams of people to accomplish.

      --
      The cesspool just got a check and balance.
    99. Re:Simple methodology by lgw · · Score: 1

      The person who "owns" the project. Generally they run it, as it's their ass in the fire.

      Ah, well, the ideal anyway for Agile is that's the team.

      don't believe I've been on an agile project where PMs did not run the scrums.

      Wait, what? OK, by "PM" do you mean Product Manager (guy who's constantly visiting customers, or at least on the phone with them, often has an MBA), or a Project Manager (useless wanker). I've never seen Agile done well at companies that still employed the latter (but then I've never done consulting).

      I always agree to a core scope that must be met, and then the nice to haves that are negotiable. This approach leads me to a much better success rate, happier clients, and successful projects

      I agree that's the secret.

      The agile approach has left disaster and/or disappointment everywhere I've seen it. Because the world is promised, and only some is delivered, on "successful" projects

      Sounds like "Scrum consultants" selling snake oil, then moving on to the next victims ahead of the angry mob. Agile achieves 3 things if done right: much less throw-away work, early integration for fewer last-minute surprises, and a dev team who's emotionally committed to the dates, rather than hating management for the dates and wanting to hurt them in return. Those can make a pretty significant difference, but if you have intelligent, non-dickish management to begin with then only the first really changes (and if management is bad enough, nothing gets better).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    100. Re:Simple methodology by Anonymous Coward · · Score: 0

      Of course they also don't usually decide that they'd rather have a skyscraper instead of a bridge when you're mid-project.

      Even more importantly, it rarely turns out you are trying to bridge the straits of Gibraltar to carry ultra class mining trucks driving at 150km/hr when the original spec called for a small bridge for pedestrians across the River Peck.

      This is not something that even happens by accident. Most serious software work is dealing with solving difficult new problems. If you know exactly how long your software will take then you shouldn't be doing it. You should be buying in a library instead.

    101. Re:Simple methodology by lgw · · Score: 1

      How could it have "passed all its tests" if it wasn't connected to the rest of the system? It's hard to do agile without continuous integration; doesn't surprise me it was a mess. But integration blowups are the norm in my experience on waterfall projects - they're the main thing that leads to "the first 90% of the project, then the second 90% of the project".

      But the primary win from agile is in avoiding throw-away work. You always work next on what's the most likely to survive unchanged, you only do the design work you need to write the code that you're going to work on (which often includes the entire high-level architecture for the first line of code, but still), you only document what you've actually done, and so on. Bridge specifications are unlikely to change after the project was funded. I've done sever 18-month waterfall software projects, and never seen one where more than half of what we thought the project was at the beginning was what we delivered at the end. Make it cheap and easy to change the requirements, because the requirement are going to change, and there's no holding back the tide.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    102. Re:Simple methodology by Gr8Apes · · Score: 1

      Ah, well, the ideal anyway for Agile is that's the team.

      The team's always in the fire, but generally the "big" guy is the one that takes responsibility for driving the project. You can't have a 100+ person "team" owning a project. Someone needs to be the grown up.

      Wait, what? OK, by "PM" do you mean Product Manager (guy who's constantly visiting customers, or at least on the phone with them, often has an MBA), or a Project Manager (useless wanker).

      the latter, and generally aptly described. Although on larger projects, they can be useful as long as they stay in their tracking role.

      I've never seen Agile done well at companies that still employed the latter (but then I've never done consulting).

      I've done some consulting over the years, mostly to rescue failing projects. But I've spent time in enough companies as an established employee to know the consulting experiences were by no means unique.

      Sounds like "Scrum consultants" selling snake oil, then moving on to the next victims ahead of the angry mob.

      As you can tell from my posts, I pretty much consider Agile itself snake oil.

      Agile achieves 3 things if done right: much less throw-away work, early integration for fewer last-minute surprises, and a dev team who's emotionally committed to the dates, rather than hating management for the dates and wanting to hurt them in return. Those can make a pretty significant difference, but if you have intelligent, non-dickish management to begin with then only the first really changes (and if management is bad enough, nothing gets better).

      I guess my point is that Agile just generally doesn't work the way it's pitched for projects that I work on, and is highly unpleasant and/or inefficient when people attempt to use some or all of it. To me, the only person that really benefits from the whole thing is the PM (either one actually) because they can see the lack of progress that results, all the while selling it up the chain as an accomplishment. I've seen several directors on up fired over the years for doing precisely that, only to be replaced by another Agile proponent that immediately starts having hour long scrums, because, obviously, people aren't getting enough work done. This is fine when I can stay on the outside, but these things are usually black holes that take in everyone near them. Then it's time to bail.

      --
      The cesspool just got a check and balance.
    103. Re:Simple methodology by Gr8Apes · · Score: 1

      How could it have "passed all its tests" if it wasn't connected to the rest of the system?

      It's a component. It's self-contained, like, say, a database or search appliance. You're not telling me they have to be attached to the rest of the system to be tested, do you? However, what happens under realistic loads with the oddities of connectivity sometimes fall outside even the most comprehensive testing, especially when distributed concurrency rears its pretty head.

      It's hard to do agile without continuous integration;

      I don't recall if they actually had their checkbox marked off, but we certainly did, with several hundred tests, all written to the spec. Funny thing, there were 3 specs, with multiple versions that had occurred over time. Somehow, the "official" spec in my hands wasn't the complete spec being developed by the other team, they'd decided in a scrum that changing a couple of details would make it easier for themselves. They wound up undoing those changes, and rewriting half their component as a result, extending the timeline by 300%.

      But integration blowups are the norm in my experience ... - they're the main thing that leads to "the first 90% of the project, then the second 90% of the project".

      Integration is about 90% of what I do. It doesn't matter what project style is used, if the integration isn't properly spec'd and planned, you will be doing a second 90% after the first, and possibly a third and more. (NOTE: I removed waterfall from your quote, because it's relevant to all. Integration can be a real problem.)

      Make it cheap and easy to change the requirements, because the requirement are going to change, and there's no holding back the tide.

      It's never going to be cheap and easy in general to change requirements. That's as true of building bridges as it is for building software. There are changes that are easy - make the railing painted black instead of pink, for instance, vs expensive - gold railings vs wood. But changing the base structure, going from arch to suspension to truss in any order will never be cheap. (Think going from relational to Mongo to Hadoop) The purpose is the same, get a car from one side to the other, the car manages it the same way - driving on a roadway, but everything else about it is different. For data stores, the data is stored and comes back out, but the aspects of how its done and the implications for the application server are rather different, depending upon how you set them up. One or more may not even meet the base requirements used as a starting point for designing the application.

      --
      The cesspool just got a check and balance.
  2. ignorant hypocrites by Anonymous Coward · · Score: 5, Funny

    so, estimating time is a waste of time, but complaining about estimating time is not?

    GET BACK TO WORK, MONKEY.

    1. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      Absolutely! Furthermore, complaining about hypocrisy instead of doing actual work is incredibly efficient!

    2. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      Oh no, I know this old trick! You're not going to spend the whole day recursively shaming each other on my watch!

    3. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      Look, this isn't an argument, it's just contradiction. You oughta be ashamed...

    4. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      hypocrisy is relative to personal beliefs and moral standards.... pointing out the hypocrisy in others implies no person belief other than hypocrisy exists.

      you're an idiot.

    5. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      Except that the article isn't hypocritical, because it isn't being done in lieu of actual work. The only reason this isn't obvious to you is because you're an idiot. You are therefore also a hypocrite for calling them idiots.

      You will now admit that you agree with me completely, by ineptly trying to argue with me and failing miserably.

    6. Re:ignorant hypocrites by gnupun · · Score: 3, Interesting

      so, estimating time is a waste of time, but complaining about estimating time is not?

      No, you complain only once, whereas software estimation has to be done over and over for every task... for many years. Software coding/design is similar to solving a maze -- you just can't give an accurate estimate how long it will take to solve the maze. Estimates are good for repetitive or non-creative tasks that have been done for many years and you know exactly how long some task takes.

      Estimation in the software world is a scam perpetuated by managers and management to get developers to work extra hard.

    7. Re: ignorant hypocrites by Anonymous Coward · · Score: 0

      ur mum's face is an idiot. writing the article is a DIRECT response to being asked to provide estimates for ACTUAL WORK. actual work that needs to be done. writing the article was most certainly done in lieu of that actual work. the only reason you state otherwise is because YOU ARE IGNORANT.

      cower in my shadow some more, feeb.

      you're completely pathetic.

    8. Re:ignorant hypocrites by unrtst · · Score: 4, Insightful

      Holy crap! Are people actually buying into this BS?

      Software coding/design is similar to solving a maze -- you just can't give an accurate estimate how long it will take to solve the maze.

      WTF? Yes, you can give an ESTIMATE on how long it'll take to solve a maze. Go get a book of mazes; Do 10 of them; Time yourself for each one; You now have min, max, and average times for a maze of that size/complexity. Next time someone shows you a maze, you can make an educated guess about how large/complex it is, then give your best case, worst case, and normal/average estimates. Do the same for programming.

      Estimates are good for repetitive or non-creative tasks...

      They're also good for creative tasks. I went to college with a major in fine art and worked for years as a monument engraver (etching portraits/landscapes/etc on tombstones). If someone asked about how long it'd take to etc a 5x7 portrait, I'd have a VERY accurate estimate for them. Is that not creative enough for you? How about every single project for every single class for every year of art school? ALL of those had timelines, and every student became quite good at estimating how long each project would take so they could get them all done on time. And you could ask most of them (at least those with higher than a B average) how long it would take them to do a certain thing (ex. sculpt a bust in clay from a live model) and, if they were familiar with that medium, then they could give you a very good estimate.

      Estimation in the software world is a scam perpetuated by managers and management to get developers to work extra hard.

      If management is asking the devs for their estimate, then how in the hell is it management fault for any of those timelines? Let me put this another way... devs, BE SMARTER. You've been asked for estimates on more than one occasion. Most that are new to development will low ball (stating a best case estimate). If/When you do that, you're just setting yourself up to fail. The best outcome will be that you are on time, and every other outcome sucks for all involved.

      If you're not good at estimating, just try, come up with your figure,then double or triple it. If you always come in under the estimate, then you manager may start adjusting your estimates... who cares? Let them. It's their fault if you don't meet their manipulated figure. However, if you're not giving a large enough estimate in order to get your work done, then it is YOUR FAULT if you fail to hit your own estimate!

      All that said, there are cases where providing an estimate is unreasonable. On one end of the scale, if a manager is asking for very accurate down-to-the-hour estimates on vague but somewhat small tasks, then it's asking for too much (almost more work estimating doing the damn thing). On the other end of the scale, if it's some grand idea for a giant project with no plan yet, you'll be pulling figures from your ass just as much as he's pulling the project plan out his ass... but it is what it is. Just go big.

      A lot of it is just about setting expectations. If you give them high estimates, then you're more likely to meet or exceed their expectations. They may dislike the figure at first, but when you come in under budget they will be very happy and forget all about how high the estimate started out. A high estimate is not "padding", it's setting expectations that you can meet (see the maze estimate above... use "max" and you'll be able to meet or beat your estimate every time, which is what all involved really want out of your estimate).

    9. Re:ignorant hypocrites by unrtst · · Score: 1

      Hate replying to myself, but I hadn't RTFA before posting. I'm not entirely against what they're saying/proposing. It's a different way to do things, rather than just some folks whining and complaining and avoiding estimates for stupid reasons.

    10. Re:ignorant hypocrites by jtwiegand · · Score: 1

      Complaining is only considered valid work in meetings.

    11. Re:ignorant hypocrites by RabidReindeer · · Score: 4, Insightful

      The difference between software and mazes is that with mazes you are doing the same task every time.

      I know, for example, that I can take cold iron and have it running most of what makes it a useful production server machine in about 4 hours. I'll sign my name in blood on it. Because I've done that same task over and over.

      On the other hand, software is a creative work and creativity implies that you are NOT doing the same task every time and that at best you are guessing.

      The problem is, everyone else is second-guessing, and they're guessing wrong. And they often will not accept a realistic estimate. They'll push for a "realistic" estimate, then blame you when you cannot meet it.

      Actually developers guess wrong too - they usually think it's going to take half the time and work it really does (based on stats I've seen). But developers could simply allow for that by doubling what they think.

      Except that in many cases, as I said, they cannot resist the pressure from outside.

    12. Re:ignorant hypocrites by naasking · · Score: 2

      You now have min, max, and average times for a maze of that size/complexity

      Estimating the size/complexity of a software project is exactly where all the error lies. The original quote was correct that it's like solving a maze, you just assumed they were talking about mazes on paper that you could estimate size and complexity at a glance. No, this is a full sized maze that you walk through and have no idea how deep and complex it is.

    13. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      Sometimes this happens:

      m: how long will this take?
      d: about a week.
      m: no way. it can't possibly be that complicated. All you have to do is this and that. It will take three days, right?

      This also happens a lot:

      m: estimate please.
      d: one week.
      m: good. its due in one week. now, here are all the changes to what you estimated. still due in one week, of course.

      Also, this happens:

      m: estimate please.
      d: one week.
      m: ok, let's get started. Ah, we found a few bugs in your prior work, we need you to fix all those too. but the deadline can't move.

      Lastly, this happens sometimes:

      m: estimate!
      d: one week.
      m: get going.
      d: It appears that some of this is not working as expected. There is a pre-existing bug that I must fix, this third party DLL doesn't deliver as promised, and there was some hidden complexity in this code. It will take an extra few days to resolve all of this.
      M: You said ONE WEEK! that's what YOU SAID. make it happen in ONE WEEK!

      in all cases, the problem is management who doesn't actually know how to run a successful software project. Estimates are useful planning tools when:

      1) the developers are experienced enough to know how to make good ones
      2) management is experienced enough to know how to run a successful software project without burning people out.

      Both are true where I work, and it works well. We would never dispense with software estimates, our projects finish on time, and our developers are home before dinner every evening (and stay home weekends).

      The problem isn't the enterprise of estimating; the problem is people jumping into the ocean and then learning how to swim.

    14. Re: ignorant hypocrites by bulled · · Score: 1

      Oh, you want an argument, this is abuse.

    15. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      One thing to note about comparing programming to sculpturing for your course work. The measure of done is very subjective for creating a bust in clay, you could spend hours upon hours trying to scrape hair follicles or just assume the chest is smooth. The measure for done on creating an algorithm to solve all maze puzzles won't pass if the program doesn't solve all maze puzzles given, period.

    16. Re: ignorant hypocrites by stoborrobots · · Score: 1

      writing the article is a DIRECT response to being asked to provide estimates for ACTUAL WORK ... writing the article was most certainly done in lieu of that actual work...

      .. assuming, of course, that the article wasn't written after the "actual work" was completed...

    17. Re:ignorant hypocrites by Oligonicella · · Score: 1

      No, this is a full sized maze that you walk through and have no idea how deep and complex it is.

      I did estimates my entire career and I believe only once did I walk into such a situation. My response was, of course, "Don't know. Not enough information."

      In all other instances, the client provided much more than just the doorway to the maze, so making estimates backed up with rationale wasn't all that difficult. Also, during the initial discussions, I made sure to inform them what kind of information I needed to *make* said estimates. Don't ever recall being called unreasonable.

    18. Re:ignorant hypocrites by Kielistic · · Score: 1

      I've experienced another:

      m: estimate!
      d: one week.
      m: okay. (2 days later) we're starting to panic so we've decided to dump some other people into the project that don't know anything about it or the technology involved. This means it should be done by tomorrow.

    19. Re:ignorant hypocrites by dcollins · · Score: 1

      ...if they were familiar with that medium, then they could give you a very good estimate.

      That's a keenly important conditional. My partner is a fine artist in fabric and mixed materials. She commonly has to spend weeks experimenting with new joint compounds, procedures, etc. (which can take days for one to dry to see if it works, etc.) For her next project she wants tapestry-sized plastic weaving to be glued stiff so it can be hung in space without a curtain rod. How long will it take to determine the right process? Is it even feasible? We don't know yet.

      Arguably software development is more like that; you're always writing new material procedures on most new projects.

      If management is asking the devs for their estimate, then how in the hell is it management fault for any of those timelines?

      The last time I worked software, management took all my estimates and arbitrarily cut them in half, saying, "We're smarter than most other companies, so we can do it in half the time." Used that to close the contract with the outside client, etc.

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    20. Re: ignorant hypocrites by Darinbob · · Score: 1

      This isn't abuse, this is new hire training. You want the sweat lodge next door.

    21. Re:ignorant hypocrites by Darinbob · · Score: 1

      I've never written the same program twice. I can't give an estimate on the next program because I can't guess at what new and unique hurdles will appear. I might be pulled off different proejct before it even finishes (that's not at all a rare occurence), or the parts just don't work (not rare), or I'm being asked to be an expert on something I'm completely unfamiliar with, or a thousand other things that I can't predict. If it's a sprint and I'm supposed to do A, B, and C, I often end up doing E instead which stands for the Emergency task that popped up unexpectedly.

      And you can;t' double or triple your estimate because you'll be called out for it. The estimate is only there to confirm the deadline that was created by management before they even asked for your estimate. We're given three months for a project that I think will take a year, most others acknowledge it will be at least 6 months, but management kept saying "it's a challenge but I think we can rise to it." (these are people who think giving 110% is to be taken literally)

      I am not new at this at all, I'm double the age of some of the people I work with, but I am still bad at estimates. Not just with software, but I can't even estimate distances or heights or weights. I'm bad at juggling too, I can't speak Spanish, my piano skills are very rusty. Not everyone has skill $X; so you're good at estimating projects, other people are bad at it, so stop expecting people to be good at everything.

    22. Re:ignorant hypocrites by Darinbob · · Score: 2

      I am absolutely an expert. Sometimes a lot of of my time is wasted by people needing me to help them out, delaying me from getting my own work done. And I can't estimate. Sometimes because I'm not good at telling people to go away and leave me alone, but usually because unexpected things happen, or I'm being shuffled around between two many projects and can't multitask well, or I'm doing something new I've never done before (but that's ok, people know I'm smart and assume I'll get it all figured out).

      And yet, someone will hand me a coredump then ask me how long it will be until I know now to fix the bug is. That's ridiculous, they may as well hand me a sealed envelope and ask me how long to solve the math problem that's inside it.

      Even though you're Anonymous Coward, I suspect you're really a pointy haired boss sneaking into a nerd site to spy on us.

    23. Re:ignorant hypocrites by Darinbob · · Score: 1

      Most managers are completely awful at management. Of course, most programmers are pretty mediocre at programming too. But bad management can hurt a lot more because there are fewer of them and they wield much more power. Sometimes these bad managers used to be the mediocre programmers who were promoted to where someone thought they'd do less damage.

      But sometimes managers are good. The difference is whether the employees are expected to be helping the manager look good or if the manager is trying to make the employees look good instead.

      And most of my job is actually jumping into shark infested waters carrying a book entitled "shark training made easy".

    24. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      The maze analogy wasn't very good to begin with. It's more like estimating how long it will take to prove some math theorem. If you can answer that, you probably already have a proof in mind, or at least a sketch of one. But sometimes you really don't know how you're going to solve it and any estimate you give is just a wild ass guess. Unless you're just making turn-key websites for customers with similar requirements each time, detailed and accurate estimates are not worth the time they take. For some kinds of projects, if you know enough to give good estimates, you might as well just code it up while you're at it--the hard part is already done.

    25. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      WTF? Yes, you can give an ESTIMATE on how long it'll take to solve a maze. Go get a book of mazes; Do 10 of them; Time yourself for each one; You now have min, max, and average times for a maze of that size/complexity.

      If the level of innovation in your software is that low, you shouldn't be hiring programmers. You should be hiring clerks to do data entry into the maze-solver that a real programmer wrote. The programmer who wrote it had no idea how long it would take to write when he started...

    26. Re:ignorant hypocrites by zwei2stein · · Score: 1

      "Creativity" of software development is way overstated. It is not creative work in most cases.

      Making yet another CRUD GUI is not exactly creative. Neither is any kind of usuall application you would be creating in business setting. Those mazes come presolved and you just trace line on paper.

      In other cases, if you do not learn about problem being solved enough to be able to give good estimate - why are you professional? You should have business design document and technical design document and almost all gotchas covered already. What should remain is implementation itself and that is not much of creative work either - even if you have to wrestle with programing language to implement some concepts.

      --
      -- Technology for the sake of technology is as pathetic as eschewing technology because it's technology.
    27. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      Could be he's just a naive greenhorn who hasn't been burned enough yet.

      I have a BSCS and I've been a software engineer for over 25 years. Does that make me an expert? I still suck at estimates. Senior developers and managers know that developer estimates are only accurate to a factor of two or so at best. Too many factors affect the accuracy of estimates: the stability of requirements, the assumptions being made, the type and size of the project, the quality of the existing code and documentation, the level of experience of the engineers, external dependencies (that might be under parallel development) and how stable those dependencies are, what kind of bugs you run into (in your own code and in the dependencies) and just dumb luck... the list goes on and on. Like you said, in the worst cases you don't even know how you're going to solve a problem, let alone how long it will take.

      According to TFA, "Managers have a habit of treating developers’ back-of-the-envelope estimates as contractual deadlines, then freaking out when they’re missed." That's giving managers too much credit. Sometimes it is honest ignorance on the part of managers, but just as often the estimation process is used intentionally as a tool to get people to work harder. Developer estimates aren't randomly wrong: They are consistently underestimates. Not every company abuses that but a lot of them do, especially the giant software companies. TFA completely ignores that aspect.

      Once you've been around the block a few times in a company like that, you learn that management has two schedules: the official one they use to put developers on death march, and another one they use for actual business planning. They act like it's an emergency when milestones are missed but in reality they never expected otherwise. New developers fall for it for years. I know I did. The experienced developers just go home at a reasonable hour and don't sweat it. They know they're valuable enough to get away with it.

      If a project is really behind and not just pretend-behind--you learn to tell the difference after a while--I don't mind long hours to get it back on track, but that should be appreciated*, not expected, and it shouldn't be abused. Abusing deadlines like that is particularly sleazy when there are a lot of H1-B visas involved -- for them losing their job means losing their place in line for a green card, and possibly being uprooted back to their home country and starting the whole visa process over from scratch.

      I'm not against estimates completely. I'm against spending too much time on them, taking them too seriously, and especially abusing them. Apple, Google and Microsoft have proven conclusively that you can make a fortune without being able to estimate accurately.

      * especially at review/bonus time :)

    28. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      I work on reasonably large scale projects (team of 30+ people working for 0.5 years - 1.5 years).
      The requirements for the last project were analogous: see that building that we have built over the last 20 years? We want to replace it with a new one - based on pre-fabricated one that your company is offering. And our requirements are that it would have walls and doors for people to enter and a whiteboard and windows.

      Once the project starts you start full requirements analysis to just find out that the windows have to be self-cleaning. The doors must be replaced by an elevator and connected to the meeting room. The whiteboard must be red and electrocute anyone not authorised to use it.

      Good luck estimating that!

    29. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      Do you by any chance do BUFD Enterprise Java?

      Creativity is the core of the job. Whatever doesn't require creativity will be automated. If all you are doing is another CRUD GUI, then your days are numbered as a professional anyway. You will be replaced with a framework. These days you can put together a CRUD GUI and not write a single line of code.

      If all it comes down to is tracing a line on paper for a pre-solved maze, as you put it, then you don't need programmers at all. It's just a matter of time before the whole thing is automated and you can fire all those pain in the ass engineers. That doesn't reflect reality though, at least not yet.

      You've spent the time necessary to completely and explicitly spell out the requirements. You've done the experiments to test your assumptions and you've done the experiments to validate your new assumptions based on the results of the first experiments. And you've sat in meetings going over the design documents sentence by sentence, draft by draft, like a bunch of lawyers, until you have "almost all gotchas covered " and all that remains is to uncreatively "wrestle" with a programming language.

      Well guess what? Of course it's trivial to estimate at that point. You you've basically written the code already, but using the most impractical language possible: an extremely verbose techno-legalese dialect of English.

      By then a sane process would have cut out the yak shaving middle man and had the whole thing done, twice, and be working on version three.

    30. Re:ignorant hypocrites by dwpro · · Score: 1

      While much of your comment is correct, I don't think you can correlate the complexity of sculpting or painting to using technology (at least, complicated, integrated technology).  I can't foresee a sculpting project where you find that your scalpel is incompatible with the version of clay, so you're going to have to go dig up clay on the back yard or use a butterknife instead.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    31. Re:ignorant hypocrites by swb · · Score: 1

      I think you've hit the nail on the head, and it's true for more than just writing software.

      IT projects usually have two basic parts to them:

      1) The part we know how to do and have done before. Usually it revolves around a set of tasks we've done before and that have a consistent outcome and usually exist sort of in a vacuum -- install an operating system, configure a switch, install an application.

      2) The part we know how to do, but doesn't always have a consistent outcome because the specific thing hasn't been done before even though similar things have been done before. Similar tasks have been done before, maybe even identical tasks, but they haven't been done in this specific environment. Often involves integration with other systems or involves a lot of dependecies that are too hard/complex/time consuming to have a complete a priori understanding or produces an outcome which has a predicted but not completely predictable outcome.

      Problems in (1) are usually easy to overcome because the solutions tend to be more easily known. Problems resulting from part (2) tend to have open-ended timelines because you often don't know what the problems are and have to create solutions.

      I think people who haven't done IT work long enough or only get close enough to "supervise" it confuse the two, and assume that because even though (2) works often enough it seems to be reliably predictable.

      I started borrowing Donald Rumsfeld's Iraq war quote about "known unknowns and unknown unknowns" when dealing with customers and managers about phase 2 type tasks. He may have been widely criticized for making excuses about the war, but I think there's some insight to the quote because it seems to somehow capture something about the unpredictability of outcomes with depdendencies.

    32. Re: ignorant hypocrites by MSJos · · Score: 1

      This.

      One manager I know is Miss 80%. She used to be more hands-on, and mostly everything I've seen her build was half-baked. And since she didn't understand the 80/20 rule,  she didn't understand that cleaning up her mess would take a lot more than her initial effort. To her, everything was simple, because she'd really only done 20% of the work - the easy part.

    33. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      Just a quibble
              Quote: ... Next time someone shows you a maze, you can make an educated guess about how large/complex it is, then give your best case, worst case, and normal/average estimates. ...

      Be VERY careful who you give Best Case estimates too. If you say "Best case 3 weeks, Worst case 6 months" a lot people figure worst case means "if the 2nd coming arrives and the world ends" -- aka they figure the worse case never happens. So they only hear the best case. And that will become your deadline.

      No, I'm afraid you have to know who you're talking to. If you have Capt Kirk as a boss, then you have to act like Scotty.

    34. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      On the other hand, software is a creative work and creativity implies that you are NOT doing the same task every time and that at best you are guessing.

      Bullshit. Inventing a new algorithm is creative work. Only a few people ever do that. Writing software rarely involves inventing new algorithms, it involves arranging well known algorithms and gluing it all together with code. The creativity level is closer to tech-writing that to novel-writing. (And I've done all those things, so I have a basis for comparison.) Once you've spent a couple of years writing software you should be pretty good at estimating how long something will take you, even if it's in an application domain you've never touched before. (If you're not good at estimating, you're just a code monkey.)

      As for the rest of it, you just have to learn to push back. Boss wants a shorter estimate? Fine, I can leave out this or that, which would you prefer? Joe says he could do it in half the time? Fine, give it to Joe. And for God's sake, if you don't know what I'm talking about when I cite Brooks' Law, what the fuck are you doing managing software development? (Well, okay, I'm more likely to tell them to Google Brooks' Law, then brush up my resume.)

    35. Re:ignorant hypocrites by bluefoxlucid · · Score: 1

      A core dump is two projects: find out what's wrong, fix it. You cannot estimate how long it will take to fix a problem until you know what the problem is.

      How are you an expert when you consider a core dump to be a reasonable place someone would try to estimate bugfix time from? You can't estimate until you can plan the work, until you can draw a work breakdown structure and show what must be done. Even projects are chartered with a big budget and time estimate based on "this is 3x bigger than something else, so it takes 3x longer and is 3x as expensive", and then broken down into work that all comes together and says "okay, it's only going to be 2.1x as expensive and take 2.3x as long". That initial budget estimate? It comes from a dozen or five dozen or hundreds of prior projects, all with varying times, so you can say, "Stuff of this size and complexity has a low-water mark of like 5, a high-water mark of like 11, and tends to take more like 7.2" and decide how important the project is and thus if you want to budget for more like 5 or more like 11--and the same goes for the broken down work.

      You can't even estimate what a bugfix is from a core dump. Someone brings you a core dump and says, "I need a bug fixed." They may as well bring you a blueprint and say, "I need a house built." Until you open the damn blue print up and see if you have a 1200sqft row home or a 4500 sqft Victorian, you have no fucking clue what you're doing, and can't tell them how long it's going to take. Once you unroll the damn thing, you can give them a ballpark estimate by glancing at the paper once; take a few hours to study the blueprints and work out what work actually needs to be done, and you can give them a better estimate.

    36. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      "If someone asked about how long it'd take to etc a 5x7 portrait, I'd have a VERY accurate estimate for them. Is that not creative enough for you?"

      Actually that's not creative at all. You're basically a meat-photocopier or meat-laserprinter. I expect if I buy a photocopier or laserprinter to know the output rate.

      Why is it that ANYONE who takes a fine art degree claims that they are "creative"? If you have stuff in a museum or gallery then the term holds, otherwise, you're just a hack-wannabe.

    37. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      A friend of mine told me his brother once had a manager come into his office and ask for an estimate. So he picked up three dice and tossed them on his desk. Looking at the numbers, he would say 3 months, 4 weeks, 6 days or some other combination of units with the numbers on the dice. The manager would then say "No really" and he would point at the dice and say "Really". The manager went away not liking the answer. But he had communicated a rough estimate by picking the units and the number to associate with that unit while also communicating there was some uncertainty in the answer. Also, I am sure he communicated that if the project was late he could consult the dice again.

      I would not recommend this approach but it does illustrate the main things you are trying to communicate.

      I would recommend reading the appendix of the "McGraw-Hill's Engineering Companion" ISBN: 0071378367 ISBN-13: 9780071378369 Edition: 1

    38. Re:ignorant hypocrites by Anonymous Coward · · Score: 0

      There are several COMMON cases where it is impossible to estimate. The classic case is How long will take you to discover what this bug is about? Because you need to SOLVE the problem to know its nature and make ANY estimation. Then the resulting time will always be ZERO.

      It is IMPOSSIBLE to estimate any investigative work that is not based on pure brute force approach. And Art is not a good counter example. Paintign a portrait needs LESS creativity than writing any minimal piece of code. You are reproducing something. You shoudl take as a counter example something like, create a scene for a painting to evoke some sort of feellings towards the event X, Y or Z that happened here. That is somethign that needs creativity and it is DAMM HARD to predict.

  3. either Fred Brooks by turkeydance · · Score: 1

    or Scott Adams quote goes here.

    1. Re:either Fred Brooks by Anonymous Coward · · Score: 0

      Forest
      You're in a forest.

      Obvious exits: North, South, East, West, Up.

      You can also see: trees

    2. Re:either Fred Brooks by Anonymous Coward · · Score: 0

      North

    3. Re:either Fred Brooks by Anonymous Coward · · Score: 0

      You are in a room, containing a flask.

      Exits are: North, South and Dennis.

    4. Re:either Fred Brooks by Darinbob · · Score: 1

      A soft voice says "plugh".

  4. Well someone has to do it by Sowelu · · Score: 5, Insightful

    Business can't plan or talk to customers or have any strategy whatsoever without at least some estimate...that's just the real world. If devs don't give estimates, managers have to make estimates. If managers don't make estimates, business makes estimates. You want devs to do the estimating.

    1. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      i do not want devs to do the estimating. any competent manager should know what the dev is working on and what that entails and how long the dev has taken to complete similar tasks in the pasts.

      middle managers are simply punting THE ONLY JOB THEY HAVE. fuck them.

    2. Re:Well someone has to do it by TheCastro1689 · · Score: 1

      I agree and disagree, the problem is managers don't understand the programming. If a manger knew that you were going to build off a similar product with low overhead and low time he could make that call. But a lot of it has more to do with how much are the devs budgeted.

    3. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      So if you were getting a new roof put on your house, you'd prefer the roofer's manager to make the estimate over the guy that actually does the work?

    4. Re:Well someone has to do it by omnichad · · Score: 4, Funny

      WHY CAN'T WE HAVE BLANK CHECKS

      I thought this was funny, but it probably isn't - especially now that I have typed in all lowercase words to get pass the yell filter.

    5. Re:Well someone has to do it by BradMajors · · Score: 1

      If a manager can't bring in a project in on time and on budget he is useless.

    6. Re:Well someone has to do it by BradMajors · · Score: 1

      The only way to provide a reliable estimate is based upon past experience. A reliable estimate would hence be the same time it took for a similar prior project to be completed.

      No understanding of programming is required.

    7. Re:Well someone has to do it by BradMajors · · Score: 1

      Yes. The manager's estimate would be preferable.

    8. Re:Well someone has to do it by pjt33 · · Score: 2

      Without an understanding of programming, you can't reliably tell how similar a prior project is.

    9. Re:Well someone has to do it by Opportunist · · Score: 1

      In this case, please inform me what the fuck that useless manager is here for? If I have to do his job, he's essentially a waste of precious oxygen.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    10. Re:Well someone has to do it by Marc_Hawke · · Score: 2

      An understanding of 'similar' is required though...and without knowledge of the programming there's no way you'll know that. When the programming is all 'magic,' everything is similar.

      --
      --Welcome to the Realm of the Hawke--
    11. Re:Well someone has to do it by penguinoid · · Score: 2

      Business can't plan or talk to customers or have any strategy whatsoever without at least some estimate...that's just the real world. If devs don't give estimates, managers have to make estimates. If managers don't make estimates, business makes estimates. You want devs to do the estimating.

      I suspect the problem is not so much the estimates, it's that a manager demands an estimate from their underlings, tells them they don't like that estimate and give them a quicker estimate, promises their customers certain completion by the quicker estimate, and then complains when the programmers can't finish on time or have buggy code. That's without the obligatory change in the project requirements halfway through. At some places the estimate is nothing more that bending over for the manager.

      Obligatory Dilbert: http://dilbert.com/strip/2015-02-22

      --
      Don't waste your vote! Vote for whoever you want, unless you live in a swing state it won't matter anyways
    12. Re:Well someone has to do it by boristdog · · Score: 3, Informative

      IF managers listened to the developers.

      My last major project:
      Manager: What resources do you need for this project (Replacing a huge, entirely file-based factory product manufacturing system)
      ME: At minimum, I need two more people, plus someone to take over most of my smaller duties. And a couple new DB servers.
      Manager: How long will this take?
      ME: Two years minimum, since we are replacing an entrenched 15 year old system.

      Manager's report to director: He can do it by himself in 6 months.

      3 months later:
      Manager: Why isn't this finished? You started over a year ago!
      ME: I started three months ago, you gave me nothing I asked for and you've given me several other projects since then that you said were higher priority.
      Manager: Well stop wasting time and get to work! I told the director it would be done by now!
      ME: You gave me nothing. At least let me have a CS temp.
      Manager: There's a woman in finance who has a sister that might want the job. She knows Excel really well, she can probably learn databases and programming.

      Aaaand I think we've all been there.

      Fortunately the sister didn't want the job and I got a great college grad as a temp. I would not have finished the project (in two years) without his help, we hired him after a year, too.

    13. Re:Well someone has to do it by chipschap · · Score: 4, Interesting

      I was a technically literate manager, having done lots and lots of programming myself. My job was simple: run interference with the client so that my team stayed funded. The team was very happy to let me do that job, which required a lot of travel and unpleasant politics.

      In turn I trusted the team. I asked them for realistic estimates to give the client. If the team thought they weren't going to make it on time, I asked them for a heads-up as far ahead as possible, and I would take the news/new estimate for the client. I did not criticize the team, either to them directly or to the client.

      They knew they were asked to do their best but software being what it is, they were not held to preliminary estimates. (The only issue was with downright incompetence or negligence, which was very rare.)

      It's interesting that I was considered a good manager by the staff and the client, but not by my own management, who said I wasn't hard enough on the staff. Well, sorry, I got results and I kept us funded.

      So, was I a "useless manager"? I hope not. I didn't produce anything tangible, and that bothered me, but I hope I played a useful role.

    14. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      Business can't plan or talk to customers or have any strategy whatsoever without at least some estimate...that's just the real world. If devs don't give estimates, managers have to make estimates. If managers don't make estimates, business makes estimates. You want devs to do the estimating.

      The problem my company has is that the devs get asked for estimates but it is little more than a courtesy, because marketing and other departments have already made commitments. Even when we do get to negotiate our scheduling, when the people on their end who aren't directly involved in the meetings find out what got removed to meet the goals, they get added as must-haves by "executive management" without adjusting the schedule.

      Maybe in a more research focused environment it is different, but from my experience when a product is being sold developers are tools, and you don't ask your hammer's opinion when you need a house built.

    15. Re:Well someone has to do it by BarbaraHudson · · Score: 1

      In this case, please inform me what the fuck that useless manager is here for? If I have to do his job, he's essentially a waste of precious oxygen.

      And this is a surprise?

      --
      "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    16. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      A similar prior project would only have to be modified--so it would not take the same amount of time. If you are hiring devs to do the same work over and over again, then you are wasting your money.

    17. Re:Well someone has to do it by Zak3056 · · Score: 1

      I would not have finished the project (in two years) without his help, we hired him after a year, too.

      First thought: your manager was a tool, and generally a waste of space--actually he wasn't even THAT useful, since he actively made things worse overall.

      That said... the above quote is a bit damning. You claimed you needed two additional people, an empty task list, and two years. You did the job in two years, with other tasks encroaching on your time, and with a single new grad that you only had for 21 of those months. Either your project was a death march (not ruling that out, mind you), or your estimate was woefully off--maybe to the point that the dipshit manager, if you two had a history, simply didn't trust your ability to give him a good answer and modified it per past performance.

      I'm sure there were many more factors in play than you mentioned above, which probably invalidate what I'm saying, but it might be worth taking a step back here and asking yourself if you made any mistakes you could learn from (other than working for Mr Clueless, of course).

      --
      What part of "shall not be infringed" is so hard to understand?
    18. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      It's the manager's responsibility to consult his team of technical experts, marketing folks, suppliers, and, and, and... and turn that into a project schedule.
      That's what he's paid for. Not to parrot whatever "the developers said" and pocket a paycheck. What's his value-add?

      Show me the PM who stands up and says "This is my project; My project schedule was wrong. This is how we can recover or mitigate damage." and I'll show you a team of developers that will enthusiastically give that manager the very best estimate they can honestly come up with for the work as they understand it. And those devs will keep the manager appraised of any surprises they run into along the way.

      The first time that manager throws the devs under the bus "Gee, Boss, my team advised me it would be done by now; I'm sorry they're falling behind; I will go beat them harder and they will deliver!", he's done.

      I've seen Directors fall because of this kind of BS.
      Bonus--delivery date was years ago, they were using Agile, and the product is *still* not on the market.

    19. Re:Well someone has to do it by careysb · · Score: 1

      Maybe you are a fine example of a manager. I've been in a couple of positions where I was asked for estimates and the managers thought they were too high and threw a dart at the calendar. Turned out my estimates were correct. Time to leave.

    20. Re:Well someone has to do it by BronsCon · · Score: 2

      He may have been able to write more maintainable, more stable, better tested, and altogether cleaner code, given what he asked. Possibly in half of his worst-case estimate of 2 years. In the long run, the crap that needed to be slapped together to get the project "done", in 4x the time he was allotted, will end up costing the company more than giving him what he asked for in order to do it right. You must be an MBA.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    21. Re:Well someone has to do it by Anonymous Coward · · Score: 0

      For a while our company had a staff review process where you had to explain your job to someone who didn't know you or what your department did - our then manager said his main duty was to make sure the team came in on time.

    22. Re:Well someone has to do it by Oligonicella · · Score: 1

      IF managers listened to the developers.

      True. To bifurcate: IF your devs listen to the manager. I've watched dev members sit around investing inordinate amounts of time on the more trivial parts of projects because they found them personally fascinating. Watched those same types provide sky high estimates specifically to have fuck off time.

      We've all been there too.

      It's only one sided in any given situation but overall, I'd have to say I've seen more screw off software people than managers.

    23. Re:Well someone has to do it by jdavidb · · Score: 1

      Business can't plan or talk to customers or have any strategy whatsoever without at least some estimate...that's just the real world. If devs don't give estimates, managers have to make estimates. If managers don't make estimates, business makes estimates. You want devs to do the estimating.

      I just don't want the boss to be disrespectful to me when the estimate is not accurate. Get us some estimation training or something. Don't give me a lecture. I'm too old for lectures.

    24. Re:Well someone has to do it by Ryn · · Score: 1

      If you want robots that waste not second...good luck. Engineering is a creative process.

    25. Re:Well someone has to do it by Vorga · · Score: 2

      I'm a manager. I stay in meeting so that you don't have to. I build relationships that can withstand political friction. I cover our screw-ups, into nice language. I convert tech bullshit, into manager bullshit, then into customer bullshit. I convert scope creep into money. I get the contracts signed so we get paid, so the bank gets their mortgage payments. Useless? No. We are all replaceable though.

    26. Re:Well someone has to do it by Red+Herring · · Score: 1

      No, "computer science" (in the real sense) is a creative process.

      Engineering is applying what you know to solve a specific problem to get a product out the door on a known schedule, and a known cost, and known quality. If you want to be "creative", perhaps engineering is not for you. There is a real, important difference.

      Structural engineers know this.
      Chemical engineers know this.
      Process engineers know this.
      Mechanical engineers know this.
      Electrical engineers know this.
      Traffic engineers know this.
      And yes, computer engineers know this as well.

      If you don't know this...

      --
      #include "standard_disclaimer.h"
    27. Re:Well someone has to do it by gnupun · · Score: 1

      In this case, please inform me what the fuck that useless manager is here for? If I have to do his job, he's essentially a waste of precious oxygen.

      I think the manager is essential mainly to make sure programmers are not wasting too much time on games, slashdot, other social media, chit chat, etc. He also monitors the programmers and the situation around the project to provide feedback/status to upper management so they can decide whether to continue the project, change it or outright cancel it. He can be useful to programmers in connecting them with other developers or customers, or providing hardware, software or other relevant expensive stuff.

  5. I figure a good rule is 2x what I think it'll take by Anonymous Coward · · Score: 1

    Because you have things that don't work as you expect, you have feedback to change the program, you have writing documentation and test suites, and your first gut instinct guess will expect very little of this, if you've been programming a long time. I've never overestimated with that rule, but I've only ever been really lucky to be within spitting distance of the time I thought it would take (just a little longer than I thought).

    It really is a very inaccurate science, however, and management really don't understand it very well, in the main.

  6. Estimates are for planning - not penalizing by Anonymous Coward · · Score: 0

    Estimates are useful for planning. It does not matter if it they are wrong when you use a tool like Fogbugz or another schedule forecasting tool. The tool adjusts the forecasts and allows planning 4-6 months ahead. Now when managers start holding developers accountable to their estimates in spite of any tool showing 15-40% underestimation, it is time to quit and find a shop that does not sacrifice as much morale and quality for making sure people predict perfectly of suffer. People do not predict well and it is not smart to use it against them.

    1. Re:Estimates are for planning - not penalizing by phantomfive · · Score: 4, Insightful
      When estimates are accurate, projects get done on time. Then business trusts programmers, money is made, and life becomes better.

      People do not predict well and it is not smart to use it against them.

      You can improve. Most programming we do is boring, and similar to something we've done before. For things like that, you should be able to make your estimates reasonably accurate.

      Sometimes projects have large unknowns, and it's impossible to know how long it will take. In that case you need to propagate that information up to the people who need it, either managers or salespeople or whatever.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Estimates are for planning - not penalizing by Opportunist · · Score: 3, Funny

      If you penalize me for going over time and budget, my next estimate is 30 eons and 200 trillion USD.

      Watch me come in well inside the budget.

      --
      We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
    3. Re:Estimates are for planning - not penalizing by Anonymous Coward · · Score: 0

      You must be working in a shop that does the same thing over and over again, year after year. Try being more in the mainstream of rapid change, new tools, ever-changing libraries and so on. If you are getting enough experience estimating in a particular environment to be able to do it well, then your stuck in a dead-end job.

    4. Re:Estimates are for planning - not penalizing by phantomfive · · Score: 1

      You must be working in a shop that does the same thing over and over again, year after year.

      No. I don't think many people work in that kind of shop.
      No excuses. Don't use that as an excuse for bad estimates, it's something you can improve.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Estimates are for planning - not penalizing by Anonymous Coward · · Score: 0

      That or he isn't wasting time chasing new tools in order to not do the job. Give you a hint; a competent programmer performs well with whatever toolset. If you're blaming changing tools, you're a shitty programmer. Don't worry; there are lots of shitty programmers. Bad managers make programmers shitty.

    6. Re:Estimates are for planning - not penalizing by Bender0x7D1 · · Score: 1

      If you penalize me for going over time and budget, my next estimate is 30 eons and 200 trillion USD. Watch me come in well inside the budget.

      So we aren't talking a government project?

      --
      Reading code is like reading the dictionary - you have to read half of it before you can go back and understand it.
    7. Re:Estimates are for planning - not penalizing by Anonymous Coward · · Score: 0

      "Improvement" requires a feedback loop. Not a punitive "you didn't make your estimate so you're going to have to work twice as hard" type feedback, but honest, value-neutral: "your last 10 estimates have been, on average, less than one-third of the actual time taken, and with a huge variance. Please consider why this happened and read this handbook for tips on how to improve your estimating skills."

    8. Re:Estimates are for planning - not penalizing by Anonymous Coward · · Score: 0

      Sometimes projects have large unknowns, and it's impossible to know how long it will take. In that case you need to propagate that information up to the people who need it, either managers or salespeople or whatever.

      Agreed. The problem is, they don't listen.

      The managers will ignore the range you gave to reflect uncertainty, and just go with the shortest number. They will also assume you have padded the schedule.

      The salespeople have already sold it and promised delivery on a date you cannot hit even if everything goes perfectly.

    9. Re:Estimates are for planning - not penalizing by phantomfive · · Score: 1

      Agreed. The problem is, they don't listen.

      You are not responsible to meet any estimates you don't make. If your manager makes your estimate, let him meet it.

      --
      "First they came for the slanderers and i said nothing."
    10. Re:Estimates are for planning - not penalizing by Darinbob · · Score: 1

      In the real world though, there's a whole lot of penalizing that gets done. Thus a whole lot of stress.

  7. Without estimates you can't budget... by SirGeek · · Score: 1

    If you can't, based on the available facts (the design, requirements, etc.) , determine how long it will take to implement a project then you need to find someone who can. And you have to understand that there ARE external factors you can't control and if they change, the estimates change.

    And management needs to know that your estimates are based on specific things (the requirements not changing). Any changes to requirements, etc. will impact schedule

    If your company puts the budgets into stone, that's a different issue.

    1. Re:Without estimates you can't budget... by JWSmythe · · Score: 5, Funny

      Lets see... What would they say? This is the one-sided conversation, since it doesn't matter what you say anyways.

      "Ok, we can accept that estimate."

      "Ya, ya, ya, whatever."

      "We'll have that information to you by the start of the project."

      "The information isn't ready yet, we'll have that by the time you need it."

      "I thought we had that to you already. We'll have to check with the information source."

      "The PMs have some changes."

      "Here's the information, but there are some small changes."

      "No, those are small changes, they won't impact the timeline."

      "No, you can't have more time, we already made commitments."

      "The PMs have some changes."

      "What do you mean you won't have it in on schedule? You agreed with the initial estimate."

      "You're going to stay here until it's done, I don't care how long it takes."

      "I don't care that you've been in the office 30 hours straight, this is your fault."

      "We're hiring an off-shore company to help you with the project. Get them up to speed."

      "The PMs have some changes."

      "Since we have the off-shore team, we need to cut your department back."

      "I read an article saying Java is the future. Redo it in Java."

      "What do you mean we're waiting on the off-shore company?"

      "We fired the off-shore company. You're good, you can get it done in time."

      "Ok, hire more people into your department, but we're only offering half the salary, and no more bodies."

      "Why is this project so far behind? Don't you know what you're doing?"

      "The PMs have these changes."

      "Why aren't you done? We're weeks from the deadline!"

      "You didn't meet the deadline. Don't you know deadlines are firm. We have commitments."

      "I don't want excuses, I want results."

      "You and your idiot team are fired. Get out of my building."

      [2 months later]

      "We need you to come back and finish the project. We need it by next Monday, that should be plenty of time."

      "Here's all the new specs. They should be easy to do."

      "What do you mean total rewrite, it's only a few chances. You are an idiot. Get out."

      [1 month later]

      "We need you to come back and finish the project. We need it by" {click}

      "We need you to come back and finish the project. We need it by" {click}

      "We need you to come back and finish the project. We need it by" {click}

      "Why do you keep hanging up on me?" {click}

      --
      Serious? Seriousness is well above my pay grade.
    2. Re:Without estimates you can't budget... by Anonymous Coward · · Score: 0

      There may be other types of economic enterprises where estimates are often wrong or assumed to be fairly innacurate. I do not have any background in mining but I imagined this might be the case for them. Perhaps we should try and learn from these industries how they handle estimates and budgets.

  8. Good method for improving by phantomfive · · Score: 5, Insightful

    Estimating is a crucial skill for developers. If you don't have it, you'll make bad decisions. For example, answer the question, "should I use framework A, or should I write some code myself?" If you can't estimate how long it will take to use the framework and compare it to how long it will take to write the code yourself, then it is impossible to make a realistic decision. Similarly, "should we write the code using method A, or write the code using method B?" If you don't know how long they take then you can't make good decisions.

    This is a trick I learned from agile (although I'm sure it's been around longer than that). Each time you make an estimate, pay attention to how accurate it was, then next time adjust and make a better estimate based on that. Estimating shouldn't take much of your time.....if it does, then you're doing it wrong.

    These guys seem to be complaining that their managers aren't doing anything with the estimates. Which probably means they don't understand what the managers do (but it could also mean their managers are bad).

    --
    "First they came for the slanderers and i said nothing."
    1. Re:Good method for improving by Anonymous Coward · · Score: 0

      Good managers are almost as rare as honest politicians.

    2. Re:Good method for improving by phantomfive · · Score: 4, Insightful

      Good managers are almost as rare as honest politicians.

      Then teach your manager to be better. Reject the corporate structure (it may shift many times while you work at a company, even though not much else changes. That is an indication it's not particularly real), accept that improvement can come from even the lowliest programmer, and then help your manager do better.

      If you think that your manager is completely bad in every way, you're not going to be able to help him. You need to be honest, recognize his strengths, and help him overcome his weaknesses.

      You'll probably also need to overcome some of your own weaknesses, unless you are perfect. I can tell you one way to not accomplish anything: start a twitter campaign telling the world how bad your boss is. That will not make your system better.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:Good method for improving by Great+Big+Bird · · Score: 2

      This is a very insightful post —the original poster was asinine to even suggest that we need to get rid of them. For "software engineering" to grow up, we need more accurate means of pricing projects — otherwise you have no business.

    4. Re:Good method for improving by phantomfive · · Score: 1

      This is a very insightful post

      Thanks!!

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Good method for improving by Just+Some+Guy · · Score: 1

      If you don't have it, you'll make bad decisions. For example, answer the question, "should I use framework A, or should I write some code myself?" If you can't estimate how long it will take to use the framework and compare it to how long it will take to write the code yourself, then it is impossible to make a realistic decision.

      That's a bad example because that's almost never my criteria. I could write my own framework almost as quickly as I could suss out the quirks of someone else's, and that's usually a teensy part of the overall project lifetime anyway. Instead, I judge on things like "do I want to spend the rest of my time here maintaining this thing?" and "who's going to own security updates?" and "will it be easier to hire people with experience on this one or on the one I haven't written yet?". Sometimes there's no good framework A to use, or maybe framework A exists and is popular but is unfit for this specific purpose, so we write something in-house. Either way, notice that "time to get started" is a trivial or nonexistent part of the equation.

      --
      Dewey, what part of this looks like authorities should be involved?
    6. Re:Good method for improving by phantomfive · · Score: 1

      That's a bad example because that's almost never my criteria

      Yeah, but you're just some guy.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:Good method for improving by Anonymous Coward · · Score: 0

      I see this thinking a lot, but I honestly don't understand how you can meaningfully compare something you've done with something you haven't. I mean, with software, for similar projects you can reuse what you've already done unlike those physical engineering folk. So you can't be talking about implementation time right? Wouldn't that always be faster for stuff that is similar to what you've done before and then totally unknowable for the parts that you've never done before? Can you give an example to explain what parts of the software development process are similar enough to estimate in the way you are suggesting? I'm honestly quite curious.

    8. Re:Good method for improving by phantomfive · · Score: 1

      I see this thinking a lot, but I honestly don't understand how you can meaningfully compare something you've done with something you haven't.

      Practice doing it, and soon you'll be able to do it accurately yourself. Think of a typical website.....the content is different, but the structure is just a bunch of pages, storing stuff in a database, maybe doing some authentication. A difficult project would be inventing a new algorithm. That's rare, and working on projects that are completely unrelated to anything you've done before is equally rare.

      If you're working on a two-week sprint, by practicing and noticing how accurate your estimates were, then within two months you'll find that 80% of your estimates are accurate.

      Caveat emptor: if you have a manager constantly pushing to make your estimates shorter, then learning to make accurate estimates is very hard.

      --
      "First they came for the slanderers and i said nothing."
    9. Re:Good method for improving by Anonymous Coward · · Score: 0

      > You need to be honest, recognize his strengths, and help him overcome his weaknesses.

      You need to forward his resume, with glowing recommendations, to your competitors.

  9. Is this really a problem unique to devs?? by Anonymous Coward · · Score: 0

    Seems more like a problem with shitty managers thinking they know tech because they bought an iphone than a real issue that needs discussing. Competent dev leads will give good estimates, and competent managers/higher ups will know that sometimes things take longer than initially thought at the outset of a project. If I told my boss something will be done by thursday, and it takes til friday, it usually isn't a big deal. But If I told him it was going to be done thursday and its done in 4 months, either he didn't understand the scope of the project, or Im a shitty dev that needs to be fired. Have communication skills about work really devolved so rapidly?

    The same thing can happen in any line of work. If a business presentation is taking too long, why is it?

    1. Re:Is this really a problem unique to devs?? by duck_rifted · · Score: 3, Insightful

      If non-trivial problems could be solved within a guaranteed time frame, then you'd have already have a doorstep delivery date for your starship. Good management can make sure that core features are delivered on a schedule and help ensure that the schedule is not actually impossible to meet. If the schedule is not lenient enough, then the best management in the world can not guarantee delivery while also providing a guarantee for stability, security, and performance. Were this a simple matter, then the service of software development would not be worth so much.

      You have three choices. You can give me enough time to finish the project correctly and receive an awesome result, but you will pay for that extra development time. You can give me too little time to deliver a quality result, but you will pay me for patches. You can give me too little development time and opt out of paying for updates, but you will pay for it when there are problems. Choose well.

      There's a very old, very over-used saying about technology that people must be forgetting. It comes with three possible qualities: good, fast, and cheap. You may choose two.

    2. Re:Is this really a problem unique to devs?? by bughunter · · Score: 5, Insightful

      No, it's a very common problem in engineering in general, and not unique to software. But the reaction "let's eliminate estimates" appears to be.

      As an engineering manager, I learned the hard way many times how estimates turn into deadlines. Your estimate is reported to the manager's manager and so on up the line, and someone uses it in planning their shit.

      Your estimate, in which you did not build any schedule margin, then becomes an item in the critical path of someone else's plan, someone who didn't build in any margin either, or —worse— who was pressured to make a completely fictional "plan" which is really just a backwards-calculated paper justification to "prove" that a job could be completed in an impossibly short period of time by assuming nine women can make a baby in one month and things like shipping, reproduction, and quality assurance take place in zero time. This "plan" makes upper management happy. Temporarily.

      You, leader of a small team that is working merrily away, accomplishing real work and solving the occasional unexpected problem (OEM pinouts were wrong, widget zeta delayed in shipping, amplifier stage behaving like oscillator, etc.), are asked for a status update. Because of your unexpected problems, your estimated completion date is now two weeks later than your previous estimate.

      Now the middle manager, who knew he wasn't going to meet the "plan" he was forced to develop, now has someone to place the blame on. He knows he's going to be in the path of a metric fuckton of shit, but he's placed himself uphill of you.

      It's clear even in TFS that the real problem isn't estimation, it's poor program management, lack of requirements management, and often also marketing-driven decision-making.

      In other words, the same old shit.

      --
      I can see the fnords!
    3. Re:Is this really a problem unique to devs?? by BoberFett · · Score: 1

      I'm out of mod points, so I'll just say: Good post.

    4. Re:Is this really a problem unique to devs?? by Anonymous Coward · · Score: 0

      Whenever you have leaders placing blame on their workers, or A teams placing the blame on B teams, you can be absofuckedly sure these people love their perks so much they have no clue nor desire to take responsibility and avoid shit before they happen, ie. do their job right.

      My experience is that you can spend the entire time pointing their lacking foresight during the entire project, and they'll be none the wiser. BUT, they won't be able to place the blame on you, and you can even say "I told you so", but shouldn't.

      Sometimes people just DON'T WANT to be come competent, for many different reasons. Then it's easier to expect their garbage to fix itself as by magic by leprechauns in the organisations that somehow can take anything shattered and make it whole.

    5. Re:Is this really a problem unique to devs?? by Anonymous Coward · · Score: 1

      If you know that not providing a margin will eventually lead to a manager making a decision that everything is your fault and you choose to not provide a margin anyway, then the situation really is your fault. You have the power to stop it from happening but choose to walk in front of that bus anyway only to blame the bus driver for it. Be a professional, use your excellent brain to fix problems not just in your discipline but your workplace also. You will prosper if you do. If you don't, well you already know how it's gonna go.

    6. Re:Is this really a problem unique to devs?? by kaiser423 · · Score: 1

      Great post. This then doubles with EVMS -- the new government way of creating estimates and schedules. You have to hack out the software development so fine that at the proposal or initial program startup phase, you better know every class and architectural detail, because you're not allowed to add anything without an expensive replan, but you're also not allowed to have non-specific tasks, or tasks that take longer than 44 days -- but that's the baseline task, so typically the software portion of it can't be longer than ~10-20 days. I do pretty good with getting the schedules in, but that's because I'm a PM that writes lots of code too, and does EE/RF work, so I can hack it in. But in a lot of other schedules from other people, it's really just GIGO -- garbage in, garbage out.

    7. Re:Is this really a problem unique to devs?? by Darinbob · · Score: 1

      But there are so many managers up the chain that take all these estimates as the truth. Before the project starts, before any data sheets have even been read, we're asked to come up with all tasks we think will be needed, then give an estimate for each task. This all gets put on a chart and managers stare at it. Then you'll be asked what percentage of time you can work on each one, and you'll say 50% maybe because they get really mad at you if you are honest and say 10%. Then the chart gets printed and put up on some walls.

      The problem then is that the chart is not updated. The developers are too busy to figure out some goofy planning software so that they can budge their estimate and the managers don't always do it. Along the way half those tasks you thought were needed either vanish or are replaced by something else and some new ones are added (because now you have some datasheets and requirements, you thought of something you forget, etc). We open and close tickets that aren't on any project plan. The planning and actual work just don't coincide, they're done by different groups of people with completely different sets of motiviations.

      I have been at one place though that managed to estimate things well and had some good planning. I honestly don't know how they did it, except that they moved slooowly. They weren't developing a brand new product from scratch (like I am now) but just adding incremental features, lots of time spent planning before starting by people who are engineers and not managers, a set of bug-fix releases were pre-planned, and there was a multi month back end for QA. They spent more time on documentation than some entire projects I've been on. And it was waterfall. But that was only for two years of my career.

    8. Re:Is this really a problem unique to devs?? by bughunter · · Score: 1

      Oh, I agree, I could have prevented a metric fuckton of shit landing in my lap. I know that now. That's just how i learned it the hard way.

      Now, any estimate I give includes plenty of margin. Like the top post says, poor managers get worst-case estimates, plus a healthy margin for the inevitable negotiation that will take place.

      The same applies for cost estimates. I learned the hard way the first time I was asked to present an estimated cost to complete forced by an unexpected 16-week delay in critical long lead part from an overseas supplier. I made a diligent effort to present an accurate ETC to the customer. No margin, no padding, just my honest, well-documented estimate of the cost to complete the project.

      I was expecting to be dealing with the engineers and project managers I'd been working with all along, who were competent technically and I got along with well. But instead, the customer (major aerospace prime contractor) sent in their best hard-ass negotiator who was an MBA with no understanding of the technical side.

      Mr. Hard Ass refused to accept that I wasn't bullshitting him. And the engineers I got along with so well didn't do a thing to back me up. They just sat there looking uncomfortable. After two days of going over the schedule and estimate line by line, and me refusing to cut anything other than the slightest costs, Mr. Hard Ass went over my head to the CEO, who agreed to a 25% percent reduction in the estimate across the board. He just ate the cost.

      I got dressed down hard for not padding my numbers, but he was decent enough to understand that the ultimate blame lied with the suppliers who waited until 4 weeks before their agreed delivery date to notify us they'd be 16 weeks late. And it was a lesson I will never forget.

      --
      I can see the fnords!
  10. Parkinson's Law by jrq · · Score: 3, Interesting

    Estimates are necessary, so that you can determine project cost and (sometimes) duration. However, most projects succumb to my amended Parkinson's Law which states "work contracts or expands so as to fill the time available for its completion" .

    --
    My UID is prime!
  11. Predicting the future is hard by Krishnoid · · Score: 3, Informative

    Joel Spolsky has a take on this problem, called Evidence-Based Scheduling, which tracks past estimates against their deliveries, and uses that to improve future estimates.

    1. Re:Predicting the future is hard by Marginal+Coward · · Score: 4, Insightful

      I've seen that sort of thing used fairly effectively. If you keep track of how long past projects took, it's fairly easy to estimate a new project based on an estimated ratio of how complex the new project is compared to the most similar past project(s). This takes practice and a bit of a knack to do well, but it doesn't take much time, and it's certainly better than nothing.

      What doesn't seem to work well, in my experience, is breaking down a project into microscopic detail and individually estimating each detail, e.g, the "Microsoft Project" approach. I can understand the appeal of that sort of thing, but it's almost impossible to use a data-driven approach at the microscopic detail unless you use some sort of "Personal Software Process" tracking tool - which very few people want to actually do because it feels like you're instrumenting yourself as a lab rat in someone's twisted experiment.

      In any event, having a plan and a schedule, though inevitably imperfect ones, helps motivate everybody and helps keep things on track. The more enlightened managers of the world will allow these things to be revised along the way as needed, as their imperfections get revealed.

    2. Re:Predicting the future is hard by Anonymous Coward · · Score: 0

      Yeah, he has a take on everything, big shock. Here's his take on this:

      When I see a schedule measured in days, or even weeks, I know it’s not going to work. You have to break your schedule into very small tasks that can be measured in hours. Nothing longer than 16 hours.

      This forces you to actually figure out what you are going to do. Write subroutine foo. Create this dialog box. Parse the Fizzbott file. Individual development tasks are easy to estimate, because you’ve written subroutines, created dialogs, and parsed files before.

      If you're basing estimates on the level of writing individual subroutines, you're either in a really well-defined (read: boring) environment, or you're doing it wrong.

    3. Re:Predicting the future is hard by Sklivvz · · Score: 4, Informative

      I work for Joel Spolsky and we have a single estimate: 6-8 weeks.

      Estimation is basically useless because it has the unspoken assumption of "perfect design", which is an invalid one: software development is not a repeated exercise, it does not have consistency.

      Having a single estimate does this to your projects: much smaller things, just do them; much bigger things, they are too big so don't do them, things vaguely in that scale, do them iteratively but define what you are trying to achieve in writing so you know when to stop.

      No project managers, product managers work at a way higher scale (decide which are the projects worth working on).

    4. Re:Predicting the future is hard by Kjella · · Score: 1

      Unfortunately most of the projects I've been on are of the "We want to replace old system A and make a new system B that also has features X, Y, Z" variety. What they want from the new system is usually okay, it's somewhat documented already, you've identified some stakeholders, you can show them prototypes, you can ask for clarifications and their testing validates the feature. Developing new code for genuinely new features is actually quite easy and fun.

      The old system on the other hand is more like software archaeology, nobody really seems to have the specs - or maybe a spec 1.0 from 10 years ago that's got nothing to do with reality - and if you're replacing it it's probably because it's crap, uncommented code in an arcane language with poor frameworks and third party components. So you dig and keep digging and try to implement something similar without knowing what's a feature and what's a bug, who'll come yelling if you break something or features nobody told you about and you weren't aware anyone was using disappear.

      I had a bit of an epiphany today at work when i finally found out how structure a major piece of the redo I'm working on and I've so far spent ~2 months digging through that code. From a similar job I was doing in another area I thought maybe 2-3 months total, now I'm guessing it'll be 6-12 because of all the rework I have to make and every apparently simple thing has exceptions and special cases. It's wasn't my bad estimation, it's that the conditions are entirely different. Like comparing travel speed for a walk in the park to chopping your way through a dense jungle.

      --
      Live today, because you never know what tomorrow brings
    5. Re:Predicting the future is hard by RabidReindeer · · Score: 2

      Very often the original system was hacked out in a couple of days/nights by one or 2 heavily-medicated (caffeine, alcohol, whatever) people.

      It more or less did the job even though it has one or 2 really awful (but infrequent) bugs and is difficult to maintain or expand.

      Then one day someone decides it's time for the Second System (see Fred Brooks).

      They put together a team and a schedule and - like as not - spend a lot of money on fashionable faddish tools and consultants and a lot of time coming up with bells and whistles (a/k/a the Second System Effect - see above).

      65 days into the 90-day schedule, they realize that they don't have any actual working code, just an immense collection of stick-figure UML diagrams, panic and put all the programmers to work coding on 100-hour weeks.

      Guess what the end result is? Hint: read the papers. Somewhere between 66 and 75 percent of all major software projects fail.

    6. Re:Predicting the future is hard by Anonymous Coward · · Score: 0

      software development is not a repeated exercise

      Very succinct and I think something many people refuse to acknowledge.

    7. Re:Predicting the future is hard by Registered+Coward+v2 · · Score: 1

      Joel Spolsky has a take on this problem, called Evidence-Based Scheduling, which tracks past estimates against their deliveries, and uses that to improve future estimates.

      That is a good idea, but you have to be careful how you track work. We used to do estimates based on hours worked and thus come up with a price. Since the work was fixed price the actual hours were irrelevant to the customer's cost; but very relevant to our team. Going over was bad; and going under yielded us no benefits other than having to explain low utilization; even if we had huge profit margins. As a result, our total hours billed to a project always exactly matched the estimate. One word of caution, never let the sales person estimate the cost or duration; they are rewarded on sales and so have an incentive to underbid to get work and let the team try to deliver.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    8. Re:Predicting the future is hard by pherthyl · · Score: 1

      >> What doesn't seem to work well, in my experience, is breaking down a project into microscopic detail and individually estimating each detail

      I find this very useful.. Not microscopic detail but detail enough that it forces you to really think about the project. I find without this developers tend to leave out tasks entirely.

    9. Re:Predicting the future is hard by dcollins · · Score: 2

      So is the system in the linked 2007 article no longer used, never was used...?

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    10. Re:Predicting the future is hard by Darinbob · · Score: 1

      This only works though if a new task A can be compared to older task B. That so rarely happens to me. It might be common in some other areas though, as in "add a new web page with a different customers name up top". But when last month I worked on improving a crypto engine and this month I'm fixing the network MAC layer, and next month I'll do board bring up, then the evidence just doesn't accrue very fast. Then there's a problem that the amount of outside interference is not a constant, some months I can get lots done and in other months I barely have time for my real tasks.

    11. Re:Predicting the future is hard by Marginal+Coward · · Score: 1

      I guess everybody has their own approach to this, but in my case, I end up with a plan containing a couple of dozens of items, grouped into a few major phases. The whole plan will fit nicely on a single page of a spreadsheet. That said, I typically work on small projects, and larger projects which use the sort of approach I do might require several spreadsheet pages.

      I've done some plans using project-planning software in the past, but they seem to encourage way more detail than is necessary. It's easy to get bogged down in all that stuff and spend a great deal of time on it. Later, as you actually try to follow details such as "begin task X on Wednesday, the 23rd at 10 AM", you realize that it isn't really practical to do so faithfully.

    12. Re:Predicting the future is hard by Sklivvz · · Score: 1

      It's part of fogbugz. We use trello.

    13. Re:Predicting the future is hard by Anonymous Coward · · Score: 0

      Problem is that not all problems can be handled on that scale. And some areas you CANNOT downscale! Tell me you think anyone would be able to make anything USEFUL in 8 weeks on the area of automatic cancer diagnostics software? Surely NOT. And downascaling it to something that you can do in 8 weeks will get people KILLED!

  12. Depends on what "delivered" means by mbeckman · · Score: 4, Insightful

    I've worked on a lot of software projects that delivered the original specified product on time. Sometimes the target changes, and the stakeholders need to be willing to give developers the extra time they request to meet the new objectives. Too often I hear, usually from upper managers, "We are still shipping on schedule. Tell the developers to work harder." Of course, that's not realistic, and the result is a predictable "failure to deliver." Alas, the developers get blamed, when it's really management's fault.

    On the flip side we have so-called "agile" development teams who simply define a deliverable as whatever they've completed on delivery day. These developers rarely tell management until the 11th hour that what they're going to deliver is below spec. Agile development has its strengths, but this aspect is a giant weakness. The solution is not to eliminate schedules. It's to adapt them to changing conditions and be proactive about slippages.

    1. Re:Depends on what "delivered" means by AnarchyLime · · Score: 1

      Not sure what agile teams you've worked with, but my agile teams have a delivery window predicted by the current backlog of work. If possible, don't define hard dates, define a delivery window based on confidence.

    2. Re:Depends on what "delivered" means by Atrox666 · · Score: 1, Interesting

      I always get my coder to give me an estimate and I keep track of both the agreed upon and expected delivery based off history.
      I always negotiate any changes I make to anything with the coder IN WRITING as stated in the contract.
      If I'm changing the spec the coder gets to change his estimate of both time and price.
      As a result I make damn sure my spec almost never changes.
      It incentivizes me to know what the hell I want and not turn into one of the shitheads I've done projects for.
      My coders work with a contractual gun to their head in the form of penalties for failure to deliver. I'm not a complete ass about it but when they fail to deliver they lose a lot of power in the relationship.
      I hold myself to the same standard and if I go changing the spec it's lots of extra time and money for the coder.

      If you can't estimate a job then I don't want you anywhere near my business. I don't care if your code brings tears to QA's eye.

    3. Re:Depends on what "delivered" means by Anonymous Coward · · Score: 0

      How are those 80x development improvements going?

    4. Re:Depends on what "delivered" means by Anonymous Coward · · Score: 0

      [ Micromanagement guidebook snipped. ]

      And you actually interfere with getting anything done by interrupting the programmers in their most productive moments to micro-manage their time. Congratulations! You've achieved the dream middle management goal of getting paid to make things *worse*!!!!

  13. My rule of software estimates by sandytaru · · Score: 3, Interesting

    The amount of time it will take to complete a project is inversely proportional to the perceived difficulty of the project. This also applies to tasks and deliverables within the project. The project that you think will be easy and fast will be neither. The project that you think is going to be a tangled nightmare will turn out to have some surprising shortcuts and simplifications that make it not so bad.

    Part of this is the stupid human trick factor - if we think something is going to be difficult, we approach it differently and with more caution. As a result we're more able to identify things to make the project go smoother. Conversely, if we think something is going to be easy, it's because we've only determined one path to approaching it, and if that path turns out to be non-viable, we have an immediate delay as we scramble to find other solutions that will work.

    There's also the psychological factor at play for the customer - if we say something is going to be ghastly and difficult and will take us a long time ( because we think it will) but then turn around and deliver it ahead of schedule and under budget, we look good and feel good. This does not work if you say something will be ghastly and difficult but secretly think it will be easy and fast, however.

    --
    Occasionally living proof of the Ballmer peak.
  14. Re:I figure a good rule is 2x what I think it'll t by Anonymous Coward · · Score: 1

    i take half of what i think it will take, then up the units.... 4 hours = 2 days.... 4 days = 2 weeks. 4 months = 2 quarters.

  15. 3 Kinds of Estimates by Anonymous Coward · · Score: 0

    1. Wild Ass Guess
    2. Disappoint You Now (overestimated)
    3. Disappoint You Later (underestimated)

    The key problem I see are that devs in general don't use waterfall whereas managers do. Reconciling those two mindsets is not possible.

    Devs working like maniacs to meet an arbitrary deadline that may or may not leave time for critical path objectives is just as bad as a manager stuck at a user conference with nothing to show for the 2nd year running.

    How could it ever be possible to we bring those two things together?

  16. Re:I figure a good rule is 2x what I think it'll t by poity · · Score: 1

    https://www.youtube.com/watch?...

    You didn't tell them how long it would REALLY take did you?

    --
    your thin skin doesn't make me a troll
  17. First, get your story straight... by QuietLagoon · · Score: 4, Insightful

    ...Software project estimates are too often wrong, and the more time we throw at making them, the more we steal from the real work of building software...

    ...developers' back-of-the-envelope estimates...

    From the above two quotes, it looks as if the author does not even know if too much or too little time is spent on estimates.

    .
    No wonder his managers are frustrating with the time estimates provided. The guy has not a clue.

  18. It's research by plopez · · Score: 3, Insightful

    Programming is basically research and development You are building something which has never been built before. As such how do you estimate something if you have nothing to compare it to?

    Actually though I have a limited amount of experience using Function Point Analysis. Some of the aspects of it are old, it was created before web apps became pervasive, but that doesn't matter. The principles are the same and there are dimensionless constants you can use to tune the FPA model to your organization. Eventually you end up with an empirical model of your programming team, development environment, tool suite, management efficiency, complexity of the problem domain, people quitting or dying, etc. You need to avoid over fitting however and recalibrate from time-to-time.

    Agile keeps story points and velocity which serve the same purpose as the dimensionless constants of FPA. Unfortunately managers try to translate them to mythical man hours. But if you keep velocity or function points, whether you are using Agile or not, you should be able to get some idea. You have to be a bit scientific about it.

    That and 'T-Shirt Sizing' is about as good as it gets.

    --
    putting the 'B' in LGBTQ+
    1. Re:It's research by Red+Herring · · Score: 1

      CSB: In the [very large] company I work for, there are two very different groups of programmers. There are the programmers that are EEs, working on products that happen to contain software components, and there are CS programmers. The thought process difference between them is, in general, quite stark.

      The EE-background SW folks look at the SW task, spend (an often unreasonable amount of) upfront time to study the project, map it out, and then provide a schedule that pretty much matches what the reality ends up being, and get the product (of which SW is a component) out the door on time. And the code they write is crappy, unmaintainable, crap that does exactly what it's supposed to, no more, no less, and they are famous for rejecting any RCR that will break schedule. Engineering management loves them.

      The CS-background folks (who cluster in a different group) will provide a poorly though out schedule quickly, and then immediately start missing deadlines. The code they write will be exquisite, maintainable, and it will have every feature and new hotness that anyone comes up with. Sales and marketing loves them, because they can sell whatever they want and promise anything to the customer, but it often misses the market window.

      Moral: "Engineering SW" and "CS" mindsets are, in my company, quite different. Just because a CS-type tells you they can't provide a schedule, or the schedule is bunk, doesn't mean it's not possible to provide a schedule for a SW project. You're probably just asking the wrong kind of person. That may be OK, or not, depending on what you're building and what your project is.

      --
      #include "standard_disclaimer.h"
  19. Go Agile. by Anonymous Coward · · Score: 1

    Almost all project that I've done in Agile are on budget, on target.

    The trick ? Prioritize the most value added feature and do so until the end of the backlog. When the time's up arrives, you got the most valuable feature on the product. Even the bugs caught while developing are prioritized.

    The end product will be near of what the customer was expecting. As a bonus, the modification asked by the customer in the middle of the dev is also prioritized by the value added to the product.

  20. Dealines by phibermon · · Score: 0

    Totally agree. I got so fed up of having to give estimates on things that can't be estimated that I just started giving ludicrously large ones to get them off my back. Turns out they just accept whatever I tell them and my life is now really easy. They don't complain if I deliver early either so it's a win-win. It's not like they can say "It shouldn't take you that long" - I'm a programmer and the one doing the work and even I don't know how long it'll take so bugger knows how they're supposed to know. Just tell them "well if you want it done right..." And then if they say they don't care, ship the rushed buggy pile of crap. You told them so and they'll accept any estimate you give in future.

  21. I wish I had training by kwikrick · · Score: 1

    I have similar feelings about estimates in my work: It's never accurate, so why bother. Of course, I understand we need estimates.
    I wish I had some training in how to make good estimates.
    Recentely, I've been giving my managers a range: between 1 and 3 weeks for this feature. Half a day up to a day for this bug fix. Of course, manamament just takes the average, add ups the numbers and doesn't tell the client about the probability distribution.

    --
    assignment != equality != identity
  22. Not just software by CastrTroy · · Score: 2

    I always here that software projects are often late and over budget, but I don't think it's worse than any other industry. I've seen countless examples of construction projects that ran over budget and took longer than expected. Often the reasons for this are the same. Either the requirements changed halfway through, or the project was made more complicated than it needed to be to accomplish the task. There's a few bridges in my area that have been huge boondoggles in the past decade, and they all try to look impressive, where a much more conservative design would have be easier, cheaper, and faster to build, and still would have solved the transportation problem. But everybody wants a bridge that looks pretty.

    Projects that deal with a small workload and don't have changing requirements are much more likely to stay on budget and on time. This is how things should be broken up. Build small pieces and deliver the pieces as they become complete. Don't set out to build an entire 5 year task as a single project.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    1. Re:Not just software by Anonymous Coward · · Score: 0

      Project Manager: There you are: on time, on spec & under budget

      Customer : I know that what you delivered is what we asked for; What you
      do not realize is that what we asked for is not what we wanted!

    2. Re:Not just software by majid_aldo · · Score: 1

      disagree. the individual activities of construction are repeatable and well-known. this is in contrast to software.

      --
      --- widget evolution: enhanced, plus, super, ultra, extreme, exxxtreme, ultra-extreme, ..etc.
  23. Re:Never been a problem by Anonymous Coward · · Score: 0

    wait... you're not an idiot? this site is for idiots only. maybe try out hacker news instead.

  24. I cannae change the laws of physics! by Anonymous Coward · · Score: 0

    I've got to have 30 minutes! -- Scotty

    (Of course, that's really 15 minutes, since a good engineer always allows some slop.)

  25. Hmmm .... by gstoddart · · Score: 4, Insightful

    On the one hand, it's pretty much impossible to do any project planning with no estimates.

    On the other hand, some things are impossible to estimate until you do them.

    Years ago I worked with a manager who kept repeating that bad estimates were a project risk and we should give good estimates. We kept telling him that an estimate is, by definition, based on incomplete knowledge and before you have done the work and that if he had a time machine we could give him better estimates.

    If I knew exactly how long it would take, and what unforseen things I'd be running into ... it wouldn't be a frickin' estimate, now would it?

    People treat estimates like you're expected to have perfect knowledge of the future, and then build their world around those estimates.

    I have seen a tremendous amount of bullshit and stupidity from people who do not understand what an estimate is, and how it's done.

    I don't think you can get rid of estimates entirely ... but management needs to stop being so stupid about how they interpret them.

    If we could tell you for a fact exactly how long it would take, it wouldn't be a fucking estimate.

    I rank how people do estimates right up there with how some PMs want you to track your time ... once had a PM say he wanted me to account for my time in 5 minute increments. And I told him in no uncertain terms that would mean 2 out of every 5 minutes would be spent documenting what I'd done the last two minutes, and there would be an additional 1 minute of lost time in each 5 minute increment doing to context switch back to what I was working, and that effectively 60% of my time would be wasted on his stupidity.

    And then I told him to piss off.

    --
    Lost at C:>. Found at C.
    1. Re:Hmmm .... by srichard25 · · Score: 1

      I agree. Estimates aren't a problem for teams that understand what "estimate" means. It isn't exact. It can't be exact. As long as you respect it for what it is, then it is a powerful planning tool.

      The next time a business person gripes about estimates not being accurate enough, ask him/her to estimate (to the minute) how long it will them to drive home during rush hour traffic. When they start complaining about how an unexpected accident would cause the estimate to be very inaccurate, then a light bulb will go off.

    2. Re:Hmmm .... by david_bonn · · Score: 2

      A couple of observations.

      There is a hellacious difference between an estimate and a deadline. A lot of the problem is abusing estimates and quietly or unconsciously turning an estimate into a deadline. The process for producing the two is totally different, or at least should be.

      One very good manager I had would never directly ask me for an estimate. He would ask me how long it would take to figure out how long it would take to code x. If you can make a reasonable estimate of the size and complexity of the problem you are trying to solve you can begin to make a reasonable estimate of how long it will take. Without that information you are pulling numbers out of your ass.

      One other good manager I had emphasized to me that estimates were, well, estimates. It was as big a problem if I always overestimated as it would be if I always underestimates.

    3. Re:Hmmm .... by CBravo · · Score: 1

      At our place, being PM does not mean being my boss. As PM you get to write specs and acceptance criteria. My boss is someone else. The process is managed by someone else again, the scrum master. It works nice.

      --
      nosig today
    4. Re:Hmmm .... by Anonymous Coward · · Score: 0

      There is a hellacious difference between an estimate and a deadline.

      Yes, the estimate is at least twice as long time as the deadline.

  26. Selling ourselves down the river by Anonymous Coward · · Score: 2, Interesting

    Research into procrastination has noted that people have much less concern about their future selves than their present selves and are willing to sell their future selves down the river for the sake of present ease. But when the present marches into the future, and we are confronted with the work that our past selves refused to do, we pay the price in unmet deadlines, all-nighters and general torment.

    http://www.nytimes.com/2015/01...

    The result becomes one of people providing estimates that allow them to screw off in the present and postpone the agony of late nights, weekends and looming deadlines for taking it easy today. This seems to always happen in our organization. A current project has had the hardware in place and ready for the teams to load their software on and configure the system for 6 months, but they waited until 3 weeks before the project is due to start and now they are changing the project design to make it easier on themselves in the present as well. Estimates = wasted time. Just do it.

  27. Correction by Anonymous Coward · · Score: 1

    [Bad] programmers argue that estimates are wrong too often and a waste of time.

    FTFY

  28. "It's hard, so we won't do it" by mveloso · · Score: 3, Insightful

    Part of being a software professional is understanding how long it takes for you to do things

    If you don't know how, go read a book. It's not hard. The money that's used to pay you depends on your estimate being somewhat correct.

    Imagine how upset you would be if you asked for your paycheck, and payroll said "we're not sure when we're going to pay you, but it should be sometime soon."

    1. Re:"It's hard, so we won't do it" by Gliscameria · · Score: 2

      Thanks, I was beginning to think that software developers were completely dissociated from the rest of the world. Writing the software isn't the only part of the business. Marketing and sales are going to have to know about when things are done so they know when to have everything ready, and that's not even getting into the financial and executive parts of things. Not to mention you are basically saying that you have no idea how much the project is going to cost. Really, if you can't at least provide an estimate then it's either not your job to do so or you need to find a new job.

      --
      X
    2. Re:"It's hard, so we won't do it" by Anonymous Coward · · Score: 2, Insightful

      I don't know about you but I'm not making cookies. Sounds like you're not doing any design either...or implementation in the real world when bugs appear, refactoring is required, etc.

    3. Re:"It's hard, so we won't do it" by gstoddart · · Score: 2

      and that's not even getting into the financial and executive parts of things

      Yeah, and tell us, what is the track record of the financial and executive teams ability to prognosticate?

      Yes, you need to be able to estimate to run the business.

      But let's not pretend the average CEO, sales wanker, or marketing idiot has ANY better track record at making guesses about the future. In fact, in my experience, they're overly optimistic, not founded in anything real, and mostly pulled out of their ass of based on what Gartner tells them.

      We can give you an estimate, but people have to understand that an estimate inherently carries uncertainty, and that they're equally inept over the long run of estimating the parts they're responsible for.

      I've lost track of the times I've rolled by eyes when a CEO tells us what six months down the road will be ... and they have the ability waste far more money on fools errands and bad predictions.

      We're not dissociated from reality ... we're the ones trying to explain reality to people who live in fantasy land.

      But don't act for a minute like our estimates carry any more risk than those bullshit sales figures the idiots at the top are making.

      --
      Lost at C:>. Found at C.
    4. Re:"It's hard, so we won't do it" by Gliscameria · · Score: 1

      We're not talking about accuracy or track records, we're talking about providing an estimate. These organizations estimate and project constantly, and they are wrong a lot, but it works overall. It gives some structure and a goal for the project. Sales projections are clearly worse, pure voodoo, but we still do them, because they work somehow. At the very least, these estimates come from someone charged with knowing a lot about the subject, so it's a good idea to clue everyone else in on what you think the timeline could be.

      --
      X
    5. Re:"It's hard, so we won't do it" by Anonymous Coward · · Score: 0

      No kidding.

      You break down what you can. Estimate the small pieces. Add up the total.

      Throw in expected slip time for unexpected events.

      As you work through things, compare your estimate to how long it actually took. Make your estimate longer if you underestimated -- shorter if you over estimated. The closer you get to the end, the more accurate your remaining estimate should get.

      If you are on a fixed schedule with a hard you may need to cut features to hit the deadline.

      If you are working as part of a larger team, management should be able to use your estimates to help keep the larger plan on track. It helps them understand risks and take action to mitigate them.

      Managers who use schedules to push workers harder are shitty managers and will likely end up with a bad product. That is the sort of problem that fixes itself.

      Not all projects require schedules and estimates like this. If yours doesn't then doing so can be a big waste of time.

    6. Re:"It's hard, so we won't do it" by mveloso · · Score: 1

      Actually, I've done all that. It's really not that hard to estimate, unless you don't pay attention to how long it takes to do stuff. It's not like you're trying to figure out how to fuse atoms, and have to build the manhattan project from scratch.

      Writing something new is more difficult, but when you break it down into chunks it becomes easier. You do have to have a good understanding of how you work.

      Just like anything, it takes practice. If you have enough people estimating you can bayes the answers, sort of.

    7. Re:"It's hard, so we won't do it" by Anonymous Coward · · Score: 0

      The magic word was 'fusion'

      When asked for an estimate of how long this particular strand of spaghetti will be, I would say:
      "You know what they say about fusion energy? Its always 20 years in the future"
      I estimate the project will be deliverable 6 months from the last time you ask.

    8. Re:"It's hard, so we won't do it" by Ash-Fox · · Score: 1

      Managers who use schedules to push workers harder are shitty managers and will likely end up with a bad product. That is the sort of problem that fixes itself.

      From personal experience, you can have a shitty manager that is overworking your entire team, but the team still makes a quality product and that manager looks good despite being shitty.

      --
      Change is certain; progress is not obligatory.
    9. Re:"It's hard, so we won't do it" by Anonymous Coward · · Score: 0

      When someone get diagnosed with cancer and he ask the doctor how much time he has. The doctor says .. 6 months.. 2 years.. you cannot know. Why is it Ok for him to do that and not for developers? Specailly when developers sometimes deal with things vastly less known and predictable than cancer?

      It is not that we do not want to, it is that in certain problems you simply CANNOT predict anything more precisely than .. between 2 weeks and 6 months, and manager do not acecpt that, because they think all software is as straight forward as the pay check system.

  29. Tilting at Windmills by Cytotoxic · · Score: 5, Interesting

    I used to tilt at this very windmill myself. It took me a long time to realize that people really, really need to hear an answer to "how long?". When we were in startup mode a long project was a matter of a few weeks. Everything had to go into production immediately. So we got used to banging stuff out in small chunks and doing it as quickly as possible. Entire project timelines were completed in less time than it takes to draft a proper requirements document.

    But as we grew in size, the new people were not happy with our development team. Even though they would ask for a new report at 10am and have it in production before they returned from lunch, they still felt like we were not responsive. It was one of those reports that began to help me understand the psychology.

    There was a problem with a very complex Crystal Reports document one morning. The Director of the department called to let us know about it. I told him we were already working on it and would have it fixed as soon as possible. "When will it be fixed?" he asked. Well, I had no clue. We had only learned about the problem 10 minutes before and hadn't figured out what was broken. So I explained this to him and told him that we had this as our top priority and it would be fixed as quickly as possible. I certainly thought that should make him happy. Well, it didn't.

    He was rather pissed that I wouldn't give him a timeline. The day before we had made some changes for him that took about 2 hours, but he was upset that we didn't let him know how long it would take. Being an engineering type, when I hear "how long will this take?", I hear a request for a certain degree of precision. The problem with short projects like this is that by the time you have enough information to give an honest estimate, you are pretty much done. Maybe you have 15 minutes or an hour to go, but nothing worth reporting to anyone. Well, after explaining my position a few times and just making him more angry I finally gave up and just gave him a made-up deadline of Thursday afternoon. He was perfectly happy. I had just spent 15 minutes trying to explain to him that we were working feverishly and would be done as soon as we could (which would likely be a couple of hours, but who knows) and he hated that answer. "We'll have it for you in 3 days!" made him very happy. Even though his production was impeded by the lack of this particular report. From a human psychology standpoint he would rather know that it will be done in 3 days, barring delays, than not know when it will be done and have it in two hours. I personally think that is a dumb way of doing things, but I am the outlier, not the director.

    After that learning experience we began implementing a more comprehensive SDLC process and providing timelines for projects. Everyone was much happier with the development team after this. Even though their projects went into production much more slowly. They loved the perceived control that having a timeline gave them. We developers know that these things are basically fictional documents - just educated guesses really - but it provides real customer satisfaction, so we keep with it. In fact, we kept evolving this idea into more and more involvement from the business unit as we moved into Agile and SCRUM methodologies.

    I would say that unless you are working in an organization of less than 25 people, providing timelines is an absolute requirement from a purely human standpoint. This comes from hard experience - even though I think that everything about a timeline is probably B.S. and all of the effort that goes into preparing one would have been better spent solving problems and building something useful. In the real world you can't ignore the psychological needs of the group.

    1. Re:Tilting at Windmills by Anonymous Coward · · Score: 0

      This times infinity.

      Most people are stupid and reactionary.

      In this case, there's a stupid-about-day-to-day-operations executive, and he's reacting to some perceived corporate need or want. Due to the culture of his job, he's likely some extroverted asshat, which will piss off just about everybody that has to work for him. (At least the ones that won't suck his dick.)

      Then you have middle management. They're stupid about what the project actually requires and they're reacting to the extrovert asshat breathing down their necks, and all they want is for him to stop. So they breathe down your neck until you give them what they need to make clueless-extrovert-asshat-executive STFU.

      So be stupid and reactionary. Give them a bullshit estimate so they can make the asshat go away. Because at the end of the day, all anybody really wants is for asshats to just leave them the fuck alone.

      What boggles my mind is why we as a civilization haven't caught on to reality and started executing overly pushy people.

    2. Re:Tilting at Windmills by Zorpheus · · Score: 1

      When you give an estimate you give your boss something to plan with. He can get things prepared and plan what is done after you finish. It allows to use the time well, and it assures that it will be fixed, but is not done yet.
      I think it does not matter so much that you take a bit longer that way. He can make plans for the rest of the company with that estimate, so it allows everyone else to make better use of their time, and it brings things into order.
      At least that is what I think.

    3. Re:Tilting at Windmills by Anonymous Coward · · Score: 0

      I have to say I had the same issue -- I used to think that people asking for estimates were looking for something accurate so I would hold back until I had more information to give them an accurate estimate. The day I realised that *most people just want an upper bound* changed everything for me. The two key facts that I kept missing was:

      1) The person requesting the estimate honestly has no clue what the upper bound could be (for some reason I tend to assume that people know as much as I)
      2) The person requesting the estimate may not trust that the issue will be handled (I make the false assumption that they'll trust I'll get it done based on my past performance). An upper bound is a commmitment that it will be handled.

      Let me stress that again -- most people just want an upper bound, not an accurate estimate. If I had realized this in my early 20s I could have saved so much heartache!!

    4. Re:Tilting at Windmills by Ryn · · Score: 2

      It allows your boss to have a scapegoat. YOU are giving him the estimate, he's not having to come up with one. "They told me X, it wasn't ready in X, we made plans, I even added 10% padding and they still did not deliver".

    5. Re:Tilting at Windmills by Tom · · Score: 2

      From a human psychology standpoint he would rather know that it will be done in 3 days, barring delays, than not know when it will be done and have it in two hours. I personally think that is a dumb way of doing things, but I am the outlier, not the director.

      The psychological issue is that you don't know, but you have a hunch, you have some insight. You know it's probably going to be a few hours.

      But for non-techies, all this stuff is a total blackbox. When you say "I don't know" they panic, because for them that means anything from a day to a month or maybe infinity. Uncertainty is a horrible psychological state and people try to avoid it. It's an instinct. When you don't know if that shadow is a monkey or a lion, it's better to panic just in case.

      By saying "three days", you give him certainty. Now he knows the shadow isn't a lion.

      --
      Assorted stuff I do sometimes: Lemuria.org
    6. Re:Tilting at Windmills by goose-incarnated · · Score: 1

      TBH I'd be rather pissed at someone who could not give me a ballpark or upper range.

      If I know I can write that report later today, then I can let our supplier know that they'll get the report tomorrow morning. If I know that there is no way it is going to happen in the next week then I can inform the other people down the chain and they can plan accordingly.

      Put yourself in their position - you're waiting for a lift from a friend but he hasn't shown up. When you phone him all he can tell you is that he will be late. How late? Will you have enough time to grab lunch before he arrives? Can you take a nap? A vacation? But yet, he still refuses to tell you whether taking a piss or taking a vacation is more appropriate.

      I hate to say it, but it is your "engineering" (which really isn't) PoV that is the illogical and irrational one. The logical and rational answer is that people can be scheduling other things to fit into the time available, and they know this. You basically asked someone to wait indefinitely and then get all surprised when they get annoyed - of course they are going to get annoyed. You were behaving in an irrational manner!

      My estimates are all made with disclaimers - "I can give you X, Y and Z within $TIME_PERIOD, subject to A, B and C being true throughout $TIME_PERIOD". And since I've never ever ever had A, B and C remain true through any development project my estimates have not yet been tested for accuracy. What does happen is a revised estimate when A, B and C change, and then due to having more information I have a more accurate revised estimate.

      Your way is not logical, nor is it at all rational, nor is it considered engineering in any circumstances. It is not a psychological need that your estimate gets used for, it's an actual physical and concrete need. Your need for self-worth is what maintains your self-delusion that those people don't really need what they are asking for. Truly, we live in an age of narcissm.

      --
      I'm a minority race. Save your vitriol for white people.
    7. Re:Tilting at Windmills by Cytotoxic · · Score: 1

      Wow, project much?

      You managed to cram reading comprehension fail, reiterating my main point while telling me I don't know what I'm talking about and preening all into one post. Great job!

      As to the substance of why estimates are a good thing, we are in perfect alignment. But how do you provide an estimate for the issues I was talking about? Let's say the one of the financial reports on Hyperion is not working right. Upon immediate inspection your guy doesn't see what the problem is. How do you provide an estimate? This is something you intend to have fixed in the next hour or two. You have your best people on it.

      But it could be a problem with the report. Or a bug in the report server. Or a problem with the SQL server. Or a problem with the optimizations on the view it is calling. Or maybe it is a problem with the account mapping application - or maybe someone in accounting changed the map and didn't realize what the consequences would be elsewhere. At this moment in time you literally have no idea at all what the timeline is. It could be an hour. You hope it is an hour. But it could just as easily be a bug in Hyperion that will require a fix from the vendor. That would take weeks. Now, in an hour or two you'll have enough information to provide a decent answer. You'll know if the problem is bigger than you can handle with your staff. But they want an answer right now. This is where the real clash comes in .

      They are demanding an answer for the reasons you have outlined. But you can't give one. Not the honest answer anyway. Because the honest answer at that moment is "I don't know", and nobody wants to hear that. The solution to this problem for us was to let them know we were looking into it and we would set a time to give them an estimate in a couple of hours. Now, in this situation the problem will be solved before the estimate is due most of the time, which just feels weird. But it addresses all of the issues that people have with the process. By saying less than we know, we communicate better. Saying "I'll look into it and get back with you by 3 o'clock" works perfectly. But coming from our culture of "everything ASAP" this felt wrong. My real intention was to have the whole thing done by 11am. But that wasn't a number you could promise to anyone, because you have no clue if you are dealing with horses or zebras. Once we figured out that the new people would rather wait a little longer and hear a firm answer, everything was fine. But in our startup years that would never have worked.

    8. Re:Tilting at Windmills by toddestan · · Score: 1

      That's pretty much it. He knows his boss is the same way, and doesn't want to give some wishy-washy we don't know but we're working on it type of answer when his boss asks how long it's going to take. By giving him an answer, even an answer he may even know you made up on the spot, he's got something that he can tell his boss, and when that estimate turns out wrong he's got someone else to blame.

  30. Miracle Worker by burning_plastic · · Score: 1

    Just make sure you multiply your estimates by a factor of four...

    1. Re:Miracle Worker by Gliscameria · · Score: 1

      Our rule for new projects was x2 for a best case scenario and then raised an order of magnitude(hour-day-week-month-year). For example - If everything goes well this job should take 1 day of continuous work - so we estimate in our hellhole of a reality it will be done in 2 weeks. It was surprisingly accurate.

      --
      X
    2. Re:Miracle Worker by Anonymous Coward · · Score: 0

      2 months goes to 4 quarters or 4 years?

  31. Typical Estimating by danbert8 · · Score: 1

    If you need an estimate real bad, you'll get a real bad estimate.

    The real problem with "time writing" is that people end up lying on the reports to meet goals or metrics and then the estimates created from that data are useless. Managers want both though. They want accurate estimates AND time tracking that meets productivity goals. Sadly their productivity goals would require robots to meet...

    --
    Yes it's an anecdote! Were you expecting original research in a Slashdot comment?
  32. Acurate estimates aren't that hard by Alomex · · Score: 0

    I was a manager and never missed a deadline. It really isn't that hard. Most people fail because they do it the wrong way. First give no estimates until you have developed a good picture of the global architecture and have some bare bones functionality running. This takes about 1-3 months of your team, but well worth the effort. Then keep an eye from the very beginning on who's falling behind, and move resources around to support the people who ended up with more than their fair share. Assign a medium size portion of the project to your senior developer(s) so that they are available near the end to go and help in those areas that turned out to be gorier than predicted. You cannot bring people from outside since it takes them too long to ramp up as obseved by Fred Brooks. This is why you use your senior people: they know the whole system and can jump in in any part***. Stand firm in your refusal to add features and lastly, near the end, drop any minor feature which gets postponed to version X.1.

    Most costumers are happier with a version in time with 95% of the features than a complete version three months late.

    Also be realistic with what means to be in time. If you take three years to develop a system and you are five days late, you were off by 0.5%. Any one who tells you in this case that you were late is just mathematically innumerate. I was never more than a week late, but I'd dare say that even an error of 5% (which for a three year project is seven weeks) should not be considered late. Forecasting is an imprecise science afterall.

    Oh and one last thing, there is one estimate you tell the team and there is another one in your head. So the goal is "we run as hard as we can to finish by May 10th, so that when sh*t happens (which always does) we make the real June 1st deadline (which you always keep secret so programmers don't budget for it.... you know, work expands to fill allotted time).

    *** Stu Feldman, a Unix principal was used this way, according to Ritchie. Stu didn't fully own a single component of Unix but his code is everywhere, doing central things that had fallen behind and were passed on to him.

  33. There's One More Pitfall by 31415926535897 · · Score: 1

    Let's say you've figured out pretty well how long something will take and you give your realistic estimate. The game from the managers then becomes, "That's too long, you need to give a more realistic deadline."

    This pressure on the other side is often why developers set deadlines that are too short and then miss them. The penalties for that are less of a problem if you come off as sandbagging (even when you aren't). Managers who have no clue what the complexity of the problems trying to be solved not trusting developers are the real problem.

    1. Re:There's One More Pitfall by Anonymous Coward · · Score: 0

      So much this! Managers never want an estimate. They want to be told that the schedule they have already committed to is feasible.

  34. Problem isn't the estimate itself... by Anonymous Coward · · Score: 0

    but the changes that aren't considered "features" or "are in scope" that some how get approved into the project time - without any care to the impact it has on the overall timeline that was laid out. Everyone whose been in the industry knows this scenario all too well.

    Time to read Edward Yourdon's Death March again (in one right now)....

  35. Estimates are like contracts by omnichad · · Score: 1

    They have to cover every detail and be iron clad. But by the time you've come up with all of these specifications, most of the work is already done. So how do you recover the cost of an estimate if the other party says no?

    I came from the web development world as a one-man department of a larger computer store. Quoting projects was an absolute nightmare and the specifications always changed even when they somehow manage to fit the definition of the words in our estimate.

  36. Task vs Project by Anonymous Coward · · Score: 0

    Estimating the time to complete a programming task is simple, if you have any experience with programming.

    Estimating the time to complete a programming project is almost impossible, unless you have a clear understanding of what tasks make up that project, and requirements that do not change throughout the project lifecycle.

  37. 25 years of experience by Anonymous Coward · · Score: 0

    having done this for a bit I can say this:
    when I know what the scope of work is very well or exactly (e.g. add another module similar to the 30 others in the system to support a new model of x) I can estimate correctly 99% of the time,
    when I am given a vague hand wavy requirement from a manager or user who really doesn't know what they want my estimates are WAG's at best
    sadly the latter are far more common the the former, knowing this I am always very pessimistic on the estimate (double or triple what I really think). As a result the managers always say - that's way too long, we'll give you (roughly what I actually thought) and then they are surprised that it's never "done on time" after the scope creeps and requirements change a dozen times during development. I may give them exactly what they asked for, on time or early, but since that's not whats really needed it's not "done", then I'm the idiot for getting the estimate "wrong". The problem is less an inability to estimate than it is an inability to correctly identify the problem and spec a requirement to solve it. In those cases estimates are a fools game. I have tried to explain this over the years with mixed success.

  38. I have a formula by Anonymous Coward · · Score: 0

    It's not about estimation, but about the odds of being on schedule:

    P=(1/(2+2M+3PM+4D))

    Where P is the chances it will be on schedule, M is the number of managers of other areas involved, P is the number of project managers involved, and D is the number of directors involved.

    You might adjust your schedule accordingly, but the equation oddly seem to be time-independent.

  39. Estimates are not the problem... it just sucks by martiniturbide · · Score: 1

    Is this real or maybe my english reading skills are not good enough to understand it.

    Incorrect estimates are the problem. When non-experience people estimate, or when management force to under-estimate that is the real issue.

    Estimates are necessary in software development, but of course that "estimating" sucks just like "deadlines", "taxes", "death", "breaking up with your girlfriend in person", "no wifi", "cancer", "divorce" and many other things.

    I have a solution, why don't you go to your boss and say "Estimating sucks, and I would not do that because I don't want to compromise any time. So you can "Estimate" my monthly salary according to whatever deadline we will never accomplish".... that sounds fair.

    1. Re:Estimates are not the problem... it just sucks by Anonymous Coward · · Score: 0

      You get paid a salary on a specific date and for a specific amount - no estimation is ever needed. If you were asked to code the same thing all the time then no estimation would be needed either.

  40. Estimates are easy. by Ryanrule · · Score: 1

    Take your best guess. Multiply by 3. Done.

  41. It's just an excuse by Anonymous Coward · · Score: 0

    It's just an excuse to get rid of deadline.

  42. Get rid of time estimates? by Yunzil · · Score: 4, Funny

    Peter Molyneux is that you?

  43. Every project will be behind schedule by Opportunist · · Score: 1

    By definition. When you look at our current corporate culture, you know it has to be. For a simple reason: Companies bidding for jobs. And more often than not, the cheapest offer gets the deal.

    Who is the cheapest? Usually the one that cut the most corners and underestimated his cost (i.e. time) to deliver the most.

    --
    We used to have a Bill of Rights. Now, with the rights gone, all we have left is the bill.
  44. Re:I figure a good rule is 2x what I think it'll t by JWSmythe · · Score: 1

    He was a wise man...

    --
    Serious? Seriousness is well above my pay grade.
  45. The corrections and collaborations are the problem by Karmashock · · Score: 1

    Often the estimate includes an estimate of how many times the client will change something or whatever. And really THAT has to be made a part of the estimation system.

    Estimate a time if they basically don't say anything more and provide required information promptly.

    Then say ANY change to that what so ever is going to change the estimate in UNPREDICTABLE ways because you don't know what they're going to do.

    Here someone is going to say that this is well understood and that developers deal with this all the time. I'm not saying anything else. I am saying that you can't estimate projection completion times with that variable because it is totally unpredictable.

    --
    I've decided to stop wasting my time responding to AC trolls/sockpuppets... so if you want a response from me... login.
  46. Software Estimates are not the Problem by Anonymous Coward · · Score: 0

    As many have already said, you need estimates in order to plan and strategize. How can you even begin to assume that a work effort is worth undertaking without being to calculate even the simplest economics related to the project?

    Having said that, the problem is what seems to happen to the estimate after it's made: it magically becomes a guarantee in many of the minds of those that want to do things like hold people/vendors/etc. accountable. An estimate is not a guarantee. It's a reasonable and educated guess which may be wrong. It's a target that you should try to achieve, but not at the expense of compromising the intent of the project itself.

    Rather than avoid estimates, also develop a 'bail point'; the point at which exceeding the estimate (or the increasing risk thereof) becomes too expensive relative to the benefit the project is intended to bring. Initial estimates are often time revised with better information as the project rolls along and doesn't need to be a terribly expensive process in its own right so long as proper perspective is kept. It is absolutely fair game to then investigate if the failure and overages are due to legitimate unknowns and circumstance or just incompetence; something that blowing the estimate won't tell you by itself.

  47. Wow! by endus · · Score: 2

    Engineers think project managers and deadlines are a waste of time and a pain in the ass, while project managers think they are essential. Now that's what I call news! Whodathunkit!

    This is business. Management wants to quantify everything to manage resources, manage spend, control cost, maximize profit, etc. It makes perfect sense at the same time that it doesn't really jive with how engineering works a lot of time. One thing for developers to keep in mind, though, is that *doing* something is never as important as *telling people* about how you did it. Metrics mean way more to the people who sign your paycheck than the code you write does and you should design your metrics accordingly.

    The other component is PMs themselves. How many really good PMs have you worked with in your life? Grand total of 1 for me. Most PMs are people who don't really understand technology and have created a whole system of super-important metadata to "add value" to the process. When it's done properly a PM can help a lot, but mostly its just blustering and wasting everyone's time. These people want to protect their jobs, and their jobs are defined by timelines and metrics.

    1. Re:Wow! by dbIII · · Score: 1

      Engineers think project managers and deadlines are a waste of time and a pain in the ass

      It's because project managers used to be engineers instead of children with degrees in toga parties.

    2. Re:Wow! by Anonymous Coward · · Score: 0

      > *doing* something is never as important as *telling people* about how you did it

      This explains why the business world is so dysfunctional.

  48. Just give scotty estimates by Anonymous Coward · · Score: 0

    Estimate how long it'll take, multiply it by 4 then you'll be a miracle worker when you get it done earlier.

  49. looking back by Anonymous Coward · · Score: 1

    I tell my clients that every project is a voyage into the unknown. The alternative is off-the-shelf software. We wouldn't be doing a project if we could just buy a solution.

    I have found that experience is the best foundation for correct estimates. After a few dozen projects, it gets a lot easier. I guess that's not much comfort to people who are just getting started.

    When I was new to the development life style, I found that the best result came from doing the best job of scoping that I could, estimate that, then double it and add 20%. I know this sounds like a joke, but it's not.

  50. My Dilbert Moment by Anonymous Coward · · Score: 1

    I estimated 40 hours once for a complex vision system project. After completion manufacturing went from a 5-10% SHIPPING defect rate on a display to no defects. I completed it in about 55 hours. Our customer was very happy. Our accountants were not. I was called in and repeated asked why it took so long.. and I had to answer to an accountant. I had to repeat over and over again that "it took 55 hours to complete". There is no other answer. This was also in the early 90's when vision systems were in its infancy. Management could have probably examined my work and filed a few patents on it. Instead I was forced to waste my time with an accountant.

    To be honest I probably programmed less than 40 hours on the project but I was also responsible for procuring the camera equipment and getting the mechanical details correct and I thought I should charge it to the project - there was no way to break parts of the project out - and I am not great at mechanical details so I am not surprised that I did not do that instantaneously like management would have liked.

    How does somebody doing complex technical work answer to some pen pushing dimwit that is probably spending its time reading Facebook and exposing the company to fishing viruses???

    I've lived Dilbert and it still makes me puke when I think about it all!!

  51. Deadlines and Milestones instead of Estimates by dave562 · · Score: 1

    I have found that the best middle ground is to work with the developers and project team to set deadlines and project milestones. While down to the tenth of an hour estimates are not necessary, there have to be goals to hit.

    The best managers are going to let the developers provide their own estimates, and then calibrate the timelines accordingly. Some people are good at estimating time. Others are horrible at it. The project manager needs to know their team well enough to account for those factors.

    The of thumb that I have always worked with is double the estimated time. Under promise and over deliver. This does lead to some grumbling up front, "It is going to take HOW long?!" But after successfully delivering ahead of time, enough times in a row, people come around.

    The biggest challenge is keeping people honest. Some people have a hard time admitting that they are not going to make a deadline. It is important to give those people room to fail, so long as they are responsible about it. "This deadline has some flexibility, as long as you give me 48 hours notice that you are going to miss it. Don't come into my office the day I am expecting a deliverable and tell me that you need another week."

    The other side of that is having to be a good manager, and push back on the business team to give the developers room to work. "We told you we would deliver it by X and we are still on track to deliver it by X. STFU you about your cranky client whose expectations you cannot manage despite us being explicitly clear with you about what our timelines are. And no, we are not going to add that extra feature that you promised them but failed to include in the scope."

  52. In related news by quantaman · · Score: 1

    The city announced work on a new interchange involving the major arterial road running through the city, significant delays are expected while construction is underway.

    When asked for a timeline on when the construction would be completed the lead engineer answered "Who knows? We generally underestimate these things by months or years so I might as well not bother."

    Work is expected to commence sometime after they finish their current set of maintenance roadwork.

    Good night, this was your 11 o'clock news at 11:23 because we needed a little more time to finish writing our stories.

    --
    I stole this Sig
    1. Re:In related news by Anonymous Coward · · Score: 0

      That's how it is in Florida. We always laugh at the road construction "estimates". As far as I can figure, work is only done on nice days (not too rainy, not too cold, not too hot), but also not on *really* nice days (sick day at beach).

  53. Use it as a weapon by trout007 · · Score: 1

    Use your estimate precision as a bargaining chip for things your need. Typically what impacts my estimate is requirement uncertainty. So give an estimate with an error +200/-10% error. If we could just finalize these particular requirements my estimate would improve. This way a manager will focus on getting the requirements fixed.

    I was once given a "project" and I asked for the requirements document. They said there are no requirements so I happily said great I'm done designing!

    --
    I love Jesus, except for his foreign policy.
  54. Estimates by jgotts · · Score: 1

    I've been programming for about 30 years and it took me at least 20 years to learn how to make good estimates. If you can't estimate how long something is going to take, then you probably haven't been doing it long enough. I don't care what your field is, or even if it's engineering or not.

    Programming is just like any engineering endeavor. Be a professional and admit that not every job is a weekend hack. If you work somewhere where you have to lie about work taking less time than it takes, then quit that job and go work somewhere else.

    One difference between a so-so programmer and a great programmer is someone who finishes his or her work when he or she says he or she will. There are other differences, such as communication skills or lack thereof, but having people be able to trust you is pretty key.

    Another way of looking at is this. Programming cannot be rushed. That doesn't mean tell people it will be done when it's done! What it does mean is learn to estimate the worst case scenario. You will not be punished for writing a great piece of software and finishing it a few weeks early. You will be punished for saying it will be finished by a date assuming that nothing will go wrong at all and that you are some kind of programming genius, better than every other programmer out there.

    Consider this example. I think I might be able to finish something in a week. The estimate I give is two weeks. Another programmer typically says a job of roughly the same magnitude will be done "in a few days." I have given myself plenty of time to do the job right, and extra time to fix bugs and possibly deliver the project early. The other programmer screwed up and it does take him a week. After a week, his work has tons of bugs. It goes out to production and every one of those bugs is embarassing and takes man days to resolve, rather than a few man hours. I've seen this scenario happen many times. Programmers fall into this trap of their own making. Maybe it has something to do with machismo. Stop pretending to be more manly or smarter than you are and be a professional.

  55. Wasn't this the main point of "Agile"? by hey! · · Score: 1

    Find a compromise between predicting too much of the future and just managing a project by the seat of your pants; get into a rhythm where you check how good your estimations and learn to get better at them.

    Of course you can't develop every project this way; I've used Agile and it's worked for me. I've used waterfall and it's worked for me too. You have to try to be sensible; you can't completely wall of other people's need to know when you'll accomplish certain things, nor can you build a solid plan based on pure speculation. You have to have an intelligent responsible way of dealing with future uncertainty, a plan to cut it down to size.

    I've even had the good fortune at one point of winning a $750,000 grant to build a system for which no firm requirements had been established. It was kind of an uphill-flowing waterfall: we knew how long it would take us and how much it would cost but we had no firm idea of what we were supposed to build. If that sounds like a recipe for disaster, it was; but my team was *successful* and built a product which was still be used and supported over a decade after the grant finished.

    What's missing from many programming estimates is honesty. It's a matter of ethics; you can't take people's money and say maybe someday you'll deliver something useful to them. People don't have unlimited time and money to accomplish all the things that need to be done in the world. It's an honor being entrusted with people's aspirations, and a serious responsibility. It's hard, even nerve-wracking, but you've got to care enough about the impact of your planning on other people to make the effort to do the very best job you can.

    And what I've found is that if you do make the effort you can do a surprisingly good job of estimating a project if it's in an area and with technologies you're reasonably familiar with. If you look closely your specific predictions will often be way off, but if you care enough to be brutally honest the pleasant surprises tend to balance out the unpleasant ones.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  56. T&M or Scoped Bid; There is no third option by Anonymous Coward · · Score: 1

    I run into this all the time.

    The company I work for makes lump-sum-bids for design, construction, programming, and commissioning projects.
    We define supplier scope, purchaser scope, explicit exceptions, cost, and schedule.
    And we deliver it. The Clients are happy and we make a profit.

    We also do T&M work: We offer excellent folks who will do--within the bounds of ethics and competence--whatever the Client asks.
    And we deliver them. The Clients are happy and we make a profit.

    Mixing the two is not a good idea. If you need to know the cost and schedule but haven't nailed down scope, (or can't take the time to do so) something is wrong. Either you want something for nothing or you're looking for a fall guy for the project you've already driven into chaos.
    In the rare instances where I've tried to "help out a guy estimate something", it's come back to me as "We Agreed..."

    There's no profit in that for me; and it pisses off the Client when they discover no, you can't have a pony.
    There's just no reason to do it.

  57. COCOMO by Anonymous Coward · · Score: 0

    My favorite estimating tool of all time; it was going to solve all of our problems.

    My manager explained it to me: I was to tell her how many lines of code it would take to complete the project and tell her what our lines of code per hour productivity would be during development, then she would use this amazing tool to calculate how long it would take.

  58. Estimates? by Anonymous Coward · · Score: 0

    Estimates are easy. First you have to be familiar with the code base and business process. That takes neighborhood of a year. That's why most programmers are bad at estimates. Coincidentally it's also why so many projects fail.

  59. Need 2nd order estimations by swan5566 · · Score: 1

    Give your estimate, but also give the variance on that estimate. If it's low, they will ask why. This will lead into the technical barriers and uncertainty discussions, which is really what the business types and PMs need to do and don't do enough of.

    --
    In debates about Christianity, there are two groups: those looking for answers, and those looking to just ask questions.
  60. Estimate is the wrong word. Use "budget". by strayant · · Score: 1

    This is a matter of communication. These numbers should serve less as a prediction and more as an allotment. Instead of "what is the estimate for this task?" the question "what is the budget for this task?" is far more accurate and manages everyone properly.

  61. Update the estimate, honestly. by kogut · · Score: 1

    Any initial estimate will go to hell quickly. The important thing is good communication between managers and developers to mitigate the effects of slip and to continually update the estimate.

    If the developers know by the 2nd week that they're already behind because difficult things were glossed over initially, then they need to feel comfortable telling the managers rather then pretending that they'll catch back up. And the managers need to understand this type of communication is beneficial and not just get angry about schedule slip, disincentivizing further communication.

    Correspondingly a good manager will aggressively probe intermediate milestones.

    Manager: "Feature X should be be done now. "

    Developer: "Yes."

    Manager, "Show me."

    Developer: "OK! But we first need to update the front end to reflect the new data model."

    Manager: "So Feature X is not done."

    Developer, "Well, no."

  62. The real problem by sjames · · Score: 1

    You can't have an estimate without knowing exactly what you will be doing. Finding out exactly what you are doing is also known as the design phase. It is the highest paying part of the project and can easily be 50 to 90% of the whole project. But they want the time estimate up front...

    Once given, they will want to stick to the estimate as if it was carved on stone tablets by Moses.

    If the project involves replacing of interfacing with a legacy system, or for that matter gathering requirements from people you don't know yet even estimating the design phase timeline can be a problem.

    If it requires anything that can be described as experimental, you need to perform the experiments before you can commit to a timeline. The estimated time to do the experimentation will be even further out of the question if there is any possibility that one result could lead to an additional experiment.

  63. Reality of Scotty's Merikles.... by TiggertheMad · · Score: 1

    Kirk: How much refit time before we can take her out again? Scotty: Eight weeks, sir. But ye don't have eight weeks, so I'll do it for ye in two. Basically, we will be violating every safety standard in star-fleet, and there is a 20% everything will blow up completely leaving us stranded in deep space w/o power.

    --

    HA! I just wasted some of your bandwidth with a frivolous sig!
  64. Understood by MakersDirector · · Score: 0

    Precise estimates in my opinion are a farce. I found myself ritually padding my estimates by 20% just to add in a bit of time should things not functions. In some cases, this bought me time I could use on my own projects are just checking out the scenery at the companies I worked with (I love women). Other times, it bought the time I needed to complete what I did and fix unexpected problems which arose.

    In any case. For personal projects and 'the engine'' type projects - things like Operating System work - having no estimates works out perfectly, right? With no deliverable other than increase performance and make the thing 'more fun' for you and others to drive and/or work with, it works out well.

    If I were running Microsoft, for instance, I would throw some developers and pay community members to support prior versions of the OS - by tweaking and playing with what they want to - the goal of 'having fun' and working with community members - and convert incremental updates into a monetized subscription based revenue stream based on 'best of' releases' and services that can be offered for it. And ANYTIME I saw a new area to shift into with a truly revolutionary OS model - Virtual Reality offers precisely this game changing model , that's when I would throw my development staff into developing a new OS, and work with the community to plan out an upgrade path. This evolution would most definitely require deliverable dates and estimations, for the simple reason the community may be committed to the change.

    Outside of Operating Systems though - for a real tangible deliverable. Estimates don't have to be evil. But they do make it easier for others inside and outside the organization to 'play nice with developers' - particularly in team based environments where there's clear dependencies.. Not only that, when dealing with customers, it's especially nice to have a solid timeline established for alpha/beta and release versions so the PR people talking to the community don't find themselves backtracking because of poor time management decisions..

    It's a clever balance, right? But in my opinion, as a homeless guy I can easily function without dates and times because - let's face it - no one depends on me nor does anyone seem to really care. Now I burned out of IT because of mismanagement - I blame mostly myself. I am actually working on my own development project - and have created my 'realistic' personal development estimate to 7 years for development completion.

    Now if I was dependent on money, which I am not and don't care about it anymore, or if I had any external pressures - that time for production might actually shorten. but now that i have 'all the time in the world' and NO financial responsibilities nor desires to enter the madness of the corporate world again, I can develop this project on MY timeline.

    But to be sure. I STILL have dates and times for my own deliverable. To function without personal dates and times is an exercise in insanity in my opinion.

  65. After which managers toss the "bad" estimates by msobkow · · Score: 2

    My experience has been that management comes to the developers for estimates. They provide those estimates to the end users. The end users bitch, whine, and complain that they need it to be done in half that time.

    Management then comes back to the dev team and tells them they've agreed to get the project done in half the time that was estimated.

    Then both management and the user community bitch when their "estimates/targets" aren't met, and who is blamed for the issue?

    The developers.

    The developers always are to blame for computer problems, never the bad specs, the conflicting specs, the unknown variables, the use of "new technology" that some vendor flim-flammed onto the department/team, or anything or anyone else.

    Screw 'em. Now that I'm retired, I'll never have to give anything more than the most vague ballpark estimate of how long it will take me to do something ever again. Instead, on my pet project, I just bullet point some of the things I intend to work on next -- and even that is subject to change. The lack of stress and the freedom to live my life according to my own whims and needs has proven an invaluable source of improvement in my "quality of life."

    What a shame I've never encountered a job that would let you do that.

    --
    I do not fail; I succeed at finding out what does not work.
  66. A programmer is not an island by Anonymous Coward · · Score: 0

    nt

  67. Re:Estimate is the wrong word. Use "budget". by Anonymous Coward · · Score: 0

    the question "what is the budget for this task?" is far more accurate and manages everyone properly.

    I doubt management will blink an eye when they demand a ferrari built from scratch for $5000.

  68. "Humans don’t want accuracy;they want reassu by mdgreene · · Score: 1

    Humans don’t want accuracy; they want reassurance. The Nobel laureate and retired Stanford University economist Kenneth Arrow did a tour of duty as a weather forecaster for the U.S. Air Force during World War II. Ordered to evaluate mathematical models for predicting the weather one month ahead, he found that they were worthless. Informed of that, his superiors sent back another order: “The Commanding General is well aware that the forecasts are no good. However, he needs them for planning purposes.” Source: JASON ZWEIG, WSJ http://www.wsj.com/articles/le...

  69. Make up your mind by dbIII · · Score: 0

    If you want to call yourselves "engineers" without everyone laughing at you there is a need to do things like be able to schedule projects and not be afraid to put in conservative estimates for unknowns instead of what you think the boss would like to hear. If what it takes is a small pilot project to get even a vague idea of how long the real project will take then that's often a more acceptable option than stumbling in the dark until whoever is funding the project runs out of patience.
    So, do you guys want to be like (or actually be) engineers or do you want to "shrug" on the job you are supposed to do and leave the time estimates to people with far less of a clue than yourselves. The latter way leads to "death march" projects and nasty ambushes where dismissal for lack of performance can come at an unexpected time simply due to others having no way to measure whether the progress to date is up to expectations or not.
    Don't be afraid to take so time out to plot out a timeline and list dependancies instead of giving your boss an instant guess. An answer of "I'll have an extimate by time X" is far better than an instant wild guess of "finish the project by date X" before you've even checked who is available to do the work.

    1. Re:Make up your mind by Anonymous Coward · · Score: 0

      Putting "engineer" in scare quotes is a little condescending. If other engineering disciplines could get away without BDUF (Big Design Up Front), they would. There is a lot of overhead and loss of flexibility with BDUF. Google can re-design the 747 while the plane is in flight so to speak, but you can't do that with real airplanes. That doesn't mean what they are doing at Google isn't real engineering. It's just a different approach that only works for software. If you do BDUF then you have no excuse for not providing good estimates, since the work it takes to give good estimates should be part of the up front design. So this whole conversation assumes you aren't doing that.

      Given that you aren't doing BDUF, when asked for accurate estimates (the kind that go into making hard deadlines) you have two choices:

      1) You make a SWAG assuming that everything that can go wrong will go wrong. Then double it and add 50%.
      2) You spend time building prototypes, validating assumptions, testing dependencies, etc., and you hire goons to beat requirements out of people. Then you add 50% because shit will still happen.

      In many companies, doing the first option honestly will just get you rejected out of hand as over-padded (because it is) or they'll find someone else who tells them what they want to hear. Sometimes you have to ask for forgiveness later because they won't accept the truth up front. Some places expect an unrealistically optimistic answer because they are going to double it and add 50% themselves.

      The whole point of TFA is that sometimes the second option doesn't serve any business purpose but people do it anyway because of trust issues or ignorance. Here's the question you should ask when asked for an accurate up front estimate: do you want the project done as quickly as possible even if you don't know exactly how long it will take, or do you want to know exactly how long it will take even if that means it will take a lot longer (and there will still be some risk)? In my experience if trust isn't an issue they want the former.

      The problem is accepting an estimate than can be off by a factor of two or more feels like writing a blank check. But for most projects a very rough estimate together with frequent updates about how things are going and revised estimates as things progress is better than trying to nail everything down up front. If you have hard dates that have to be met, then you prioritize features and get as many in as you can, and punt the rest to a later release. Very few non-Mars-Rover projects have both hard deadlines and fixed feature requirements.

  70. I disagree by dbIII · · Score: 1

    I disagree - no budget is going to help with time dependant issues or bottlenecks that cannot be "bought off". The most famous and trivial example is bringing a child to term - not happening any faster with ten mothers. Seasonal conditions are another. Production capacity of suppliers is another. Availability of staff is another. I'd say it's only really a major factor when comparing with projects with inadequate budgets.
    Run three shifts and some time problems go away but not all of them.

  71. They are doing it wrong then by aepervius · · Score: 1

    "On the flip side we have so-called "agile" development teams who simply define a deliverable as whatever they've completed on delivery day. These developers rarely tell management until the 11th hour that what they're going to deliver is below spec. Agile development has its strengths, but this aspect is a giant weakness. The solution is not to eliminate schedules. It's to adapt them to changing conditions and be proactive about slippages."

    The PO is supposed to be aware of this at least on the sprint level, and if necessary communicate with the client. Furthermore one of the tenet is that the team is responsible,m and responsibility is to warn that the spring goal may not be reached and draw consequence on it for next sprint goal (make them less big etc...). Which also means since you are delivering on the atomar level of a sprint, that it is known sprint after sprint how the evolution of the project is by the client. Now if you are speaking of telling on the 11th hour on a SPRINT level, well Yupi-doo. Compared to most project which tell goal will not be met at the 11th hour before delivery of the FULL project ?

    --
    C. Sagan : A demon haunted world:
    http://www.amazon.com/gp/product/0345409469/
    visit randi.org
  72. It's not actually all that hard! by Tony+Isaac · · Score: 1

    It just takes a little training and practice. The trick is to divide a project into pieces (bullet points are sufficient) where each item takes two days or less to do. If a line item is estimated to take longer than two days, it needs to be broken down some more. At that level of granularity, it's possible for most programmers to make a reasonable guess as to how long that item will take.

    Put another way, it's more important to count the line items, than to count the hours. The trick is to get the line items the right size.

    Steve McConnell's book does a good job explaining how this works.

  73. Unknowns make estimates problematic by egarland · · Score: 1

    There are definitely times when estimates are appropriate in programming, but the more unknowns there are inside a project, the more you need to nail those unknowns down before estimating is worthwhile. Sometimes, prototyping should be done without estimates.

    --
    set softtabstop=4 shiftwidth=4 expandtab nocp worlddomination
  74. easy by Tom · · Score: 1

    But it's so easy to make a good estimate, takes less than 10 seconds:

    Take your instinctive estimate.
    Double it.
    Increase units by one (if you think "hours", make it days. If you think "weeks" make it months, etc.)

    So if you think it'll take 2-3 days, tell your manager it'll be ready in 4-6 weeks. Don't forget that in management school, they teach these fuckers to under-promise and over-deliver. He understands.

    --
    Assorted stuff I do sometimes: Lemuria.org
  75. Wrong approach. Estimates aren't a problem. by Qbertino · · Score: 1

    Getting rid of estimates is the wrong approach - of course. What companies need is a clear product, pipeline and system strategy. Have that, and estimates are trivial.

    If I know I have a set of servers and they all run system X and toolkit Y and management process Z and I'm hired to handle XYZ and we/I have optimised my skills and toolset for said chain because we've chose it as our strategy, I can give estimates that are precise to a margin of half an hour per week of project time on the drop of a hat.

    However, give me deciders and/or co-workers who don't have a clue and make decisions way out of their league that I have to follow on, shitty testing and deployment, 10$/hour students making core system decisions, local servers I have to salvate from a junkpile and decisions on what system we're going to use in the next project based on what software the custmers drinking buddy had heard of and was rambling about after 7 beers half a year ago on their last pub tour and my estimates will be just as shitty as your decisions.

    Leave me out of the loop until the very last moment and then barge into the door with some system I've only looked into for 15 minutes in the last 10 years and my estimates will be based on how true the vendors describe their product in the flyer. And we all know how true that is.

    --
    We suffer more in our imagination than in reality. - Seneca
  76. Not a problem at all by Anonymous Coward · · Score: 0

    I'm not sure what all the fuss is about. My estimates are usually defined by our bid team before they ever get to me.

  77. Estimates are fine if.... by mark-t · · Score: 1

    ... the functional requirements are clear, and do not change during the development lifecycle.

    Except what usually happens is that a feature change will come along *AFTER* the design phase has already started, or else the requirements weren't unambiguous enough in the first place. Oh... and in the real world, at least in my experience, a developer isn't often in the position of being able to say "we can't do that", unless the developer is also very amenable to finding a different employer in the extremely near future.

    This usually puts the programmer in the position of having to be a sort of prognosticator, and anticipating what the most likely types of design changes are going to be while doing development, and designing software that will be robust enough to accommodate such changes with only a modest increase in time spent, without losing any work on design that has already been completed. Sometimes, particularly with an experienced programmer, or one who really knows the people who are likely to make design change requests, and so may be able to predict what they are liable to really want beyond what was stated in the functional requirements documentation, this kind of forecasting is within the grasp of a human being to accomplish But it's never easy.

  78. Only a problem for noobs. by Anonymous Coward · · Score: 0

    Get an experienced developer and you will get a very good estimate in no time. But maybe they are NOT taking about estimates but absolute numbers? Those you can not get no matter what. I think the biggest problem is that the developer gives a good estimate and the project manager/customer/manager hears absolute facts and gets pissed when the numbers are a week off.

  79. version control by bingoUV · · Score: 1

    Start using version control, and at least undoing becomes trivial.

    --
    Bingo Dictionary - Pragmatist, n. A myopic idealist.
    1. Re:version control by BronsCon · · Score: 1

      You still end up rewriting code. Version control is great for many things, including rolling back to a previous point in time, but please tell me how to undo something I did last week without rolling back everything I've done since. I'd actually really like an answer to that, with regards to Git, if you've got one.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    2. Re:version control by bingoUV · · Score: 1

      1. Using exquisite use of branching in git, it might be possible.

      2. In your example, there was nothing "done since" the wrong paint so it is irrelevant.

      --
      Bingo Dictionary - Pragmatist, n. A myopic idealist.
    3. Re:version control by BronsCon · · Score: 1

      My example was meant to highlight the fact that a single word change in the spec can mean having to redo work. No matter how easy it is to *undo* the work (in the case of programming, it's often much easier than in my analogy, but this is not always the case), the fact remains that the work must still be redone. Just because my analogy did not include having done work that needs to be kept, subsequent to having done work that needs to be redone, doesn't make my honest curiosity irrelevant; and your response seems to indicate that, save for having planned for that very occurance, it is indeed not possible (and even with planning, only maybe, if you're willing to create a new branch for nearly every commit... and you're lucky).

      Honestly, I was hoping you'd tell me it was easy. This is one of those instances where I'd jump for joy while screaming at the top of my lungs "I WAS WRONG! I WAS WRONG! THANK YOU, LORD, I WAS WRONG!" Not that I have a use for it at the moment, but it's come up in the past and I'm sure it'll come up again in the future.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
    4. Re: version control by Anonymous Coward · · Score: 0

      Easy. Use gitk visual tool
      1. Reset hard back to just before the commit you dont want.
      2. Reset soft just after that commit
      3. Commit the change

    5. Re: version control by BronsCon · · Score: 1

      And if I don't want to use a GUI? Seems your steps should still be applicable to the CLI. That being said, you're rewriting history when doing that, and that is considered a huge no-no when using Git, especially when you have a team of developers. You'll have a local branch without the commit you just skipped over, but everyone else will still have that commit in their history, meaning they'll all still have the "bad" code. It's probably fine if you're the sole developer, but it's generally not advised to assume that will always be the case. Methinks I'll not follow your advise on this.

      --
      APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
  80. Oh, fuck me, this old story again? by fair_n_hite_451 · · Score: 1

    This post gets repeated about once a year here.

    News Flash Developer types -- you are never going to see this in your lifetime. Estimates are a fact of life. Deal with it.

    If you are in an organization that has a problem with turning WAG estimates into hard deadlines and then bitching when the inevitable unfolding of the project changes the situation is a large way, then protect yourself by learning to speak to the project managers in their own language.

    Define some rough "degrees of certainty" around your estimating, and guidlines to the degree of accuracy you feel.

    Class "0" (when the project is in the approval stages) +200% / -50%
    Class "1" (when the requirements have been documented) +100% / -25%
    Class "2" (when the work packages have been built out) +50 / -10%

    ... or whatever your particular organization and SDLC model supports. And then, when asked to provide an estimate, communicate clearly as to which class of estimate you are providing. This isn't rocket science.

    --
    Reason why there is hope for the future generation #364:
    "I wish my grass was emo so it could cut itself."
    1. Re:Oh, fuck me, this old story again? by gnupun · · Score: 1

      Class "2" (when the work packages have been built out) +50 / -10%

      I hope you realize the task at hand has not been done before in the same way as Scotty repairing the warp drive or someone clearing dry leaves from around their trees. This software task has not been done before. So how exactly do you calculate X in your formula:
      X +50 / -10%
      ??

      Dozens of posts in this slashdot thread about "It's easy. Just multiply your estimate X, by 2, or 3 or 4." Fine, but how exactly do you come up with X other than pulling it out of your ass?

    2. Re:Oh, fuck me, this old story again? by kmoser · · Score: 1

      Dozens of posts in this slashdot thread about "It's easy. Just multiply your estimate X, by 2, or 3 or 4." Fine, but how exactly do you come up with X other than pulling it out of your ass?

      Experience, my friend, experience. Unfortunately most programmers rack up lots of coding time but they never seem to get much better at estimating how long something will take. My educated guess is that programmers tend to be overly optimistic about their abilities and too eager to please. Believe it or not, my estimates (and I've made hundreds, if not thousands, over the years) tend to be quite accurate. But I realize I'm in the minority.

  81. Manager:Why is your software taking so long? by Anonymous Coward · · Score: 0

    Me: Because I'm not making a fucking cheese sandwich!!

  82. Monte Carlo project estimation by Anonymous Coward · · Score: 0

    Give me a range for each task and I can tell you how long the project will take with high certainty.

  83. Asian cultures are strongly hierarchical. by Futurepower(R) · · Score: 1

    "This is a cultural thing. Asian cultures are strongly hierarchical: you always agree with the guy above you. Never argue."

    That's an important insight. I often talk about that with friends.

  84. Summary: Poor management, dishonesty by Futurepower(R) · · Score: 1

    Interesting.

    You said, "... poor program management, lack of requirements management, and often also marketing-driven decision-making."

    Overall, that is poor management of technical projects. The biggest single problem? Dishonesty, on several levels.

    The first step in improving management is to get everyone to understand that there is poor management.

  85. Re:Simple methodology - Sharing your SOW by kdiffily · · Score: 1

    Any chance you are willing to share your SOW template?

  86. Re:Simple methodology - Sharing your SOW by BronsCon · · Score: 1

    I may do so at some point in the future, since there seems to be some interest in it. I would want to run anything like that by an attorney first, since I'm fairly certain it does constitute legal advice.

    --
    APK quotes people (including myself) without context and should not be trusted. Just thought you should know.