Slashdot Mirror


MIT Studies Software Development Processes

IsoQuantic writes "A new MIT study (pdf) looked at SW development processes around the world. One striking difference that the researchers found for U.S. developers is the relatively small use of specifications before development begins. I can already hear my EP-zealot colleague chuckling in the cube next to me. (sigh)"

345 comments

  1. Not for me. But we learned by Allen+Zadr · · Score: 4, Insightful

    Specs!? Specs!? I don't need no stinking specificiations!

    I used to work in a very loose development shop. The only specifications that were ever written down were protocol specs - and even those were often "documented" in the form of a header file.

    I found some parts of this method usefull in that the specs were often written as as pseudo-code comments, and the actual code would be filled in later.

    However, eventually the development pool grew, and we got a few folks who couldn't follow this method, and we lost several weeks of work. After that standardized specificiation paperwork was produced for every project from that point on.

    Perhaps it's a lesson everyone will eventually learn. Perhaps I'm being an idiot.

    --
    Kinetic stupidity has a new brand leader: Allen Zadr.
  2. No problemo by nizo · · Score: 5, Funny

    Outsourcing these jobs should fix all these problems.

    1. Re:No problemo by Anonymous Coward · · Score: 0

      d'ay durk er jobz!

    2. Re:No problemo by Shaklee39 · · Score: 1

      Southpark reference from the latest episode if anyone didn't get this one.

  3. How Ironic by SavedLinuXgeeK · · Score: 3, Insightful

    In my software engineering class, my teacher vehemently states that Requirements are the Enemy of Design. You need to have an idea of what you are doing for the project, but you honestly cannot know how much space it will take, how fast it will be, etc. Its sheer folly. And who isnt to say that a customer may realize that they want it differently as the process is going along. Design is dynamic, always growing and changing. And the Open Source Community best represents this, because a project never ends, but continues to develop in a myriad of directions.

    --
    je suis parce que j'aime
    1. Re:How Ironic by roegerle · · Score: 1

      iterative and incremental. i hope i spelled those right =]

    2. Re:How Ironic by AmericanInKiev · · Score: 4, Insightful

      This is the real crux of the design people vs the architecure people.

      Requirement are how offshore houses get paid for uninspired work.

      You want software which will
      a. act like software already created by someone else (knock off)

      b. to be a metaphor for existing (and fixed) paperwork based processes

      Then you can consider a rigid design - which means you can consider outsourcing - but I ask, what novel piece of software was invented in a developing country?

      AIK

      (BTW the add on this page flashes my curser and disables my delete key - adds ok - flashy adds which interfere are a bit much)

    3. Re:How Ironic by clichekiller · · Score: 5, Insightful

      Requirements that are too rigid are bad. But so too are requirements that are too loose. You can't sit down at a computer to program without some idea of what result you want to end up at. Often proof-of-concept programs are helpful, but all too often management sees a demo that appears 80% feature complete and thinks the project is almost done. It leads to unrealistic expectations.

      The best trick I've ever seen for setting project goals is to sit developers down with business users or the end users of the product and have them observe work in action. This understanding can go a long way when a developer is back in the 'cube' for long hours of coding. Domain knowledge is critical to a developer. Otherwise you end up with some trully epic program that bears little to no pracitcal value.

      Requirements should be clear, reviewed often, and adjusted as necessary. Which requires a good project manager to really pull off succesfully.

      All in all programming is really a mixture of a lot of aspects and any one not in balance with the others will skew the results. Sometimes you'll still get something usefull, but more often then not the results are hideous. And management will always blame the developers and developers will always blame management, with the only difference being the developers don't have the ability to can management.

      --
      Sir, there is a dragon outside with an armful of armor. He's inquiring if we offer free refills.
    4. Re:How Ironic by Rob+Riggs · · Score: 3, Insightful
      In the business world, you are going to have to come up with a budget for your software projects. A project whose scope or length is not defined does not lend itself well to budget forecasting. And those project managers that cannot accurately forecast the time or cost of their projects are quickly without a job. And, oddly enough, many end up teaching at University.

      Thus illustrating some maxim or another...

      --
      the growth in cynicism and rebellion has not been without cause
    5. Re:How Ironic by metlin · · Score: 4, Insightful

      Quoteth the poster --

      And the Open Source Community best represents this, because a project never ends, but continues to develop in a myriad of directions.

      Yes, but thats both a blessing and a curse. The commercial customers want stability, not a build release everyday. Even amongst the Linux community, how many people use the latest release of any software? Most people stick the the most stable release - I still use Debian Woody.

      I have no problem with development, but the Open Source community should follow Debian's model and not release something (read Sarge) unless they're really sure its all done, and not release a version for every time feature add or small patch - have the fixes and patches as seperate entities and not as builds.

      This was a problem that was told to me by the CEO of a certain reasonably big product development software company - he felt that this lack of stability (or the perceived lack of) is what is scaring corporate customers away. And he was like, if Redhat withdraws support for their old distributions, it is indirectly asking us to upgrade - and that is not stability.

      Believe it or not, a lot of people out there compare stability to what IBM Mainframes provided - and sure, its not cutting edge and what not - but guess what? In a commercial enterprise, most often, it just needs to work and work well, for a lengthy periods of time. Period.

    6. Re:How Ironic by Morgahastu · · Score: 1, Insightful

      Open Source software is a perfect example of why you SHOULD plan and design. Most of it is so poorly thought out and looks like every feature was just slapped on.

      Design is dynamic for a prototype, not the final product.

    7. Re:How Ironic by Anonymous Coward · · Score: 5, Insightful

      Space and Time requirements ("The system shall reply to queries in no more than .2 seconds and write no more than 650 megabytes per day to the log")are non-functional requirements. Other requirements ("The control system shall have an option to backup the log to tape") are functional requirements.

      Simply throwing out all requirements because non-functional requirements are difficult to estimate is absurd. That's why you make requirements but you make them flexible and reasonable. Of course, you can say that the customer doesn't know what they want and even if they do they can't explain it exactly. That's why you iterate through the process.

      A Software Requirements Specification document may even be a legally binding document for a development team.

      To say that requirements are an enemy of design is incomplete - there is a fine line between requirements that are 'too rigid' and 'nonexistant'. Somewhere there is a nice balance between requirements that are harsh and strict and requirements that are so loose they might as well not exist.

      If you get the customer involved, iterate through the requirements (entire software lifecycle) process, and make reasonable requirements, you'll be much better off. Personally, I would rather have in writing what the system should do than just have some kind of vague idea.

    8. Re:How Ironic by Anonymous Coward · · Score: 0

      A Software Requirements Specification document may even be a legally binding document for a development team.

      Addendum: In today's world of Litigious Bastards(tm), you'll thank yourself if the customer puts what they want in writing.

    9. Re:How Ironic by Brummund · · Score: 4, Insightful

      That might apply to applications like Gaim, Mozilla etc., but if you're working on applications solving business problems, you'll have know what you are supposed to do and approximately how long it will take.

      You can't honestly expect someone to pay you $50-100/hour if you can't give an estimate. So, what is required to make a qualified estimate?

      IMHO:

      1. Gut feeling

      2. Some experience in the field

      3. Add enough time to cope for silly things in your code that stops progress now and then (Those really hard to find in-your-face bugs)

      4. Realise there's a difference between time worked on the project and calendar time. You'll find you're using a lot of time waiting for others, configuration management (just getting through to a test server might take days, if the people managing the routers etc are incompetent,overworked, unwilling or just plain lazy or you're introducing some new infrastructure (like a new app server) etc.

      5. Divide the project into phases. I usually estimate time to make initial end-to-end contact if it is some kind of integration job, then the main development phase, and finally testing and deployument.

      6. Google for known problems with the systems you are using. (I once did a job involving MQSeries, Java and Linux. A google search helped me identify the problems I might face.)

      6. Add 20%

    10. Re:How Ironic by Bart+van+der+Ouderaa · · Score: 2, Insightful

      Then IMHO you just found the reason he is teaching a class instead of having a job in the industry (what is left of it anyway).

      Requirements aren't the enemy but the boundries of your design. You need the requirements to know what to test. If you don't know how many users a system should support, how fast a user should be helped etc. you can't determine when a project is finished or has reached it's goals.

      Requirements and specs form the basis of the box within you create the application and your design. They describe the boundries and those boundries can be tested (an untestable requirement is not a requirement, please tell your boss).

      The fact that Open Source is never finished is partly because of this. Most is also due to the fact that most important OS projects started as research projects or proof of concepts or hobby projects (some of which keep to have huge warts until the redesign which breaks all the old stuff, when they find what are the right specs for what they have been building, start to document problems and ideas and start over).

      prototyping is a great way to get low level requirements and that should help getting a good user perspective.

      Basicly If you don't have requirements, you really don't know what you are supposed to do or when something is finished. "We're finished when we're out of time" is IMO a very weak reason, "We're finished because we've implemented the musthave requirements and are out of time" is better :-)

    11. Re:How Ironic by AmericanInKiev · · Score: 1

      Projects which are not archected for expansion will screech to a halt and become a boneyard for the project which is better architected.

      Its hard to say in advance what better architecture may prove to be.

      AIK

    12. Re:How Ironic by scrubmuffin · · Score: 1

      Interesting. Apparently your teacher has never worked on an embedded project in his entire career.
      Academics. Gotta love 'em.

    13. Re:How Ironic by deadlinegrunt · · Score: 5, Insightful

      Seriously not trolling.

      Care to point out a tiny sample of "most" Open Source that follows this norm?

      In the interest of being taken seriously I will point out a few that I know of that seem rather well thought out:
      fltk
      FOX
      gcc
      Oh yeah, here
      and others

      You were modded informative yet I see nothing informative in your post. Perhaps because I have contributed to some of these projects and I am jaded? Perhaps because more work gets done in these projects than the corporate arena of closed source that I used to work in and I might be close minded and missing your point? It's a possiblity but I will try to become openminded in case I missed the informative part of your post.

      --
      BSD is designed. Linux is grown. C++ libs
    14. Re:How Ironic by haystor · · Score: 1

      I'd believe your comment more if I'd seen more specced out project succeed, but that really hasn't been my experience.

      This has been my experience:

      Seat of the pants style project have a certain success rate. No specs are blamed on the failures.

      Specced out project have about the same success rate only they blame poor specs on their failures and lump all their failures into the first group.

      I'll believe in software engineering when you can show me some business engineers who can write up the specs. Until then all the project management theory seems to do is show where the lost money went.

      And before you respond, "you obviously haven't worked in an enterprise environment" or some other bullshit, I'll tell you that I have. Further, I've been witness to many rewrites of ad hoc systems which had wild success and needed to be done "right". The results are usuall disappointing.

      As to the topic of foreign development, I've noticed that companies seem willing to deliver specs to offshore development houses that they would never deliver to in house teams. Also, they are perfectly willing to put up with the mindless implementation of things that are plain wrong. Sure, it's a matter of cost, but it seems like a blind adherance to bad specs has actually trained people to delivering better specs. Anyone else notice this?

      --
      t
    15. Re:How Ironic by deadlinegrunt · · Score: 1

      Now something not well thought out was my HTML hyperlinking skillz - D'oh!

      FOX

      (Geesh, I set myself up on that one...)

      --
      BSD is designed. Linux is grown. C++ libs
    16. Re:How Ironic by haluness · · Score: 1

      >Then you can consider a rigid design - which means > you can consider outsourcing - but I ask, what
      > novel piece of software was invented in a
      > developing country?

      Vipuls razor

    17. Re:How Ironic by haystor · · Score: 2, Interesting

      Insightful?

      The statement is utter crap. A fair comparison would be between an open source program that has something ugly bolted on and a closed source program that doesn't have that feature at all because it's not released and you have no option to get it.

      Most open source software does what it's creators want it to do. Should they take the time to design an extensible system for everyone in the world to use for any possible use? Probably not, they just wanted it to do something. The fact that they make it available is a benefit and needs to be compared to the in house proprietary tools that aren't made available and are probably *at least* as ugly.

      --
      t
    18. Re:How Ironic by jsin · · Score: 1

      How about setting prices based on value instead of estimates that are rarely accurate to begin with.

      One interesting result of this approach is that you'll find projects that become unfeasable due to the fact that their value to the customer falls far below what you're willing to invest in the form of time, staff, etc. Not to mention that, at least in the consulting world, there is a tendency to "meet a client half-way" when doing estimates, rendering them even more inaccurate than they were to begin with.

      It also forces you to think about how the client will actually apply the solution instead of blindly following their specification which is typically filled with flaws that will only become obvious under this type of analysis. Much easier to address these issues up-front than after you've run with the specification for a few months.

    19. Re:How Ironic by po8 · · Score: 4, Insightful

      As someone who teaches SE at University, I say "amen" to the parent :-). Grandparent's teacher is either being misunderstood (likely) or an idiot. A post farther down in this thread points out that distinguishing functional from non-functional requirements is, uh, kind of important. So is understanding the idea of a "design constraint".

      Of course, "requirements are the enemy of design" sounds pretty cool, and it is true in a way. The important thing to notice is that at the end of the day, requirements always win. That is, no matter how cool the design is, if the product doesn't do what it is supposed to, it is useless. If the product meets requirements, it really doesn't matter what design got it to that point: it's fine. Given that, you might think that it would be a good idea to know what you need to build before you start designing it. You'd be right.

      Grandparent, make sure you aren't completely misinterpreting your teacher's position. If you are not, drop the course. In grad school, I dropped my SE course because my (mighty famous) teacher was so ignorant. It didn't preclude me from learning the field to the point where I teach regularly in a professional SE MS program.

    20. Re:How Ironic by Daniel+Dvorkin · · Score: 3, Insightful

      In the business world, you are going to have to come up with a budget for your software projects. A project whose scope or length is not defined does not lend itself well to budget forecasting. And those project managers that cannot accurately forecast the time or cost of their projects are quickly without a job. And, oddly enough, many end up teaching at University.

      Funny, I've had the opposite experience: my CS professors always wanted carefully planned projects with specified scope and length, but my boss has me working on an open-ended project that will probably go on basically forever. The more real-world development experience I have, the less impressed I am with any of the "software engineering" doctrine about planning and specifications, and the more value I place on just writing the damn code.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    21. Re:How Ironic by roman_mir · · Score: 1

      Well, those who can't - teach, those who can - do. The more different projects you do, the better you can predict how much time something will take, how fast it will be etc. People who become good at this are really valuable for development. Satisfying requirements - is what the projects are all about. I have been on a few projects where they just said: "Build us something and later we will fit it into our requirements", well most of these projects ended up dead.

    22. Re:How Ironic by kahei · · Score: 1


      Of course in the world of actual money, this philosophically satisfying approach often doesn't go down so well.

      Client: How long will the project take, and what is its scope?

      Proj Manager: It will never end, but continue to develop in a multitude of directions.

      Client: ...

      --
      Whence? Hence. Whither? Thither.
    23. Re:How Ironic by TopShelf · · Score: 3, Insightful

      In my experience, the failures in the spec'ed out projects that you describe occur because the Business Guys are responsible for writing the specs, and the IS Guys do the design to meet those specs. The problem is that the Business Guys don't think like IS Guys, and can't get down to the level of specificity required to better ensure success. The IS Guys then pick up these vague specs, do their best, but usually get caught in a cycle of rework as the users complain "you gave me what I asked for, but not what I need..."

      What is needed is for more IS analysts to actually work for the line organization, rather than within the IS department. When the analysts sit within IS, it's far too easy to lay blame on the users.

      --
      Stop by my site where I write about ERP systems & more
    24. Re:How Ironic by jpop32 · · Score: 0

      but I ask, what novel piece of software was invented in a developing country?

      Kazaa, Skype? Developed in Estonia, IIRC.

    25. Re:How Ironic by john82 · · Score: 3, Insightful

      In my software engineering class, my teacher vehemently states that Requirements are the Enemy of Design.

      There is a reason why your professor is teaching rather than doing.

      Most of software development in the real world is NOT a free-form pursuit of artistic expression. More likely you will find yourself working on software that is part of a larger system. And because it's part of a system, the components need to be able to work together on a number of levels. Lack of proper requirements management in a large scale software development effort is what leads to lawsuits. It also leads to solutions in search of a problem. VC-funded dot bombs that end up in the waste bin (instead of /bin). Further, if there are no requirements there's no way to test it. If there's no way to test it, you aren't going to be paid. That's life in the real world.

    26. Re:How Ironic by Metropolitan · · Score: 1

      Good requirements will save a project, poorly-written or incomplete ones can bankrupt a company.

      From the QA end of things, attempting to work with software that has no description outside a developer's head is nearly impossible. Yes, general usability is able to be studied, as is a general sweep through the overt customer needs, but getting into the basics of what the system is supposed to do depends on having that clearly defined before it's been built.

      Note I said 'defined', not 'designed'. There's a huge difference between saying 'the software shall do this single explicit thing (because of this regulation, etc)' and 'put the blue box in the upper left corner'.

      As with all things software, there's a balance between having every single aspect defined rigidly, and making it up as you go along. Getting that balance right requires creativity, careful thought, and a clear understanding of what the customer wants.

      -Met.

    27. Re:How Ironic by deadlinegrunt · · Score: 1

      Well said. I could not agree with you more. Of all the days I don't have mod points...

      --
      BSD is designed. Linux is grown. C++ libs
    28. Re:How Ironic by 4of12 · · Score: 3, Interesting

      Requirements that are too rigid are bad. But so too are requirements that are too loose.

      I like requirements that are rigid on the edge, that is where they meet the world.

      But then give me free rein to change ideas for the internal structure.

      Of course, it always helps if you know your customers well enought to anticipate the inevitable change request that will come down the pike. Then, you'll see if your internals can be readjusted elegantly quickly to accomodate the new exposed services they want.

      It's important to listen to customers, not just to hear what they're saying explicitly, but to get an idea of where they're going and what they might want in the future based on what they believe is important and valuable. Hint: customers/users may not just tell you explicitly what they think is important and valuable.

      --
      "Provided by the management for your protection."
    29. Re:How Ironic by HeyLaughingBoy · · Score: 1
      Requirements are the Enemy of Design.

      Perhaps I can offer an example of why requirements are useful. We build medical instruments and not surprisingly, we have a pretty tight development process. A few days ago a tester files a defect report and it gets assigned to me to fix. As I'm investigating, I wonder why the tester thinks the behavior (which I think is correct) is wrong. Because the test case explicitly states which requirement it is testing, I can track the requirement back to its source, and in this case, discover that it conflicts with another requirement (that's why I thought the behavior was OK).

      Now since we know where these two conflicting requirements are from, we can figure out what the intents were, and either decide ourselves which one is wrong, or at least who to escalate the problem to (in this case, a different department "owns" that requirement) for a final decision.

      Without a set of requirements, it would have rapidly devolved into a "he said, she said" battle to determine which behavior was right.

      As far as your professor's statement that you can't know how much space it can take/how fast it will be, I assume he's never done any embedded development. When you're building custom hardware, you'd better have a good idea up front how much space/CPU speed your application will need, because by the time it's half done, the hardware design's probably set in stone!
    30. Re:How Ironic by Kevin+Stevens · · Score: 2, Funny

      The IS Guys then pick up these vague specs, do their best, but usually get caught in a cycle of rework as the users complain "you gave me what I asked for, but not what I need..."

      Sounds alot like the discussions me and the compiler often have, though I tend to use more expletives....

    31. Re:How Ironic by dubl-u · · Score: 2, Interesting

      The best trick I've ever seen for setting project goals is to sit developers down with business users or the end users of the product and have them observe work in action. This understanding can go a long way when a developer is back in the 'cube' for long hours of coding. Domain knowledge is critical to a developer. Otherwise you end up with some trully epic program that bears little to no pracitcal value.

      There's an even better trick: put your development team in a shared workspace. Then make a domain expert the product manager and put them in the same room, so that if developers have questions they just have to look up and raise their voice a bit.

      It's fantastic. The closest we get to specs is whiteboard sketches and the occasional UI mockup. And that's all we need. The developers love it, because there's no guesswork involved. And the product manager loves it because he gets exactly what he wants without having to write phone-book-sized spec documents.

      On the topic of knowing the domain, I also strongly recommend the book Domain-Driven Design. It's a brilliant book on how to base your OO model on the thing that is least likely to change: the business domain.

    32. Re:How Ironic by pipacs · · Score: 2, Insightful
      ... but you honestly cannot know how much space it will take, how fast it will be, etc. Its sheer folly.

      Hard requirements like these can be very valid in some cases. For example "this software has to fit in the DVD player's available flash" or "this video processing can't be slower than 25fps". Or even "we must fit on one CD otherwise packaging is too expensive".

    33. Re:How Ironic by pixelpusher220 · · Score: 1

      And I wish you lots of luck when you are handed a project to maintain where someone "just wrote the damn code" with little regard to specs, requirements, or documentation.

      It's a long term view that needs to be maintained. Sure you can just write the code, but maintaining that code becomes much harder down the road.

      --
      People in cars cause accidents....accidents in cars cause people :-D
    34. Re:How Ironic by dubl-u · · Score: 2, Insightful

      In the business world, you are going to have to come up with a budget for your software projects. A project whose scope or length is not defined does not lend itself well to budget forecasting.

      Have you looked at the stats on how many software projects actually come in on time and on budget?

      As a profession, we'd be better off being honest about the fact. But it doesn't fit tidily into management spreadsheets, so an awful lot of people just make up numbers. Or worse, they are browbeaten into making the estimate match what the businesspeople want to hear.

      That's not to say you can't take an initial stab at the budget. But good development is essentially exploratory; it's a rare product that is exactly like the initial spec, and those products generally suck. Better to get an initial budget and then tune your process so you can stop development when you run out of money.

    35. Re:How Ironic by Pranjal · · Score: 2, Informative

      Then you can consider a rigid design - which means you can consider outsourcing - but I ask, what novel piece of software was invented in a developing country?

      I strongly disagree with that statement. I work in an software consulting company in India and I have seen examples of great pieces of software being designed in India. Mind you, these were not your run of the mill software projects, these were complex projects which solved complex business problems at the very heart of the clients business. Just because you don't see the applications or they are not visible does not mean they haven't been designed and developed in a developing country.

      Take for example FlexCube which is banking software developed and designed in India. Now this software has been voted the best a banking software for two consecutive years and is deployed in major banks around the world. (No I don't work for the company that developed this piece of software)

    36. Re:How Ironic by BurritoJ · · Score: 1

      I believe you mean Fox Toolkit....

    37. Re:How Ironic by TimTheFoolMan · · Score: 2, Insightful

      Fortunately, my house wasn't designed and built with this mindset. Hundreds of standards, necessary to guarantee my safety and the potential for reselling my house in the future, were all known to the various people that designed and built the house. That analogy doesn't always work, but in the case of a custom-designed home, it's pretty close. However, it does put the "cowboy architect" out of work, so where's the fun in that?

      There are clear benefits to Open Source Development methods, but blindly suggesting one approach for all projects is a bit short-sighted. I would suggest that your teacher spend some time working in the real world, where if you don't get a clear Requirement Specification from the stakeholders/customers, you'll be wasting away hours and hours trying to keep them happy, and keeping them happy is what pays your salary.

      Requirements, both System Requirements (operating system dependencies, existing protocols, legacy systems, and so on) and User Requirements (performance goals, UI expectations, and so on) should drive the Functional Spec ("what it will do"), which should in turn drive both the test plan ("does it do what the user wants?") and design ("how it does it"). If you choose to use "subcycles" as the survey describes them, or one big honkin' cycle, it matters little. These steps always exist when software engineering is taking place (as opposed to simply hacking away), whether you put these labels on the steps or not.

      To suggest that "Requirements are the Enemy of Design" is like suggesting that the "Bullseye is the Enemy of Aiming."

      Tim

      P.S. There are times that "Ready, Fire, Aim, Fire" is the right approach. However, you still have to know where the bullseye is, look to see if you hit it or not, and know what you did to aim in the place you aimed for the first shot.

    38. Re:How Ironic by amstrad · · Score: 1

      7. Profit ???

    39. Re:How Ironic by Eil · · Score: 1


      You're seeming to neglect just how large the open source community is. For every project you listed above as being well thought out, I could list a dozen more. However, the vast majority of open source projects *are* ill conceived and thrown together with little or no thought given to structure. For a very large sample that follows this norm just browse around freshmeat and sourceforge for awhile.

    40. Re:How Ironic by Daniel+Dvorkin · · Score: 1

      Notice I didn't trash documentation; that is one of the areas of software engineering doctrine I agree with. I try to document everything I do thoroughly, so that my co-workers (and eventually, successors) can see exactly what I did and why. It's the heavy emphasis on the prep work that I think is overrated. I'm not saying zero planning is a good idea, either; just that if you overplan, it's very easy to get caught up in an endless maze of "process" without actually ever getting anywhere.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    41. Re:How Ironic by Fearless+Freep · · Score: 2, Insightful

      [i]Often proof-of-concept programs are helpful, but all too often management sees a demo that appears 80% feature complete and thinks the project is almost done. It leads to unrealistic expectations.[/i]

      Nobody would look at at architects model of a bridge and say "that looks good, go toss it in the river and we'll use it", but we seem to do it all the time in software

    42. Re:How Ironic by Anonymous Coward · · Score: 0

      I teach regularly in a professional SE MS program

      I expect this is one of those times when "MS" means "Master of Science" and not Microsoft. Yes?

    43. Re:How Ironic by Anonymous Coward · · Score: 0
      And those project managers that cannot accurately forecast the time or cost of their projects are quickly without a job.

      ... you must be new to software development...

      Seriously, I wish this was true, but it is not. What usually happens in bigger corporations is that what IS expected is for (project) managers to quickly and efficiently write up proposals, with high-level of implied accuracy. What is (alas!) seldom done, is to inspect afterwards, whether they had ANY relationship to what really happened. In fact, people with not enough knowledge and experience often give impression of getting most accurate estimates up-front... but that's because they "don't know what they don't know"; and THAT is scary for veterans like me.

      PMs that really know what they are doing, and want to do things efficiently know that estimating first immediate parts is much much easier, and results much more accurate, than next things. So while I can (I'm just a lead, not PM, but have done this often enough to say I can) estimate what can be done in next 1 to 2 months, within a week's accuracy; I can only give "3 to 6 months" estimates for bigger chunks. It really is all part of semi-chaos theory; just like with weather forecasting (and to large part, for similar reasons!) can be done fairly accurately for near future, longer-terms ones are little better than doing coin tosses.

    44. Re:How Ironic by deadlinegrunt · · Score: 1

      Where to begin:

      I _would_ conceed to your point but I don't think you have made one. In fact, if anything, I think you have missed the point.

      You are comparing things to what? Do closed source or in-house proprietary projects have any "open" resources in which a comparison _could_ be made? Does that mean that they do not exist or "*are* ill conceived and thrown together with little or no thought given to structure" in any less fashion? The fact of the matter is they are indeed suspect to the very same observation you have made. Prove me wrong with examples that are relevant. In the mean time I am going to stick with my empirical knowledge of both worlds since I have first hand knowledge of each.

      Regardless nobody has reputed the fact that crap exists in either camp nor has anyone proved that closed source is a model to follow for development as oppposed to an open source model. What has been proven is that forethought and planning, even if only in the smallest detail is never a wasted effort. As with anything, moderation is the key no matter which side of line your lean towards; plan too much and your cutting edge R&D idea will stagnate before it starts to grow roots. But this isn't the issue I took insult too. It was the ignorant remark that "foo bar & qux" is the way _NOT_ to do it with absolutely no facts to base that on.

      The real truth here is that open source, with all of its warts is open for inspection, not just source code. That fact alone leaves a strong debate that the old-fashioned "tried and true" way of closed source development is the best way of keeping up with the status quo. This may be stretch as I don't communicate the best way but closed source is just now coming around to having the end users more involved with the iterative development process. Open source has always been that way if you really think about it. (SARCASM ALERT) But yeah, Open Source is not the way to model development. (Again, this isn't directed to you, it's the parent I responded too)

      As an aside I will commend you for at least making an attempt to qualify your perspective. That in and of itself is worth the informative and insightful modpoints the parent received instead as well as who my response was directed at. This also sums up my /. diatribe. Thanks for playing...

      --
      BSD is designed. Linux is grown. C++ libs
    45. Re:How Ironic by Anonymous Coward · · Score: 0
      To further summarize what you say is that end-to-end cooperation is absolutely necessary to efficiently implement what customer really needs. Whether titles are business analysts, architects, developers, what it comes down to is that more middle-men you have, more the message mutates, end-to-end.

      Not surprisingly, that's why Agile approaches (XP, Scrum, ...) work more efficiently than more traditional, dead-tree oriented approaches. They emphasize compressing that long end-to-end chain, as much as possible, as well as focusing on actually solving the problem through co-operation.

    46. Re:How Ironic by iabervon · · Score: 1

      It's important to have a set of stable releases and a set of development releases. That way the user can decide whether they want to use the software or whether they want to participate in the development process. In the Open Source process, anyone can pick either, so the choice has to be made explicit and not easy to overlook. In the closed source process, only special users get to see the development releases, and they know from how they got the software what they have.

      As for support, the people who make IBM mainframes also produce and support complete Linux-based solutions. I think that it's kind of silly for corporate customers to talk to Red Hat when they want to get a system which will remain supported forever, and to think that Linux is insufficient to the task, when IBM is available to provide that sort of thing. Sure, Red Hat will be actually providing the version of the software you get initially and doing the support for the beginning, but IBM is the company that will make sure that the problems you have in ten years get solved, either by managing Red Hat for you or by doing the work themselves.

    47. Re:How Ironic by Anonymous Coward · · Score: 0
      Design is dynamic for a prototype, not the final product.

      I hope you are not a softare engineer; since this is the single most stupid comment made so far.

      Design has to be dynamic (flexible); otherwise developing new revised versions of software would become impractical. Just like in biology, where the only stable state is death, in software any living system undergoes numerous design and implementation changes over time.

      If you were saying that such inevitable need for change has to be controlled, you would be right: no one likes uncontrolled ad hoc changes to core design. But without refactoring, and, when necessary, re-design, product will just degenerate into unmaintainable state, due to new requirements it inevitably has to meet, if it's to continue to be succesful product.

      And finally, the reason you believe Open Source products have more uncontrolled changes than closed ones is just because the process itself usually is open. If only you knew processes that happen in software companies... (I know, having worked for a couple of them, over past 10 years).

    48. Re:How Ironic by The_Quinn · · Score: 1
      you honestly cannot know how much space it will take, how fast it will be, etc.

      It sounds like you are talking about performance requirements, which are only 1 (potentially small) part of the overall requirements. The requirements are supposed to capture what the product should do based on business domain expertise, i.e. what the customer actually needs. A developer would not be the primary generator of these requirements, but rather more like someone in marketing or a systems engineer.

      Maybe your teacher doesn't have a lot of experience developing in the private sector...

    49. Re:How Ironic by Tattva · · Score: 1
      Check out "IEEE Recommended Practice for Software Requirements Specifications," IEEE Std 830, 1998. Requirements are supposed to be only about the external, observable aspects of the software. You should not put in arbitrary design constraints, only constraints externally imposed on the design (say, if management says all development must be in Java.)

      Your design is a result of your requirements, your design isn't your requirements.

      Dave

      --
      personal attacks hurt, especially when deserved
    50. Re:How Ironic by po8 · · Score: 1

      Yes :-). Should have written M.Sc., but it never occurred to me.

    51. Re:How Ironic by AmericanInKiev · · Score: 1

      Isn't Kazaa a file share aka Napster invvented I believe - now let my think - og yes - invented in the United States.

      And BTW - Estonia is in a corner of the world I would not considered developing.

      Estonia is an emerging FSU

      Hungary, Poland, Slovakia, Slovenia, Lat, Lith, Est. These are all very attractive countries with more charm and culture than most (red) states.

      So let's ask again - which novel software invented in developing country?

    52. Re:How Ironic by kpharmer · · Score: 1

      Ok, but what about objectives?

      Users often have objectives for the solution that can't be easily translated to requirements. These involve concepts like:
      - adaptability
      - manageability
      - scalability
      - usability

      Since these objectives are nearly impossible to test - they are traditionally left out of the requirements. And the resulting solution might map well to the requirements documentation - but map poorly to the objectives.

      The development team will then often walk away from that engagement declaring victory or "Mission Accomplished". And then when they discover that the user hates their solution, won't give them a reference, and won't re-engage for more work - then they have to come up with excuses like:
      - we had poor requirements
      - the users needs changed
      - the users don't know what they want

      What they're failing to recognize is that:

      1. the users knew their objectives - but the developers process was incapable of using objectives

      2. requirements gathering is the single most error-prone/defect-ridden, expensive, and inaccurate phase of the software life cycle.

      3. users are are seldom industry experts/SMEs/Gurus/etc. They often only have experience with one instance of the business functionality that they are now providing objectives for. A process that relies upon them to be experts is bound to fail.

      4. the business changes quickly, and some requirements can't be known until users get a chance to play with the result.

      So, bottom-line is that requirements-oriented software development just doesn't work. About the only thing it might help you to do is to protect yourself in a civil liability case when your disgruntled customer sues. On the other hand, focusing on those requiremnts (the letter of the agreement) rather than the objectives (the spirit of the agreement) is probably why they are disgruntled in the first place.

    53. Re:How Ironic by AmericanInKiev · · Score: 1


      And Is Flexcube a version OLAP Cube?

      And Was OLAP invented in the United States.

      We may be losing our lead in innovation - but I suggest that for software - the United States is where new computer ideas start.

      For transportation on the other hand we suck suck suck.

      AIK

    54. Re:How Ironic by Anonymous Coward · · Score: 0

      When somebody asks me for an estimate I try to think from all angels the work and problems I may face and then multiply the amount of hours with 3. This far it has been a very accurate method.

    55. Re:How Ironic by mmss · · Score: 1

      > Then you can consider a rigid design - which means you can consider outsourcing - but I ask, what novel piece of software was invented in a developing country? What about the Open Source movement? Doesn't use a formal approach and it expends almost all of this time playing catch up with Closed Source softwares.

    56. Re:How Ironic by AJWM · · Score: 2, Interesting

      In my software engineering class, my teacher vehemently states that Requirements are the Enemy of Design.

      Good grief. Has your teacher ever designed anything in his (or her) life? I guess it's true what they say about "those who can't do".

      You need to have an idea of what you are doing for the project,

      In other words, you need to have an idea of what is required.

      you honestly cannot know how much space it will take, how fast it will be, etc.

      Those aren't requirements (except, perhaps, for an embedded or real-time system), those are specifications. Requirements != specifications, although there may (depending on the app) be a requirement that it meet certain specifications.

      Design is impossible without requirements. Oh, you might throw some code together (there's a great cartoon I've had for years, and have used in a few presentations, reviews, etc. Room full of programmers at their computers, one guy is leaving the room and turns back to say "You guys start coding, I'll go up and see what they need."), but in the absence of an idea of what the customer wants (ie, his requirement), you might as well just be writing yet another "Hello, world!" program. It'll be about as useful.

      Now, some of the extreme/agile/this-week's-buzzword programming folks might like to think they're doing something different. The only difference between that and the older formal "waterfall" method is that instead of assembling the requirements -- stories -- into one document before design and coding starts, they do it incrementally: get a requirement, write some code, test it out; get another requirement, write or modify the code, test it out. Lather, rinse, repeat.

      Now, that latter method certainly has its advantages when "a customer may realize that they want it differently as the process is going along", because it does allow the design to be dynamic. But the design always tracks the customer's (possibly changing) requirements. (Or should, anyway.)

      Sometimes, though, the customer knows what he wants and it isn't going to change -- a guidance program for a VroomStar I rocket is going to have well nailed-down requirements, and specifications, since the guidance computer, power available, characteristics of the rocket, etc, are going to be well established ahead of time (with long lead times) and very difficult to change. Sure, change will still happen, but it's not like the customer is going to launch a few VroomStars with a half-complete version of the guidance package and then write up the next stories for the development team.

      --
      -- Alastair
    57. Re:How Ironic by Eklypz · · Score: 1

      Aren't the IS guys basically compilers for us Business spec writers? :)

      --
      Life is everything but nothing.
    58. Re:How Ironic by computational+super · · Score: 1
      Nobody would look at at architects model of a bridge and say "that looks good, go toss it in the river and we'll use it", but we seem to do it all the time in software

      Well, the obvious moral is, build little tiny prototypes. Put them in a Barbie house to make them look like they're being used.

      --
      Proud neuron in the Slashdot hivemind since 2002.
    59. Re:How Ironic by gtaluvit · · Score: 1

      You had Marty Hall didn't you? :p

      --
      - gtaluvit (prnc. GOT-tuh-LUV-it)
    60. Re:How Ironic by HBPiper · · Score: 2, Insightful

      Requirements are a way to know you are done! If you start with funtional requirements, write a functional spec and then move to a Design Spec then writing the test plan is pretty straightforward. You have an idea of where you are going and you can put a stake in the ground on what needs to be done for the initial release, and if the stuff actually works. This also gives you a baseline to refigure things out when you have to revisit it after two years. One of the biggest problems I have encountered with poorly specified projects (and I have fixed several) is knowing when things are working properly and when you are done.

      People who do not believe in software design and specs are either fearful of losing their jobs due to lack of knowledge superiority, or ignorant of the benefits of having a plan. In almost every case I have been involved in, a clearly thought out design plan has resulted in on-time delivery of a product that exceeded the customers expectations. And in every case that the design plan was hatched, the customer was not happy and the delivery was late.

      And my golden rule for internal software tools is "If it is useful to you, it is going to be useful to others. Tools all too often become products, so spend some time on the design now."

      --
      "I went on a diet, swore off drinking and heavy eating. And in fourteen days, I had lost exactly two weeks. Joe E. Lewis
    61. Re:How Ironic by drxenos · · Score: 1

      Then your teacher is an idiot. You have to have requirements that explicitly state what the system is to do. This is what you test to in order to validate your software to your customer. I write real-time embedded systems with limited memory resources and hard dead-lines. If you don't know how to quantify how large your program will be or if it will meet its deal-lines, don't come work for me.

      --


      Anonymous Cowards suck.
    62. Re:How Ironic by rjshields · · Score: 1

      6. Add 20%

      I usually find 100% - 200% to be more realistic. I suppose that depends on how thorough and accurate your estimate is.

      One thing that can be handy during estmiating is a risk register eg. factor X could go tits-up and cost me Y amount of time to resolve.

      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    63. Re:How Ironic by AmericanInKiev · · Score: 1

      Bear in mind that the budgget and hence the hours devoted to open source is fraction compared to closed source.

      When fractional can keep pace as you suggest - and i suggest linux is not keeping pace - it is building a more future proofed foundation - the advantage will come later when MS runs of options for bad security - the world starts to use computer for more than excersize - look at voting - nobody will touch it because its full of holes.

      What about banking - this should also be tight - the fact is my bank can't figure out how to cut off the leaches that are spamming my bank account ($50 here there etc)

      MS software might not be the thing when software is necessary.

      Its a great piece of entertainment however and while that is your business - may I be the first to recommend it.

      Oh excet that leading entertaniment isn't using it either (Linux render farms at pixar?)

      AIK

    64. Re:How Ironic by AmericanInKiev · · Score: 2, Insightful

      When you're done they fire you, they bury you, or they replace you. If you did the first job right - then the improvements will follow. If there is no room for improvement then you are living in a communist state or operating a monopoly. Competition endures the need for continual improvement.

      My position is that specifications can hide the need for flexibe architecture.

      I like your golden rule.

      I worked at a company that basiclly fired me for automating the code generation of mid level tiers because it took 5 days longer than writing yet another copycat day class might have taken.

      (got a raise at my next job though)

      AIK
      AIK

    65. Re:How Ironic by Oligonicella · · Score: 1

      I'm joining the chorus. You're teacher is incompetent to teach that course.

      I implemented over 300 modules in 6 systems for a K.C. bank and each and every time I worked out the design according to things that were required.

      The menuing system had to handle 100 simultaneous submissions, the fiching program had to run in under two hours, etc.

      I indeed did not know "how fast it will be", but I friggin' knew how fast it had to be.

      I did not know "how much space it will take", but I had to know how much space it could take.

      "Its sheer folly."
      No, it's experience.

      "customer may realize that they want it differently as the process is going along"
      Get pedantic, why don't you? You think they're going to change from a funds management system to an on-line airline ticket one? No, only minor changes to what they want, not major.

      "And the Open Source Community best represents this, because a project never ends..."

      That, by the way, is one excellent way to get sued if you're writing a system on someone else's dollar.

      Get a different teacher.

    66. Re:How Ironic by jmh_az · · Score: 2, Informative
      Whew... I'm glad your instructor doesn't design the embedded software for digital engine controllers on commercial jet aircraft (I do, BTW). The requirements documents for these are typically 200+ pages in length, and the code ranges between 10K and 50K lines of either Ada or C (with some C++ for those who like to chase fads and make their own lives difficult). If commercial software was developed with the same attentiveness to requirements and verifiability as the stuff used to keep you and your fellow passengers from becoming greasy spots in some corn field in Kansas we wouldn't be spending so much time whining about bugs and bloat in our desktop and enterprise apps. We wouldn't have to.

      Requirements are both good and necessary, but they do require something that I've noticed a severe lack of amongst programmers: Discipline. The discipline to develop preliminary functional models, perform up front what-if analysis, do the FMEA's and maybe a few MSC models for the interfaces. Then map it all back into what the customer says they want and walk them though it. Sound like a lot of work? It is. It also requires a modest amount of negotiating skill and the willingness to both educate the customer, when necessary, and the determination to stick to your guns when you know you are right, always.

      I can hire truckloads of happy little coders who don't have a clue about requirements, and then train them (which I often have to do), but I treasure the software engineer who knows and understands the value of requirements, knows what the term "traceability" means, and can effectively translate the customer's needs and wants into a set of models and requirements definitions that accurately and adequately capture the design objectives.

      And, yes, things do change during the course of a project, and new things are discovered. That's why the requirements specification is a "live" document subject to continuous review, and there are things called "derived requirements".

      And, just one other thing to consider. If you assume a unit cost of defect removal of one (1) at the coding stage, then it's been shown that finding and removing a defect at the requirements stage only costs around .2! That's right. It gets better. Over half of all errors in SW are introduced at the requirements stage. Not doing any requirements? Then brace yourself for some long and agonizing test and debug sessions. Don't believe me? Take a look at this report:

      NIST study on software defects

      It's big, but chock full of good information.

      For an introduction to requirements engineering, this is one of my favorite books:

      Davis' book on software requirements techniques

      And lastly, here are some links for the curious:

      FMEA/FMECA info
      Good article on DO-178B
      Some more info on DO-178B
      A paper on requirements traceability
      Info on SDL and MSC

      Then again, I guess there are some folks who enjoy whacking away at their software, growing it "incrementally" (no relation to the formal model, BTW), and spending their time at the back end of the project listening to the customer scream about missed delivery dates while they frantically do the compile-test-debug dance over and over. For myself, I'd rather see it just work with a minimum of verification hassle from the outset and then get on with my life.

    67. Re:How Ironic by nateb · · Score: 1

      Those who can, do. Those who can't, teach.

      --
      -- Nate
    68. Re:How Ironic by GileadGreene · · Score: 1
      Design is impossible without requirements.

      Amen to that! Requirements define the problem. The design solves the problem. The latter inherently cannot exist without the former. If you aren't designing in response to a requirement, what are you designing for? In all likelihood some vague notion of what you think the problem should be, rather than what it really is. With the result that you will most likely solve the wrong problem.

      This is not to say that the very first set of requirements that are developed should be taken as gospel from then on - your understanding of the problem will inevitably evolve over the course of the project. But you do need to have some kind of formal and agreed upon definition of what that problem is at any given instant.

    69. Re:How Ironic by Anonymous Coward · · Score: 0

      Projects which are not archected for expansion will screech to a halt and become a boneyard for the project which is better architected.

      Yeah, that whole Linux thing with its unplanned but ever-evolving design just doesn't stand a chance...

      There are alternatives to big upfront requirements, architecture, and design phases: Is Design Dead?

    70. Re:How Ironic by tupps · · Score: 1

      Going back 20 years my guess is that there were people saying the same thing about the Japanese and cars/electronics.

      --
      Go out and get sailing!
  4. Re:Not for me. But we learned by Anonymous Coward · · Score: 3, Insightful

    when working in R&D, the specs is always a step behind the cutting edge...

  5. That's because in the US... by the_skywise · · Score: 5, Interesting

    Our managers don't GIVE us development specs, or keep changing the specs every 5 minutes so that a formal document is worthless.

    Or, in my personal experience, we stick to a formal document for 3/4 of the product then get hit with feature creep for the last 1/4 which makes the product late, buggy, over budget, etc, etc, etc

    Sure, I've tried instituting "processes" and management's alwasy keen on the idea. But when push comes to shove, >poof.

    The only time management ever stuck with a process was the medical company that, by law, required governmental oversight that demanded process. And you don't want to know how much we skirted process anyway. (Most of the times we built the product first, then wrote the "planning" documentation second.)

    1. Re:That's because in the US... by 0x0d0a · · Score: 1

      The only time management ever stuck with a process was the medical company that, by law, required governmental oversight that demanded process. And you don't want to know how much we skirted process anyway. (Most of the times we built the product first, then wrote the "planning" documentation second.)

      Oh joy.

    2. Re:That's because in the US... by JosKarith · · Score: 5, Interesting

      God, don't talk to me about feature creep. ATM I'm involved in writing a stock control system and every fortnight there's a meeting about it - that tends to tack on 1 week of re-writes, 1 week of error testing last meeting's new features, and 1 week of new features...
      and they wonder why no progress is ever made

      --
      'Don't worry' said the trees when they saw the axe coming, 'The handle is one of us.'
    3. Re:That's because in the US... by Proaxiom · · Score: 1
      Sure, I've tried instituting "processes" and management's alwasy keen on the idea. But when push comes to shove,

      Processes should be designed to fit the way you work, not the other way around. Trying to force everybody to do things differently than they have already been done by writing a document is never going to work.

      But there are development models that try to accomodate those problems. Try to find one that fits the way your development projects unfold. For instance, Extreme Programming (aka 'Agile Development') accomodates constantly changing specs quite well.

      The funny thing is, there are a number of processes used in industry that describe very well what tends to happen (and can structure the chaos that can ensue), but management, which often causes the chaos, tends not to like them. Management usually prefers rigid processes that tend to get thrown out the window the first time a project goes into crunch mode.

    4. Re:That's because in the US... by Fermata · · Score: 3, Insightful

      This has been my experience as well. I've worked as a software developer on dozens of consulting projects in North America and Western Europe, and the US managers prefer to work from "intuition" and "feel" rather than the rigorously specified requirements and design that the Europeans insist upon.

      I personally believe that there are merits and drawbacks to both approaches and that the ideal is somewhere between formal and informal approaches.

      The informal, intuitive approach can result in a deliverable that is a much closer fit to the actual needs of the client - not just what they think they want or what they can express in words. A good informal manager circulates through the entire target organization from management, to accounting, to the IT department, to the users, and sometimes even to the client's own customers. Through a process of information osmosis, the manager constructs a feel of what the deliverable really needs to be and directs the team accordingly. Obviously, this approach works best when the project manager is damn good (sharp *and* experienced) and the development team is small and works well together. The main drawback, of course, is a tendency to chaotic development as things are written and rewritten to hit a moving target.

      The formal approach is reliable, predicatable, and safe. Maybe what you deliver will not be a perfect match for the unspoken requirements that inevitably surface during the project lifecycle, but at least you have a better chance of delivering *something*.

      I wonder, however, with the growing pool of cheap outsourced labor, if the paint-by-numbers formal software approach is really the best answer for the US going forward. If a project is specified in sufficient detail, then anyone can do the development. Perhaps the intuitive, informal approach is the only competitive advantage a US team can offer going forward - a dream team of software magicians rather than a clockwork team of software engineers.

    5. Re:That's because in the US... by Malc · · Score: 1

      I think that what's required are good managers who understand the implications of feature creep and are able to stand their ground and insist that new features will go in the next release. Better to release something on time that works, even if the feature set isn't good enough than break your backs to produce something full of bugs - you end up having to make another release anyway. Better to do it in a controlled and predictable way.

    6. Re:That's because in the US... by johnkoer · · Score: 1

      I see this all the time. Managers (and Sales People especially) love to state the fact that the company operates with standards and a development process, but when push comes to shove, they want it done yesterday and they don't care what it takes to get it done.

      Many Companies (not all, but many) in the real world don't want processes or system verification, because then they would lose out on all of that money they make by selling support contracts.

    7. Re:That's because in the US... by dubl-u · · Score: 1

      Sure, I've tried instituting "processes" and management's alwasy keen on the idea. But when push comes to shove, poof.

      Then institute a process that works with their desire to change things, rather than against it. All of the agile processes, especially Extreme Programming, are designed to embrace change, rather than resisting it.

      For developers, it's much more fun. With a traditional spec-driven process, the developer's job is to say no. With an agile process, you get to say yes. Or, more accurately, you get to say, "Yes, but pushing that feature to the top means you'll see other features later." It makes scope control their problem, rather than yours.

    8. Re:That's because in the US... by Java+Ape · · Score: 1
      Amen. I worked at a small shop with a half-dozen code wizards. Very loose, and VERY productive. Many fair-sized products had a "spec-sheet" consisting of a handful of screen mock-ups doodled in pencil (with margin notes), and a few notations on specific business rules that needed to be implemented. Fun, fast, pure adreneline rush.

      Now I work at a govt. shop -- it's like the unions. Every change to a program (even obvious bug-fixes) requires effectivly a constituional ammendment! A staff of 200 programmers, and "Hello World" can be yours in six months for an estimated cost of $500,000 - but the documentation will be impeccable!

    9. Re:That's because in the US... by Col+Bat+Guano · · Score: 2, Insightful
      ...then you need to say...

      "I estimate that this will cause another 3 weeks of delay for this product. If you like I can finish off working on what we have so that you can start using the software and we can get some feedback on real usage. We can implement these new features after that"

  6. They needed an MIT study to determine this? by Hepkat · · Score: 2, Funny

    MIT used to be so creative... what happened...

    1. Re:They needed an MIT study to determine this? by falzer · · Score: 4, Funny

      Being creative isn't in the requirements.

  7. Re:Not for me. But we learned by Brummund · · Score: 4, Insightful

    I have learned the same lesson. I hate bureaucracy as much as the next guy, but I really like having a good specification. Most of the programming I do is related to various forms of messaging, and having a detailed spec containing

    a) The purpose of the integration (business concepts)
    b) The protocol
    c) Examples. Lots of examples

    makes the whole process a lot easier.

    Especially the business concepts are important. They allow me to foresee where changes and extensions may occur, and I then put more work into those parts.

    If you're fortunate enough to have a good project leader, use him to communicate with the other parts involved and make him also document all the changes in the protocol. That will save you a lot of time on the phone and quite a few 'tail -f /var/log/myapp.log' :-)

  8. From the report... by manavendra · · Score: 2

    Interestingly, Cusumano and Selby observed a decade ago that Microsoft programmers in general did not write detailed designs, but went straight from a functional specification to coding in order to save time and not waste effort writing specs for features that teams might later delete [9, 14].

    Cue a lot of M$-related jokes and M$ bashing!

    --
    http://efil.blogspot.com/
    1. Re:From the report... by Anonymous Coward · · Score: 0

      Actually, this raised my respect for MS people. I have known for a while that MS has lots of interest in Agile development methodologies (many Scrum training courses are actually hosted by Microsoft); it's good to know they do understand that creating rigid specification DOCUMENTS should be critically evaluated as well as any other development overhead (overhead not as purely negative term, but just describing supporting tasks that add to total time and costs).

    2. Re:From the report... by shaitand · · Score: 1

      Umm yes, but they price the software as if this overhead were there (although they would recoup these costs and still have plenty of money to burn if they charged $5 a license instead of $200+).

      They also are a firm example of why design IS needed since the result of their coding is a prime example of what happens if you don't. It's buggy, lacks any sort of consistancy, in general is very poorly designed and doesn't perform it's function well at all, and it's typically counter-intuitive.

      To top it off, cutting corners obviously doesn't work well for them since their development is generally painfully slow. Most competiting companies with vastly inferior resources at their disposal produce superior software at a faster rate.

      Microsoft typically only comes ahead when it utilizes a monopoly it was handed by ibm (windows never won, the cheap ibm pc-compatible won), to embrace and extend and then force competitors to play catch up reverse engineering their proprietary extensions to standards.

  9. specifications are useful...... to robots by Steve_Jobs_HNIC · · Score: 0, Troll

    specifications are for people who are told what to.

    This really shouldn't be a suprise to anyone who reads slashdot. Every week or so we see a story about Company X exporting IT jobs to India. Where do you think they get their specs from?

  10. Productivety can jump without specs by MrRTFM · · Score: 4, Interesting

    In a small team - say 3-8 people, you can get a hell of a lot more done without formal specs. and it is usually exactly what the customer wants.
    Of course, this never works in real life because managers want documents to mark the progress against their gannt charts so they always interfere with the "make sure you spec it properly", and the manager on the other team will say "dont do a damn thing until you see a signed off spec"

    Shit - its no wonder commercial software costs so much.

    --
    You can't expect to wield supreme executive power, just because some watery tart threw a sword at you
    1. Re:Productivety can jump without specs by goldspider · · Score: 4, Insightful
      So then you're saying that this team figures out exactly what the customer wants on a blind guess?

      As a gov't employee, I understand first-hand how frustrating it can be to get useful, realistic requirements from our customers (other gov't folks). And I'll also agree that unnecessary beaurocracy can baloon development cost.

      But unless you maintain good communication with your customers, you're bound to get it wrong. If you suspect they either don't really know what they're asking for, it's better to clarify that with them than to decide for yourselves what they really want.

      --
      "Ask not what your country can do for you." --John F. Kennedy
    2. Re:Productivety can jump without specs by MrRTFM · · Score: 1

      Obviously, I meant that the team talks with the customer - communication is essential, otherwise we'd end up building a new and improved 3D solitaire when they asked for a double linked list implemented in cobol.

      The point I was really making was the number of stupid specs required internal to an organisation - i.e. the database team to the web developers. When the teams are split up, the managers will insist on formal specs *every* time - its a pain in the arse to get anything done.

      --
      You can't expect to wield supreme executive power, just because some watery tart threw a sword at you
    3. Re:Productivety can jump without specs by bug-eyed+monster · · Score: 3, Insightful

      ... I understand first-hand how frustrating it can be to get useful, realistic requirements from our customers...

      I'm not sure if you meant this to sound the way it does, but you've pointed out my pet peeve:

      The customer is not the proper person to write the specs. Specs must be written by a skilled analyst who can observe and communicate with the customers in a manner to determine what is required.

      I've seen too many projects go down the drain because they were completely useless. They were completely useless because the specs described a system that was useless to the customer. Because the specs were written by the customer. Because the project manager simply asked the customer "what do you want this system to do?"

      Customers are usually qualified to do their job, not to write specs for software system. It's the project manager's responsibilty to hire a qualified requirements gatherer (a lot of times a usability engineer is good for this) who will spend a lot of time with the customer, interviewing them, observing them work with their current methods, etc. There is much more to this than collecting specs written by the customer and putting them in a standard format.

      Requirements written by the right person will make a project much more successful, requirements written by the wrong person will definitely ruin the project.

    4. Re:Productivety can jump without specs by Anonymous Coward · · Score: 0

      When the teams are split up, the managers will insist on formal specs *every* time - its a pain in the arse to get anything done.

      Huh?! I'd walk out of any project involving several separated teams where there are no formal specs for the interfaces between the teams. If the interfaces between the separate teams (i.e. project's high-level modules) are not documented there is no way to fit the modules together come integration time. You'll save time at the beginning for sure, but during integration, you'll spend ten times longer trying to fit things together, pointing fingers and practicing your "that's not what you said, I distinctly remember you said..."

    5. Re:Productivety can jump without specs by poot_rootbeer · · Score: 1

      Shit - its no wonder commercial software costs so much.

      If your team of 3-8 people can design and develop software that rivals expensive commercial products, by yourselves and without specifications, go to it. You'll make millions.

      Meanwhile in the real world, commercial software is generally far too complex to be written by such a small dev team. Larger products NEED larger teams, and larger teams NEED planning and management.

  11. Fun read but ... by Politicus · · Score: 5, Insightful
    The disclaimer in this article says it all:
    But, as is common in this type of research, due to the extreme variations in performance from project to project, it is hard to draw any definite conclusions.

    And of all the praise they lavish on Japan and Indian the conclusion brings it back to reality with:

    It is important to remember, as well, that no Indian or Japanese company has yet to make any real global mark in widely-recognized software innovation, which has long been the province of U.S. and a few European software firms.
    --
    Politicus
    1. Re:Fun read but ... by Anonymous Coward · · Score: 0

      Yeah - design documents hurt creavtivity. Just today I was working on making an mp3 player. Threw out the standard and it runs wicked fast. Now if only it would play mp3's...

    2. Re:Fun read but ... by Anonymous Coward · · Score: 0

      Would you have read the disclaimer had the report praised software development processes in the US?

    3. Re:Fun read but ... by Politicus · · Score: 1
      No, because I only have my minions submit things for me to read which fit my preconceived notions lest I explode with rage and direct other minions to skewer the fallible.

      I didn't even post this message. It was posted for me with my approval.

      You must be a person of great and untouchable power to discuss my personal habits in open forum like this. Yet, it was a good precaution to post as AC because it will give you several hours head start. Pray that my short attention will divert the industry of my minions to other tasks.

      --
      Politicus
    4. Re:Fun read but ... by shaitand · · Score: 1

      "wicked fast"

      Excuse me sir, but only USians are permitted to mock US design practices. As dictated by us USians. We were easily able to pick out your non-USian status when this phrase was seen.

      No icecream for you and we'll be canceling that next few billion of orders to your nations contractors for worthless crap we never needed and actually buy toilet paper produced here instead and spend less than 14 billion we were about to spend on the "cheap" $200 rolls we were going to buy from you guys. Better luck next year!

      Love,

      Them, They, and Those damn yank bastards.

    5. Re:Fun read but ... by tupps · · Score: 1

      I am not sure if it counts as software, but my understanding was that Hotmail was designed/built by an Indian developer (whether he was based in the US i am not sure).

      I remember seeing a show about it, where they used him as an example of people breaking through the caste system of India. Right in the middle of the show he sold Hotmail to MS for over 400million if I remember correct.

      --
      Go out and get sailing!
  12. Just one? by signingis · · Score: 5, Funny
    "... I can already hear my EP-zealot colleague chuckling in the cube next to me. (sigh)"

    Shouldn't that be colleagues? :)

    --

    I prefer a void in conversation to a vacuous one.
    1. Re:Just one? by brandonY · · Score: 2, Funny

      Zealots don't have to actually DO the things they're zealous about. Work is for boring people.

    2. Re:Just one? by Anonymous Coward · · Score: 0

      How many colleagues should he have in the cube next to him?

    3. Re:Just one? by GigsVT · · Score: 1

      Two, one to screw in the lightbulb, and the other to write a design document about how it will be implemented and maintained.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
  13. Hooray for Freedom to Innovate! by VernonNemitz · · Score: 1

    This mostly comes from the bottom up, and not the top down, simply because there are more minds at the bottom than at the top. And as long as those control freaks at the top of foreign developer outfits continue to overspecify their requirements, the US will continue to lead the field. (And thanks, Boss!)

    1. Re:Hooray for Freedom to Innovate! by meadowsp · · Score: 1

      Yeah, you keep telling yourself that....

  14. Worthless Study by Subotai · · Score: 5, Insightful

    Quite frankly this study is worthless. As a business owner, here is what I really want to know. Who is best at producing a product that meets my customer's needs the quickest and cheapest, has great uptime and the fewest bugs. I could give a rats ass how you did it, as long as it meets the above and it is documented.

    -Subotai

    --
    "The only way to catch tiger cubs is to go into the tiger's den."
    1. Re:Worthless Study by SpinyNorman · · Score: 1

      Don't you care whether it's full of bugs or not, or whether it's easy (fast, cheap) to change if the customer wants it?

      The rule of 3 is (quick,cheap,quality) - pick any 2.

    2. Re:Worthless Study by krumms · · Score: 2, Funny

      The rule of 3 is (quick,cheap,quality) - pick any 2.

      Maybe I just suck, but that sounds awfully like some fantastic brothel deal!

      Quick, cheap quality! Pick any two! *waves arm over sea of girls*

    3. Re:Worthless Study by Subotai · · Score: 1

      I believe the words "fewest bugs" was at the end of the 3rd sentence.

      --
      "The only way to catch tiger cubs is to go into the tiger's den."
    4. Re:Worthless Study by sporty · · Score: 1

      So you want a product developed to some specific documentation. Sounds like a specification to me.

      --

      -
      ping -f 255.255.255.255 # if only

    5. Re:Worthless Study by Rupert · · Score: 1

      You want five different names? Because the product that meets your customer's needs quickly with great uptime and fewest bugs is unlikely to be the cheapest.

      --

      --
      E_NOSIG
    6. Re:Worthless Study by Fizzog · · Score: 1

      I'll take cheap and quality any day!

    7. Re:Worthless Study by SpinyNorman · · Score: 1

      Well, reality says you only get two, and quality was your last requirement... You're certainly highly unlikely to get a quality product that meets the customers requirements if the software was developed by a bunch of hackers without design & test documents, code reviews, etc.

      It's understandable that at some level you don't care how the quality gets there as long as it does, but you're also more likely to get that quality (rather than be promised it by your quick 'n' cheap outfit, but disappointed on delivery) out of a company that has a quality development process (which is why - notwithstanding the abuses of it - ISO 9000 certification of supliers - i.e. caring about development methods - is a common requirement among quality conscious companies).

    8. Re:Worthless Study by Anonymous Coward · · Score: 0

      Quick, cheap, quality, no bugs... pick any three (the last one counts as two selections)

    9. Re:Worthless Study by jay2003 · · Score: 1

      The study's analysis and conclusions are bizarre. Looking at the data, none of factors considered seem to have much predictive value. US and Indian projects followed different paths but almost identical defect rates and their "productivity rates" (as if that can be measured in lines of code) are not that far off.

      Japan came out way ahead in terms of defects and lines of codes yet the studies authors don't talk about much about this result at all. They really seem to want to focus on a comparison of India vs. the rest of the world.
    10. Re:Worthless Study by shaitand · · Score: 1

      Not true, the software I've found which meets my customer's needs quickly, has near perfect uptime, and the fewest bugs (as well as the fastest resolution time of the bugs that are there) is open source software which is free.

      This odd association between expensive and good is why Sony has so much money today. Incredibly overpriced POS products (Belive me I should know, I spend a good chunk of my time at Sony working on those products and seeing how the problems we knew about were handled) and lousy support and little acknowledgement of a warranty has worked for them.
      Why? Because they are immensely overpriced (and I'm talking often double the price of competing products with equivelent specs, with lower production standards and cheaper components) people assume it's good stuff.

      I mean if it was a little more it'd be overpriced, if it's double there must be some reason it's so much more right? That laptop must be incredible in some fashion if it's $3,500 when the other guy here is selling one with the same specs for $800!

      I could go on and on about Sony, but that's just an example. More expensive, even immensely more expensive doesn't == better. In fact it very rarely is better. In the case of software, a popular open source project is almost ALWAYS better than the commercial competing products.. at the very least it's better is some respects.

      A couple examples, Apache for starters, there's not much in the commercial world to compare with it. While there are some commercial webservers that do certain things better or have a feature apache doesn't have, you'd really have to need it to justify the price since there aren't any that won't set you back several thousand a license.

      Another example is Samba, while it may be debatable whether it does EVERYTHING better than a Windows domain controller (if it doesn't it's pretty clear why) it without a doubt yields much more solid uptime, and vastly superior performance in it's role. Samba servers are more stable, faster, and more efficient.

      Particularly for a small buisness Samba is a no brainer over a windows server, a small buisness can't afford to throw away a grand on simple file and print services, let alone CALS, and the additional 10-20 grand annually of hardware upgrades and maintenance that Server will cost, the same server will continue working until the hardware dies or the company grows substantially (which will be awhile if you use the least hardware you would have purchased if making this a windows file server) perhaps 10yrs, the windows server will make it 2-5, averaging about 3yrs.

    11. Re:Worthless Study by leabre · · Score: 1

      Yes, but you won't get custom software from an OSS programmer, so again, the original post your replied to stands. If you want good quality software with least defects that suits your customer's needs (implying customization), then an OSS programmer working from free for no profit isn't likely to produce anything for you unless they don't have bills to pay and can afford to write softwre for you that will make you money but they themselves don't care about being paid. Very unlikely.

      Thanks,
      Leabre

    12. Re:Worthless Study by lonesome+phreak · · Score: 1

      We have a picture of the space shuttle exploding on the wall...our motto "Better, faster, cheaper - Pick any one" when it comes to software development.

      --
      Maybe we DID take the blue pill. You wouldn't remember anyway.
    13. Re:Worthless Study by shaitand · · Score: 1

      "an OSS programmer working from free for no profit isn't likely to produce anything for you unless they don't have bills to pay and can afford to write softwre for you that will make you money but they themselves don't care about being paid. Very unlikely."

      Odd, I was under the impression these are exactly the circumstances which MOST open source programmers write code (aside from the no bills thing). A few get paid, most don't, most write software in their free time. Open source development is typically cheaper if the program is useful to others anyway, and if you'll sponsor a project to get what you want it's the cheapest route to go.

      "If you want good quality software with least defects that suits your customer's needs (implying customization)"

      Good quality software with the least defects means using an open source codebase, if customization is needed it is done to that codebase. No private firm is going to debug nearly so well as 10,000 geeks.

      Custom software is something that should be avoided unless there is absolutely no other option and situations which require it are rare.

      Since there is likely an open source project at least similar to what is needed, why on earth would we start from scratch when we could adapt it and best yet, get the changes maintained for free if it's something that can be contributed back!

      Right about now, your scratching your head and trying to figure out which role I'm coming from, management, developer, etc.

      The truth is I'm a network technician/administrator/programmer, the company I work administrates the networks of hundreds of small buisnesses. If the company I work for, or one our customers needs software, then I may write it, may buy it, or may have it written depending on the case. If I write the software the customer (or my company) will be licensed the software under the gpl. Or I may modify an open source program to suit (probably contributing back changes if relevant).

      Or we may hire an outside firm to adapt an open source program and license to us under a BSD style license with source... so we can release to the customer under the gpl.

    14. Re:Worthless Study by leabre · · Score: 1

      No private firm is going to debug nearly so well as 10,000 geeks

      Depends on what OSS you are talking about. If you are talking about a small minute fraction of OSS, say for example, the kernel, KDE, Apache, maybe you are correct.

      But how many of the 50,000 or so OSS projects on sourceforge.net have 10,000 geeks actively contributing or debugging or maintaining? A very high percentage of those projects listed on sourceforge.net are abandoned or slowly chugging along without little progress or have only the originator of the project contributing in his/her free time while they are too busy working full time to pay the bills, making their OSS project second-priority.

      Of course, the types of customization I was talking about about in my post is the specialized customization: an organization needs a specialized CRM system and very organization-specific reporting and data analysis features that are hard to find elsewhere with some very specialized sales force GPS tracking capabilities to integrate into a custom real-time system that delegates tasks for the sales force to follow-up on (in real-time).

      How many of those types of "highly specialized" custom solutions are on sourceforge with 10,000 geeks actively contributing in their spare time for no profit and actively making sure it is defect free because they are such philanthropists?

      I doubt you'll be able to point me to one such project.

      Thanks,
      Leabre

    15. Re:Worthless Study by leabre · · Score: 1

      The truth is I'm a network technician/administrator/programmer, the company I work administrates the networks of hundreds of small buisnesses. If the company I work for, or one our customers needs software, then I may write it, may buy it, or may have it written depending on the case. If I write the software the customer (or my company) will be licensed the software under the gpl. Or I may modify an open source program to suit (probably contributing back changes if relevant).

      Or we may hire an outside firm to adapt an open source program and license to us under a BSD style license with source... so we can release to the customer under the gpl.


      I forgot this part part in my last reply. That's interesting. None of the companies I worked for (or consulted for) would consider allowing my to GPL "their" intellectual property and instead put me under NDA. Of course, since I'm not the rebellious kind ($80-120k/yr. in income is a good reason to keep me in check) I can't "protest" on moralistic grounds because they will simply hire someone else who isn't such a moral rebel who will be happy to take the pay while I spend another year looking for work.

      You, it seems, are in a different boat. I, on the other hand, haven't been so fortunate. Even when I consulted on my own terms, most of my clients were more than willing to allow me to incorporate certain IP into my own derivatives but they wouldn't allow it to GPL because they didn't want thier competitors to leg-up on them from my source that was really, in part, theirs. In the real-world, most companies lock you down with an NDA and don't want their investments to become everyone elses free-for-all.

      I'd like to know how you pull it off.

      Thanks,
      Leabre

    16. Re:Worthless Study by shaitand · · Score: 1

      Well for the first post, I'd simply counter that there is an equal percentage or more of commerical output that is to cut the courtesy, utter garbage.

      For the second, it's simple really. The job I was hired to do is NOT programming. I make quite clear anytime I do program that I am retaining the rights to the program I am writting.

      It's only under very narrow circumstances that a client owns a program you write. What their paying for is a license to a program I write and own the copyright to, generally completely on my own time. If any of that time IS at work, my employer isn't paying me to write code, he is paying me to find a solution which fits the customer's needs, if that means writting it myself, so be it, he has already signed an agreement waiving any and all rights to any code I write there.

      Customers are simpler, in most all cases a contracted programmer doesn't fall within the contract for hire category that would give the customer contracting you IP. If I write a simple custom inventory tracking system for instance. I might charge the customer $500-$2000 for that program license depending on the details... they don't mind paying because it didn't exist before they asked for it and they have the full source code with the right to modify it and carry on if I die tommorow.

      If they actually wanted to OWN the copyright on that program it would cost them at least $10,000-$20,000. A custom gps tracking system I'd rate about the same (and have).

      It may also work in my favor that we are in a reasonably small area. We mostly have a monopoly on computer work of any sort in Central Illinois (at least south of Champaign Urbana). The only dedicated programming outfits here work like you do and they charge through the roof.

      The companies I'm working with are generally small enough that it's the owner of the buisness I'm dealing with rather than a team of lawyers. And the owner of the buisness tends to like the idea of spending less dollars to get exactly what HE needs especially when he figures the competition is going to get what they need either way.

      I think the biggest difference though, is I'm not approaching them as a programmer they are looking to hire. I'm approaching them as the technician who built their systems, configured all their software and who is johnny on the spot anytime their hurting and gets them back up and running again.

      They are usually quite thrilled to find out when and if the time comes that there isn't an existing solution that does what they need, that I don't stop working there, I'll go as far as to actually make it exist for them.

      Look, administrating 20 servers in one organization is easy. Try administrating 20 servers in 20 different organizations each with their own unique setup and remember all the details of all their setups. Now crankup the volume to about 500+ organizations among 4 techs.

      In a 24hr period I have to personally maintain 16 linux servers, we share the maintainence of the rest. Then there are the windows servers, dear god let us pray we can get more linux servers out there. Keep over 3000 desktops of different configurations running and up to date. Keep myself up to date on new technology, learning new tricks, tips, languages, tools, etc. And spend 3-4hrs coding (I'm human like the rest of us, I generally can only average about 100 lines of debugged code an hour). Although I do manage to faithfully squeeze in 30min a day on slashdot during the weekend ;)

      Our customers know I'll get them an answer and don't have time to worry about licensing, if selling them a gpl license at a cheaper price will save me a few billion lines potential time and them as much wait and money their all for it.

      I'm pulling in more like $25k/yr with basically no benefits, welcome to life outside the valley.

  15. Specifications? by Rorschach1 · · Score: 5, Funny

    Hah! I'm halfway through my current project, as indicated by the constantly shrinking schedule, and I haven't even had to have ANY specifications or requirements to get to this point!

    However, they HAVE managed to change the name of the project on me at least three times, and our last two-hour meeting was consumed by a lively debate on what to call a particular form, so it's not like these critical planning issues are being neglected.

    1. Re:Specifications? by Anonymous Coward · · Score: 0

      You must work with idiots. On my team, anybody in the group would have (and should have! Hell, better have!) proposed, after about 1 minute of haggling, "the name of the form is relatively unimportant compared. Let's call it Foo for now, and - if we come across a better idea in our later discussions - we'll rename it then. Let's move on."

    2. Re:Specifications? by Rorschach1 · · Score: 1

      Hah! You've obviously never worked with the government. And the problem's not with my coworkers - my boss was the only other one there. This debate was solely among the assorted government representatives.

    3. Re:Specifications? by shaitand · · Score: 1

      Really? Pretty much anything in which I've participated that's involved the government has started with them handing out a 500 page document of various specifications which will be tested under the guise of 200 redundant and useless forms.

      Generally the 500 page document will spell out a complex and useless process such as:

      Eat lunch at noon. Go home, eat in the cafeteria using plastic utencils, or go out. Be back in one hour and if late file these 250 forms which will be reviewed by at least 200 people before you get paid assuming we haven't lost the paperwork... in which case you must file these 500 forms which will be reviewed by at least 200 different people, if one of those people dies, you must file these 750 forms and.... you get the idea.

    4. Re:Specifications? by Col+Bat+Guano · · Score: 1

      I think instead of a rating of "Funny" slashdot needs a rating of "Sad but true".

  16. Comment with a twist by rylin · · Score: 1, Funny

    1) Developers (developers, developers)
    2) No specs
    3) ???
    4) Product!

  17. Re:Not for me. But we learned by AmericanInKiev · · Score: 4, Insightful

    When you use specification - you are making the "customer" the deisgn engineer.

    I highly doubt the "customer" is going to deisgn great software.

    for example.

    A thousand customers could say I need a tool that lets me input the various factors of my budget and look at what the sums will be.

    But how many could say - I need a program with a grid of flexible cells which can hold a value or a formula?

    AIK

  18. and now that I've read the conclusion by Steve_Jobs_HNIC · · Score: 3, Funny

    well now that I've read the conclusion, the author seems to agree that Bender is from India. :)

    page 20 conclusion
    "It is important to remember, as well, that no Indian or Japanese company has yet to make any real global mark in widely-recognized software innovation, which has long been the province of U.S. and a few European software firms."

    1. Re:and now that I've read the conclusion by Anonymous Coward · · Score: 0

      I dont need to document the reqs and specs...bcos I am from Bush's country!

      Got it &&*s#$##$# !

  19. It depends.. by baudilus · · Score: 2, Insightful

    The presence of detailed development specifications is arguably directly related to the size of a design team.

    If your development team is two guys sitting next to each other all day long, there isn't much need for very detailed specs or a set structure. You tell then what your project must have, and they deliver (if they're good).

    On the other hand, the larger the team, the more structure is required; you don't want one person breaking what another person took four weeks to complete.

    I think in the US, the relative lack of specs is probably because most US firms are in one location where the developers are in close proximity, making communcation quite easy (you don't even have to take your eyes off of your screen to yell over a cubicle).

    1. Re:It depends.. by KC0A · · Score: 1

      The way to keep things from breaking is to have automated tests for everything. That way you'll know immediately if your last change broke something that was previously working.

    2. Re:It depends.. by dubl-u · · Score: 1

      On the other hand, the larger the team, the more structure is required; you don't want one person breaking what another person took four weeks to complete.

      Well, more structure is one option. Or you could just write self-defending code. A good unit test suite combined with a Continuous Integration tool means that if somebody breaks something, they'll get an email a few minutes later.

      On my last few projects, we've ended up with about a 50/50 ratio between test code and production code. You'd think that it would slow things down, but it really makes development faster. I spend about ten minutes a week using the debugger, and very little time wondering what something does.

      On the rare occasions when I can't figure out what some chunk of code does, I'll just comment it out and run the tests. If nothing breaks, then I delete it and move on. And if something does break, then I delete it and write something clearer in its place. It's very freeing!

    3. Re:It depends.. by shaitand · · Score: 1

      hmm ok, but what if the reason you don't know what it was, is because it was a fix for a security hole you personally don't even know exists. And thus you delete it, reintroduce the security hole (because there was no visible "breaking", or because there was and you rewrote the same flawed code as before).

      Don't you see this as I don't know a problem? Or perhaps the reason you don't see anything break is the same reason that change was made to begin with, it's something broken which hasn't even occured to you and thus your tests didn't even look for it. So when you run them again, tada, again they don't find it.

      Or probably the rarest case, it's worthless useless bloat which should be removed. (Unless you work in redmond, then this probably the most likely case based on the source code I've seen written there.)

    4. Re:It depends.. by dubl-u · · Score: 1

      hmm ok, but what if the reason you don't know what it was, is because it was a fix for a security hole you personally don't even know exists. And thus you delete it, reintroduce the security hole (because there was no visible "breaking", or because there was and you rewrote the same flawed code as before).

      Then the person who put the code in without adding a unit test first failed to do their job properly. As important as this is for regular code, it's doubly so for a bug fix; how could they possibly know the bug was better unless they tested it?

    5. Re:It depends.. by shaitand · · Score: 1

      "On the rare occasions when I can't figure out what some chunk of code does, I'll just comment it out and run the tests. If nothing breaks, then I delete it and move on. And if something does break, then I delete it and write something clearer in its place. It's very freeing!"

      This statement says nothing about them not writting a test, it says if you see code you don't understand. And specifically says if something does break when you run the tests you rewrite the code it's clearer. And for that I refer you back to the post you replied to. It may have been something that was rewritten to correct a problem you didn't understand to begin with, and that's why it wasn't clear to you.

      In the case of a rewrite that fixes a security hole, it's possible but unlikely the test would be an exploit, more likely the test would be the same as for the original code making sure it functions correctly. Looking at the test would only confirm to yourself that you were "cleaning up" the code while you were actually putting a security hole right back in.

    6. Re:It depends.. by dubl-u · · Score: 1

      This statement says nothing about them not writting a test, it says if you see code you don't understand.

      Read the rest of my post, not just that one sentence. I'm talking about having complete unit test coverage for a code base. If you have that, you can indeed safely delete code you think to be useless.

      the case of a rewrite that fixes a security hole, it's possible but unlikely the test would be an exploit,

      It's perfectly likely if you write it that way. If you don't test it, how would you know if you've fixed it? That's the basic theory behind all test-driven development: You write the test, then you make it pass. You write no code unless you have a test that requires it. This goes for both the initial coding and for bug fixes.

      It doesn't guarantee that your code is perfect, of course; it's still possible to have bugs. But it does reduce the odds drasically. For example, two years ago we launched a web site with about six man-months of development. Since then there have been two substantial upgrades, and in all that time we've had two valid reported bugs, neither of which was in the main code base. (One was in a server config file; the other was a malformed HTML template.)

      Now that I'm skilled at test-first development, I spend an average of 5 minutes a week in the debugger, and I never work late. It's great! I recommend it to everybody. For a good introduction, check out the recent book Test-Driven Development: By Example.

  20. requirements by noelo · · Score: 1

    I work for a company where time to market is crucial we literally don't have time to get the product fully spec'ed and design.....most times the developed product is not even close what the "invisager" imagined...but the luxury of having a fully spec/designed... I find that the best thing to "at least have" is a high level list of requirements/use cases even...

  21. Re:How Ironic - Open Source and Specs by borkus · · Score: 1

    Open Source projects do handle specification control well. However, most open source projects are written by developers for developers. It's very easy to determine the functions for a piece of software that you are going to use yourself or someone who does a job similar to yours is going to use. The exception to this are projects that are competing against a closed source product - such as Mozilla, GIMP and Open Office. However, in many cases, they tend to join together the better features of their closed source rivals and remove a few annoyances.

    If you're building software for a specific business use (ie, managing insurance claims) or a specific technological use (ie, controlling emissions on a car), you have to understand the environment into which you're introducing your software. In those cases, specifications dictate how the software system will interact with the other systems (business or technological).

  22. would be nice to see by maxbang · · Score: 0, Offtopic

    I'd like to see a "fuck" (or it's non-english equivalent) count from source developed around the world and compare the differences in that. anyone have something like this?

    --
    I also reply below your current threshold.
    1. Re:would be nice to see by SpinyNorman · · Score: 1

      What'd be interesting would be to see would be if the "fuck" count correlated with the shoddiness (no formal specs, etc) of the S/W development process! :-)

  23. Lots of big companies by Salamander · · Score: 2, Insightful

    It would have been nice if they had included smaller companies in their sample. Probably just as well that they didn't, though, because I suspect those would make the US numbers look even worse.

    --
    Slashdot - News for Herds. Stuff that Splatters.
  24. To a large extent.. by manavendra · · Score: 5, Informative

    Having worked in America, UK and India, I can certainly relate to the findings of the report. Here are some of my personal experiences:

    - In America, they are in a tearing hurry to produce a prototype/model/proof of concept, which of course forms the basis of initial release ("it works, doesn't it? so why re-write it?")

    - Gathering requirements is a pain in the wrong end - I've seen all sorts of instances - CFO disagreeing with CTO and re-writing everything, PO Manager introducing something new that CFO promptly over-rules. At the end of the allocated gatherings period you have a hash of what each stakeholder at the company wants. Needless to say, there is a lot of fun in ensuing months - Most American customers do not like to spend time on discussing/analysing progress or answering questions during the development (yes, I agree they shouldn't crop but, but most times they do).

    - As a natural progression, the aspirations change over time. By the time it's written and demo-ed they want it to do 10 different things and pipe-up about how they had "already" mentioned they wanted this cool new feature. The signed copy of requirements specifications sure helps :-)

    - In Britain though, they pore over every single email the PM/Team Lead sends. Tremendous emphasis at every single aspect ("We are bloody payin you for this, aren't we?")

    In India though, life is Sh*t. The documentation team, the process team and the internal audit teams sort of join hands to drown you in sh*tload of paperwork. It's good to have processes, but IMHO, they just get carried away and want copious detailed documents about everything and anything...Unless they develop tools to automate and regulate the processes, it is gruelling and something no-one looks forward to...err, except the audit team :-)

    --
    http://efil.blogspot.com/
    1. Re:To a large extent.. by wintermute42 · · Score: 1

      An interesting post on the differences between Indian and US development. Thanks for posting manavendra. Like many US software engineers, I have more than a passing interest in our competition in India.

      There is an odd dynamic here. The view with some people who outsource work from the US to low wage countries like India seems to be that if the people who are doing the outsourced work are not as efficient, it doesn't matter because they are so cheap. These same people are either unable to analyze or ignorant of software lifecycle cost.

      I'm sure that there are development groups in India that are as good and efficient as those in the US. But for the sake of argument even if it were true that all Indian groups were mired in paperwork and ISO-standardization it would not matter, since they are viewed as cheap labor. Outsourcing now seems to have reached the level of management fad, where the sole justification is short term cost. If you run a corporate IT department you probably have to justify to your masters why you are not outsourcing.

  25. Re:Not for me. But we learned by Garion911 · · Score: 4, Insightful

    There's a difference between a spec and a design..

    SPec documents are the "what" the customer wants.

    Design documents are the "how"...

    --
    Slashdot is like Playboy: I read it for the articles
  26. Re:Not for me. But we learned by Allen+Zadr · · Score: 3, Funny
    That's why I was always fond of the pseudo-code spec. The lead, or they guy with the idea would check-out the appropriate pieces of code from the development stream, and fill in the pseudo-code with what they wanted done.
    /** Expansion of Commentary to get point across:
    * Use .. int funcSpec(char *example)
    * -- NOTE: funcSpec() will have to be expanded to
    * allow for me getting this point across.
    */

    ... This really worked well, until a bunch of new people merely thought they knew what the pseudo-code meant - it was obvious to us long timers.
    --
    Kinetic stupidity has a new brand leader: Allen Zadr.
  27. Scary by Anonymous Coward · · Score: 0
    "I can already hear my EP-zealot colleague chuckling..."

    I don't know where you work. I don't want to know where you work. It sounds like a scary place like Initech. Is your boss Mr. Lumberg by any chance??

    1. Re:Scary by Phantom_of_the_Opera · · Score: 1

      I read that at ET first off.

  28. Another good argument by Da+Fokka · · Score: 4, Interesting

    Apart from the classic Software Engineering advantages of a proper design document, it can also save you the problems which can arise if the customer and the supplier have different ideas about the eventual product.
    I've seen it happen way too often; the expectations of customers can be very unrealistic simply because they have no knowledge about software engineering.
    Having a complete design document with two signatures can prevent 'just add this one little feature'-type problems.

    1. Re:Another good argument by KC0A · · Score: 1

      But if you have a spec written in English, you can still get in an argument over the meaning of the spec. Better to write the spec in the form of acceptance tests. It's hard to argue about tests passing or failing. And it's easy to measure progress in the number of passing tests.

    2. Re:Another good argument by endofoctober · · Score: 1

      Why not have both? As a PM, I usually hammer out the Client Spec with the customer (high-level descriptions, spelling out deadlines and estimates - mostly contractual in nature), then write a Tech Spec (specific language, acceptance testing, use cases) for the programming team based on that. Having a formally spelled-out agreement with the client heads off a lot of trouble, and the Tech Spec helps the team understand the scope of the project.

      As for the professor who claims specs are the enemy of design, I'd have to agree with those who wrote that he probably has limited experience in the actual SD field, if any. Sad that he's passing off such broad generalizations as knowledge...sadder still that (a) his students believe him, and (b) paid for the privilege.

      --
      - Jack
  29. When do we need specs by iceco2 · · Score: 5, Interesting

    When I work by myself or with one or two developers
    who I know well and get along with(and talk a lot with) We can get by with practicly no specifications even with a coding which lasts several months.
    You can split up the work by writing header files first and that usually does the trick.Obviously this
    cuts down on development time.

    However I had on several ocasions needed to join in on a project which has been going on for sevral years, and I found it much much easier to start working quickly on the projects with more specs.
    I am currently on a project run by a man who is quite anal about specs and standards and documentation, and organized testing. The result is that I spend more time dealing with standards then programing but It greatly increases the quality of the code, it makes the throwing out a week of work for incompatebilty impossible, And perhaps most importantly it makes getting aquainted with a diffrent part of the project very easy.

    As for EP, I have seen it work well and I have seen it fail miserably. I have not yet gathered enogh expirience with EP to identify what makes it work.

    Me.

    P.s I am not a US resident, nor did I study in the US.

    1. Re:When do we need specs by Anonymous Coward · · Score: 0

      We can get by with practicly no specifications even with a coding which lasts several months

      Can you post your resume? That way, I don't have to waste time reading it later, and can just toss it in my "no chance in hell" pile.

  30. Code is specs by AmericanInKiev · · Score: 1, Insightful

    When people say Specifications - they mean software code written in a language managers can understand.

    (For What?)

    The only perfect language for software specs is an unambiguated, testable, logical language.

    The end result of this logical posativism IS software languages.

    Software languages existed before the computer, and unambiguous processes could be described unambiguously only be using these unambiguous languages.

    So I suggest the software IS the specification - and its testable.

    If you write confusing software - what makes anyone think you can write specification which are any less confusing?

    (Suggestion - delete major important detail and make it look simple - when in reality it is merely incomplete.)

    AIK

    1. Re:Code is specs by dubl-u · · Score: 1

      You're close, but your conclusion is wrong.

      The only perfect language for software specs is an unambiguated, testable, logical language.

      Yes! So write your specs in code. Make automated tests for your features in parallel with development. And while you're at it, use test-driven development and build unit tests as you go.

    2. Re:Code is specs by AmericanInKiev · · Score: 1

      My latest design uses a common function called RunCmd

      All the user experience, gui, and command line argument run through the RunCmd function -

      Each object eiter handles the command or passes it on to its children.

      Command are addressable such as "Red.Gamma, +.3"

      Which send a gamma command to the red object

      This means I can snapshot any user session and repeat it
      it also means I can write customer examples in very basic language such as

      RunCmd "Open"
      RunCmd "Print"

      Which means on the outside it starts looking more like a spec and less like the raw details of implementation.

      The problem with testable containers - is for some projects it creates double work.

      This message oriented experience (In plain english btw - that immportant)

      allows for writing tests by example etc etc etc

      AIK

  31. Lack of Specs from Lack of Time by Ducati_749S · · Score: 3, Interesting

    While I'm not disagreeing that U.S. Developers may not spend enough time in design before starting to build, I don't think that the blame always lies with the developers. My personal experience has been that, for every missing design doc or spec, there is someone in sales who shaved a week off of the estimate the developers gave them for building the solution. If MIT is studying the Software Development Processes, maybe Harvard should do a study on the Software Development Sales process, and on why US companies have developed the mentality that it is ok to give developers less time than they need to complete development, and even better to base the timeline of a project on developers working 65 hour weeks when they know damn well that they are salaried employees and thus get no overtime.

    --
    What about the twinkie? - Dr. Peter Venkman, PHD
    1. Re:Lack of Specs from Lack of Time by HeyLaughingBoy · · Score: 1
      why US companies have developed the mentality that it is ok to give developers less time than they need to complete development

      Oh, I think that one's easy: it has no obvious financial impact on the company. So your developers have to work 80 hour weeks to do the job half-right. You don't have to pay them more, and even if you do give overtime to a few, it's not a big deal.

      This behavior will not change until a lot more businesses get sued for poor software performance. When there is an obvious correlation between software defects and money, companies will begin to improve their processes.

      When you're working with physical stuff, process counts. Even if your time is cheap, if your design has to be reworked multiple times before it works, that rework costs money. If a carpenter who's overworked and sleep deprived drops your $900 kitchen cabinet on the floor and smashes it, it comes out of his pocket, not yours. But there is no obvious cost to the company for having its developers work longer hours as long as the project is completed in the number of calendar days allocated. No one changes without good reason and for a corporation, usually the only good reason is financial.
  32. Re:Not for me. But we learned by bdsesq · · Score: 1

    eventually the development pool grew, and we got a few folks who couldn't follow this method...

    Aren't you really saying that the specs have to handle the "least common denominator"? In other words, they have to be understood by the dumbest person in the group.

    Now think about it and I'll bet you produced more and better code with the smaller group!

  33. Who precisely was studied? by Fringe · · Score: 5, Interesting
    I'm a developer who travels a lot on business. Denmark and London last week, back in Washington this week. If I was to look at the average developement shop or developer, I'd probably agree.

    But if I look at those that aren't suffering much right now, those doing well, I see that most of the successful U.S. deveopers and shops also specify things out. But, because we don't live and die by the regulation (those being cradle-to-grave parts of much of the world), we can also be more flexible more quickly. And we can prototype from the seat of our pants quickly.

    A down side of "flexibility" though is that we often get called "not team players" if we don't instantly cow to the calls from sales and marketing every time a new feature idea pops up. One of my co-workers calls this "chasing butterflies", the lack of focus that results in never finishing anything. That's the downside that leads to bugs and slow development... and failed companies. But many more successful companies, including most of the ones I've been at, have actual product life cycles. There really are two tiers or classes of development companies that way.

    The question is, why are there so many undisciplined shops? I think the answer is the easy money of the past. Suddenly we (developers) weren't being managed by engineers and developers, but rather by CFOs, shareholders and sales people. As the crunch continues, I suspect corporate Darwinism will continue and we'll scale back to more methodical practices again.

    1. Re:Who precisely was studied? by BurritoJ · · Score: 1

      One of my co-workers calls this "chasing butterflies", the lack of focus that results in never finishing anything. That's the downside that leads to bugs and slow development...

      It's interesting to note that butterflies are bugs, too. Attractive and not obviously malignant, but they are bugs none the less. Obviously, you don't want to introduce bugs into your application.

    2. Re:Who precisely was studied? by chiph · · Score: 1

      That's my take on it as well. I like the "chasing butterflys" quote, too -- can I steal it?

      Once you realize that softare costs are heavily front-loaded, the need for having a Plan are easily visible. If I'm getting ready to write some code that will take 6 months of my time, that's $100,000 spent (allowing for salary, medical benefits, a place to sit, caffeinated drinks, depreciation on the servers, etc.). So who's going to throw $100-grand at something without some idea of what they want out of it? And yet it happens.

      But once people realize how the economics of software works -- your first copy costs you $100,000, but burning your second copy only costs you $0.49 -- the need for good planning becomes obvious. Because until you ship that first copy, the 2nd copy isn't there to make you any money.

      Chip H.

  34. EP?...EP?!! by RicochetRita · · Score: 4, Funny
    It's everyone knows it's XP for eXtreme Programming, as in snowboarding, Mt Dew, ESPN2... (but Not that Windows recent release).
    So, crack open a cold one and check out my double nested for-loop ollie nose-grind, dude!!

    And who says we're zealots?! ;-) RRR

    --
    Stuff that matters: circuitbreakers, vacuum-cleaners coffee makers, calculators generators, matching salt+pepper shakers
    1. Re:EP?...EP?!! by sam_van · · Score: 1

      Silly me...and I thought EP was Electrum Pieces. (Current Exchange Rate, 1gp=2ep=10sp)

      --
      Thinking of starting a business in Minnesota? Me too! mnsmall.biz
    2. Re:EP?...EP?!! by Anonymous Coward · · Score: 0

      In recent news "RicochetRita, has been subpoenaed by the Microsoft Coporation for Trademark infringement for a post made on the popular geek website slashdot.org (known as /. in the geek community)using the letters X and P together in a sentence. RicochetRita's only comment was Can you pass me that Mt. Dew over there, please? "

    3. Re:EP?...EP?!! by curunir · · Score: 3, Funny

      That's why I've never understood XP...when I'm pulling a nollie varial 360, I have problems even holding a laptop, let alone trying to write code. Granted, it's substantially easier whilst street luging, but the laptop introduces a a lot of wind resistance...and if you're not event going to hit 60, there really isn't much point to street luge.

      --
      "Don't blame me, I voted for Kodos!"
  35. The best part of EP by GillBates0 · · Score: 0, Offtopic
    is being paired up with a cute babe during the programming sessions. Nothing like showing off your l33t coding skills to a gurrrl staring intently over your shoulder.

    Happened to me at school, so I speak from experience :). That was my best semester at school - I used to wait eagerly for the project submission deadlines so I could go on an "EP date".

    --
    An Indian-American Hindu committed to non-violent thought/speech/action alarmed by the global explosion of radical Islam
  36. Development processes by the_thunderbird · · Score: 0

    Well, I started this new job six months ago as a developer, I was stunned to see that there was nearly 0 development and two out of probably 10 developers using Version control (excluding myself of course). It has taken me this long to push though a massive whitepaper on how to write software. Software specifications are damned important! Without them you are in the shit, because if you make a cock up or near a dead line things can get really bad, really fast. Probably proves why there is so much crap software out there!

    1. Re:Development processes by SmackCrackandPot · · Score: 1

      I really like using SCCS on UNIX systems, but when things get to the point where deductions are being made from the quarterly bonuses based on the number of lines modified, then it's time to go elsewhere.

      SourceSafe on Windows wasn't too bad either. Shame it doesn't come free with Visual Studio. Instead we're using the tried and tested method of making incremental and full back-up copies on CD-ROM and magnetic tape.

    2. Re:Development processes by Anonymous Coward · · Score: 0
      Instead we're using the tried and tested method of making incremental and full back-up copies on CD-ROM and magnetic tape.
      Uh, you know that the backup is there for disaster recovery, right?
    3. Re:Development processes by SmackCrackandPot · · Score: 1

      Yes, I should have said we take local backups on top of the regular incremental/full backups. I always make a 'freeze' copy before making any major structural changes.

  37. Thats why you use Aegis by samjam · · Score: 2, Interesting

    With Aegis the baseline code "always" works; it has to pass all the build tests to become baseline.

    You can't add a new feature without first defining a test for it to pass, you can't fix a bug without defining a test that the old baseline failed and the new baseline passes.

    So marketing can walk up and say "release now" or "add these features" and you can do either. But you can't "release these features now" because the system won't let you.

    When marketing say "release now" they can only have the bits that work. And when they say "add these features" they can only get those features when they work.

    Sam

  38. loose design with a lot of documentation is key by tibsss · · Score: 1

    I've always hated commenting/documenting my code especially since I feel as though I can keep it all in my head. However, when one begins to work in in large projects with teams it is imperative to have a focussed design to make sure everyone is on the same page, but loose enough for change. A LOT of documentation however is always helpful. Document, Document, Document!!! Learn from other's mistakes...I learned this the hard way.

  39. time for a rant: by Anonymous Coward · · Score: 0

    I get so damn sick of hearing about processes and procedures. Slashdot is one of my favorite was of getting rid of frustrations, especially when the frustrations are related to processes and procedures. Imagine my dismay when the new article was about processes...ugh

  40. Re:Not for me. But we learned by Resseguie · · Score: 3, Insightful

    Maybe that's the problem. Too many times we worry about creating the "grid of flexible cells" and forget that the real user just wants to "input the various factors". There's a good usability lesson to be learned here...

  41. Cute babes program? by maroberts · · Score: 2, Funny

    Damn, where have they been hiding after school then?

    --

    Donte Alistair Anderson Roberts - hi son!
    Karma: Chameleon

  42. Thank god by chendric · · Score: 2

    Lack of specifications is the only thing U.S. programmers have going for them. When there's no specs, the developers have to think and must understand the business requirements, which is difficult to outsource. If someone ever figures out how to automagically create detailed specs, then all our jobs are going overseas. No specs is fine with me.

    1. Re:Thank god by kpharmer · · Score: 1

      I'll trade working prototypes for specs any day of the week. All too often large organizations focus on paperwork that nobody reads, nobody maintains, and nobody can really grasp. We'll document the hell out of a process, and while there's a ton of talk about it - it's usually clear that many people just don't 'get it'.

      These projects often have an unusually high failure rate. You know the type:
      - takes 9 months to get documents written, approved, corrected, approved again, updated for changed business, etc, etc.
      - then management/staff changes and documents are turned over to a new guy that has to learn domain before he can complete them
      - then two more months of playing with documents occurs
      - then pallet-load of documentation is shipped overseas for another group to read
      - this group asks NO questions, identifies standards compliance issues, but fails to understand project objectives
      - then the project is canned
      - meanwhile, the documents probably never really did a good job of expressing the user's objectives like adaptability, managability, scalability - but only hard requirements. And since the documents themselves aren't testable - they contain the most grievous errors that would have been encountered in the entire project. Had it not been canned.

      Contrast this with an agile project (not necessarily XP) - with a focus on monthly deliverables. Each month the dev team can demonstrate that it is making forward progress, the user can actually play with the system and understand it far better, and since everyone knows that change will be frequent - they embrace it - rather than hide from it.

      This is how my current project is going. Its predessor was paper-bound, cost millions, and died a pathetic death. This project began before the paper-project died, and began delivering value almost immediately. At about 5% of the cost of the paper project it has been embraced by the entire department, is adding a ton of value, and has a bright future.

      Now, I'm not saying that there aren't potential pitfalls to be wary of in the agile world - but these are generally easily-managed compared to the pitfalls of the procedures-to-fix-procedures world.

      Oh, and BTW. The study is grossly flawed. They show how Indian development projects have a higher rate of waterfall artifact delivery (arch specs, functional specs, detailed designs, etc) - and then also a much higher rate of delivery of some iterative practices (pair programming, etc). I suspect the real reason is that they are often assigning multiple extremely junior developers to projects - and hoping that in teams they can rescue one another. I've worked on four out-sourced Indian projects in which this occured: almost all developers were straight out of school, and could barely write any code at all. This wasn't true of all of them, and I'm sure that given sufficient time they will develop the skills. But - their pairing of developers and testers isn't due to good methodology - it's due to a desperate attempt to use under-skilled staff.

  43. MIT Study of Software Process by chubso · · Score: 1

    Yipee! Now all of our problems will be solved because MIT is on the job.

  44. Re:Not for me. But we learned by AmericanInKiev · · Score: 3, Insightful

    Still - it is only what the customer THINKS he wants on day one with far less experience in computer techniques.

    Customer says he want a report - but in reality he want to understand his business.

    An OLAP server can help him understand his business, a crystal report can start him down a long road of report modifications which in the end will lead him to 1. an unmanagable pile of confusing reports or, b. an OLAP cube.

    The design process is to understand the need of the customer - not have the customer specify how or what the solution will be.

    If you provide the solution the customer specifies - you will be run out of business when he reads the next business journal anout how to do omething better.

    You had beter know what he is going to read next if you intend on being a solution provider for very long.

    AIK

  45. Maybe that is why people offshore ? by MosesJones · · Score: 1


    Maybe the lack of specs is why people offshore more, they want more definition, they want more quality elements defined up front and don't want the project to run out of control based on trusting IT.

    Given a choice between a nice spec, and a bloke from IT who says "trust me I'll talk to you lots"...

    Which is a business person going to chose ?

    Engineers specify, DIYers just knock it together.

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:Maybe that is why people offshore ? by Anonymous Coward · · Score: 0

      No... the source code / binaries are your product. No body cares about the design documents after you have a working build.

  46. Evolutionary Programming Model by Verity_Crux · · Score: 1

    After spending a day designing a hardware interface last week, a coworker and myself were informed from the CTO that we need to learn to "exercise the evolutionary programming model, meaning don't ever develop specs." The problem with that philosophy is blatently obvious in all the products we sell. They have 1) a real weak foundation making the addition of features neigh impossible, 2) a lack of modularization making team work neigh impossible, and 3) nobody knows when the freakin' thing is done. Because of these issues, whenever we hire a new programmer they want to rewrite the software. I can't say that I blame them. Needless to say, I'm a huge fan of taking at least 20% of the development time for the design cycle if not more.

    1. Re:Evolutionary Programming Model by Anonymous Coward · · Score: 0

      Myself has seen similiar environments. It can be quite frustrating. When myself schedules a project, thought, myself puts 40% of the time into design and test case design, 20% into testing, 20% into documentation, and 20% into coding. When the architecture is determined, tasks are broken down and algorithms developed, coding is actually the least time consuming part. It's still not paint by numbers, but one doesn't spend anywhere near as much time sitting there coding prototypes into what is supposed to be a production system.

    2. Re:Evolutionary Programming Model by KC0A · · Score: 1

      Evolutionary programming doesn't mean no design, and no modularization. It means to design a feature, test the feature, code the feature, then refactor to eliminate duplication. It seems your company is only doing the coding part.

      Even with a grand design, skipping the testing and refactoring guarantees that you'll end up with a mess. And if you skip the testing then refactoring is almost impossible.

  47. Here's our development process: by Thavius · · Score: 5, Interesting

    1. Get an idea and start working on it immediately.
    2. Stop work on it to fix a bug, release the bug fix immediately.
    3. Work on the idea again, but slightly changed.
    4. When about 80% done, switch to new idea or "gotta have" feature.
    5. Code like hell on original idea because it was released in its incomplete form and has now killed puppies.
    6. Rinse, repeat.

    All the while there's very little documentation, most of it being whatever I do.

    Great, isn't it? That's how it was. I've taken control and actually have implemented a release schedule and proper bugfix releasing. I've also just gotten a QA guy, things are looking up. The processes before I got here made me wake up at night. Lo and behold, with the new processes, the phones don't ring as much.

    Ahh, the joys of a very small company.

    1. Re:Here's our development process: by Metropolitan · · Score: 1

      Which is why people use the CMM to guide/force the creation of actual processes!!! Amazing how much difference it can make when a small collection of bright people begin building things with intention instead of simply reacting to whimsy.

      QA can help a great deal. Makes me feel good to see it mentioned as helpful, so thank you for your comments. It can be a semi-thankless job at times, even with the benefits clear at the end of the line.
      -Met.

    2. Re:Here's our development process: by Thavius · · Score: 1

      With the practical lack of QA, ANY helps. I've seen the results of no QA, and I don't like it. I'm excited at the prospect of our beta site going, "Oooh! an update!" rather than, "Oh god, not another update." Our developers don't have time to do a full QA testing, so having a QA guy break the program before clients see it can only be a good thing.

  48. "New study from MIT" ? by oneiros27 · · Score: 3, Funny

    Anyone else find it odd that the first page of this supposed 'new' study was marked June 2003? And the second page said it's version 3.1.

    Which goes to show -- even if we had specifications for these things, we're just going to gloss over the details, and do whatever the hell we want, anyway. People don't read what's sitting in front of them, unless it's on some blog, it seems. If it were really important, they'd have made a TV show out of it.

    [and those of you with moderator points get to vote if you think sarcasm is funny -- you can select 'troll' to vote no, 'funny' to vote yes. 'overrated' if you'd like to abstain, and 'insightful' if you read the first line, and are just trying to burn your moderator points]

    --
    Build it, and they will come^Hplain.
  49. Re:Not for me. But we learned by daksis · · Score: 1

    I think there needs to be a clear demarcation between specifications and documentation. I always think of the specs as to what is supposed to happen, and the documentation of what actually happened. Well written code (for the most part) is self-documenting. Specs will almost always be out of touch with the actual implemented code because Specs usually represent a static attempt to solve a dynamic problem. Code comments are usually an evolving snapshot of what's going on ...(use the source?)

  50. Re:Not for me. But we learned by Anonymous Coward · · Score: 0

    I thought requirement documents are "what the customer wants" ?

  51. And non open source software? by Moderation+abuser · · Score: 1

    We can't tell cos we can't see the source.

    --
    Government of the people, by corporate executives, for corporate profits.
    1. Re:And non open source software? by Morgahastu · · Score: 1

      It's not the source code that concerns me, as a user it's the design of the software and the interface. Most OSS looks it was just throw together without any preplanning. Some OSS have good planning because they have an organization running it, or some kind of committee, but MOST (98%) of OSS is total trash design/UI wise. Just look at all the listings on Sourceforge.

  52. Yet another outcome-data-free paper... by Anonymous Coward · · Score: 2, Insightful

    So many articles on software development concentrate and talking about what procedures to use (and how to get people to buy into using them, etc. etc.) Very few of them give any good data on the outcomes of using those procedures. Typically we get b-school type "case studies," anecdotes, and proof by repeated assertion.

    Typical logic: PREMISE: It is good for software to be of high quality, in time, and under budget. ERGO, do thing my way. COROLLARY: It is important to use an indentation setting of three spaces on everyone's editor, and draw diagrams using the symbology provided in this plastic template.

    Here's my first-order analysis.

    All over the world, software development uses significantly different formal processes and practices. Yet, to a first approximation, there are no obvious, huge, systematic differences in the quality, cost, or timeliness of software produced in any country versus any other country. Therefore, to a first approximation, the formal process and practices don't matter.

    Good people, backed by good management, with a good understanding of requirements and sufficient time and resources, can develop software successfully. Using the waterfall method, Extreme Programming, or no methodology. Mediocre people, given bad management, and inadequate time and resources will fail. The brand name of the methodology that is asserted to be being used has an effect so small it is lost in the noise.

  53. College Professors by bsd4me · · Score: 4, Insightful

    In my software engineering class, my teacher vehemently states that Requirements are the Enemy of Design.

    Unfortunately, a lot of college professors are out of touch with reality. Software development is such a diverse area that you really can't generalize.

    For example, I worked for a long time in embedded firmware and digital signal processing, both on mega- and micro-projects. You need to design to requirements for these. There can be creativity in how you impelment a design, but the bottom line is the spec. If you don't design to the spec, the satellite falls out of the sky.

    Currently, I am working in multimedia, and we don't really use specs. We have high-level goals, but even these are fuzzy. Here, requirements are more of a hindrance, but we still have to draw the line in the sand for some things.

    --

    (S(SKK)(SKK))(S(SKK)(SKK))

    1. Re:College Professors by Anonymous Coward · · Score: 0

      This is very true.

      One way to categorize could be:

      1. Critical systems: nuclear power plants, satellites, space shuttle, 777, etc..

      2. Custom made systems: my company's super inventory system, internal proceses, ERP/legacy integration, etc..

      3. Shrink wrapped apps: Acrobat Reader, MS Word, Oracle DB, Visio, AutoCAD, etc..

      4. Scientific simulations: simulation of collisions of two galaxies, etc..

      These each have different natures:

      1. Critical Systems: Priority is safety, generally interacts w hardware, failure is not an option

      2. Business: Highly customized to rapidly changing or ill-defined business, requires deep understanding of company and business, speed is critical, can sometimes use users as testers ::), often only one version of product planned and then it goes into "maintenance"

      3. Shrink wrapped: Needs to work on a wide variety of systems, generally must be well tested but workarounds are possible, features derived from warm fuzzy marketing feeling and generalizations of surveys not a particular customer (unless he has big bucks), needs to be many things to many people, a bug is not necesarily fatal.. user can restart app (tho depends on app), usually many versions are planned, concept of suite often present, needs change becuase of marketplace

      4. Performance is king here.. often can just restart the simulation or simulate on small data set, maintenance may not be important at all

      Software methodologies would vary w these different projects:

      1. Critical Systems: more formal, more top-down, more precise specs

      2. Business: precise specs often impossible, iterative could be better (show and change like RUP or agile methodologies)

      3. Shrink wrapped: formal testing needed but specs may or may not be useful, unit tests can help a lot, iterative and/or agile methodologies often more natural than formal proceses.

      4. Scientific: know your math!!! understand what you are doing.. come up with a strategy and do it. Often the "know your math" stage is the real art here.. not the programming.

      I often find that XP detractors say: well the space shuttle would never fly with that.. but I think they compare apples and oranges in this case.

      As for offshoring.. often what is offshored is the stuff that can be spec'd out.. leading to more formal methodologies.

  54. Good software engineering for bettter job security by Anonymous Coward · · Score: 1, Insightful

    Good software engineering requires iterative and incremental approach with constant feedback from the customer. (Personally I ascribe to an approach similar to the Unified Software Process.) If a US shop did this they'd guarantee long employment as the iterations continue throughout the life of the product. Of course, this also results in more rubust software with better ability to react to the demands of the customer.

    As it stands developers are just getting a crack team of developers and throwing them into a pit with a page of "specifications" and whenever the management needs to talk to them they send down a bucket.

    If that's all it takes to develop software no wonder all the jobs are getting sent to India. Even they can handle that!

    Good engineering practices would have prevented offshoring because the software you get from properly engineered software is more stable and closer to the customers needs and because the level of feedback required for proper development would make the communications barrier an unacceptable hindrance.

  55. Old joke about lack of specs... by Kap'n+Koflach · · Score: 1

    Project Manager: "Ok team, start coding the system now, I'll go and find out what the customer wants..."

  56. Re:Not for me. But we learned by gbjbaanb · · Score: 5, Interesting

    I think its more like:

    Requirements are what the customer wants.
    Specifications are what he's actually going to get
    Design is how the analyst thinks it should be done.

  57. Bullshit by Anonymous Coward · · Score: 0
    but you honestly cannot know how much space it will take, how fast it will be, etc.

    Bullshit.

    You can know all of this, and pretty accurately, too.

    It sounds like your teacher just isn't very good at developing software, because a lot of organizations develop software all the time on schedule and on budget. Before I got into consulting, I worked for a few orgs that had entire processes and metrics to do project estimation - and it was pretty damn accurate for programs up to and including those that had millions and millions of lines of code.

    It sounds like your teacher is proof of the "those that can't do, teach" adage...

  58. Gee ... and Specifications? by powerlord · · Score: 1

    Requirements may be bad, especially in making sure that you can keep the Design flexable, but I think they are very much needed.

    The Requirements don't have to specify memory and space, but they SHOULD specify functionality. Don't forget the requirements produced by a programmer would (and should) be different from those produced by a manager.

    When you are working to provide a customer (boss/division/consumer) with a product (program/library/etc.) you need a benchmark of how to know if you succeeded. Even if its just to make sure they don't come back to bite you in the butt, by claiming that they needed required something totally different.

    If you are trying to design a complex piece of code, a specification is a must. It can evolve (and it probably WILL and SHOULD), but it needs to be there.

    A good specification can also be the foundation for the program/projects Documentation. Everything that is listed in the Specification, should be in the Documentation also (and usually quite a bit more also). This makes your job easier in the long run, both in terms of handing off a project to other individuals to use/support/maintain, and in terms of your own ability to use/support/maintain it.

    Lack of a Specification only works if there is a small cohesive program group, without a high rate of turnover, who will also support the product. Even then, this will only work untill a project gets big enough.

    I also dispute that Open Source projects have no Requirements given. The "Project Leader" usually has some specific goals in mind, and other contibutions that either coexist or enhance that goal that other people contribute are usually included. True, the Requirements are not formally laid out (usually), but there is usually only a very small group of people working on any one piece, and there usually are no deadlines. Things are allowed to percolate and progress as they will (take a look at how many Open Source projects stall out also).

    This type of thinking might work in OS and Reseach, but aint gonna cut it in Buisness.

    --
    This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
  59. Re:Not for me. But we learned by Lochin+Rabbar · · Score: 1

    Aren't you counfounding requirements with specification? You can have a requirements specification and a design specification.

  60. Bullet proof specs. by Anonymous Coward · · Score: 5, Insightful

    Bullet proof specs. are very hard to write.

    I spent many years as a low level civil servant; so none of what I am telling about is my fault :-)

    To make a pile of money on a government contract, do the following:

    1 - Bid on the contract EXACTLY as the tender is written (no matter how stupid the tender is). This is what the government will stick you with. If somebody else bids on the tender the way it should be and comes in cheaper that's ok. The government will stick them with the stupid specs in the tender and they will lose money! They go out of business and you now have one less competitor. **Include a generous hourly rate for 'extras'. Make sure that 'extras' are cost plus.

    2 - Build the project EXACTLY as tendered and bid.

    3 - (This is the important step) Discover that the project will not work as designed and tendered.

    4 - Fix the project at public expense. This is the part where you apply the 'extras'.

    5 - Profit! Note the lack of question marks at any stage of this process.

    Specs are fine but they are no replacement for wisdom. If you need to cya then use specs. Otherwise, take them for what they're worth.

    1. Re:Bullet proof specs. by Anonymous Coward · · Score: 0


      I agree that this cycle is the way to make money from any kind of client. However, I can never bring myself to knowingly do things wrongly... no matter how much I realize that everyone will actually be happier if I do.... agh.

      This is why I'll never be rich...

    2. Re:Bullet proof specs. by poot_rootbeer · · Score: 2, Insightful

      If you need to cya then use specs. Otherwise, take them for what they're worth.

      In the business world, you must always CYA. Doesn't matter if your customer is the anonymous desktop user, another company, another department in your company, or even your mother. You will get screwed if you leave any opportunity for the customer to do so.

    3. Re:Bullet proof specs. by StormyMonday · · Score: 1

      Yup. Been on both sides of the table on this one.

      Remember that Government rules make it impossible to make a profit -- unless *they* make changes to the spec. Conversely, you can take money home in barrels on change orders.

      --
      Welcome to the Turing Tarpit, where everything is possible but nothing interesting is easy.
    4. Re:Bullet proof specs. by eraserewind · · Score: 1

      The first bid for a contract I made was for a govt. dept., I wrote it would take 30 developers a year and a half to do, way more than anybody else estimated. Needless to say it was rejected.

      They bought an "off the shelf" product to do it, though luckily seeing as how we had seemed to know what we were talking about they gave us the customization work on a rolling contract.

      Finally took 30 developers a year and a half to customize it :-)

  61. mp3 by poincare · · Score: 1

    http://darin.csua.org/survey.mp3

    I made it with TextAloudMp3+AT&T Natural Voices; I highly recommend both.

    Please mirror. I won't keep the file up for long.

  62. Don't confuse development with packaging by tjwhaynes · · Score: 2, Interesting
    I have no problem with development, but the Open Source community should follow Debian's model and not release something (read Sarge) unless they're really sure its all done, and not release a version for every time feature add or small patch - have the fixes and patches as seperate entities and not as builds.

    Maybe I'm misunderstanding your intent here but I'd say the release-early-release-often is a huge strength of open source development.

    By showing all the warts, all the problems and solutions as they are worked on, those of us who are chasing the latest nightly CVS release get to help out by bug triaging, raising problem reports and commenting on the very latest change pretty much as it happens. This stops stupid decisions, breakages and irritations early before they are ingrained.

    However, for the average user, that is too much. But just because development is pushing on at a rapid rate doesn't mean that the user has to play catch up. This is where the packagers of applications play their part - Mandrake/Debian/RedHat/etc - by providing a tested stable base. If you want the ultimate in stability, you would probably look at Debian Sarge or RHEL. You can pick a more intermediate solution which is closer to the latest releases with Mandrake numbered releases, closer still to the edge with Mandrake community /Fedore core 1 or almost at the bleeding edge with Cooker or Redhat Fedora 2 test 3.

    So really, stability of releases is available now. The only scary thing here is that you have a Choice.

    Cheers,
    Toby Haynes

    --
    Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
  63. Tell that to the customer when he gets X, not Y by Anonymous Coward · · Score: 0

    If you have a customer paying millions of dollars for a product, and you deliver X when he paid for Y, your lame "code is specs" isn't about to keep you employed and able to pay your mortgage.

  64. Project that go on forever by Anonymous Coward · · Score: 0
    but my boss has me working on an open-ended project that will probably go on basically forever

    And who is this projects "customer"? If it's consulting or contract work, your product isn't the code you write, it's the hours you bill.

    Or in a large organization you could just be part of someone who gets graded on how big his "empire" has gotten and you're just being given make-work.

    1. Re:Project that go on forever by Daniel+Dvorkin · · Score: 1

      And who is this projects "customer"? If it's consulting or contract work, your product isn't the code you write, it's the hours you bill.

      To be fair, I should I have mentioned that this is in-house database work, so it's not like nothing of value ever gets produced; in fact, the applications that I and others turn out get used throughout the company on a daily basis. Our users aren't willing to wait for endless cycles of design and review, and neither are we.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  65. Re:Not for me. But we learned by stray · · Score: 4, Funny

    What the customer wants and what he needs are different things too.. as illustrated here (no idea where it came originally from, if you have the proper credits, please post them)

  66. Specs enable outsourcing! by XopherMV · · Score: 1

    Managers also want specs so they can outsource the work. I'd say this whole topic bodes well for US developers wanting to limit outsourcing. Indians can't work on a project without a good spec.

    REFUSE making specs if you want to keep your job in the US and not India!

    1. Re:Specs enable outsourcing! by Anonymous Coward · · Score: 0

      You're not only a fucking racist, you're also a fucking jackass! Go die in hell!

    2. Re:Specs enable outsourcing! by XopherMV · · Score: 1

      I didn't say anything racist at all. You're just an anonymous coward.

    3. Re:Specs enable outsourcing! by Anonymous Coward · · Score: 0

      You mention outsourcing, yet you talk only about Indians. You're not against outsourcing which happens a lot within US and to countries other than India, you're against outsourcing to India specifically: you're a racist.

      You want to keep your job by keeping some aspects of your job obscure: you're a jackass.

      You're a fucking racist jackass.

  67. Re:Not for me. But we learned by Anonymous Coward · · Score: 1, Insightful

    Most of the programming I do is related to various forms of messaging, and having a detailed spec containing

    a) The purpose of the integration (business concepts)
    b) The protocol
    c) Examples. Lots of examples


    I have to second this. There is no reason that specs or design docs have to always descend to the level of pseudocode for every module. However, interfaces have to be specified. They won't be written in stone. When there is a need to change them, the spec will provide a clear way to talk about what is missing and how it can be changed. If you don't have that, you quickly find that different people have different views of the interfaces. If you are lucky, one is a superset of the other. If you are unlucky, they intersect incompletely.

  68. Philosophies in the extreme by superid · · Score: 4, Interesting
    Several years ago I worked on a well funded ($1M+) software development project that was specified with a handful of requirement statements. Those requirements basically all fit on two sheets of paper. "The user will be able to import XYZ..." etc.

    There was a little back and forth discussion, but basically the requirements were hammered out in a few days. The development team of about 5 coders took these requirements and over the next 6-8 months we used a "release early, release often" strategy. We called it "Build a little - Test a little", basically we had a GUI designer cranking out do-nothing screens, while the rest filled in the guts one function at a time.

    We ended up essentially almost on time and almost on budget. The project was WILDLY successful and still in use 7 years later.

    We have been funded now to produce Version 3 of this product. Most of the team has moved on, including the chief architect who drove the implementation philosophy and he's been replaced by someone who has embraced specifications like a baby marmoset clings to it's mother.

    Since December, we have done NOTHING but attend meetings and write excruciatingly detailed requirements documents, and crank out UML diagrams. Not a line of code has been written (besides a bit of prototyping).

    I'm doing it because I have to. I see a lot of extra labor cost (I estimate at least $250k so far) and I don't think this process has helped us. I think we could have created an entire prototype since December and thrown it all away and been ahead of the game (assuming we'd learned valuable info from our mistakes)

    1. Re:Philosophies in the extreme by tommck · · Score: 1

      Since December, we have done NOTHING but attend meetings and write excruciatingly detailed requirements documents, and crank out UML diagrams. Not a line of code has been written (besides a bit of prototyping).

      I'm doing it because I have to. I see a lot of extra labor cost (I estimate at least $250k so far) and I don't think this process has helped us. I think we could have created an entire prototype since December and thrown it all away and been ahead of the game (assuming we'd learned valuable info from our mistakes)


      Well... yeah... too much documentation gets you nothing too...

      The balance is the most important thing.

      I disagree with just sitting at the keyboard and coding too. You're using _code_ to determine requirements. That's equally as foolish as doing documentation for months with no code.

      Early in the development cycle, as the RUP states, you are supposed to identify "Architecturally Significant Use Cases" and design and prototype them in the first couple iterations (iterations == Build a little - Test a little).

      Thus, you are coding to identify issues, but you're not running blind and you're documenting WHAT you're doing, HOW you're doing it and WHY you're doing it.

      If the UI is one of the significant things, you prototype the UI to see if your ideas are the same as the client's.

      <rant>
      I'm sick of people saying that design is not needed because so many successful projects are done without it. That's such BS! We still have an ABYSSMAL success level on software projects in this country.

      The reason most people don't like to design is that they are incapable of abstracting, or, as you seem to be, they don't realize that there are benefits to it. People are impatient and just want to "do something productive" now.

      The appalling thing is that "success" in American software is actually a pretty easy thing to achieve. It's crazy what some people call "success".

      If spending tons of money on something and then rewriting it in 4 years is your idea of success, you're nuts!

      The comparison's been beaten to death, but I wouldn't want any software company building my car or my house. It would be worthless.

      T
      --
      ---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
  69. Quoting by baldcamel · · Score: 1

    Now many times have I been asked to quote on a project with out having any specs.

    Some people just don't know what they want just think that they want it. However, they always know "that is a quick and simple job, shouldn't cost too much"

  70. WTF EP by lxdbxr · · Score: 2, Interesting
    What is EP supposed to mean? Extreme Programming is referred to as XP everywhere I have seen it.

    Maybe someone is actually using Evolutionary Programming (not)?

    --
    -- Nothing unusual happened today
  71. The true professional plan: by Mr.+Piddle · · Score: 3, Funny


    7. Add 20% (I'm almost there...)

    8. Add 20% (Just another two weeks...)

    9. Add 20% (Darn these last minute bugs...)

    10. Add 20% (Testing takes time, you know...)

    11. Add 20% (They want "web based" now...)

    12....

    --
    Vote in November. You won't regret it.
    1. Re:The true professional plan: by Fizzog · · Score: 2, Funny

      Well, as they say:

      20% of the system takes 80% of the time.

      The other 80% percent of the system takes the other 80% of the time...

    2. Re:The true professional plan: by Maddog2030 · · Score: 1

      Yeah, damn those software projects that take 160% of the time to complete.

  72. It's about friggin time.. by DelawareBoy · · Score: 1

    I don't know about you, but I'm tired of Academia treating Software Development as an unwanted stepchild. Case in point, Software Engineering was only recently added (within the last few years) as a required course at a local university. It replaced compiler design.

    Not that compiler design doesn't have its merits (it definately does), but for an Undergraduate CIS major, which is most likely going to benefit them having a job? Knowing how to build a compiler, or knowing how to design robust commercial applications?

    -DB

  73. Re:Not for me. But we learned by rblum · · Score: 1

    This is so arrogant, it's unbelievable. You pretend you know better than your customers what THEY want?

    If my customer reads a report right now, setting up OLAP and wasting months of it is not worth a single red cent to him.

    The design process it to elicit proper specifications from your customer. If he says he wants a report, feel free to mention OLAP and explain the benefits. If he insists on a report, you better give him one - no matter what you think is best for him.

    If you don't provide the solution the customer specifies, you're defrauding him, plain and simple. You stay in business by establishing a relationship, not by employing a "Mommy knows best!" attitude.

  74. Marketing Produces Software Requirements by plummis · · Score: 1

    The "Market" produces software requirements to meet a common need. I have found in practice that the quality and basic outline of those needs (requirements) are best handled by domain specialists, i.e., accountant, economist, manufacture, ecologist, neurobiologist... And that it is in the best interest of domain specialists to produce a comprehensive set of requirements (model) that meets their need. With software requirements in hand, it's up to me, the development team, to design and implement to those requirements however I see fit. The development team must work along side the domain specialist to workout details and compromises. In my opinion the best tool for doing this is the prototype.

  75. The (Unfounded) Ecological Impact of Outsourcing by Anonymous Coward · · Score: 0

    0. Outsourcing to india generates/requires lots of paperwork
    1. Trees must be harvested to provide more paper
    2. Rainforests have trees...

    So I conclude that: Outsourcing to india is destroying the rainforests!

  76. Figures... by Anonymous Coward · · Score: 0

    I once had the privelage of having the task of modifying some open-source code written by mit students... They believed their coding skills were so superior, they didn't need any comments.

    10 separate Java files, written without structure, all 500+ lines, and not one damn comment.

    They were also extremely uncooperative in answering questions... Its a shame this experience won't make it into their study...

    1. Re:Figures... by The+Unabageler · · Score: 1

      my code is self documenting, so hmmf.

      I think your problem is that it was java code, vs. something readable like perl.

      --
      perl -e '$_="\007/4`\cp%2,".chr(127);s/./"\"\\c$&\""/gees; print'
  77. Specifications. by nuggz · · Score: 1

    You make a big assumption, that this paper covers.

    with a good understanding of requirements

    How do you know the requirements if they aren't clearly specified?

  78. Napster, Gnutella by iamacat · · Score: 3, Insightful

    Made in USA much earlier :-)

  79. Mod parent up, please by johannesg · · Score: 1
    You are absolutely right. It is not about procedure, tools, motivation, domain knowledge, or any other circumstantial attribute (although these are also required); delivering a quality product starts with quality people.

    A quality team can deliver quality software, even under bad circumstances. A non-quality team will _never_ deliver quality software, even when the circumstances are otherwise perfect.

    Of course, acknowledging that would be financially painful to some bosses...

  80. Only write what's need in the spec, no more by Anonymous Coward · · Score: 0

    It partly depends on what you require to be in the spec and what state of completeness it has to be in before you start coding. I like my specs to be clear on external protocols. They don't have to tell me how to accomplish something inside the box I'm developing for. I was hired because I know that, or I know where to learn it. But I want a clear statement of what my box talks to and the language it speaks.

    Over the course of the project, I'm going to propose all kinds of additions and clarifications to the spec. I do that sort of thing. I want a spec that goes through stages during development. Don't write the code without a draft spec. Finishing development requires prelimary approval of the final spec. In between those milestones, the spec is open to decreasing amounts of change as time goes on.

  81. Not Really by Theatetus · · Score: 2, Interesting

    My customers don't know what they want. They don't really understand how their own business works and they feel lost because as their business is growing they lose track of the knowledge that was very easy to keep up with when their company only had 20 people.

    It depends on your software and your client base, I guess. When I program for hire it tends to be CRM and HR packages for small businesses that have outgrown Quicken, so I guess it's understandable that I see a lot of confused people who honestly just don't understand their own company anymore.

    But at least in my case, my customers really don't know what they want because they haven't yet figured out what they know and what they need to know about their own business; to some extent I can help them with that but generally I just point them to some management consulting firms.

    --
    All's true that is mistrusted
  82. why are there so many undisciplined shops? by Duhavid · · Score: 2, Informative

    It is not the easy money. As a programmer who was around before the "bubble", there were many many undisciplined shops before, during and after, at least from where I sit.

    The problem is that the business and sales types that run these companies, by and large, dont understand software development, and dont want to understand it. Further, they do not listen to the development managers that they hire, and often overrule them, using their own misunderstanding to guide them.

    --
    emt 377 emt 4
  83. repeat(need; spec; design; code) by Anonymous Coward · · Score: 0

    Understand the need. Write a specification and get agreement on it - only include must haves. Design from that. Create prototypes for EVERY module that is challenging/new/creative. write/test/debug code.

    Documentation occurs throughout the project. Make part of the software text file if at all possible. Also make part of an on line help file if possible.

    Then rewrite it all when you are done cause once the user has a working version, their "needs" undergo a radical change. Always.

    On one project, the only thing everyone could agree on was that it was to be a batch process done overnight so it didn't matter how long it took. I thew in every option anyone wanted, making the end product so popular that they wanted to use it in real time, not batch overnight; so "But can you just make it faster?"

    "Sure with a complete rewrite."

  84. Difference: requirements spec and design specs by jdennett · · Score: 1

    Spec is a vague term. If you need to be clear, say whether you mean a specification of the requirements, or a specification of some aspect of design.

  85. Testing is bad for development by rocker_wannabe · · Score: 3, Interesting

    As a System Test Engineer, I especially liked this part of the summary

    "Finally, more time and effort spent on testing and integration had a negative effect on overall development time."

    One thing most people don't realize is that 99% of the time, only a small percentage of a program actually gets executed. Much of a program is error checking or handling of unusual events and doesn't get executed if the customer uses the program the way the programmer intended. The only reason that most commercial software is usable at all is because of this. So of course, testing and integration has a negative impact on development time.

    Most software companies know this and develop software to be "good enough" since being anywhere near bug-free before shipping the first version requires too much time and effort. Software companies are "gambling" that the bugs that are left aren't bad enough to sour their customers on the product. IMHO, American companies are generally much bigger risk takers than foreign companies. This leads to either a spectacular success or a catastrophic failure

    I would like to see the U.S. government start to punish software companies that take large risks with investors capital. I believe a lot of companies die because of poor implementation and not necessarily because of a poor idea. I can't think of anything easier to screw up then software development and it has been considered just an ordinary risk of running a business. I worked for a software company that was run by a man that, from what I saw, didn't give a hoot whether the software worked or not. As long as the IPO produced a lot of money he was happy.

    There are many ways to reduce the risk of producing a worthless software program, including certifying programmers, code reuse, and more testing. I know most people don't want to invite the government to enact more regulations but the software industry doesn't seem to be regulating itself. There is a huge crisis brewing on the horizon and nothing seems to be getting better. If the millions lost on government computer systems, like the IRS modernization, isn't enough, we have the potential for a Microsoft virus to wipeout millions of users data.

    "whenever you gamble, my friend, eventually you'll lose." - Qui-Gon Jinn
    --
    "Meaningless!, Meaningless!" says the Teacher. "Utterly meaningless!"
  86. Specifications Exist by PingPongBoy · · Score: 1

    As a programmer's experience grows, the specifications at the highest level are typically user driven while at the lower function and subroutine level the specifications arise from experience of optimal and flexible interfacing.

    There is a plateau of user-visible features that are naturally expected and are implemented as fully as possible. Then there are smart features that are implemented as far as budgets allow.

    What may be helpful is a document that outlines various levels of features at the user-visible level so that a measure of software feature richness can be made. Aside from this I don't support taking enormous amounts of time to thrash out specifications before coding. Software should evolve from experience gained through usage, and features should be anticipated in new systems based on feature additions made in past projects.

    Software development has really advanced away from specifications due to the speed of computers. Developers don't have to sit around as much waiting for strange states to occur, and as a result can learn programming much quicker by implementing more features and debugging more bugs per unit time.

    --
    Know your pads. One time pad: good for cryptography. Two timing pad: where to take your mistress.
    1. Re:Specifications Exist by Warlok · · Score: 1
      At my company, there are three classes of engineers working on products - Developers (obviously), Test Engineers (again, obviously), and Program Managers. The PM's write the specs, driving down from customer-based scenarios to high-level requirements and high-level features. The Developers write a Development Spec based on the PM Spec to detail the implementation, and the Tester's write a Test Plan and Matrix based on the PM and Dev Spec's to figure out how to test the beast. The three entities involved in the development process work together to set schedules, cost features, triage and fix bugs, and ship the damn product.

      The main benefits of this approach are:

      1. The PM owns the high-level stuff, and interacts with customers (directly or via Support, Marketing, Sales, etc.) as well as the schedule and shipping. The PM's spec needs to be the most complete, as it's the basis for the other specs, and the spec that gets the most external attention.
      2. The Dev Spec and Test Plan need only be as complete as necessary for those people to do their jobs and maintain some continuity should someone move on from that role. Specifics that need to be known outside the team are listed in the PM Spec.
      3. Only Dev's write code, only Testers sign off on features, and PM's do the rest of it. This formal separation breaks down a little in practice (I'm a PM who can and does occasionally code), but the separation means that issues that crop up will automatically have an owner to drive them to resolution.
      4. Feature creep is kept to a minimum as well, as the owners of issues push back due to resource constraints.
      5. Loss of productivity is kept to a minimum through an aggressive triage process that takes the schedule and costs into account.
      6. Separation of engineering disciplines and the duties among those disciplines helps keep people happy as well. Good coders find their way into the Dev branch, detail-oriented bug hunters find their way into Test, and good communicators with more rounded skills become PM's.
      This system works, and works well, but mainly because it was introduced, we lived through the chaos and FUD it introduced, tuned and retuned the system, and keep polishing it - evolutionary processes to produce good software.

      --
      ...and you run and you run and you can't stop what's been done...
  87. Re:Not for me. But we learned by Maddog2030 · · Score: 5, Insightful

    You completely missed the point. No one is forcing anything on to the customer. But quite simply, if you have EVER worked in the software industry designing custom systems for customers, you will know that the customer generally doesn't know what they want exactly. They have a vague idea and assume that you have the same idea they do in your head.

    The requirements process is where you get your specifications from the customer about what he or she wants. Design is a completely seperate stage. The requirements are something you both agree on, but its not just something the customer sends to you. You give them feedback about the requirements. Perhaps they are contradictory, perhaps there are better ways to do things. This part is crucial in that the more time you put into this, the more information you will fish out of the customer, and you'll be more confident that you and they will know what the software is supposed to exactly do.

    The golden rule in software engineering is the requirements are going to change. You just have to accept it. Why do requirements change? Well, usually its because the customer finally realizes that what they got and what they actually wanted were two different things. And thus you make the necessary changes until the next time they come back looking for you...

    How many times have you downloaded a program think it has everything you want, until you use it and then realize theres something more it needs?

    Think about something like Mozilla. It's be a sufficient browser for a while now. But once people got it, started using it, they thought to themselves "Now I need tabs!". And thus the evolution of software...

  88. Dare to dream... by Anonymous Coward · · Score: 0

    Innovation comes from imagination, not specification...

  89. Developer Veal Pens by JamesOfTheDesert · · Score: 2, Funny

    I looked through the report somewhat quickly, but I did not see any mention of the peculiar practice of sticking developers into small, noisy cubicles, with cheap, eye-straining fluorescent lighting, and then expecting them to foucs and produce top-quailty software.

    I was walking around where I'm currently consulting, and I noticed that everybody had a set of headphones, and it just struck me as odd that software development should require specialized head gear.

    --

    Java is the blue pill
    Choose the red pill
  90. But this is a forum for those who *want* to know by Ars-Fartsica · · Score: 1
    As a business owner, here is what I really want to know. Who is best at producing a product that meets my customer's needs the quickest and cheapest, has great uptime and the fewest bugs. I could give a rats ass how you did it

    Then you are on the wrong site. Try Forbes.com.

  91. That's why I don't bill time & materials by Theatetus · · Score: 1

    Fixed-price is a much better billing scheme for programming, in my experience. Rather than telling the customer "I charge $75/hour of work", I say "this CRM package will cost you $1200". If I go over time, sucks to be me. If I go under time, that's great for me.

    Now, the trick with fixed-price is it doesn't work if the customer is involved in the development, because invariably he will want different interfaces, new features, etc; it's best for software that can have pretty specific and rigid requirements. The other side of that is you always have to educate your customer that A) his initial requirements and B) his subsequent changes to those requirements have consequences. Your fixed-price agreement has to include provisions for the customer to change the requirements with the result of renegotiating the total price (or, some shady people go t&m at that point, and make money hand over fist).

    --
    All's true that is mistrusted
  92. Re:Not for me. But we learned by cHALiTO · · Score: 2, Insightful

    Not only that.
    Usually you try to understand what the client wants, and design the system to provide it. Then you write the detailed specs of *how* you do it, what kind of data you use, etc. Then you present all that to the customer, and have him sign it. It makes things a lot easier as clients sometimes tend to ask for changes in the middle of the development process, when all design has already been done, and half the code has been writtem.

    --
    "Luck is my middle name," said Rincewind, indistinctly. "Mind you, my first name is Bad." -- Terry Pratchett
  93. In my experience.... by Duhavid · · Score: 1

    We produce the documents, which are then ignored by the business person.

    Those business persons dont want to talk to you as a development manager about how to specify the project, they want you to just go produce the darned thing, and get it right the first time. And dont bug him / her / it or his / her's / it's staff.

    I dont know how many times business has told me something like "that only happens on rare occasions". Like I dont have to account for it. Never mind if I dont, that business person will be first in my face about how I could overlook something so important.

    No, offshoring is about the money. The business can have all the definition they want. The specs are usually, as I understand it, not produced offshore.

    --
    emt 377 emt 4
  94. Abelson & Sussman by Nuclear+Elephant · · Score: 1

    Funny that they should mention that, being that Abelson & Sussman from MIT's own CS courses (available via video lecture make the comments that programmers who have to go through a planning phase before they program aren't real programmers. It looks like MIT made most of the programmers who have no respect for the software development cycle.

    1. Re:Abelson & Sussman by Bert690 · · Score: 1
      Funny that they should mention that, being that Abelson & Sussman from MIT's own CS courses (available via video lecture make the comments that programmers who have to go through a planning phase before they program aren't real programmers. It looks like MIT made most of the programmers who have no respect for the software development cycle.

      And you are full of shit. I've taken the course, and never heard any such nonsense. Perhaps you should be a little more specific in your citation -- nobody is going to dig through an *entire semester* of video lectures to see if what you say has any merit.

      FYI MIT has required since the early 80's at least that all CSE grads take a software engineering course which is very heavy on specifications and design documentation.

    2. Re:Abelson & Sussman by Nuclear+Elephant · · Score: 1

      Why don't you download the first couple parts of the course; i'm sure you'll find their comments in there somewhere. Do they also teach you how to flame before you think at MIT or did you pick that up on your own?

  95. Actually... by the_skywise · · Score: 1

    We were incredibly sensitive when dealing with products that involved peoples' life/health. As engineers, we were very ethical about that. Informally, there was a "line" where you absolutely adhered to process. More accurately, you have a core algorithm that the scientists R&D'd and you don't screw around with that. But the further away from that algorithm you were, the more likely that it would be adjusted to meet budget, time, resource constraints, etc.

    The problem with "process" was that it didn't take into account a creative factor. Basically, you'd have development plan section A, B and then C is where a miracle occurs and then you get D (profit). But the government (and its process) wants you to document specifically what you're going to do BEFORE you know how to do it. So basically you "sketch" out what you're going to do. "I'm going to store this data in X database with Y format". But then when you start implementing it, you discover that the database tables are wrong. So you change them, but you don't have time to update the documentation... Then you realize that a database is overkill and you can get by with a set of updated XML files and oh wouldn't it be great if you could HTTP to the unit and view these files on the fly. Oh wait, nevermind, we won't even keep the XML files on the unit, they'll be uploaded to a central location and stored in a database... You chain enough of these events together in a do-it-yesterday fashion and documentation gets further and further behind so that it doesn't even represent what you're currently doing. Now, this can only happen if your particular development is significantly isolated or you can keep the team notified informally (say about 10-20 people which is what we usually had). Try doing this with a larger group, or with an integral code piece and you'll get strung up by the developers.
    (but that's my .02 cents)

    1. Re:Actually... by 0x0d0a · · Score: 1

      The problem I have is that medical development today is impacted by this. Robotic surgery, for instance, is largely at a standstill because of consumer concerns based partly on fallout from things like the Therac-25. I know one person working on robot-assisted surgery -- he was limited to producing an exoskeleton-like arm cage that did nothing but exert passive force -- braking only -- to keep surgeons from slipping and slicing something. Consumers were too afraid from having a computer wielding a knife near their heart.

      [shrug] That doesn't mean that specs are a panacea for bugfree software, and I recognize that there is a cost to use of specs. It's just that I get marvelously irritated when anyone considers remotely cutting corners in medical software, because of the damage that a few cut corners in the past have caused to the medical technology industry today.

      I realize that you're just being honest, and that people that provide an impression of perfection when doing medical software are probably just engaging in a bit of marketing.

  96. Sacrificial goat design method by iamacat · · Score: 1

    The method I found the easiest is first writting a bad version of the product - adhoc design by developers, no optimization attempts, components "integrate" by reading each other's text files, no NLS support and so on - and getting it to run just enough to see where it would fail to fulfill customer requirements even if wasn't so buggy.

    Then you start again with an empty source tree and write another version. This time people know exactly what the application is supposed to do, what kind of services other components need from this one and which areas are likely to cause problems and need to be explicitely designed.

  97. Re:Not for me. But we learned by Anonymous Coward · · Score: 0
    What the customer wants and what he needs are different things too.

    Both of which are sometimes very different from what they say they want and/or need. That's part of the reason why overreliance on written formal specifications is a fatal mistake in development.

  98. "As little as possible, but no less" by Anonymous Coward · · Score: 0

    I think that formula for proper amount of specifications, and process in general, is easy to summarize: You should use as little of both as possible, but not less. (saying originally attribute d to some great mind, maybe mr. Einstein, but it's applicable in wide variety of situations).

    1. Re:"As little as possible, but no less" by Allen+Zadr · · Score: 2, Insightful
      I think (from posts above) perhaps a better phrase is "customer expectation management".

      If the customer has a million expections, but your Lead or Project Manager has not told the customer what to expect from their current "official" requirements, then you will have a disappointed customer. However, if you let the customer know, right from the start that the project will do exactly what they ask, and no more - then "extras" that were designed in through savvy programming, code re-use - or interface standarization, etc. will now be beyond the customer's expectations.

      On the other hand, when a customer says, I want it to be like Excel, the Project Manager's first words should be, "why can't you use Excel?" - as opposed to "Sure, what about Excel do you want us to emulate?".

      --
      Kinetic stupidity has a new brand leader: Allen Zadr.
  99. Negative requirments by Anonymous Coward · · Score: 0

    Anytime you see a requirement with the word "no" or "not" - you should either re-write the requirement or run away fast as you can and blame someone else. Negative requirements are theoretically impossible to prove.

    IE - the system shall not take more than 10 seconds to process the records in the system. Hmm - for those of you that have seen requirements in contracts, do you see a law suite?

  100. You need to find better universities.... by tommck · · Score: 1

    Software engineering was a requirement for CS at my college, Loyola College in Maryland (small but good CS dept), in the 80's... WTF is going on at the McCollege near you??

    T

    --
    ---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
  101. When specs become beurocracy by Tablizer · · Score: 2, Interesting

    When specfications are turned into an overly formal process, the spec process becomes a time-sucking industry in itself. I have seen cases where some "Spec Police" count how many slots are filled in on the forms, while most of the time it is stuff that is obvious and redundant for the module. Plus, a one-size-fits-all spec form does not work well. Different kinds of projects need different approaches. For example, a report-centric project does not need a "database change results" section because reports usually don't change the database contents. Ideally it is a give-and-take process, not Slot Policing that works best.

  102. Defects Statistics by pclark999 · · Score: 1

    What really made my eyes bug out in this study were the defect numbers. They are claiming a low of .005 per KSLOC - which is five defects per million lines of code! The high was fifty defects per million lines of code. There only explanation of this statistic is that Defects = number of defects reported in the twelve months following implementation / KSLOC. I can only surmise that after implementation means after delivery. Still, this is better than my experience would lead me to suspect by a factor of about a hundred.

  103. biggest problem not talked about by mabu · · Score: 2, Interesting

    In my experience, one of the most significant and under-recognized challenges in development is the selection of the right tools, operating environment and languages in which to develop/deploy an application.

    These days, your typical American developer has a narrow stable of technology that he uses. He often doesn't stop to examine whether or not the application being designed is best suited for the environment in which he plans to build it.

    I'm probably going to get flamed for this, but I believe we now have "vanity languages" and platforms that are driven more by marketing than fitness for a particular purpose. In the last several years I've seen lots of programs written in stuff like Java, Cold Fusion, .ASP, and Perl that really should have been using something different based on the demands of the process.

    I would suspect a significant share of development disasters are due to the people involved choosing the wrong tools and then making things ten times harder for themselves later on.

  104. "Design To Cost" by Anonymous Coward · · Score: 0

    Find a new software engineering teacher fast 'cause you're right now you're giving your money to a crackpot. Your teacher's argument is like those people who say "you honestly cannot know whether the Sun will rise in the East tomorrow" because that is a future event. You can't really know any future event until it happens, but you can learn how to have confidence whether it will or not.

    When learning software engineering you are supposed to be learning things like which space/speed/etc. characteristics are offered by which designs and how to approximately predict that for new designs (try a "theory of computation" course sometime). Knowing those things, you can select designs appropriate to the requirements.

    The phrase out here in the real world where you actually have customers is "Design to Cost".

  105. Re:Worthless Study? by jroop · · Score: 1
    Business owners, such as you describe, are not the target audience of this article. Instead, the intended beneficiaries would be the software houses that are considering different development methods. The article tries to provide insight into whether different software development practices lead to better software products. To the business that is looking to hire a software firm to create a product for them this is of little consequence. But to a manager of a software house this could provide impetus to adopt a more effective development model.

    While I would not classify this article as 'worthless', I would say that it is of only limited value. There are too many questions left unanswered and too many caveats with regards to interpreting the results. I commend the effort but they did not succeed in providing great insight into the issue. With this baseline investigation done, other studies can attempt to find greater distinctions.

    One of the aspects that I feel was left unaddressed is how well the development models that the Indian/Japanese houses are using work at US/European houses that use those same models (and vice-versa). Is there a socio-cultural aspect that allows these models to work better in those societies? I did not see a classification for software performed for government institutions, which often have their own cryptic methodology and requirements.

    jroop

  106. "shared workspace" == "football field" by Anonymous Coward · · Score: 0

    That's great for small projects. Try finding a shared workspace that can hold the development team for a 15 million lines-of-code product.

    1. Re:"shared workspace" == "football field" by r_j_howell · · Score: 1

      I wouldn't have thought this possible before I saw it. But I worked on a project just like you describe. It was Just under 20 million lines of code. It took two years of development for 10 developers plus two consultants brought in for one month and six months, respectively. We did have about a twenty page requirements document worked out with the president of the company (who was the expert in the field).

      Like it or hate it. It was done using an eXtreme Programming (worst. name. ever.) methodology, though not perfectly textbook in implementation. We all sat in the same room with the project manager. The architecht, interestingly, managed to get his own office. I'm not speaking for everyone. But I know *I* am way more productive in a bullpen.

      The bad news is that the company had (*cough*) a sudden financial crisis that required a reduction in force as soon as it shipped.

  107. That is no engineering teacher by gosand · · Score: 1

    In my software engineering class, my teacher vehemently states that Requirements are the Enemy of Design. You need to have an idea of what you are doing for the project, but you honestly cannot know how much space it will take, how fast it will be, etc. Its sheer folly.

    Sorry, but your teacher is an idiot. He isn't teaching software engineering then, he is teaching programming. HUGE difference.

    Requirements are not required. What? You heard me. There is a concept called FURPS+ that you can use to classify your requirements.

    Functionality
    Usability
    Reliability
    Performan ce
    Supportability

    The "+" in FURPS+ reminds you to include such requirements as:
    design constraints
    implementation requirements
    interface requirements
    physical requirements.

    But here is what I meant by my first statement - you don't have to have requirements for all of these categories. You don't HAVE to have performance requirements - but you have to consider whether you do or not. Same goes for the other categories.

    And this is just the tip of the iceberg when it comes to requirements. I love how people always complain that software engineering doesn't get the respect that other types of engineering get, but they don't really want to do engineering. They just want to program. There is such a huge difference between software engineering and coding. And I am not saying that everything needs to be engineered - but you can't just write off requirements as unnecessary for all software projects.

    How on earth can a software engineering professor think that they are useless? No, you don't know how fast something will go - but you had damn well better know if it is required to be "X fast" or be "Y big" BEFORE you start building it. That is the point of requirements, to state what is (duh) REQUIRED of the system before you build it. When you are done building it, you can test to see if it actually meets the requirements. Otherwise, you are just playing grab-ass in the dark.

    --

    My beliefs do not require that you agree with them.

  108. Re:Good software engineering for bettter job secur by tommck · · Score: 1
    Good engineering practices would have prevented offshoring because the software you get from properly engineered software is more stable and closer to the customers needs and because the level of feedback required for proper development would make the communications barrier an unacceptable hindrance.


    Gotta say... that's hit the nail on the head and driven it right through the other side of the board.

    Well said!
    --
    ---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
  109. Laziness and cost by tuxlove · · Score: 2, Insightful

    I think it's true, spec writing does often fall by the wayside. However, I think it's far more prevalent at small companies, and non-tech-oriented companies that nevertheless have engineers. It's often a money or time thing, because it takes a lot of time and effort to pre-document things before developing them, and small companies don't often have such luxury. But there is also a lot of laziness involved. I don't know many engineers who like documenting things at all, much less weeks or months before they get to knock out even a line of code. Given the chance, they will generally blow off docs and start hacking.

    I think this has very little to do with extreme programming, and everything to do with motivation (or lack thereof). Though I think this phenomenon has one thing in common with EP, in absolute seriousness - laziness with regard to writing specifications.

  110. Re:Not for me. But we learned by AmericanInKiev · · Score: 2, Interesting

    If you are wasting months on an OLAP cube that is your problem.

    I implemented OLAP cube with an excell frontend embbedded in a webpage such that all users in a multistate company could view the OLAP live from the website - and it took LESS time than any crystal report - and it was precisly what the company had been hinting at for years - only they didn't understand what it was they wanted.

    Yes - I'm arrogant if it means anything to you.

    AIK

  111. RIGHT ON!! by Bozdune · · Score: 4, Insightful

    This series of comments by AIK is profound. Please get off your apple-pie-and-motherhood methodology soapboxes and pay attention.

    Customers do NOT know what they want. Anyone who thinks that they do, hasn't spent enough time architecting software.

    What AIK is saying is that you have to dig deeper than the customer requirements. You have to understand the space. You have to look at competitive products. You have to anticipate unstated needs. You should ask, "When I'm all done, and everything is working perfectly, what changes will the customer want IMMEDIATELY?"

    I can't stand people who listen for five minutes and start to write "use cases" right away. That works for some dumbass web site, maybe, but certainly not for any involved product design.

    Architects need to plot an intercept strategy several YEARS in the future. That's how you build successful software. When the customer puts his Phase N requirements out for bid, and all your competitors run for the hills, your design has anticipated his needs. You've built metatables instead of tables. You've used OLAP where you could have sleazed by with an RDBMS. And so on.

    Great thread.

    1. Re:RIGHT ON!! by Anonymous Coward · · Score: 0

      None of that precludes writing specifications.

    2. Re:RIGHT ON!! by AmericanInKiev · · Score: 1

      Imagine an arry of one

    3. Re:RIGHT ON!! by FatherOfONe · · Score: 2, Insightful

      Yep and when you go in to do your inital bid for a project, and it cost 10-15X more and requires 2x as many developers AND takes 3X as long... just for an application that will probably only see a lifespan of a year or two: you will realize that "sometimes" it is best to focus on what the customers needs and little more.

      I honestly could not see you winning any bids against todays development shops.

      Now by no means am I saying always take the easy way out, but I have seen MANY MANY MANY people like you who do "paralysis through analysis" approach, or quite honestly use Rational Rose/RUP approch.

      I do agree with some of what you say, but to say that an architect needs to be several years in the future is not accurate in most businesses. Most try and not lock themselves in, but they do not spend needless hours over architecting the most "loosly coupled" or "flexible" system, just for something the customer "might" need in the future. There is a balance between fleibility and time/resources, and I have seen WAY too many so called architects try and build a "super" system, just to never have it compeleted.

      I almost think it should be a law that you can't call yourself an architect until you have coded and supported/debuged several systems.

      A question I have asked all analyst who interview with me is "How many systems do you have in production now that I can call someone and talk to them about". I have never intervied anyone who has used Rational Rose that has anything in production. I pick on Rose people because they seem to all say the same stuff you said in your previous post... Mostly what I hear is "Company ****** pulled the plug on the project before it was completed".

      All that I have learned from application development is that there is no "Silver Bullet". All small to large systems take a ton of work and are a pain to support, and I will agree with you that the more you talk to your customer(s) the better, but talking never builds systems...

      --
      The more I learn about science, the more my faith in God increases.
    4. Re:RIGHT ON!! by Bozdune · · Score: 1

      I pick on Rose people because they seem to all say the same stuff

      I don't have any great love for Rational Rose, either, so rail on, brother.

      I honestly could not see you winning any bids against todays development shops.

      Hmm, I guess I'll stand on my record:

      1) System designed in 1989, tens of thousands of units sold, still being marketed successfully, as we speak, against "today's development shops."
      2) System designed in 1993, tens of thousands of units sold, still being marketed successfully, as we speak, against "today's development shops."
      3) System designed in 1996, company was bought out, made $nice in the dot bomb era, unlike many of "today's development shops."
      4) System designed in 1999, still producing very significant royalty revenues, apparently experiencing no threat from "today's development shops."
      5) System designed in 2001, shipped $millions worth, currently running in multiple Fortune 500 companies, still being marketed today, still considered premier product in its field, experiencing no threat from "today's development shops."
      6) System designed in 2003, released a few months ago, already sold to one Fortune 500 company, where it displaced a $3M product produced by "today's development shops."

      It really is possible to plan ahead, write successful systems, design them appropriately, and walk away with the business and the rewards.

      It's also possible, I suppose, to puke out some crappy code to meet some fool's idea of a specification. I wouldn't know.

    5. Re:RIGHT ON!! by Suidae · · Score: 1

      I can't stand people who listen for five minutes and start to write "use cases" right away

      Thats called a CBM, Current Business Model. Its useful for communicating to other people on your development team how the customer does things now, so you can make intelligent decisions about how to move them to a new system.

    6. Re:RIGHT ON!! by AmericanInKiev · · Score: 1

      It's also possible, I suppose, to puke out some crappy code to meet some fool's idea of a specification. I wouldn't know.

      Well Said.

      My experience suggests that if you let the customer lead you - you will go down a blind alley - and then the customer will see some other company with a better solution and dump you faster than you can can say - oh if you like it like that we'll change it.

      Information has rules.

      I think the father of Visual Basic said when you choose the name of something try to find a name near the front of the thesauras (general concepts) and stay away from the high numbered words (Specifics).

      My guess is Rose is an expensive way to automate function declarations.

      I just use Access - not often but when I want to finese the properties of a class so the class is live, responsive, and effecient it's nice to be able to change the formation of the property procedures quickly.

      Ramble Ramble.

      I wrote a program in 1995 which is still in use - it was my first product and I'm amazed its stil being used - but it was written fiercly generic and it has held up well.

      AIK

      AIK

    7. Re:RIGHT ON!! by Neumann · · Score: 3, Insightful

      Its always nice to know that you can depend on death, taxes and people who read slashdot still dont read the articles before they post...

      The data that the authors of the articles collected seems to indicate that using either the standard waterfall technique (with its heavy dependence on specs) and using newer methods (what they call sync-and-stabilize referring to the heavier dependence on building product and having that product used by the users) result in the same level of bugs, and the same level of developer efficiency. The real interesting part of the whole article is that it seems that the Japanese are doing something truly innovative as they have bug levels that are a scale of magnitude smaller than everywhere else!

  112. Re:Not for me. But we learned by AmericanInKiev · · Score: 1

    if your design breaks when changed in the middle - these is a hell of a chance it will break in tthe end - when more changes are necessatry.

    If I was the customer - I woulld ask for half the project - then chhanges the specs just to see how flexible the design was and whether or not it is future proof.

    Speaking of which - I think the military should do more of this - it should test suppliers to see how fast the can react to design needs generated in real time - because in war people die for evey day your chain of useless executive paper stamper takes to "approve" a design change.

    AIK

  113. Going overboard with design documents by akuzi · · Score: 2, Insightful

    I think Christopher Alexander sums it up beautiful in his Patterns book, in the 'Gradual stiffening of design' pattern.

    He observes that only in-experienced craftpeople plan out things down to the minute detail to begin with. This causes them to get lost in the details and not able to recover from an problems during the building stage.

    Experienced people all employ processes that may start out with a rough high level design, but the detailed design only gets determined as the construction process matures.

    The idea is that a more fluid design allows you to both absorb errors or any problems or new insights that may occur during the actual build process.

    The same thing applies for software engineering.
    There is a nice balance to be found somewhere between the bondage-and-discipline approach and the XP style design-as-you-go. The type and size of the project also have to be taken into account.

  114. Job security by chipace · · Score: 1

    Using standards in your daily programming (regardless of if they are required or not) gives you practice for when you get work at a shop that does requires standards.

    However, it certainly is more advantagous from a job security viewpoint to specifically not use standards. If they don't have you to decipher the code, then they will be up the creek.

    Not requiring standards shows the inexperience of management. Every mature development house has been burnt by people unintentially/intentionally not using standards... that's why they require them.

  115. The real problem not talked about by eberry · · Score: 2, Insightful

    Where I now work I typically build everything in one of the following tools, ASP.NET, VB.NET and MS SQL Server. At the company before that it was all in Lotus Notes/Domino slowly migrating to ASP. And before that it was all Java.

    Why did I choose those tools? The answer is, I didn't. I never got a choice of what to use. I had to use what the company already had in place.

    I know very well that ASP.NET is not the best place to build a workflow application. But managers have already picked their favorite technology, even if they don't understand them.

    In smaller companies the IT manager used to be the network admin. Guess how much network admins know about software design and languages. Try nothing!

    So until they start promoting trained software developers to management this problem with persist.

    --
    Whoa, whoa, whoa, whoa, whoa, whoa, whoa, whoa, whoa, whoa, whoa, whoa. Lois, this isn't my Batman glass. - Peter
  116. The Code is the Spec by Anonymous Coward · · Score: 0

    I believe there was an experimental language in the 1970's where the specification was the code.
    You actually compiled the specification. Any changes made to the spec also changed the code at the same time.
    Does anyone recall the name of that language?

  117. QA ia far more important than spec.s IMO by Anonymous Coward · · Score: 0

    I own a small software shop and do basically all the programming, have for 10+ years. Over the years we've had people join/depart to fill various rolls. Having someone do QA on a regular basis is probably the biggest help to the company. Instead of having the customer do QA (still happens) and going into panic mode constantly disrupting trains of thought, etc. The QA guy and I work together in a calm fashion to get everything worked out. It's great! I go into panic attacks when my business partner talks about getting rid of the QA guy to save money.

    Our spec.s are usually bullets lists, which are perfectly fine. I think having QA early and all the time is much more important than spec.s. The QA guys, if they are good, are much more likely to point out if a feature is stupid, broken or is awesome.

    My $.02

  118. Not for me. But we learned-Salesmanship. by Anonymous Coward · · Score: 1, Insightful

    "The golden rule in software engineering is the requirements are going to change. You just have to accept it. Why do requirements change? Well, usually its because the customer finally realizes that what they got and what they actually wanted were two different things. And thus you make the necessary changes until the next time they come back looking for you..."

    This is why the people who do this kind of work need to have some of the same skillset as salespeople, with a leaning towards the technical arts. Salespeople need to identify the customers needs, and wants and give a clear voice to them. The tech part comes in when being able to figure out what is possible, and what's unrealistic. The diplomatic skills is in telling the customer the bad news without antagonizing them. People with such cross-disciplinary skills are rare, and the result is mirrored in the product, and the process further down the line. GIGO as it were, do it right the first time and the rest falls into place a lot easier.

  119. If specs can be UML'd it can be outsourced. by Anonymous Coward · · Score: 0

    The lack of specs will keep the American programmer employeed. It might not be proper Software engineering but who cares if I still have a job. An Indian can read a use case of the specs and architect an elegate solution or I can sit next to the business owner and throw something together in VB and ASP. Also let the projects get out of scope. More hours for support and maintence. It is the undisciplined nature of business that will stop this outsourcing of tech jobs.

  120. Specs and outsourcing by gr8_phk · · Score: 2, Insightful
    If you're going to outsource a project you will be forced to produce better specs than if you don't. Management doesn't like to see "paperwork" going on, they want code. Yet when you outsource, it becomes someones full time job to make sure there are decent requirements. India is a perfect example. Where the contractors are on the other side of the world (so even the phone is hard to use) things must be written down (even in email) in order to get anything done. Another interesting point would be that India - which has much better specs than the U.S. is mostly doing work for US companies. This suggests exactly what I said above: At home we skip the spec, but when it's sent out we figure it must be needed....

    OK, I don't really know how much of Indian work is for US companies ;-)

    1. Re:Specs and outsourcing by Allen+Zadr · · Score: 1
      I think that's fair. I am even more forming the opinion (see my other third-level-deep posts) that this is a failing of Project Management.

      Outsourcing is certainly a place where details specs MUST be produced, and in India, Developers have the restraint to design to the spec, and not over-design. That's the difference between a developer and a coder, but it's also where Project Management needs to be even more effective.

      Language barriers, and an extreme cost to "feature creep" makes a good Project Manager even more valuable. The Outsource company has no problem using phrases like, "We can do that, but we'll have to start over" and "No problem, but that will set the project back 5 months".

      --
      Kinetic stupidity has a new brand leader: Allen Zadr.
  121. Re:Not for me. But we learned by drxenos · · Score: 1

    No, your specs ARE your requirements. It is called an SRS (Software Requirements Specification). It is not just what the customer wants. It states, in no uncertain terms, what your system is to accomplish. An SRS may even state how it is to be done if there is a necessary constaint for such. A design is not an opinion. It states, again in no uncertain terms, how the system is to be implemented. Deviate from either and you may lose the contract for failing to create a system that does what it is suppose to.

    --


    Anonymous Cowards suck.
  122. Re:Another good argument -- ask for it in writing by PhilipOfOregon · · Score: 1

    I've actually found that I can get rid of 90% of feature requests just by asking them to put the request in writing. Often these simple requests aren't even worth the effort of the requester to spend five minutes describing it. (You spending five minutes describing it for them doesn't count!) Now if they write it down, well, maybe it really is worth considering.

  123. not alone by Anonymous Coward · · Score: 0

    I am just glad our team is not alone.

    p.s. We are trying the XP method with storycards for each piece and use RCS to check in -out code. Seems to be working. -s0lar1s8 score 0

  124. Re:Not for me. But we learned by Allen+Zadr · · Score: 2, Insightful
    Isn't this always the case?? Too many chefs?

    Honestly, most Dev shops don't have "code librarians" anymore. When they did - this was the person who would make sure that code didn't get duplicated. If a current function could do what needed to be done with very few changes, so be it.

    What happened where I was - some people who were not well trained in the code base started re-creating a large number of functions that we already had, and did so in an otherwise incompatible way. Yes, this should have been caught by the team lead... Yes, this should have been caught by their boss -- However, it could have been avoided had they been given a very specific specification of what these folks were expected to do.

    I don't care how new the programmer, few of us like having someone over our shoulders - so, most of us assumed that they were each learning about the project as a whole, as opposed to digging in and seeing how to impress everyone with quick output. Human nature prevails again.

    --
    Kinetic stupidity has a new brand leader: Allen Zadr.
  125. Re:If specs can be UML'd it can be outsourced. by Anonymous Coward · · Score: 0

    I've seen programmers in India have problems from bad American specs by the American company that hired them.

  126. Good Practices overcome weak Dev Process Model by bigusputicus · · Score: 2, Interesting

    Based on my experiences of the past 20 years working in Unix OS, Networking and Graphics development organizations. Good practices and team culture can overcome weaknesses in any given development process model.

    IMO, no single model works well for all projects. The development model that best fits the project requirements and the team culture will usually produce the best results.

    What I've found is that when Key Practices are performed on a daily basis, whatever model is in place can be sucessfully managed.

    Key Practices:
    Change Control: this includes; source, binary, requirements, decisions, action items, specifications, hardware, firmware, processes, practices, etc...
    Communication: the ability to notify and acknowledge change
    Assessment: the ability to review change and make corrective adjustments in the schedule and requirements
    Planning: the best product bosses work their plans every nite, and publish every morning
    On Demand Crank Turn: the ability to turn the crank at least once a day. This includes: build, package, assemble, test, publish, assess, plan, prioritize

    GigantanKramePithicus

  127. Re:Not for me. But we learned by Allen+Zadr · · Score: 1
    I believe your description is speaking to "weak-US style specs", as described by the article.

    If a good project manager sits down with the customer and describes back all of the functionality that the customer wants, then there will not be an issue. However, project management is usually lacking with follow-up and follow-through for more complex projects, and programmers end up asking the Project Manager what the customer wants, and the Project Manager answers as if they know, but they are guessing.

    I've done code enough to see that happen again and again. However, if the programmer talks directly to the customer, nothing will ever get done, because the programmer will ask far to many questions - confusing the customer in the process.

    In conclusion, Maybe it's really a lack of compitent Project Management. Again, room for personal idiocy.

    --
    Kinetic stupidity has a new brand leader: Allen Zadr.
  128. Re:Not for me. But we learned by Dashing+Leech · · Score: 4, Interesting
    This all sounds like an arguement about whether the Waterfall approach (Requirements->Design->Code>Test&Validat e) is better than the Rational Unified Process (iterative) or similar. I'm not a coder, but I think each one has their place.

    In my experience, RUP seems far better. The customer rarely knows exactly what they want. At best they'll have an idea of what they want it to do and can visualize how they think it might work. So you start with a loose set of requirements, do some quick high-level design, and code it. Then show the customer what you've got. They can identify what is different from what they want and see some of the issues they may not have thought about. This defines some lower level requirements and designs. Repeat this process on a regular basis and you will get good, well-written, and efficiently created software.

    I've had nightmares with the Waterfall process. I've had to spend 6 months writing requirements and design docs, formally releasing them, then have 2 weeks left to write the code so the software wasn't nearly as good as it should have (or could have) been. In the end, the requirements and design had some inconsistencies that could not be foreseen until you try to code them.

    On another project (that I was not involved in) all of the money went into the requirements and design process and the end software was crap, wasn't user friendly, and didn't get used. But it did meet the requirements.

    The problem with writing requirements completely before coding is that you have to basically do the design and coding in your head as you write the requirements, otherwise you can end up with things that are inconsistent. Written language doesn't have to be self-consistent, software does.

    On the otherhand, writing software without following any guidance from the customer is definitely worse.

  129. Cost vs Process by bigusputicus · · Score: 1

    The only reason India programming entities have been able to achieve high CMM levels is... cost

    If a commerical company in say Silicon Valley attempted to achieve CMM L4 or L5 they'd never ship a product
    I have first hand experience at two companies that made these attempts... and have talked with other development managers which have walked away from CMM

    The main problem with CMM is it is only focused on the process. But the reality of the market is that we develop and publish software very quickly. CMM needs to be tailored to accomplish both the business and SDLC needs

    GigantanKramePithicus

    1. Re:Cost vs Process by Brandybuck · · Score: 1

      If a commerical company in say Silicon Valley attempted to achieve CMM L4 or L5 they'd never ship a product

      Deja vu!

      When an unnamed German company purchased our US company after our founder decided to retire, one of their first decisions was to make CMM L3 our goal. At the time we weren't CMM certified at any level. The goal was to get to L3 in 18 months. Eighteen months! And our average product took 24 months of development!

      It's now three years later, we haven't shipped a new product, our competitors are running rings around us, and they've finally realized that maybe we should aim for CMM L1 first...

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Cost vs Process by bigusputicus · · Score: 1
      Oooouch!!!

      Here is what I have observed as common mistakes made by engineering organizations when attempting to take on this type of change:

      Underestimate knowledge required to make the change

      Underestimate the time required to make the change

      Understimate the skills required to make the change

      Failure to align the proposed change with business requirements over the length of training/implementation

      My approach... for what it's worth...

      First Things First

      • What are the business requirements?

      Ensure that the development team can do:

      • Manage all source and derived files from any of the build processes, including build environments, development environments, test environments
      • Manage all documents
      • Track all requirements
      • Track all action items
      • Track all decisions and execution against decision
      • Track all defects and fixes
      • Track all test cases, test runs, and test results
      Focus on making all of the above repeatable, reproducible and measurable. Doing this does not involved the entire engineering organization, as does implementing CMM. What I try to do is improve the infrastructure so that people driving change can manage it. Not everyone in the organization is driving change, very few in fact, most are focused on managing the efforts to maintain releases and produce new releases.

      And last but not least... avoid heavy-weight solutions.

      Best of Luck! GigantanKramePithicus
  130. Thats why you use Aegis-OOPs and UH OH! by Anonymous Coward · · Score: 0

    So how well does Aegis work with OOPs languages (like Smalltalk) were code and change are tightly bonded?

  131. That's because in the US...Groupware for coders. by Anonymous Coward · · Score: 0

    It sounds to me that a form of Groupware for the development process would smooth some of this out.

    Maybe a blending of a WiKi with Bitkeeper (or Aegis) plus Planner would work.

    It doesn't eliminate bloatocracy so much as make it more transparent.

  132. Why no specs by Brandybuck · · Score: 3, Interesting

    As an employee of a US division in a German corporation, I think I can shed some light on why US developers skimp on specifications:

    We're too busy coding.

    The truth is that commercial development schedules are unrealistic. If it would take two years to do a project correctly, only eighteen months will be allocated. This leaves the developer in a quandary over which part of the process to skimp on. US developers choose to skimp on specifications, while German developers choose to skimp on implementation.

    That's my experience anyway. I've seen specs from Germany that are so padded I think the author must have stock in a paper mill. And I've seen the incomplete software that arose from it. In one instance a product was shipped that was completely unusable, whose only sales the first year were to the sales department as demos, but which won a corporate award for adherence to the process.

    It's simply a different way of working. To the US developer, if you can't do it right, at least make it work. To the German developer, if you can't do it right, at least go through each step of the waterfall model thoroughly and methodically until your time is up.

    Just about every corporation views the process as more important than the product. But their individualistic and rebellious nature means that US developers will work on the product anyway. But German developers will just do what they're paid to do.

    --
    Don't blame me, I didn't vote for either of them!
  133. Re:Not for me. But we learned by Anonymous Coward · · Score: 0

    If you are building a compiler, you would want a spec. If you are putting up the new corporate HR site... you would be better off to just prototype closely with the customer and write the spec when the project is complete (meaning that it meets the actual need). Why write the spec at all? Years down the road when all involved have forgotten the minutia and a replacement is needed, say to move the product to a new platform, the spec will come in very handy. Many projects just don't need a spec at all as in 3 years they will be completely obsolete as business processes are changed in a seemingly whimiscal way.

    Software 'engineering' is not manufacturing. When designing a new car much of the planning involved is to make sure that the plant provides the tools necessary to do the job. Very few software projects require that you build new tools to get the job done.

    Of course there are exceptions. I certainly hope NASA is writing specs first. Specs, however, almost always lead to feature creep in the software world.

    In the vast majority of cases programming is more akin to a craft than a science and most programmers are much better artisans than engineers anyway.

  134. specs vs. prototypes by tedd · · Score: 1

    Their analysis shows that projects that do not use detailed specs but do use prototyping can be as productive and produce the same quality of work. (page 14).

  135. Re:Not for me. But we learned by Matje · · Score: 2, Interesting

    Well put. I noticed in practice both you and the client experience a development process. You develop software, while the customer simultaneously develops an understanding of their own business or problem. Looking at it this way, it is clear immediately why a waterfall development approach won't work.

    But still at the development shop where I work, the gospel is to create a detailed requirements document (including quote) beforehand. The customer must sign off, and development starts. Every project I have seen performed so far has ended in sour feelings on both sides, due to the customer wanting to change requirements midstream. And everytime I'll hear other developers complain about customers who do not know what they want. It baffles me that no one (especially management) tries to find a development form that can handle changing requirements in a smooth way.

    Extreme Programming promises to take care of this problem, but I'm not quite sure how you'd make an initial quote. The feeling at work is that customers will only accept a quote which promises to deliver a certain set of specifications for a certain price. Apparently, customers themselves do not realise beforehand that their requirements will change over time. Therefor, they will prefer a quote which promises them to deliver what they think they want, rather than a quote which promises them a best effort in a rather open-ended time frame.

    Anyone have any experience with quoting XP projects?

  136. Specifications are a life saver. by master_p · · Score: 1

    Imagine NASA writing software without specs!!! The truth is that dynamic commercial environments rarely do need specs...all they need is a general outline of the concept being agreed upon all parts. Then, changes can be easily incorporated and new stuff can go in and thrown out at will.

    But there is a large class of software that can't be done without specs, and it is the software that drives your life: from satellites to power lines and nuclear reactor control, train management, airplane traffic control, defense applications, all these things must have specs, otherwise a tiny error can result in losts of lives lost and million of bucks thrown out of the window.

  137. Don't troll me. by Anonymous Coward · · Score: 0

    "but I ask, what novel piece of software was invented in a developing country?"

    First of all, how many languages do you speak and in how many developing countries have you ever been?

    Ok, just two worldwide known: Prevayler and the Health System Java Card (I don't know the official english name of this project, but they were awarded at the last JavaOne).

    Sorry to tell you, but USA is not the center of universe....

    1. Re:Don't troll me. by AmericanInKiev · · Score: 1

      Not only is the USA not the center of the Univers - it is the last place on Earth I would want to be.

      America is afflicted with a cancerous desease known as Cars. It has pushed its houses aparts - its people apart and it poisens them with cancerous monoxide. We are drownding in our own vomit.

      My wife if not from America, and my child was in five countries before she was born. I have visted Mexico - a developing country, and lived in Hungary, Ukraine, and Egypt.

      I'm not fluent in anything but English, but I can greet a person in Spanish, Hungarian and Russian and figure out how to buy bread or condoms or whatever I'm needing at the moment.

      America is the best place to be from.

      But still the United States manages to produce a disportportionate number of new ideas - that has to be recognized - not jingoistically, but intellectually - and inquizitavely.

    2. Re:Don't troll me. by Anonymous Coward · · Score: 0

      AIK,

      " Not only is the USA not the center of the Univers - it is the last place on Earth I would want to be."

      Great for you, but when I said that, it wasn't with an anti-USA feeling. It was more like "there is life beyond USA, lots of life".

      "America is the best place to be from."

      Sorry, you mean USA? I understand America as the whole continent.

      "But still the United States manages to produce a disportportionate number of new ideas."

      I partly disagree with you. I recognize all that production, but I think it's more visible than disproportionaly greater. I mean, they can turn these ideas in products, in a disproportionaly way. And even this is inside the USA geo-economic boundaries, not inside the cultural ones.

      "I have visted Mexico - a developing country, and lived in Hungary, Ukraine, and Egypt. I'm not fluent in anything but English, but I can greet a person in Spanish, Hungarian and Russian and figure out how to buy bread or condoms or whatever I'm needing at the moment."

      It's a pitty. I think that the language (slang included) is the major bridge to a culture, and you are wasting opportunities to grow. Try to learn your wife's first language (if it's not english), it's a way to understand her (and yourself) better.

      Sorry if sometimes my 'speech' seems like a rant, but I'm trying to lead you to a reflection, not to dispute with you.

  138. Re:Not for me. But we learned by Anonymous Coward · · Score: 0

    Yeah, but then a techie can say, you need a grid of flexible cells which can hold a value or a formula, and the customer says 1-I don't want a operating which you'll end up developing (i.e. framework/API) , 2-No I need a hierarchy (i.e. tree), or 3-IT's too slow.

    Hey, a developer will never have enough time to understand the business rules, period, unless you quit being a developer and do the customers' job. So...the specs have to START at the customer. Developers that think they *know* what the customers' want is thinking back in the dotcom days (uh, can I say dotcrash!). Developers should have the ultimate say in design, but they should not be the driving force.

  139. Re:Not for me. But we learned by gbjbaanb · · Score: 1

    absolutely not. The requirements are what the customer wants. The analysts then get together with them and thrash out what can be done, what you can do, what they should accept given time/performance/risk constraints etc.

    But in the real world where contracts are not quite as well defined as you'd obviously like (unless you work for a governemnt/military/telecoms/etc, etc sector that does have firm design specs) you'll find that the spec often doesn't do quite what the customer wanted.
    This is the cause of many problems in waterfall design methodolgy for example.

    Now, as a programmer you may not see the requirements at all - and the specs then are your 'reqs', but for the company as a whole - na, the customer will only be happy if it does what they originally wanted, regardless of what legal contracts have been drawn up (they only contain the blame after all, not contribute to good software engineering).

    My current company, for instance, has a good working relationship with our main customer - we don;t do specs at all (its great, I get to work on stuff without doing masses of documentation). They're happy with what they get, and when there is a problem it gets sorted out and everyone is happy. Unlike many contract-based relationships where everyone is unhappy with the compromises that are made, and the project managers just bitch at each other.

    If you do something like RUP, then requirements ARE your requirements, your test plans are based on your requirements. If you do something like XP, requirements ARE what you base your test harnesses on, and they are your specs and requirements, and practically your design too.

  140. The "new" study by Anonymous Coward · · Score: 0

    was written up almost a year ago.

  141. Requirements, specs by butane_bob2003 · · Score: 1

    The big painted cake in the sky for software development has been user-driven requirements and giving the user what he asks for. After all, the user wont be happy with anything else right? Problem is 113% of the software users out there have no idea what they want, or can't get specific about it. The only REAL development that I've done this year has been driven from the inside, based on requirements and timelines put in place by developers themselves. Most of the projects that came from the outside were requests to put hacks on top of other hacks that already existed in an organization. These were lacking clear specifications and were full of assumptions and caveats. Often the simplest solution had to be avoided due to a desire on someone's part to utilize a new, unfinished, poorly documented standard because it promised to be the next revolutionary trend in the market, according to it's shadowy working group. The assumptions and caveats usually ended up killing the projects, that and the limited value of the end result. Most of the time the non-technical manager type folks that initiated the project just got some other more exciting itch to waste money on, and went off to scratch it.

    --


    TallGreen CMS hosting
  142. Re:Not for me. But we learned by edrain · · Score: 1

    Hence (I hope) the need for systems analysts and such - to bridge the gap between the customer and the developer / programmer. Granted, a good programmer can make the translation themselves, but they really shouldn't have to - they have heavier lifting to do.

    That said, I am a Business Systems Analyst for hire, so if you need one, let me know! [/jk]

  143. Re:Not for me. But we learned by drxenos · · Score: 1

    I *see* and deal with requirements all the time. My company does embedded systems for the military. Requirement specifications aren't just what the "customer wants." They are a contract agreement of what the customer is paying for. Believe me, if we didn't meet what is in the SRS (Sofware Requirements Specification) we would lose funding for current contracts, and all future ones. Your company may not do specs, but as an SEI level 5 org. (and CMM level 4, trying for 5) we are required to.

    --


    Anonymous Cowards suck.
  144. In other news... by Anonymous Coward · · Score: 0

    In other news today, the White House begins a study on world diplomacy.

  145. Thirty Years Later, We Are Still Learning to Think by oldCoder · · Score: 1
    Software Development is probably unique among all human endeavors in that the experts are still arguing among themselves about how to think, how to organize their thoughts, what notations to use, and how to talk to experts in other fields.

    When I was writing business systems in COBOL in the 1970's we had all the same problems and all the same arguments.

    The one thing that seemed to work well was the polymath style of person who had coded for at least a few years in that industry and then been promoted to the level of "Business Analyst". Having line-of-business area specialists who also knew about programming and the personalities in the user base write the user-level specs permitted reasonably successful systems in a reasonable amount of time. These people are both "Suits" and "Techies", at least to a certain extent.

    Nowadays there is more computer sophistication among the user base, but the problem is not eliminated.

    One thing you need to reduce or eliminate is the raising of business questions in the middle of coding, where the progammer has to stop software development to go out and research more requirements. Half the time they discover they need to rebuild what they've already coded, as it isn't appropriate.

    Area Specialists
    In the 1970's I worked on an accounting software project where the very successful but bull-headed boss had canned all the accountants! Needless to say it didn't matter that the code worked brilliantly, from a technical point of view. I did learn how to code a table driven Binary Search in COBOL, however, it added no value to my user base.

    When the corporate level evaluated the software and, of course, found it to be a complete waste of time, I was personally accused of stealing company resources by writing useless software. That's one meeting I will never forget.

    I digress, but that was when I learned that there are some managers and "Business leaders" whose only management tool is to apply pressure to their staff, as they don't understand anything else. At all.

    Years later I worked on an embedded data acquisition system where the hardware guys had to reverse engineer the data sources so we could extract the data. Massive chaos reigned until we found a retired engineer who actually understood the massively complex old hardware systems with which we were trying to interface.

    Don't Build What You're Told
    It doesn't take a software developer long to realize that the software customer base is rarely happy when you build exactly what they specify. Some of the more intelligent customers (aka "Users") have learned to deal with this by refusing to agree to a spec.

    Successful business software developers learn early that you build what they need rather than what they say. Of course, then you have to sell it to them.

    It is this disconnect between user requests and user happiness that gave rise to the collaborative techniques that involve the User in specifying "Use cases" and all that, so that they are emotionally and politically committed to a particular solution before coding. Of course, this method allows the user community to learn about IT/DP from experience.

    --

    I18N == Intergalacticization
  146. Mod up, indeed by RoboProg · · Score: 1

    Nail. On. The. Head.

    --
    Yow! I'm supposed to have a plan?
  147. Re:Not for me. But we learned by Resseguie · · Score: 1

    That is a really great cartoon! Thanks for sharing - I'd love to know where it originated as well...

  148. clue-by-four for mongol . . . by Anonymous Coward · · Score: 0

    Face it, folks, we're never going to get "good requirements." Non-technicals just don't think that way. Really. We're always going to do iterative development. We always have and always will. The only questions are (1) do we do it intentionally and well and (2) do we admit it or claim to be "CMM5" or "well-managed" or in some other mythical state. If you think their brains work like ours, consider this: if a colleague ever told you s/he didn't know how long it would take to complete something, would you ever ask how long it would take to do 20% of it? That question makes sense to them. If a colleague told you something you wanted was not quick and easy, would you say something like "could you just to a simple one then?"

    The advance will come when we learn to accommodate them and communicate with them by learning how they think and when we break out this infinite loop of waiting for them to understand how we think, what we need, and what we want. I like agile, but it dies on the assumption that anyone in business gives a damn about how developers want to do things.

    Real story: Enthusiastic, but naive newbie in the dev team goes to PHB and asks to do XP, including setting up in a room, not in widely separated cubes. The X-word scared the hell out of her and she enlightened him about sub-humans lower than directors not meriting offices. Zen master tech lead waits three days, informs PHB the team will be "programming in pairs". "OK." After 4:30 pm PHB departure, lead gets key to unused office and sets team up in there. Next day, when PHB asks, lead informs her they had to relocate for temporary team testing in order to not be too loud and make other cube-dwellers less productive. "OK". (All this still within IT . . .)

    We'll never advance while we're blinded by our own righteousness. Never mind wondering why they don't pay us more.

  149. Re:Not for me. But we learned by AmericanInKiev · · Score: 1

    I believe that offshore programming is the customer reaction to being mislead by poor programming stateside.

    In short - the customer says the computer should save time by making information easy to enter and get to. So they put out for the lowest bid - they get crap, and then they want it changed (it breaks) and the project is up in smoke.

    That they can get in india. They can start fail - start fail, and finally get something working for the price of a single faiure in the US.

    To keep customers here - we need scalable solutions.

    AIK

  150. I could go on for days! by SnprBoB86 · · Score: 1

    Where I work my boss is an alcoholic with a rage problem. Being a small company, he is the only person to report to other than respect-based program-to-programer approval seeking.

    Design meetings generally follow this format:
    The boss man interupts an important programer/programmer technical discussion that was drawing to a close (approx 2 minutes remaining). He asks some questions about technology he has no hope in hell of ever understanding. He claims he understands it and says "so its kind of like..." and then proceeds to say something that indicates he has no understanding at all or that he wasn't even listening. We say "no" he gets mad b/c he is always right and decrees we do things his way because we are "idealist" scientists and he is a "practical man" and somehow therefore is right about the fastest way to write code. Argument insues for two hours over a medial issue. Boss man consumes three irish coffees and breaks two pencils. Boss man queries "So did I make it simpler?", we say "no not really". He breaks another pencil and leaves to starbucks to get another coffee to spike.

    Needless to say there are a lot of broken pencils and spilled coffee cups in our alcohol reeking office.

    --
    http://brandonbloom.name
  151. Re:Not for me. But we learned by lonesome+phreak · · Score: 1

    I just sent this out in an email to my company. I said "this is going in our training manual." Too too accurate!

    --
    Maybe we DID take the blue pill. You wouldn't remember anyway.
  152. Re:Not for me. But we learned by Anonymous Coward · · Score: 0

    And that's why the US military has shitty software that,
    while it does exactly what was specified, doesn't do anything actually useful...

  153. Re:Not for me. But we learned by drxenos · · Score: 1

    First off, how the hell would you know, Mr. Anonymous Coward? Secondly, software that does what it is required to do doesn't do anything useful? You are just trying to be an asshole. Now put down the Star wars figures, and leave your mom's basement.

    --


    Anonymous Cowards suck.
  154. Actually, Specs and Req/Design are Orthogonal by fastdecade · · Score: 1

    Requirements are what the customer wants.
    Design is how the analyst thinks it should be done.

    A specification is the medium used to communicate these. It might be oral, written, multimedia, knock yourself out.

    You can have a written requirements specification (which is what the article's talking about), a design specification on a whiteboard, etc etc

  155. ...but US users reject the software as spec'd by Invisible+Now · · Score: 2, Insightful
    There is a hidden bias in this study that, I believe, invalidates the results. US developers have a cultural problem saying no to users who reject the app as spec'd once the users see it run. We go back and code it again in response to feedback.

    Offshore developers are less invested in their users. They rely formal spec's and adherance to "Best Practices" to defend themselves, very politely, of course, against user dissatisfaction with the app as originally (mis) spec'd. No more dollars, sorry... but no recoding...

    Name an elegant app that was spec'd right from the start... No? Name any number of awkward apps that meet their spec's but are unusable... No problem!

    US users are independent, demanding and coddled. They know what they said they wanted, but now that they see it on the screen what they really want is...RECODING!

    These are just the expeiences of a pragmatic old US developer...

    --

    "Knowing everything doesn't help..."

  156. Capability Maturity Model CMM by Anonymous Coward · · Score: 0

    http://www.sei.cmu.edu/ The Software Engineering Institute at Carnigie Mellon University teamed up with the US Air Force in the early 90's to study just what is wrong and what is right with software development and processes. The results may suprize you, if you take the time to review the site. I was suprized that no one has mentioned Capability Maturity Model CMM yet in this thread. Morons. Viva CMM!

  157. Re:Not for me. But we learned by grips · · Score: 1

    I've seen a shorter, but in the main issues same, version of this already 25 years ago as badly copied drawings.

    --
    Knapp vorbei ist auch daneben.
  158. Re:Not for me. But we learned by anactofgod · · Score: 1

    Wow! It's a wonder that architects of buildings and site supervisors/foremen haven't applied your keen insight in the performance of their jobs. Their customers are ignorant of the technology and techniques, so what possible contribution could a customer make towards the task of constructing a building?

    So, have you considered that it's your (or someone else with more experience's) job to translate the customer's non-technical requirements into some facsimile of a useful specification? Or do you just code in a vacuum, absent any planning and devoid of any input or feedback, in the hope that the end result has some relevance to what the customer requested?

    If so, please shut down your computer and set away from the keyboard immediately, because you are part of the problem.

    ---anactofgod---

    --

    ---anactofgod---

    "Equal opportunity swindling - *that* is the true test of a sustainable democracy."