Slashdot Mirror


Ask Slashdot: Are Accurate Software Development Time Predictions a Myth? (medium.com)

New submitter DuroSoft writes: For myself and the vast majority of people I have talked to, this is the case. Any attempts we make to estimate the amount of time software development tasks will take inevitably end in folly. Do you find you can make accurate estimates, or is it really the case, as the author, DuroSoft Technologies' CTO/Co-CEO Sam Johnson, suggests via Hacker Noon, that "writing and maintaining code can be seen as a fundamentally chaotic activity, subject to sudden, unpredictable gotchas that take up an inordinate amount of time" and that therefore attempting to make predictions in the first place is itself a waste of our valuable time?

41 of 222 comments (clear)

  1. Yes, but... by Anonymous Coward · · Score: 3, Insightful

    Try getting a contract awarded with "It's too chaotic to tell"

    1. Re: Yes, but... by tysonedwards · · Score: 2

      More often than not, specifications are general enough that you may as well be telling someone "I once saw a car driving down the road, and this is what I remember about it... build me one!" Where it's unknown what pieces you already have at your disposal, what parts need to be adapted, and what needs to be fabricated from the ground up.

      With clear, unchanging specifications on what is being built, than sane timelines can be given. When it's "smile and figure it out", than the timeline too is variable commensurate with the number of unknowns and undefined pieces.

      --
      Thirty four characters live here.
    2. Re:Yes, but... by ShanghaiBill · · Score: 2

      If software development was "chaotic", then it would be overestimated as often as underestimated. But that isn't true. Overruns are way more common.

      Here's a way to get better estimates: Instead of asking Bob "How long will it take for you to complete this?", ask Fred "How long will it take Bob to complete this?". By asking a 3rd party, you take away the hubris factor.

    3. Re:Yes, but... by bored · · Score: 2, Informative

      That doesn't work either, unless Bob is familiar with all the details of what need to be done, in which case your just as likely for it to be a "how long bob thinks it will take him" kind of answer.

      I have literally seen estimates of "two days" to write a firmware device driver for a network card from a manager that regularly wrote code. In the end the guy that ended up doing it spent close to a year before it reached the level of "just works"

    4. Re:Yes, but... by Dutch+Gun · · Score: 5, Insightful

      The problem with software development is that unless you've done that exact same task before, you really have no idea what's involved. And if you HAD done that exact task before, you wouldn't need to be doing it again, as you could re-use most of your previous work. Unlike with, say, constructing a building, once software is well-built once, it doesn't have to be built a second time, at least within the same company, or if its open source.

      Management is also to blame on occasion. I put together a schedule for a videogame project for a major publisher, and the schedule was rejected, saying it wasn't detailed enough. They wanted finer-grained breakdowns of tasks, so instead of one to two week tasks, they wanted one or two day tasks. The only problem: the game wasn't even designed yet - only a rough idea of the genre and licensed property we were using. So, someone (not me, thankfully) dutifully put together a bullshit schedule with fine-grained bullshit tasks, and as the due dates arrived, we simply checked off those tasks in our official project management software.

      In the meantime, we had our own spreadsheet with our real tasks and timelines that we used internally, although we tried to match up major milestones as best we could. Since it was a hard deadline, we finished the core game systems as soon as possible, ruthlessly cut extraneous features, and still delivered on time. I'm sure the publisher's producers still think it was their detailed scheduling that kept everything on track.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    5. Re:Yes, but... by Wootery · · Score: 2

      The asymmetry of mis-estimation is partly explained by a sort of optimism.

      Our instinct is to plan for no obstacles/distractions/complications, where in reality it's rare for work to proceed in this way.

      Another cause is that (as Dutch Gun points out) often in software development, you've never done a task quite like that before, so you can't draw directly from past experience.

    6. Re:Yes, but... by RabidReindeer · · Score: 2

      It isn't hubris.

      I can estimate fairly accurately. But Management/user grimaces and says "It can't take that long, All You Have To Do Is..." and forces me to chop it in half.

      Then when it takes twice as long as the accepted estimate, it's My Fault.

      I allow a fudge factor in my estimates. Even the simplest projects almost invariably develop complications. Plus I know that a good deal of my time is going to be spent in one small module finding that misplaced comma.

    7. Re:Yes, but... by utahjazz · · Score: 4, Insightful

      This is exactly right. Unfortunately so many people think that constructing a building is a good analogy for "constructing" software, and think the same methods and ability to schedule in detail apply. It's the worst analogy. A better one is, making a schedule for the invention of a flying car. You know exactly what you want it to do, but you don't know how you'll make it happen yet, and you certainly don't know the exact date when you'll have it all figured out.

    8. Re:Yes, but... by computational+super · · Score: 4, Informative

      partly explained by a sort of optimism.

      Well, maybe a little, but I think it has more to do with every request for an estimate being something along the lines of, "I'm not really sure what I want, and I need you to estimate it, but the budget only allows for two weeks, so you should probably not say anything more than two weeks." When we're young, this freaks us out, and we try to talk them back from the brink of insanity and get them to see that this is definitely more complicated than two weeks, but they beg, bully and cajole until you break down and agree, certain that you're going to be fired (from your first job!) after just two piddling weeks. So you put together what you can, it doesn't work, two weeks pass, you keep working, nobody fires you, nobody even notices that you slipped the estimate. You keep working on it, the boss keeps asking "is it done yet", you get really good at apologizing and explaining that the network didn't work the way you thought and the new version of the database is different than the old version in undocumented ways, and a few more weeks pass and you get something working, and they say it's shit, and you go back and make a bunch of modifications and they keep asking is it done yet and you keep apologizing, and three months later you actually have a decent working product, and nobody fired you, and the company didn't go out of business because you blew your estimate by a factor of 6 and everybody actually seems reasonably happy.

      And then they come you and say "I'm not really sure what I want, and I need you to estimate it, but the budget only allows for two weeks, so you should probably not say anything more than two weeks." And you start to protest, but then you remember last time, so you say, "yeah, sure, two weeks, whatever dude," knowing that it doesn't matter and gradually coming to the realization that you're just playing a game whose rules aren't written down anywhere, pretending that you can deliver anything in two weeks, knowing that they know you can't, but both of you are playing a game of chicken at the end of which nothing happens.

      And then after lather-rinse-repeat for 30 years, you go on to slashdot and you tell the young kids, "just give them the number they want to hear, nobody takes estimates seriously anyway" and some loudmouth PHB who figured out how to turn on his computer replies back "they're going to offshore all of you if you don't start producing accurate estimates because there are real-world consequences for missing dates" and you shrug your shoulders and go back to work because you know that the offshore people can't estimate any better than you can and the only people who insist that software estimation is realistic are the people who wish it was realistic, not the ones actually expected to produce it.

      --
      Proud neuron in the Slashdot hivemind since 2002.
  2. This always worked for me... by Anonymous Coward · · Score: 5, Interesting

    Take your developer's estimate
    Increase that by 40%
    Double that

    It seems incredibly arbitrary, but I have learned that the 40% covers testing and implementation, while doubling the entire amount allows for the customer seeing the first result and _then_ telling you what they really want.

    Try it, you'll like it

    1. Re:This always worked for me... by ls671 · · Score: 4, Insightful

      Back in the old days, we would simply tell our managers; "We will make it and then, we will tell you how long it takes".

      --
      Everything I write is lies, read between the lines.
    2. Re: This always worked for me... by Wycliffe · · Score: 2

      That's pretty close to what I've found too.
      Something that will take 2 days really takes a week. (2.5)
      Something that will take 2 weeks really takes a month. (Also 2.5)
      Even short projects seem to fit this 2.5 number where something that is suppose to take 2 hours generally takes half a day.
      The job itself actually only takes 2 hours but the debugging, testing, feature creep, and making it live always seems to more than double the time.

    3. Re:This always worked for me... by Anonymous Coward · · Score: 4, Funny

      Take your developer's estimate
      Increase that by 40%
      Double that

      It seems incredibly arbitrary, but I have learned that the 40% covers testing and implementation, while doubling the entire amount allows for the customer seeing the first result and _then_ telling you what they really want.

      Try it, you'll like it

      HA. You have no experience in management obviously. Here's how I do it:

      Take the developer's estimate
      Tell them it's too long
      Halve it
      Tell the customer
      Project gets behind
      Start the death march (60+ hours for everyone but management, we have families!)
      Project gets behinder
      Customer is pissed, but doesn't really have any other options
      Project comes out OK, but is much later than even the original estimate that was halved
      Customer is happy, management is happy, engineers are disposable
      Go to Hawaii with my bonus!

    4. Re:This always worked for me... by presidenteloco · · Score: 2

      I use "double it and add 30".

      The nice thing about this rule of thumb is it also works pretty good for converting Celsius to Fahrenheit.

      --

      Where are we going and why are we in a handbasket?
    5. Re: This always worked for me... by corychristison · · Score: 2

      My company does something similar.

      Basically just triple whatever estimate we come up with.

      This comes with a huge benefit: If it turns out we over-estimate, the client is happier with an earlier finish date, or we can put a little extra time/effort into something that just didn't feel as polished, and the client got an even better value for their money.

      We also have a policy to not bill over our quotes, so over-estimating is crucial. It holds us accountable so we don't bleed our clients and create bad blood.

  3. Yes, inherently unpredictable, needs percentages by SuperKendall · · Score: 4, Insightful

    Even with known and well understood languages/technologies/frameworks, you can and will run into glitches that can take days to complete something that was supposed to take hours - or even longer if the developers are not skilled in debugging and isolating problems!

    StackOverflow has helped the industry in this regard, because now a lot of times you can reduce some mysterious problem to a fifteen second StackOverflow search which instantly answers the issue. But not always, and there are always issues when actually programming any design that you can uncover hidden flaws and need to correct them.

    What I would love to see is some kind of approach that instead of a time estimate, gave a time along with a percentage of confidence. Two different tasks may seem to take about five hours, with one you are 90% sure it can be done in five hours, with another (like brand new code) it can be more of a 50% five hours. Then you could use this percentage to determine the actual areas of coding likely to cause schedule issues and monitor them more closely. The other nice benefit of this approach is that it factors in the actual developer understanding and abilities more than just a straight hour estimate. Maybe you even put a cap on how high a confidence level a developer is allowed to give until they have met given estimates a number of times already...

    Coding is a chaotic system, yes, but it's not like it's fully chaotic, and there are patterns within the chaos I think you could determine over time.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  4. I Have No Trouble Making Accurate and Precise... by CAOgdin · · Score: 2

    ...estimates of resource requirements (including time and budget) for software projects.

    However, making estimates of Resource Requirements that will be acceptable to Management...that's impossible. It's amazing how so many people who've never tried can make such ignorant demands...and think they're being "fair."

    I've done many project plans for clients, and when I give them the results, they always bitch. But, when the project is actually delivered, they finally agree that I was right in the first place. After that, it gets easier...which THOSE clients.

    Fortunately, I'm now retired, and no longer have to suffer these dolts. And, MY projects are quickies that work within a few days, and I love to tenderly "evolve them" over multiple successive iterations, adding new features as I go. My latest one is about 15 generations into development, and I may bring it to market if I can find a suitable partner. It's a novel approach to easily-recovered 100% daily computer backups. it's a much more practical methodology that doesn't require prescience before the first build is done to know every detail about the final product...it naturally evolves.

  5. You can get close, but it isn't easy by bobbied · · Score: 2

    Like any "process" you can do better but a couple of things have to be true...

    1. You had better KNOW what your development process IS (not what you document, or what you want but what it actually IS). Until you know how you develop, test and deliver software from start to end, there is no way you can estimate how long it will take accurately.

    2. You need to develop a method of coming up with your educated guesses that is repeatable. The process must allow you to estimate every step of your development process and how much each step is estimated to cost both in time, materials and labor.

    3. You MUST collect metrics that allow you to track actuals to estimate for each individual step in your development process though how ever far you get (hopefully to completion).

    4. Next time you get a contract proposal and you start though this process again, when you get to step 2, do your estimates, but then compare past projects data from step 3 and see if you need to add or subtract some fudge factors based on past history. Rinse Lather and repeat.

    Eventually, you will get better at the estimation and have more confidence in your ability to bid contracts....

    --
    "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
    1. Re:You can get close, but it isn't easy by bobbied · · Score: 2

      Good point...

      In my 25 years of doing this, I can tell you that the most often used way to estimate a project basically boils down to "How much can we get the customer to pay?" Time and time again I've sat though meetings where the sales person kept saying "we won't ever win the contract with that bid" followed by an order from the executives to bid lower. One time the executives took our estimate, subtracted 2/3rds of it and submitted that as the bid over our objections. We won and I quit as soon as I could get another job lined up. They obviously failed and the customer dropped the contract.

      Another time, I was asked when we could deliver said project to the customer.... I answered that it would take 12 months and we'd have a high probability 50% of being late. They wanted it 6 months sooner and the sales folks started yelling about how uncooperative engineering was... (really it was about yearly bonuses because they wanted a December delivery) I insisted that they where asking the impossible, but the executives insisted we try. We tried, worked 18 hour days for months, and failed to meet their deadlines. We did, however, almost exactly meet my original estimate (we beat it by 2 weeks). Of course I got blamed so I quit that place too, as soon as I could.

      So the moral of these stories is "Don't estimate by what the sales people want or agree to schedules just to meet the numbers the executives want" Because you will fail and you will be blamed...

      --
      "File to fit, pound to insert, paint to match" - Aircraft Maintenance 101
  6. depends on quality of inputs by gravewax · · Score: 2

    Quality of prediction comes down to quality of the information fed into making the prediction. Given all information up front with good BA work up front and requirements and scope that don't change I can generally provide good predictions that are close or that even come in under budget for our projects (good predictions always have some buffer built in for staff and technical problems).

  7. Progress Bars by mschaffer · · Score: 2

    Until an even somewhat accurate time is reflected in with the estimated time remaining progress bars there can be no hope for predictions of software development times.

  8. Each dev consistently off by a constant factor by raymorris · · Score: 2

    That's similar to what I've experienced and seen reported in studies. When I say "10 hours", that really means "10 times X hours", but that X factor is relatively consistent. Each of my teammates are similar - they are always wrong, but normally by the same multiplier each time.

    Developers tend to be reasonably good at estimating the RELATIVE amount of work, they can say "job A will probably take twice as long as job B". This assumes the work is broken down into pieces small enough to estimate. What they tend to NOT be good at is saying how many hours, days, or weeks.

    That's where Scrum "story points" come in. We assign each task a number of points. Historical data shows that we can complete 65 points in a two-week sprint. That's relatively consistent.

    Some tasks will take longer than expected, some less, but that tends to average out over two weeks of a four-man team. The four of us complete 65 points per sprint.

    1. Re:Each dev consistently off by a constant factor by vlad30 · · Score: 4, Interesting

      Developer’s and programmers have relatively poor time estimation skills. The one thing that makes them good is focus and getting lost in a problem often getting lost in the work and waking from this extreme concentration days later not realising how much time has passed and only counting the final Eureka moment where the programming was quick. Then when asked next time for a expected time they estimate the perceived time of hours not days or weeks.

      --
      Your'e all thinking it, I just said it for you
  9. Sorta, but... by w3woody · · Score: 2

    I'm able to estimate fairly well how long something will take for me, but with a bunch of proviso.

    • The code I'm asked to modify is written in more or less a sane way.
    • The specifications are relatively complete.
    • The interfaces are relatively "orthogonal"; meaning things are relatively consistent from page to page.
    • The specifications are not subject to random changes by project management, by product managers, by business people, by the CEO or his brother Bob, or at the whims of some QA person who can't read a specification.

    Sadly most projects fail one or more of the points above--which make most estimates absolutely worthless.

  10. Re:I Have No Trouble Making Accurate and Precise.. by Major+Blud · · Score: 2

    I've done many project plans for clients, and when I give them the results, they always bitch.

    Oh man this 1000 times, but in my case it usually tends to be management that does this. They ask for an estimate for something, you tell them 100 hours, they say that's crazy and change it to 40. Then when you end up getting it done in 80 (which is better than the original estimate), they complain about it taking twice as long as it what they budgeted. This appears to be pretty common, it's not just a single organization I've been at that is guilty of this (of course someone on here will say maybe the problem is with me, which hell it may be true now that I think about it :-)

    My gripe though is that if you already have a number in mind, why bother asking me to provide an estimate?

    --
    If you post as Anonymous Coward, don't expect a reply.
  11. Not just software. by AnotherBlackHat · · Score: 2

    Performance predictions have an optimistic bias.
    It's known as the planning fallacy
    It amazes me how people who should really know better fall for this.
    For example, if the last time you did it, it took 3 weeks, a good prediction is that this time it's going to take 3 weeks.
    Yet most people will predict less than 3 weeks - even if you point out the planning fallacy to them before hand.
    I can almost here the rationalizing; "It's not going to take 3 weeks again, because we aren't going to make the same mistakes again."

    But it's far, far, worse than just an inability to predict accurately.
    Frequently schedules are determined by need rather than reality. As in, we need this done by Tuesday - make the schedule accordingly.

  12. Re:Yes, inherently unpredictable, needs percentage by networkBoy · · Score: 4, Interesting

    This:
    I always provide my managers with confidence interval estimated times
    50% 10 days (assumes *nothing* goes wrong, no interruptions, and high code reuse)
    90% 15 days (assumes no catastrophic issues, no interruptions > 2 hours and only 5 of them, moderate code reuse)
    100% 55 days (the wheels fell off, severe schedule impacts of interruptions non stop, no code reuse)

    My boss laughed at my 100% estimate until it actually happened.
    A lead dev (who could be counted on for sound advice delivered in a belittling way) was struck down by lung cancer and ceased to exist. Another lead dev who was even brighter, and much nicer to work with was poached by a competitor, both within days of each other. The code was cutting all new territory in the system, so maybe 15% reuse? *and* some panicky manager started having $deity damned _daily_ meetings about it.

    We almost missed my 100% date, made it by about 16 hours.

    --
    whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
  13. catch-22 by bhepple · · Score: 2
    Estimate 4 weeks for the job. Then:

    Finish in 3 weeks: "it was an easy project after all! Your estimate cheated us"

    Finish in 5 weeks: "you're a crappy engineer! you cheated us by pretending you could do the job"

    Finish in 4 weeks: "that's suspicious! you obviously finished early and then goofed off. You cheated us"

    Moral: you can say how many or how long but never both! Or: it'll take between 2 weeks and 2 months, depending.

  14. preexisting malaise by epine · · Score: 2

    What he wrote:

    UPDATE: as a direct result of "the views espoused in my engineering article on Medium" I have been terminated from my contracting position at my current employer.

    What's he's hoping people read:

    UPDATE: solely as a result of "the views espoused in my engineering article on Medium" I have been terminated from my contracting position at my current employer.

    Unfortunately, version 1.0 typically falls under the thick veil of he said, she said.

    Here's the exact point where he wanders off into the weeds:

    Its intractability comes not from incompetency or from a lack of discipline, ...

    It doesn't take a 4-Sigmund review to spot the out-of-school litigation here. No one in a state of conflict appreciates the lateral spread of subtext.

    I know estimation is often used as a management bully club, and I've had some pretty dark thoughts about some indivisuals who have chosen to behave that way, but sorry, I'm just not feeling the sympathy in this instance.

  15. Solved problem by Orgasmatron · · Score: 4, Informative

    https://www.joelonsoftware.com...

    This is one of his blog posts that is almost an infomercial for his product, but he does describe the concept well enough that you could roll your own if you wanted to.

    --
    See that "Preview" button?
  16. Re:I Have No Trouble Making Accurate and Precise.. by scdeimos · · Score: 3

    Yes, this. Good management knows that you know your trade and accepts your estimates. Bad management thinks they know better and try to negotiate on estimates.

    Over the years I've found that feature development, particularly adding to existing systems, will get better estimates if we're allowed a spike to review the affected areas up front - this is when you discover unexpected dependencies or just sheer awful spaghetti. When you're not allowed to do this up front is when you come across the unexpected gotchas that blow out the best estimate you could provide at the time.

  17. Re:No, but they require planning by Tablizer · · Score: 3, Insightful

    The product was finished as described in the requirement documents, but generally didn't work 100% like the customer expected.

    Yip, generally it's easy to make an estimate for a clear specification. But, customers rarely know what they REALLY want until they see something in production. This is a very common problem. I don't know any easy solution to that: mind-reading machines don't exist.

    One partial solution is for the technical analyst to become a domain expert first. But obviously this is often not practical. Further, sometimes the main customer/manager wants something rather odd that is a quirk of their personality. You may build something that fits the domain, but they want to see their domain in peculiar quirky way.

    Another partial solution is "RAD": Rapid application development tools. Someone who knows the tool well can usually spit out something pretty quick and change it fairly quick.

    However, RAD tools are not known to be very flexible in the longer run, such as when UI styles and expectations change. They achieve RAD in part by marrying business logic to the UI. This marriage makes less "marshaling" code between the database, biz logic, and the UI; BUT also hard-wires it to UI assumptions. Keeping up with the UI Kardashians can be a major PITA. Just when GUI's were maturing, web came along. Just when web was maturing, multi-device-handling needs came along. The current "in" thing is going to be klunky because it's not mature yet.

    For now, it looks like we are stuck with some degree of organic meandering to get something the customer is actually happy with; but organic meandering takes more time and money and is hard to estimate up front.

  18. The solution by Kazoo+the+Clown · · Score: 2

    The solution is not to *impose* a schedule, but let the developers who are going to do the work make the estimate, and don't argue their estimate down. Others who have suggested multiplying by some factor might be a good idea as well-- but unless the developer has his own credibility on the line for the estimate, he won't put in the extra work to try to make up for a schedule overrun.

  19. Re:I Have No Trouble Making Accurate and Precise.. by vlad30 · · Score: 2
    A sign seen in some work practices Speed, Quality, Low Price you can only have 2, choose wisely.

    Yes when clients and managers choose often it speed and low price in the preparation then demand quality at which point the speed disappears. to maintain the price which rises anyway due to the extra time cost but this isn't passed on leading to failure.

    --
    Your'e all thinking it, I just said it for you
  20. OP fired because of this article by DuroSoft · · Score: 2

    (I am the OP)
    TLDR: lost my job for writing this article
    you can donate here: https://www.gofundme.com/lost-...

    While I list my title online as the CTO of DuroSoft Technologies, I am a part-time graduate student, and the vast majority of my income comes from a contracting position I (until just now) held at a popular SaaS company. I am not going to leak the name of this company, and I would politely ask people who reply to this thread not to speculate about about which company this might be, or otherwise go on a witch-hunt at this time.

    Effective immediately, I have been terminated from my contracting position at X explicitly because of the views I express in this article, and the article's subsequent popularity on HN, Reddit, Slashdot, Hacker Noon, Medium, and other sites. Earlier today the article was posted and discussed in my employer's private engineering Slack room. A highly positive discussion ensued in which a number of our senior developers identified some key points and takeaways we could use to improve our effectiveness as a team. The CTO intervened and put an end to the discussion with little explanation, even though it had been a very constructive conversation with zero negativity. Despite this, I was floored by the words of praise and encouragement I received privately from other developers, and fully expected my article to become the topic of our upcoming team-wide engineering lunch. Several hours later I was called into my supervisor's office and it was made clear that "your medium article goes against some of the core engineering values of our organization", and that my decision to publish this article was the deciding factor behind his decision to terminate my position. Within 5 minutes, I was kicked out of GitHub and slack, and escorted out of the office of a company where I had worked for the last three years.

    I am scrambling right now to figure out what my options are, my main concern being that I am already in debt, supporting my fiance, etc., and need to get my financials figured out ASAP. I just sent out about 20 applications to various senior software engineer jobs, but I likely will go negative well before any of them gets back to me. If you would like to support me while I figure out my options, and potentially help me fight for my right to intellectual freedom online, please consider visiting the gofundme link at the top of this comment.

    1. Re:OP fired because of this article by dgatwood · · Score: 2

      Legally, it's a grey area. If your employment contract has morality clauses, for example, you can be punished for things done outside of work. However, usually that is limited to situations where your contract explicitly states it, which usually happens when working for religious institutions (or, occasionally, schools). You can also be fired for actions that reflect badly on your company, but that assumes that A. people know the author works for that company, and B. they have reason to somehow connect the two. And of course, in at-will states, your employment can be potentially terminated for any reason, though in many, the implied covenant of good faith might give the author grounds to argue that this was without cause, done out of malice arising out of personal embarrassment on the part of the management team.

      The bottom line would be that the author should contact a lawyer who regularly deals with employment law in that part of the country, because whether he has a case or not is highly dependent on where the author is located, and I'm pretty sure it won't be open-and-shut no matter where the author lives. However, the fact that the author has not revealed where he works does open the opportunity for the lawyer to point out that bringing this to court will cast their company in a very bad light publicly, whereas an out-of-court settlement for... say ten years' salary will not. Depending on how terrified the company is, such (entirely legal) blackmail might actually be more effective than bringing a suit.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  21. A Microsoft Example by JBMcB · · Score: 2

    Sure, coding this up should be pretty quick, since I just need to plug A into B using X. .NET does W, Y and Z, so it should do X.

    Me: Wait, where is X?
    Microsoft: X has been deprecated in 64-bit.
    Me: Wait, why? W, Y, and Z all work, why not X?
    Microsoft: Nobody uses it.
    Me: It's listed as a feature in your docs! It's the recommended method! If people are doing W, Y and Z, they are definitely doing X!
    Microsoft: Whoops, wait a sec... There now they say NOT to use X as it's deprecated.
    Me: Fine I'll write a 32-bit shim
    Microsoft: .NET won't allow you to do that with X for security purposes
    Me: Holy cow I need to write a friggin' service and pipe crap to it just to get X to work?
    Microsoft: Or write your own implementation
    Me: The whole point of X is it's a pain in the neck to implement properly and I'd rather be spending time on user-facing stuff, rather than become an expert on X, which I'll only be using for this one particular feature. Fine I'm re-implementing, my original estimate has now increased 10x.

    Six Months Later:
    Microsoft: Good news, X has now been implemented in 64-bit! Download it here...

    --
    My Other Computer Is A Data General Nova III.
  22. One great req solution I was taught, and a backup by raymorris · · Score: 2

    > I don't know any easy solution to that: mind-reading machines don't exist.

    I came across a solution that works really well, whenever you can possibly do it. First, let's be clear about the most common method, which does NOT work. Most commonly, the users' boss talks to someone, maybe a product manager, about what they think the users need. Then the product manager or whoever talks to the developers about what they think the users' manager said. That doesn't work very well most of the time.

    Most of the time, new software is needed to handle a process that is currently being done by hand, perhaps on paper or in Excel. Maybe you're replacing legacy software. Normally, the job is getting done *somehow*. So go *watch* the job being done. If it's being done on paper, watch thr person do it on paper. Follow the piece of paper as it is filed with another department and they type the information into some computer system. While watching the person do the job manually or via the legacy software, ask questions and take notes. Then if possible try to do it once with them watching you and correcting your mistakes. Now you know pretty much exactly what's required to get that task done, because you've just done it by hand. Ask what kind of exceptional conditions come up - what kinds of weird things happen that cause a change in the process? Obviously you'll code for those specific exceptional conditions, but also that lets you know what general *types* of variation there might be, meaning where you should try to build some flexibility into your system. When you discover there are three different types of X, you'll build X modularly, knowing that another type of X may come up.

    If it's not possible to actually watch the line people doing the job, at least try very hard to get them on the phone. Talking to the actual users, asking them what's frustrating about their current process, will tell you a lot about the requirements that you won't get from listening to your boss talk about what their boss said.

  23. Yes, because... by MoarSauce123 · · Score: 2

    ....there are no accurate requirements or no requirements at all. If you don't tell devs exactly what to build they have a tough time estimating. Even when there are requirements, if there is nothing comparable done recently it is difficult. Besides that an estimate implies that it is NOT accurate! Anyone who takes estimates as fact is a fool.

  24. Done right, it SHOULD be unpredictable. by dpbsmith · · Score: 2

    If you're doing it right, you should never be doing anything twice. Anything you do should become a packaged and re-usable element that doesn't need to be coded again. I don't care whether you call it a subroutine, an object, or what have you.

    Software development, done right, should grow exponentially--with a highly fluctuating exponent. No task should be predictable because no task should closely resemble anything you've done before. If it does, you shouldn't need to develop new code, you should just be able to re-use old code.

    Well, OK, this is a gross oversimplification, but it does capture something fundamental about software development.

    In the past I've found that managers almost prefer to do thing repetitively, over and over, the same stupid way. They love what is conceptually close to a duplication of the essentials of the last job, because although it's highly inefficient, it's also highly predictable. They would much rather have a near-linear curve of accomplishment versus time, then a much faster, but much less predictable exponential-with-fluctuating-exponent curve.

    The typical manager would probably order you to recode the same thing ten times rather than "waste time" writing a subroutine.

    (To be fair--it's hard to write a truly re-usable piece of code and easy to waste time in the name of re-usability and write code that isn't actually re-usable).