Slashdot Mirror


Lean Software Development

Jim Holmes writes "Mary and Tom Poppendieck's Lean Software Development: An Agile Toolkit is a great read for anyone interested in agile software development. That includes developers, leads, and managers interested in speeding up development cycles, improving quality, and getting their customers the best value. This book's been out since May, 2003, but it's well worth picking up. The concepts within are absolutely applicable now, and will continue to be for quite a few years." Read on for the rest of Holmes' review. Lean Software Development: An Agile Toolkit author Mary and Tom Poppendieck pages 240 publisher Addison Wesley rating 9 reviewer Jim Holmes ISBN 0321150783 summary Toolkit for getting agile development in your organization.

Lean Software Development is full of pertinent comparisons between the current state of software development and the massive changes in manufacturing over the last three decades, specifically demonstrated by the Toyota Production System, and 3M's innovative atmosphere for bringing products to life. The Poppendiecks make a great case as to how similar changes in software development can reap great benefits in the software production industry. Who It's For The book's very useful for anyone involved in or around the software development process: developers, leads, managers, and corner-office types. Corner-office types won't get as much out of the book as those in the trenches, but the Poppendiecks' arguments against overly-constraining process management systems may help high-level managers come to understand that such systems can actually hurt production.

Who It's Not For This book isn't for closed-minded folks who think the waterfall method and a preponderance of documentation and process control are the bee's knees. The book talks specifically about how Six Sigma, Capability Maturity Model (CMM), Capability Maturity Model Integration (CMMI), and Project Management Institute (PMI) certification can drag down development productivity and quality. Also, it's not for folks who are unwilling to consider that shorter delivery cycles improve feedback, quality, and lower cost.

(Note that the authors specifically point out that agile development does not mean tossing out all documentation and process.) What It Covers The book is labeled a "toolkit" for lean development, and it describes 22 "tools" -- that is, approaches which will help an organization move to a leaner development system. The authors start off with a great explanation of what lean practices are and how they can benefit software development. They then move on to more detailed coverage of important principles.

The book's broken into chapters covering the seven principles the Poppendiecks lay out as fundamental to agile practices: eliminating waste, amplifying learning, deciding as late as possible, delivering as fast as possible, empowering the team, building in integrity, and seeing the whole. Those seven principles may sound like marketing blabberspeak, but the Poppendiecks nail each section down with terrific discussions of applicability.

They've also got great examples tying the principles into how manufacturing has so drastically improved its processes. Each chapter concludes with a "Try This" section aimed at getting your group moving in a lean direction.

The second biggest benefit after the book's content is the extensive reference list. There's an impressive bibliography, and each chapter is loaded with footnotes referencing various books, articles, etc. This gives interested folks a great guide for further reading.

The book's summary chapter is especially good. It concisely wraps up the book in the somewhat tongue-in-cheek format of an instruction sheet for the tools the Poppendiecks have laid out. The "Caution - Use Only As Directed" section is particularly useful because it shows how one should not use the principles: "Eliminate waste does not mean throw away all documentation," and "Deliver as fast as possible does not mean rush and do sloppy work." The summary also breaks out high-level details for implementing in large and small companies. The authors are particularly helpful in pointing out strategies for dealing with difficult process improvement programs such as Six Sigma, CMM, and/or CMMI. They point out the political aspect of how to approach implementing agile methodologies in organizations constrained by such "helpful" policy systems.

There's also a note for folks working in safety-related fields where regulations and immense processes dictate how to do work: Shortening cycles in such environments can better ensure people aren't killed by software failure. What It Doesn't Cover Despite the great coverage of the principles and tools, this book isn't a detailed guide for implementing agile processes at your organization. The authors are very adamant that no two organizations function alike. Implementing agile processes requires some careful forethought before jumping in. The authors don't advocate any one methodology over another, so don't look to this book for help in deciding whether you want XP, FDD, SCRUM, or any one of the other alphabet-soup-of-the-day agile buzzwords.

Additionally, I thought a few items were given pretty cursory coverage. One example is in the chapter on late decisions where the authors breeze right over implementing a quick persistence layer to put off deciding on exact database implementation. I particularly would have liked more detail in that item. On the flip side of that; however, is the great detail given to value stream mapping, feature implementation burn rates, and several other very, very useful items - so my complaint is really that one particular item I'm working on right now wasn't covered as well as I'd have liked. Bottom Line This really is an important addition to your reading list if you're at all interested in learning how an agile environment can increase your speed, quality, and cost effectiveness. It's a great book if you're in need of guidance on how to look at and improve your current environment. It's also a great book if you need backup for convincing either your co-workers or management that a move to agile is necessary.

You can purchase Lean Software Development: An Agile Toolkit from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

135 comments

  1. hmmm by Shut+the+fuck+up! · · Score: 2, Funny

    What an unfortunate last name the authors have.

    1. Re:hmmm by Anonymous Coward · · Score: 0

      Yeah. They changed it at Ellis Island from Poppenaboner.

    2. Re:hmmm by Anonymous Coward · · Score: 0

      It becomes more appropriate if you turn the first part of the book title into an acronym.

    3. Re:hmmm by BoomerSooner · · Score: 1

      Why do they link to BN.com. Amazon is better. You can actually view the Table of Contents!!!

      Book

      ToC

    4. Re:hmmm by Anonymous Coward · · Score: 0

      Amazon is sometimes disliked for their choice to prominently feature used books/prices along side new ones. While this helps the consumer save money, it can seriously affect sales of fairly recent books, slicing into the money that makes it back to the authors [and publishers, et al]. Meanwhile, Amazon continues to make a quick commission on the sale, so they don't mind.

    5. Re:hmmm by BoomerSooner · · Score: 1

      I really like that feature because there are a lot of out of print books that are difficult to find elsewhere or buying on eBay is a frustrating experience.

  2. eXtreme Programming? by Karma_fucker_sucker · · Score: 3, Funny
    What's this? A repackaging of eXtreme Programming?

    I'll have to write a book myself: "Anorexic Programming" by Smart Ass. "The Ultimate in Lean and eXtreme Programming"!

    --
    Evil people don't think they're evil. - George Lucas, Making of Ep III
    1. Re:eXtreme Programming? by malraid · · Score: 1

      It's like the Taco Bell Menu. Extreme Programming is more spicy, has more cheese, sour cream, etc... Lean programming, is with chicken, diet soda, and "lite" sour cream.

      --
      please excuse my apathy
    2. Re:eXtreme Programming? by akinsgre · · Score: 1

      I don't know the timeline so I can't say if this is repackaging XP, or vice versa. But Lean Programming has been around for awhile.

      There are a lot of similarities to XP. God forbid we have two similar development methodologies. What's next? One operating system;')

      --
      -greg -> gakinsATInsomniaDASHConsultingDOTorg
    3. Re:eXtreme Programming? by tgrigsby · · Score: 1

      I'll have to write a book myself: "Anorexic Programming" by Smart Ass. "The Ultimate in Lean and eXtreme Programming"!

      I'll wait for the follow-up, "Bulemic Programming: Avoiding Binge and Purge Coding." That's a title that would grab my attention. We've been doing that here long enough that the code base needs a major purge (refactor). I just hope I don't end up with it on my shoes....

      --
      *** *** You're just jealous 'cause the voices talk to me... ***
    4. Re:eXtreme Programming? by dubl-u · · Score: 3, Informative

      There are a lot of similarities to XP.

      And there's no competition there. The Poppendiecks led several sessions at Agile 2005, the big XP conference in the US. XP is much more about what goes on at the team level, while the Poppeniecks are more interested in broader business and corporate culture issues.

    5. Re:eXtreme Programming? by MS-06FZ · · Score: 1

      I'll have to write a book myself: "Anorexic Programming" by Smart Ass. "The Ultimate in Lean and eXtreme Programming"!

      If you can somehow emphasize the naturally low-carb properties of this programming technique I think you'll have a winner...

      --
      ---GEC
      I'm but the humble pupil, seeking to snatch the scratchbuilt pebble from the master's fully articulated hand
  3. Close-minded persons by lilrowdy18 · · Score: 3, Funny

    I think the waterfall method and a preponderance of documentation and process control are the bee's knees.

    Seriously, who uses the phrase "bee's knees" anyway and what is so great about bee's knees?

    1. Re:Close-minded persons by ch-chuck · · Score: 5, Informative

      A bee's "corbiculae", or pollen-baskets, are located on its tibiae (midsegments of its legs). The phrase "the bee's knees", meaning "the height of excellence", became popular in the U.S. in the 1920s, along with "the cat's whiskers" (possibly from the use of these in radio crystal sets), "the cat's pajamas" (pyjamas were still new enough to be daring), and similar phrases which made less sense and didn't endure: "the eel's ankle", "the elephant's instep", "the snake's hip". Stories in circulation about the phrase's origin include: "b's and e's", short for "be-alls and end-alls"; and a corruption of "business".

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    2. Re:Close-minded persons by Anonymous+Crowhead · · Score: 2, Funny

      Ah, the twenties... "Give me five bees for a quarter", we used to say. Now, about that onion strapped to my belt...

    3. Re:Close-minded persons by Anonymous Coward · · Score: 0

      British people use it quite a bit.

    4. Re:Close-minded persons by Anonymous Coward · · Score: 0

      along with "the cat's whiskers" (possibly from the use of these in radio crystal sets), "the cat's pajamas" (pyjamas were still new enough to be daring), and similar phrases which made less sense and didn't endure: "the eel's ankle", "the elephant's instep", "the snake's hip".

      You forgot "the dog's danglies".

    5. Re:Close-minded persons by jmcneill · · Score: 1

      Seriously, who uses the phrase "bee's knees" anyway and what is so great about bee's knees?

      I guess it's more PC than saying something is "the cat's ass". Much like saying "poop" or "#2" instead of "shit".

    6. Re:Close-minded persons by Anonymous Coward · · Score: 0
      Seriously, who uses the phrase "bee's knees" anyway and what is so great about bee's knees?

      Perhaps he meant the bee's niece, or the bee's sneeze?

    7. Re:Close-minded persons by Anonymous Coward · · Score: 0

      You forgot "the dog's danglies".

      ...and in Australia, we use the expression "Dry as a nun's nasty".

    8. Re:Close-minded persons by Anonymous Coward · · Score: 0

      the dog's bollocks

    9. Re:Close-minded persons by Cederic · · Score: 1


      You missed the Anglicised version: The dog's bollocks.

      (The mutt's nuts for those that prefer rhyme)

    10. Re:Close-minded persons by ErroneousBee · · Score: 1

      They're perfectly formed, smooth and supple, thats whats great about them.

      I flex them regularly, and rub them with baby oil every evening.

      Ive just ordered the book, so I will wear shorts, place the book between my perfect patellas, walk down the street, and passing people will exclaim "Cor Blimey!" and "What a fantastic threesome!".

      --
      **TODO** Steal someone elses sig.
    11. Re:Close-minded persons by Reverend528 · · Score: 1

      My car gets 30 rods to the hogshead and that's the way i like it.

  4. Yeah right. by BluedemonX · · Score: 3, Insightful

    RE: "Eliminate waste does not mean throw away all documentation,"

    Cobblers!

    I remember distinctly reading on some Agile XP whatever site that CRC cards (the documentation is the code and unit tests!) are used long enough to get the devs on board with what to do AND THEN THEY ARE DISCARDED.

    Stuff's real good if you're doing your comp sci 101 homework but in the real world you need a process.

    --

    --- Jump!! Fire!! Bullet time!! - Lego version of the Matrix
    1. Re:Yeah right. by Bob9113 · · Score: 1

      I remember distinctly reading on some Agile XP whatever site that CRC cards (the documentation is the code and unit tests!) are used long enough to get the devs on board with what to do AND THEN THEY ARE DISCARDED.

      CRC cards are not documentation. They are an artifact of the development process. You can hang onto them for historical records if you find them useful, but they are inherently out of synch with the final product (except by coincidence).

    2. Re:Yeah right. by ChaseTec · · Score: 3, Interesting

      CRC cards are not documentation. They are an artifact of the development process. You can hang onto them for historical records if you find them useful, but they are inherently out of synch with the final product (except by coincidence).

      Remove the mention of CRC cards and you've perfectly described documentation.

      --
      My Hello World is 512 bytes. But it's also a valid Fat12 boot sector, Fat12 file reader, and Pmode routine.
    3. Re:Yeah right. by dubl-u · · Score: 3, Informative

      I remember distinctly reading on some Agile XP whatever site that CRC cards (the documentation is the code and unit tests!) are used long enough to get the devs on board with what to do AND THEN THEY ARE DISCARDED.

      Yeah, people often freak out about that. I tell them, "Ok, then you can keep the cards." They will happily put them in a box and then never look at them again. Myself, I don't use CRC cards much, I just sketch UML on the whiteboard. I do tend to leave the last few months of story cards up on the wall, though.

      Note that the most important documentation on an XP project is the acceptance tests, which you can think of as either machine-verifiable specs or automated versions of what QA people often do manually. Those say what the product is supposed to do. One framework for this is FIT, which uses specially structured tables in HTML documents.

      Unit tests, on the other hand, are where developers say what individual chunks of the code are supposed to do.

  5. Anorexic Programming by plug_it_in · · Score: 1

    What the hell is anorexic programming, would that be like...aww screw it I can't think of anything.

    1. Re:Anorexic Programming by GecKo213 · · Score: 1
      To answer your question, What the hell is anorexic programming...

      I think it has more to do with making the program feel like it's worthless because it's too "fluffy" and should really try to slim itself down to the point of massive internal failures and breakdown until it dies.

      --
      Generation Trance: What generation are you?
    2. Re:Anorexic Programming by perlchimp · · Score: 1

      What the hell is anorexic programming

      That would be Perl.

    3. Re:Anorexic Programming by smoker2 · · Score: 1
      As an example of bulemic programming, I think Microsoft fit the bill.

      Well, they make me sick anyway....

      it's a troll... laugh

  6. LSD by parasonic · · Score: 0

    If it's ANYTHING like lean beef, I don't want it!

  7. Seems to me like it's an oxymoron... by GecKo213 · · Score: 4, Insightful
    This book isn't for closed-minded folks who think the waterfall method and a preponderance of documentation and process control are the bee's knees.

    Most upper management are only about those things! Besides, having coded for companies before, I know that if you don't properly document your code and make sure you have a preponderance for process control in place typically the whole thing goes to shit. And what is this about the bee's knees!?

    --
    Generation Trance: What generation are you?
    1. Re:Seems to me like it's an oxymoron... by dubl-u · · Score: 1

      Besides, having coded for companies before, I know that if you don't properly document your code and make sure you have a preponderance for process control in place typically the whole thing goes to shit.

      The Agile movement is about the notion that there's another way to keep things from going to shit.

      And what is this about the bee's knees!?

      A quick Google search gets you three explanations in the first 10 results.

    2. Re:Seems to me like it's an oxymoron... by aklix · · Score: 1

      But with an MSN SEARCH, well, see for yourself.

    3. Re:Seems to me like it's an oxymoron... by kaoshin · · Score: 3, Insightful
      "the issue is one of understanding, not of documentation, therefore you should not overrate the value of documentation. Your goal is to ensure that maintenance developers understand how the system works so they can evolve it over time, not to produce a mound of documentation that they may or may not use."

      -Taken from this essay on agile documentation

      I agree with the above, but it is my experience that the reinforcement on developers generally needs to be in creating more documentation. The environment will naturally make all the difference. In the nasty corporate arena (my habitat), many people feel that being the only one who knows something, is their ticket to job security. As a result, they will not comment code or divulge information to anyone, etc. Unfortunately, management encourages these insecure people through among other things, a lack of employee loyalty and an eagerness to cut costs by giving valuable and veteran employees the axe, among other nasty things. Thats my take anyway.

      Bed goes up. Bed goes down. - Homer Simpson

    4. Re:Seems to me like it's an oxymoron... by dubl-u · · Score: 2, Interesting

      I agree with the above, but it is my experience that the reinforcement on developers generally needs to be in creating more documentation. The environment will naturally make all the difference. In the nasty corporate arena (my habitat), many people feel that being the only one who knows something, is their ticket to job security. As a result, they will not comment code or divulge information to anyone, etc.

      Ask yourself what goals you're trying to achieve with documentation. It sounds like you care most about knowledge transfer between developers. Agile methods solve the same problems, but with different methods. Knowledge transfer, for example, are solved with practices like pair programming, collective code ownership, acceptance tests, unit tests, and putting the team in a war room.

      Of course, the people steering the project can order more documentation at any time. On one recent project, we handed the code off to a team at another site. In addition to having a bit of a developer exchange program, we also took some time in the last couple of weeks to write high-level architectural docs. By doing just-in-time delivery on the docs, we saved a lot of effort keeping docs in sync with the code. And because it was scheduled as part of the regular work stream, we didn't rush; it was just another chunk of work.

  8. Lean Software Development? -- Use Rails n/t by Anonymous Coward · · Score: 0

    moooooooooooo

  9. Lean Six Sigma? by notdanielp · · Score: 4, Informative

    Is this a derivative of the methodologies behind Lean Six Sigma?

    There's big money in that, my graduate software engineering course last semester had a speaker in from a NASA contractor that pushed LSS as a way to manage all kinds of different engineering and production variances e.g. misfiring rocket engines.

    --
    The president has been kidnapped by ninjas!
    Are you a bad enough dude to rescue the president?
    1. Re:Lean Six Sigma? by etedronai · · Score: 4, Informative

      I don't think that six sigma and agile software development are derivatives of each other. Agile Software Development is actually meant to attack a different kind of problem than Six Sigma, even Lean Six Sigma, is meant to attack. The idea behind Six Sigma is that you can get more efficiency out of a process by always doing things exactly the same way. Try to cut down on the variance as much as possible. This is why it does well with production line/engineering type activities.

      The idea behind agile software development is that you can not apply production line type ideas to software development because two software development projects are never the same. This is why estimating and planning for them is so difficult. Agile software development says that you should just admit that developing a software product is more like research and less like running a production line and plan it accordingly. This means doing short explorative iterations that slowly build up to a larger deliverable and constantly inspecting the process and the schedule and making course corrections on the schedule.

    2. Re:Lean Six Sigma? by notdanielp · · Score: 1

      I agree with your points on Agile Development. It is definitely meant to allow maximum mobility for a development team in the hopes of ensuring relevance and focus.

      I would say that LSS is somewhere in the middle, recognizing that a large enough project needs some structure while allowing a certain amount of mobility within said structure.

      --
      The president has been kidnapped by ninjas!
      Are you a bad enough dude to rescue the president?
    3. Re:Lean Six Sigma? by nicodaemos · · Score: 1

      ... recognizing that a large enough project needs some structure ...

      Do you agree with that? In my experience, the size of the project is independent of the "structure". I use a CM system whether I'm working by myself or part of a 50 person team. I require having a way to repeatably build and test the product. I make sure that assembling all the artifacts for a release is as simple as pushing a button.

    4. Re:Lean Six Sigma? by israfil_kamana · · Score: 1

      Lean Six Sigma is an application of Lean practice and principles to Six Sigma quality control.

      They both come from the same background, which is nicely summed up in The Machine That Changed The World, by James Womack. Lean, Total Quality Management, Six Sigma, and Agile all owe substantial debts to Toyota, and this book describes it nicely.

      --
      i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
    5. Re:Lean Six Sigma? by TheDarkSavant · · Score: 1

      Is this a derivative of the methodologies behind Lean Six Sigma?

      No, it's based on the ideas behind lean manufacturing like the Toyota Production System. It kind of parallels the book Lean Thinking which was a followup to The Machine That Changed The World. Both books cover the Toyota Production System.

      It's also not a repackaging of XP. Lean Software Development is based on a set of principles that can be applied whether you are doing XP, Waterfall, Scrum, RUP or whatever.

    6. Re:Lean Six Sigma? by notdanielp · · Score: 1

      While I feel that all projects deserve structure, I also feel that the possibility of fininshing an unstructured project is inversely proportional to project size.

      --
      The president has been kidnapped by ninjas!
      Are you a bad enough dude to rescue the president?
  10. Bees Knees? by Shadow+Wrought · · Score: 2, Funny

    Banana oil, I say!

    --
    If brevity is the soul of wit, then how does one explain Twitter?
  11. Link for those who the book by Rosco+P.+Coltrane · · Score: 0, Redundant

    but don't like the Slashdot whore-link: clickey

    --
    "A door is what a dog is perpetually on the wrong side of" - Ogden Nash
  12. Mod down, same kaleidojewel spam as always... by Anonymous Coward · · Score: 0

    ...spamming the book reviews with his referral-fee-laden "give me commissions!" cry. Pathetic.

  13. Just went thru this by bobalu · · Score: 3, Insightful

    We just went through this with a new project. One of the usual suspects started putting out huge emails with a hundred questions/requirements/concerns such that you'd need to solve desktop fusion before protyping the thing and the lead architect just basically slapped him and said no, I'm not even going to answer this - let's keep it informal, get it going first and see what we can do and what makes sense. Probably saved the company $100k that day.

    Doesn't work for everything, but when it does, use it.

    --
    The revolution will NOT be televised.
    1. Re:Just went thru this by RingDev · · Score: 4, Interesting

      And will cost $500k in the long run. Those questions, concerns, requirements, etc should have all been recorded. The future user who just got smacked down for expressing his/her concerns will likely develop a less then positive view of the IT department, and be significantly less likely to partake in future design meetings where those requirements and concerns will become much more imporant.

      I have been dragged through numerous develop now, design later! projects, and each one of them has gone over schedule. I'm still trying to clean up this current project that I got hired into. The users were still bringing us new requirements for the invoicing system 2 months after it went live. Not to mention the actual framework that the app was built off of was a hodge podge of misc code. Finally we are getting things standardized and working on a solidified portal and framework system. Poor planing, a complete lack of requirements gathering, a complete absence of a clear unified design, and many other poor initial lead and management decisions have us still working on corrective maintenance for an app that was released six months ago. All for the sake of developing and releasing the first version in 4 months. No thanks, I'd take 4 months of design and huge emails up front in exchange of 8 months corrective maintenance any day.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    2. Re:Just went thru this by gehel · · Score: 1

      Not sure documenting early will save much ... In the project I'm working for the moment, there has been about 200 pages of docs before we had a single line of code. Every aspect they were thinking is there. But guess what ... after 3 months of developpement, only about 10% of that docs is still valid.
      One of the issue is to know when to document and when to keep it an informal discussion. An out of sync documentation is probably worse than no docs.
      And as all things, the best aproach depends of the project. In an area where the requierments change fast (like my project) spending too much time documenting them is probably waste. If the requierments are stable for a couple of years than why not.
      And whatever the project/methodology you will be late. As one of my teacher said : "When planing, you have to multiply by PI to get the right timeline, ... whatever the number of times you already multiplied by PI". For the moment, I've never seen the Kuonen's law be wrong ;-)

    3. Re:Just went thru this by dubl-u · · Score: 1

      I have been dragged through numerous develop now, design later! projects, and each one of them has gone over schedule. [...] No thanks, I'd take 4 months of design and huge emails up front in exchange of 8 months corrective maintenance any day.

      If that's how your agile attempts are going, you're doing it wrong. In particular, I suspect you're not writing unit tests and acceptance tests, you're not devoting sufficient time to refactoring, and I'd bet that the person making feature choices is not in the room with developers and adjusting the schedule every week.

      A process like Extreme Programming isn't "develop now, design later". It's "develop now, design now". And then next week, you do it again.

      The users were still bringing us new requirements for the invoicing system 2 months after it went live.

      I have never seen a successful system where people don't keep bringing you new requirements. I can't name a single software product that hit 1.0 and was complete. If people are going to keep changing requirements, it seems to me that I should pick a method that is ok with that, rather than trying to force users to adjust to a method that pretends we can get everything right up front.

    4. Re:Just went thru this by RingDev · · Score: 1

      True enough, I had one of those 200 page documentor bosses before. And it didn't help any. Primarily becuase it was too much information in no useful layout.

      This project, we have some useful information in a well formated layout. It's wonderful when I can open a folder and goto the specific module I'm working on, see the original requirements, notes, and update requirements, sample output, etc. Unfortunatly, not all of the folders are full or accurate. But if we had that documentation in place when we started the module level coding, it could have saved us a lot of hassle.

      Also the framework is a huge point. There was no wheres near enough thought put into the actual system that managed the module. I was trying to get bits and pieces implimented in our first 4 month phase on this project. Moving processes to worker threads, getting the interfaces to work through inheritance, standardizing the module functionality, improving the data models. We managed to the the app to work at a level that would be considered 'acceptable', but the maintenance is a pain. Now that we have most of the modules tuned up, and most of the code documentation done (nDoc is my friend!) we get to turn the lose compilation of code that is running the app into the foundation of a portal system so we can continue to add new modules with less work. Should be a great system when it's done, I just wish we could have done a lot of the design and requirements before deploying.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    5. Re:Just went thru this by nicodaemos · · Score: 1

      I've come to the belief that software is developed, goes through a repeated cycle of use and enhancement, and is then finally abandoned. But it is never "done".

    6. Re:Just went thru this by fupeg · · Score: 4, Insightful

      You guys are both wrong. It's not the method that matters, it's the people. Good software engineering is the key in either system, and neither system is perfect for all situations.

      The key to agile programming is being able to actually handle massive requirement changes. I'm talking about the kind of requirement changes where all of those precious unit tests and acceptance tests you wrote get invalidated overnight. If your requirement changes are more minimal, then they're not going to be a problem with either method. They key to being able to handle massive requirements changes is good software design. Excessive coupling between components means that when one component becomes worthless (because of said changes) its hard to salvage other components that are still valuable because they are too tied to the deprecated component. Without good software design, agile programming won't help in the worst case scenario. This is especially important for agile programming, because its approach increases the likelihood of the worst case scenario.

      Now I will say that a waterfall approach leads to several bad practices. First, it leads to a mythical man-month type of fallacy. Management tends to think that because of all the documentation present that they can manipulate "resources" like pawns in a game of chess. Second, it encourages bad design because you think you know everything. Third, and this is the worst to me, it gives false value to low value assets, i.e. people who don't actually produce anything. When a company values its process more than its employees, then it winds up hiring lots of people whose only function is to manage the process. Of course this is not unique to waterfall companies, but their emphasis on process does encourage this.

      Agile programming also encourages several bad things. It encourages the over-valuing of development and under-valuing of design. I've often seen programmers with the attitude that's ok to build something that sucks because they will make it better in the future. Second, it tends to encourage overly-conservative programming. Its faster cycles discourages tasks that don't easily fit into these shorter cycles.

      Of course the biggest limitation of agile programming comes from its roots. It clearly shows its consulting roots with its need for customer involvement. The kind of customer involvement it wants is very expensive for the customer (if we're talking enterprise software, maybe it's cheaper for consumer software.) If the customer is already paying you to build the software, then they might be willing to make this investment. If instead the customer is only a potential customer who might buy the software when it's done, then they are much less likely to make such a large investment.

    7. Re:Just went thru this by Precipitous · · Score: 1

      The arguments that you make against agile software development are actually dealt with in a quick "myths about agile software development" in the start of this book. This argument, and many other made against agile, are classic straw men -- you are attacking a weaker argument, never made by proponents of lean or agile software development.

      The example you give is a POORLY managed project, and would have failed no matter what methodology was used. Someone might have been using "agile" or "lean" as an excuse to be lazy.

      The key points made by the Poppendiks' include:

      Eliminate waste:
      This does not mean don't document. This means make sure you damn well need the document. Sometimes, I'll line up the headlines for a document, or titles for a few docs, and ask the audience (Devs, users, whoever) what, if anything, they think needs filling in. Sometimes I find stuff that needs the whole kit-and-kaboodle with all manner of UML, functional specs, analysis and so on. Sometimes we find that it's damn obvious, or the an existing doc already covers it, and I can just link. Summary: Eliminating waste means taking the time on the stuff that produces value, eases maintenance, and not the stuff that covers your personal ass or is just there cause some acronym says it should be.

      Principles translate well between projects and industries, not practices:
      I don't remember if they have a heading for it, but the point of many sections of their book is that copying practices from industry (or even project) to another do not work well. Many of the principles may. The appropriate level and style of documentation for my in-house automation systems managed by technical folks is very different from what a project of equal complexity that distribute company wide and turn over to a different department to maintain. The principles around identifying needed documentation and processes are the same, but the practices certainly are not.

      Note I'm working my way through several software development methodology books at the moment, Poppendicks' book is one of them., The other books are more traditional (I really wanted a few books with templates of use cases, etc, to copy for the team). I shutter at the overhead of classic waterfall development, but I took the time to learn about it because there are interesting lessons to be learned. I'd recommend that everyone do the same with agile. Applying the principles of both, you'll have some success.

      --
      My motto: "A cat is no trade for integrity."
    8. Re:Just went thru this by RingDev · · Score: 1

      Nice write up! I agree with you completely, there are situations where short deployment cycles and rapid turn over work well. but it is very situation dependant. I also agree the proper design is the fundamental requirement of either Lean/Extreme, rapid, or standard development. We can expect processes to change, to need refinement, and to be outright abandoned and recreated. A solid modular framework can help that a LOT. If you have the time and money to sink into developing a solid vehicle for your customer's content (data/business processes) you can really streamline the entire change management process.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    9. Re:Just went thru this by RingDev · · Score: 1

      I never said I was against agile software development. I am against shunting users/customers. Expecially ones that have enough at stake with the software to come up with a list of requirements and concerns.

      And the problems I have run into have almost entirely been due to poor management. Not due to one style of development or another, just poor management in general, or in specific situation that have consistantly caused delays. There are the occasional technical issues, but where a bad technical decision can take a day or two to correct, a bad managerial or design decision can take weeks to correct.

      -Rick

      --
      "Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
    10. Re:Just went thru this by Precipitous · · Score: 1

      My apologies, it looks like I didn't read far enough up the thread to understand the context properly.

      I very much agree that shunting off user requirements can be costly. It might make initial project development cheaper, but it makes the product worth less. One of the things I like about iterative development, is that it provides a clear approach to handling late breaking user requirements. One of the things that I like about good old waterfall, is that you invest enough time in planning to be able to create a design that is robust enough to flex to meet new requirements.

      My major software project management problem is getting developers to read and respect specs. While the classic pieces of the puzzle (management, process, docs) are in place, I've couple bright, creative developers, who tend to code to their own drummer. This works fine on small projects with just one dev, but on the larger projects, we end up rewriting a lot of great code that doesn't follow the design and spec. Agile, lean, waterfall and all other methodologies all start with the flimsy assumption that devs will want to read the documents produced and generally follow direction. Do you know any methods for herding cats?

      --
      My motto: "A cat is no trade for integrity."
  14. The Winds of Change by OneOfThree · · Score: 2, Insightful

    This book's been out since May, 2003, but it's well worth picking up. The concepts within are absolutely applicable now, and will continue to be for quite a few years.

    Is it just me, or are things changing too fast when a development process has a shelf life of less than two years?

    If you want to feel your head really spinning, pick up a copy of The Mythical-Man Month. Things don't actually change that much.

    1. Re:The Winds of Change by TrappedByMyself · · Score: 5, Insightful

      It's not so much that development processes are coming and going, it's just that people are tailoring the processes around what works.

      I've been seeing this agile stuff for almost 8 years, and that doesn't mean it wasn't around before that.

      So, gather around boys and girls, here is how you write software (does not apply to stuff like mission critical embedded software)

      1. Ask customer what they want
      2. Build something
      3. Show it to customer, and ask what they want changed

      If you make that cycle short, have good engineers, reasonable customers, and competent management, you will rule the universe.

      What happens is that projects often have stupid and/or lazy people involved, so there are tons of failed projects. So, awhile back, the academics get together and come up with this deal where you do this extravagent design/requirements process upfront. TEH SAVIOR!!! ...managers rejoice...projects continue to fail...however, the projects with good people continue to prosper. So, what is wrong? oh, we need agile, iterative, incremental, eXtreme, [insert buzzword here] processes. TEH SAVIOR!!!...managers rejoice...projects continue to fail...however, the projects with good people continue to prosper. Things are a little better though, because the processes are closer to how good people do things.

      --

      Help me take back Slashdot. When did 'News for Nerds' become 'FUD and Conspiracy Theories for Extremist Nutjobs'?
  15. Requirements? by I_Want_This_ID · · Score: 2, Insightful

    I don't have a problem with most of these development methodologies perse, but most of them seem to lack the entire concept of DATA and INFORMATION.

    I haven't read the theoreticals of a lot of these methodologies but have worked in several places that say they practice them. What I've found is a bunch of developers (not saying anything about their programming skills) that don't understand databases or design of data structures. I find it difficult to extend many of these systems that are frankly poorly designed. Do these methodologies include some prep work on gathering business requirements and understanding the underlying information relationships?

    1. Re:Requirements? by gehel · · Score: 1

      Good code comes from good programmers. Whatever the methodology, you wont get a clean design from somebody who doesnt have experience. I think quite a few managers forget that. If you hire a guy just out of a technical school because you can pay him only 50K/year than dont wonder if you get dirty code.
      The book talk quite a bit about the importance to have competent people at the right place (seems like an obvious advice, but ...)

    2. Re:Requirements? by dubl-u · · Score: 1

      I don't have a problem with most of these development methodologies perse, but most of them seem to lack the entire concept of DATA and INFORMATION.

      You should check out things like Agile Modelling and Agile Data for more information. I don't think it's core to agile methods, as not every application uses a database. But if you're big into databases, these sites can help you see how agile approaches could work in your environment.

      Do these methodologies include some prep work on gathering business requirements and understanding the underlying information relationships?

      It's not just prep work; it is work that should happen all the time. That's why Refactoring and Domain-Driven Design are such a big deal to people doing Extreme Programming. We strive for representational harmony across all levels, from talking with users down to the database schema. And not just in the spec, either; as we learn more about the domain and find better representations, refactoring lets us safely change the structure of the code to match.

  16. Similarities to XP? by Anonymous Coward · · Score: 0

    There are a lot of similarities to XP

    So what? Vista is in Beta now.

  17. alternative by Anonymous Coward · · Score: 0
    No, I didn't read TFB. I am busy reading "rapid development: taming wild software schedules". Out since 1994. One of the best things I've seen from microsoft. 36% off from amazon.

    This book's been out since May, 2003, but it's well worth picking up


    Two full years? woah. amazing.
  18. the gig's been up for a long time now by Anonymous Coward · · Score: 0
    Those seven principles may sound like marketing blabberspeak
    No they sound like feel good hippy speak. Since I'm not independently wealthy I have to live in the business world, and Mr. or Miss P. H. Boss eats up that CMMI crap. But as dumb as they are, they know anyone spouting things like employee empowerment and having only half your coders coding at any one time is just one of the whackjobs that are trying to put him or her out of the software business anyways.
  19. Lean Programming: UGLY TRUTH by Anonymous Coward · · Score: 0
    The ugly truth is that "lean programming" is just a euphemism for being assigned too many programming tasks and too little time for completing them. The end result is that you spend your own time, not company time, to complete the tasks.

    There are a substantial number of programmers in this forum. You know the truth that I have spoken.

  20. Rapid Development by leather_helmet · · Score: 0

    Rapid Development: Taming Wild Software Schedules. Redmond, Wa.: Microsoft Press, 1996. 660 pages. Regardless of preconcieved ideas regarding a book from MS Press, this is one of the best books I have read and has helped me/us ship our titles on schedule

  21. Results by Anonymous Coward · · Score: 0

    One thing I wonder when I read this is: Six Sigma has been named as a large contributing factor for the successful completion of hundreds of huge projects that have been very successful. GE and Motorola swear by it and it's used in many other industries as well.

    Has anyone actually used this stuff that the authors are writing about? Have they ever completed (or managed the completion of) a large-scale project that has been very successful? I agree that things like Six Sigma have reached management "fad" status but the point is that part of the reason it got that way is that it works. Maybe SS is not the magic bullet that it gets billed as, but it is effective. I want to see someone that has used these "tools" to successfully complete a project.


    -D
  22. Re:What do you call a cow with two short legs? by Anonymous Coward · · Score: 0

    Off topic, yes. Flamebait, no.

  23. Hypocritical reviewer? by Assmasher · · Score: 0, Redundant

    "This book isn't for closed-minded folks who think the waterfall method and a preponderance of documentation and process control are the bee's knees."

    --
    Loading...
  24. Re:What do you call a cow with two short legs? by Anonymous Coward · · Score: 0

    What do you call a male cow that has just swallowed a grenade?
    Abominable!

  25. Re:What do you call a cow with two short legs? by Anonymous Coward · · Score: 0

    What do you call that male cow after the grenade explodes?

    Noble!

  26. It's About Time by MikeyTheK · · Score: 3, Informative

    One of the least considered, studied, and written about things is project methedology. It seems like all the books about the subject relate to automotive production, where the Japanese flooded the market with their philosophy. Afterward, automotive companies hoisted these philosophies on unsuspecting suppliers. The number of paradigm shifts that auto suppliers have endured as a result over the last 20 years is amazing.

    Yet I have never had a large client try to push a project development methedology for software on us. There has never been discussion of any of these, and it seemed that for the most part, we as a group were on our own when it came to evaluating various options.

    I've been waiting for someone to start talking about the various paradigms and structuring philosophies for a while. For projects as complicated as large software systems, it is frequently a lot of trial and error, followed by more of the same. Finding any comprehensive discussion has been impossible. Hopefully this will foster more books on the topic. Software is becomming such a critical part of corporations, government, and daily life, that not only are the tools that we use important, but so is the way that we use them.

    I would also be interested in seeing some sort of discussion as to how various team-structuring philosopies fit with various classes of development tools. For example, database development lends itself to a different approach than web design, simply because of the design process, hurdles that have to be dealt with, degree of expertise, and expense of the individuals that participate in the project.

    --
    Friends help you move. Real friends help you move bodies.
    Never forget: 2 + 2 = 5 for extremely large values of 2.
    1. Re:It's About Time by mseabury · · Score: 2, Interesting

      I work for a 3 year old software startup. We have just been audited 3 times by customers or portential
      customers for our product.

      Even though they haven't pushed their software design process onto us, they have all made it clear that there must be processes to trace the requirements through developement, testing and releasing of our software.

  27. CMMI and its use(ful/less)ness by xenomouse · · Score: 5, Informative
    The review mentioned CMMI, so i figured i could share my personal knowledge of it to give others at least a basic feel for it. A few years back i worked for a defense contractor at a military base. Don't get worked up: we were glorified librarians, only occasionally writing internal apps to make lights blink, pocket strings loosen, and other such things occur. Our group (being the smallest one on the base), got the crappiest contracts. One of them was to ensure that all software development done on the base was CMMI level 3 compliant. I was one of the "lucky" ones sent to the CMMI classes to be indoctrinated. CMMI has a number of levels, starting at level 1 (very little bureaucracy, minimal documentation, and barely organized) and going level 5 (an amount of bureaucracy that would put Brazil ["Mistakes? We don't make mistakes."] to shame). Working at level 3 is right in the middle of the spectrum, with just a bit too much bureaucracy for my tastes (when you need to generate a paper trail just to write a simple function, it's a tad too much). There was a rumor going around that there was one (maybe two) companies that qualified as CMMI level 5, and they were believed to be in india (where the cost of maintaining such a level would not be prohibitive to sustain). Of course, that may have changed in the past few years.

    Now comes the question... why would anyone want such a level of bureaucracy? Well, in our case, we were responsible to the government, and from what i can tell, the government equates "paper trail" with "accountability and transparency." In other cases (commercial software), this would allow a company to switch contractors if the current contractor started acting nutsy or broke a contract in some way.

    Think of the group paying for the contract as "the boss" and two contract groups called "Bob" and "Tim." The boss wants to pay someone to develop the MegaApp for him. Bob and Tim both make promises about how fast they can develop the MegaApp and how much it will cost and how much quality the MegaApp will contain after they work their respective voodoos. Bob makes some egregious claims, and the boss (because he's a manager) believes Bob and passes over Tim's more realistic promises. Bob, of course, fails to deliver on his promises, but the boss saw that some of what Bob did met some of the requirements. Since the boss made sure that Bob and Tim implemented CMMI level 3 before they could even be considered for contract, he has the option (or believes he has the option) to take the deliverables (including CMMI documents) to Tim. Tim, who is accustomed to using CMMI level 3, should theoretically be able to pick up the project in a short period of time and run with it due to the high level of documentation.

    Just like communism, it can sound good in theory and look good on paper but will probably only work well in a perfect world.

    Note: Carnegie Mellon developed CMMI.

    Disclaimers:
    • The CMMI classes i attended were by no means comprehensive.
    • CMMI has been updated since i took the classes.
    • There are several CMMI models, each with their own purpose.
    • I am naturally predisposed against CMMI.
    1. Re:CMMI and its use(ful/less)ness by Anonymous Coward · · Score: 2, Informative

      You're missing the whole point of the Capability Maturity Model when you state this:

      "Working at level 3 is right in the middle of the spectrum, with just a bit too much bureaucracy for my tastes (when you need to generate a paper trail just to write a simple function, it's a tad too much)."

      Even though you may understand your function as it is written now, when you look back at your code or someone else does in the future, having the documentation of what the function does along with when and why it was created is important.

    2. Re:CMMI and its use(ful/less)ness by bucketman · · Score: 1

      FWIW, you are all confusing the CMM and the CMMI.

                E

    3. Re:CMMI and its use(ful/less)ness by Anonymous Coward · · Score: 0

      FWIW, you didn't realize CMMI is based on CMM. Try reading the Carnegie Mellon link here.

    4. Re:CMMI and its use(ful/less)ness by chthon · · Score: 1

      I know these Indian CCM Level 5 organisations. They are affiliated with Philips. From a point of practicality, they are not level 5, but they do know how to cook the books.

    5. Re:CMMI and its use(ful/less)ness by dubl-u · · Score: 1
      Even though you may understand your function as it is written now, when you look back at your code or someone else does in the future, having the documentation of what the function does along with when and why it was created is important.

      There are better ways to achieve that than documentation
      • If I want to know what a function does, I should be able to tell by its name and a quick look at the code. If not, some refactoring is in order. Failing that, the unit tests should tell me all I need to know.
      • If I want to know who created it, when they made it, and what they thought they were up to, that's what my version control system is for.
      • If I want to know why a particular chunk of code exists, hopefully it's obvious from the code and the unit tests. But if not, you just break the code and see what acceptance tests fail.
      The only time I'll document a function is if it's part of a published API. Otherwise, the need to document a function is probably a sign of a flaw somewhere else in the process. Documentation is a poor substitute for good tests and good code.
    6. Re:CMMI and its use(ful/less)ness by Anonymous Coward · · Score: 0

      Sounds like someone needs to take a Software Engineering course. Here is a book that might help with your studies.

    7. Re:CMMI and its use(ful/less)ness by dubl-u · · Score: 1

      Sounds like someone needs to take a Software Engineering course. Here [amazon.com] is a book that might help with your studies.

      Nice trolling! Ignoring the dialog and acting snotty is so much easier than actual discussion, isn't it?

      The standard Software Engineering approach isn't wrong. If you're using traditional methods, documenting done right is better than no documentation. It fills a lot of gaps in the traditional approach. Honestly, though, many shops produce such crappy documentation that I'm not sure it's a net gain for them.

      But I've tried the traditional approach and newer ones. I've done each for years. I'm much happier with the something like Extreme Programming. And it's not just me; so are my colleagues, my bosses, and my users. And the code is much better, too. If a book is telling me to try something that I've already tried and found to be worse, wouldn't you say it's time to get a new book?

      Or if answering that is too hard, then you could try to go back and critique my actual points. Either one's cool by me.

    8. Re:CMMI and its use(ful/less)ness by Spoing · · Score: 1
      There was a rumor going around that there was one (maybe two) companies that qualified as CMMI level 5.

      Or more.

      The thing about CMMI is that the certifications are based on sample projects (or at level 3 and higher) samples from a whole company. It also depends on the integrity of the company and the auditing group (usually an external contract firm, though not always).

      If your sample is crap, and you have documented it, you can get whatever level CMMI certification you want...while the rest of the business is a disorganized mess.

      The *ONLY* way to verify that this is not happening is to request and review the audit details, and then check to see what parts of the company were skipped. Ofcourse, this assumes that the audit was on the up and up. If you doubt that even a little bit, do the auditing yourself and choose a sample that covers a few isolated areas.

      CMMI -- like CMM -- can be botched, leading to useless results. Having a process does not mean that the process itself is worth a damn.

      Here's an analogy that might help;

      Few peaches are ever perfect. When they are, they are perfect for a limited time.

      A bad farmer will grow some perfect peaches along with the inconsistant others. A consistant farmer will grow peaches of consistant quality...but may not get any perfect ones. A good farmer who is also consistant but flexable will have the best chance at growing more perfect peaches.

      --
      A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
  28. Somebody doesn't understand by DaveAtFraud · · Score: 1
    There's also a note for folks working in safety-related fields where regulations and immense processes dictate how to do work: Shortening cycles in such environments can better ensure people aren't killed by software failure.
    Agile development methodologies are iterative. This generally means that a partial solution gets implemented now with a more complete and more correct implementation in the next iteration(s). That a defect in something like the air traffic control system or a nuclear power plant's control software will get fixed in the next iteration is probably of little consolation to the people who get killed because of it.

    NO ONE claims agile development techniques should be used in these problem domains except those who have no experience in them. This is even in the description of agile software devlopment on Wikipedia (see the discussion in the section "When to use agile methods"). The reviewer is at least clueless and even possibly dangerous.

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
    1. Re:Somebody doesn't understand by FrazzledDad · · Score: 1
      Agile development methodologies are iterative. This generally means that a partial solution gets implemented now with a more complete and more correct implementation in the next iteration(s).

      No, agile doesn't mean implement a partial solution with potential errors. The book certainly doesn't state or even imply anything remotely like what you've tossed out. (Nor did my review.)

      The book says "Generally, a process that encourages safety evaluations periodically throughout development will be superior to a process that depends upon a one-time safety evaluation at the beginning of a project." (p 184)

      That means, as my review said, shortening cycles before implementation in order to get better feedback so that those bugs don't make it to the rollout stage.

    2. Re:Somebody doesn't understand by Anonymous Coward · · Score: 0

      NO ONE claims agile development techniques should be used in these problem domains except those who have no experience in them.

      Never trust anyone who makes sweeping statements like this, especially if they use capitals and bold. I have extensive experience in Agile development, and I have (successfully) used Agile techniques on mission-critical systems. You are demonstrating the very common misconceptions about Agile that come from reading the summaries without understanding the detail.
      Are you really suggesting that using high-ceremony process-control methodologies with monolithic up-front design ensures that there are no bugs in mission-critical systems? History would disagree with you.

  29. Saw a presentation of this is Redmond by bADlOGIN · · Score: 2, Interesting

    At the borg HQ even. Lean basicly packages agile concepts into a business-tasty format. There's nothing in Lean that contradicts with XP or Scrum (in fact, it tends to amplify it). The fact that these practices come from proven manufacturing and distribution practices give the concepts more credit . If you're having trouble "selling" either XP or Scrum, take a look at this. It should sell itself.

    --
    *** Sigs are a stupid waste of bandwidth.
  30. Agile is not for commercial software development! by Anonymous Coward · · Score: 2, Interesting

    We had Jim Highsmith, Mr. Agile Manifesto, talk to our engineering team. What a waste of money.

    If you believe Agile works, you probably also believe Google can be implemented with JEEE and Oracle.

    These Agile guys really don't know what it takes to release large commercial products with million lines code, with many dependencies, many languages, requiring marketing campaigns, press tours, support training, etc.

    More versions cost more money.

    Sure Agile might work for small internal IT projects where you have one customer and you can roll out changes whenever you want without any change control or worries about upgrades or localization.

    Agile is for "lean" projects only.

  31. Yep. Anyone who hasn't read F.P. Brooks... by bADlOGIN · · Score: 1

    shouldn't be telling a dev team the time of day let alone what path to follow to build "Hello World". There's nothing fundamental in Lean, XP, or Scrum that Brooks didn't manage to say 30 years ago(yes. 30. 3-0. Thirty. Near 1/3 of a decade. check the copyright). It's not that things are changing too fast, it's a matter of ajusting your process and your understanding of building software. One great example of this is comparing the origional XP book to the 2nd edition. Kent corrected himself and altered the details after learning a lot in 4 years, but the core is still there.

    --
    *** Sigs are a stupid waste of bandwidth.
  32. Really... You Just Laid Off Half of the Staff! by Black-Man · · Score: 1

    You go into any corporate software "design" or "requirements" meeting and over half the attendee's will contribute nothing but useless documentation or Microsoft Project files about the 2-3 folks who actually do the work.

    Process employs these losers. We need PROCESS!! And LOTS of IT.

  33. Time by icebattle · · Score: 1

    Imagine having time enough to read all these methodology books? But, if that were the case, I'd probably waste it snowboarding or something...

  34. Re:Yep. Anyone who hasn't read F.P. Brooks... by dubl-u · · Score: 2, Informative

    There's nothing fundamental in Lean, XP, or Scrum that Brooks didn't manage to say 30 years ago(yes. 30. 3-0. Thirty. Near 1/3 of a decade. check the copyright).

    I don't think that's entirely true. Test-driven development, for example, seems pretty new. Hardware cost had to be pretty low before each developer could compile and run all the project tests every few minutes of development. I also don't remember Brooks talking about weekly iterations.

    That's not to knock "The Mythical Man Month", by the way. I completely agree that it's required reading.

  35. Re:Agile is not for commercial software developmen by dubl-u · · Score: 5, Insightful

    If you believe Agile works, you probably also believe Google can be implemented with JEEE and Oracle.

    That's boldly, if unintentionally, ironic. Not only is Google hiring all the Agile developers they can find, but many agilistas have a lot of contempt for the ultra-heavyweight EJB-style approach to things.

    These Agile guys really don't know what it takes to release large commercial products with million lines code, with many dependencies, many languages, requiring marketing campaigns, press tours, support training, etc.

    There's no question that complicated projects have to be done differently than simple projects. But even there, you can place approaches along an agile/non-agile spectrum. You also shouldn't mistake "I don't know how" for "it's impossible".

    Becoming agile also requires a fair bit of supporting infrastructure. For example, my Extreme-Programming-built code bases typically have a 1:1 production-to-test-code ratio. Bug rates for many XP projects are well under one per developer-month. Quality at that level enables fantastic agility in ways that seem impossible at typical quality levels. If you regularly have production relases with zero bugs found, weekly releases don't seem nearly as scary.

  36. Yearrrgghhh! by Anonymous Coward · · Score: 0

    Run from the Poppendieck!

  37. Re:primo alberino by P3NIS_CLEAVER · · Score: 0

    Ethiopian outsourcing??

    --
    Please sign petition to restore sanity to our banking system!!!

    http://financialpetition.org/
  38. Re:Agile is not for commercial software developmen by avillena · · Score: 1

    But the 99.9 % of projects ARE'NT so big as google. Please, don't force us to work as any software project is a rocket-science endeavour.

  39. Re:Yep. Anyone who hasn't read F.P. Brooks... by bADlOGIN · · Score: 1
    Hardware cost had to be pretty low before each developer could compile and run all the project tests every few minutes of development. I also don't remember Brooks talking about weekly iterations.

    Good points. In terms of practices you're quite right, and there's a lot about the how things get done today that couldn't be done 30 years ago. The values and the emphasis on people as a fundamental point of building software still remains. I'm of the opinion that Brook's "surgical team" can be realized in part through the XP team (but then again, I'm XP biased:)

    --
    *** Sigs are a stupid waste of bandwidth.
  40. But will it by melted · · Score: 1

    But will it enable customer driven, lean, agile XML based go-to market paradigms and rapid value driven innovation? That's the question.

  41. space shuttle software is CMM Level 5 by MarkEst1973 · · Score: 4, Informative
    They write the right stuff

    The software in the space shuttle cannot fail. billions of dollars and people's lives are on the line, so it cannot fail.

    At CMM level 5, you don't fix the bug when you find it. You fix the process that let the bug happen in the first place.

    CMM Level 1 is no process. anything goes, really.

    CMM Level 2 is fixing the bug and documenting that you found it. That more or less boils down to using a bug tracking system, keeping good version control, and everyone following this process.

    CMM Level 3 is the software engineering level. that basically means that everyone in your organization builds their software similarly (software design and documented use of design patterns is good here).

    Levels 4 and 5 is all about keeping a database of your processes and fixing your processes. Process flaws cause bugs, not code errors. You don't fix your code, you fix your process.

    It's important to note the budget for the team writing the space shuttle code. Lots and lots of money and lots and lots of time go into that software. Ordinary application writers like us don't get that luxury.

    1. Re:space shuttle software is CMM Level 5 by Anonymous Coward · · Score: 0

      Great article. Favorite quotes:

      1) "The answer is, yes, the process does stifle creativity."

      2) "6,366 lines of code. The specs for that one change run 2,500 pages, a volume thicker than a phone book. The specs for the current program fill 30 volumes and run 40,000 pages."

      3) "on a dollars-per-line basis, it makes the group among the nation's most expensive software organizations"

      My company's going for level 3. If we ever get to level 5 and there's 2500 pages of doc for every 6 KLOC, I'm either leaving, moving to the systems engineering group, and/or writing a doxygen-style generator to crank out all the doc from code. I wonder how many doc-generators have been written at Clear Lake?

      It looks like they've been writing and maintaining this 424 KLOC program for 21 years with 260 people... that's 77 LOC per year (okay, unfair given that they've probably rewritten it a few times over the years, and the team size may not have always been 260, but still...)

      If bugs I wrote could get people killed, sure, I'd want a process involving serious reviews and an independent validation group, but 2.5 LOC per doc page seems over the top.

      I wonder if they're coding in an obsolete language on obsolete hardware? Where the available abstractions fit the problem space so poorly that most of the 260 people spend their days as human compilers for the ad-hoc programming language that they've invented for their "like pseudocode" 40,000 page specifications?

      I looked it up, sure enough, a custom language called "HAL/S" from the 70s, on an underpowered IBM flight control computer designed in the eary 80s as an upgrade from one designed in the early 70s. The hardware comes with the byzantine architecture that such machines are famous for (24 IO processors each managing 24 buses, 28 bit words, etc). All managed explicitly by the programmers, no doubt. http://history.nasa.gov/sts1/pages/computer.html

      I did a couple years of DSP programming on a specialized IBM computer designed before the first Terminator movie came out (IBM AN/UYS-1, affectionately known as the "anus 1"); 95% of the code is just dealing with the complicated memory and IO architecture, the other 5% is your actual algorithm and control logic.

      Since the wonderful CMMI-5 process proudly "does stifle creativity", nobody will get around to writing a compiler for that hidden spec language. The complexity of the hardware would probably make it incredibly hard anyway. Since they're spending $35M a year on software, they can't afford to get some better computers, maybe the 386's they're using on the ISS, so they could code in a better language (C++?) or meta-language (matlab generating C?) on a straightforward hardware platform (flat memory 32 bit single fast CPU with mem-mapped register/DMA IO and FPGAs to handle most nanosecond-scale I/O timing instead of software loops) and reduce the 420 KLOC to maybe 30 KLOC or less.

      It's classic beaurocratic myopia - they've optimized their little corner of the system, but nobody at NASA is looking at the big picture. Instead, they crow about their software assembly line to whomever will listen, and nobody ever questions why they're using hundreds of people to do the job of a compiler. No offense to the people there, I'm sure they work hard and smart (as smart as they're allowed to), but I question the value of attaining excellence at pushing the old boulder up that mountain over and over again. What can you do with that?

      This group is held up as an example in all the process training classes I've ever had to sit through. Nobody ever goes into any detail about what they're doing, just that they are at level 5. The CMMI reminds me of scientology.

    2. Re:space shuttle software is CMM Level 5 by Spoing · · Score: 1

      Keep in mind that while software CMM is nearly identical to CMMI, CMMI is updated to correct some problems with CMM. CMMI is the replacement for CMM and handles entire organizations not just the software development part.

      --
      A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
  42. I understand , but not true in this case. by bobalu · · Score: 1

    I do understand your point, but in this case the individual I mentioned (who IS in the IT dept.) does nothing but obstruct, and his method is bureauocracy (sp?) in the extreme. Trust me, nothing but termination will keep him from grandstanding in meetings and bringing up superfluous problems, so this is not a worry.

    We're re-engineering a process, throwing stuff out and discovering what's do-able and what's not. The concerns and issues involved are real, but many are simply what I'd call "dragging the walrus", which means that we don't actually HAVE to support every single exception that's ever been done because we're also going to set new guidelines for how the input (in this case scannable documents) are going to be delivered. So there's a lot of cruft there that really does NOT need to be handled in the future. To make the project overly complicated and deal with all of this old crap up front (which IS going to disappear!) is simply a time-waster in the extreme.

    There are certainly projects that have to specified down to the last detail going in, but the trick is to know which is which.

    --
    The revolution will NOT be televised.
  43. Agile methods and CMM work together by James+Roper · · Score: 1

    I admit, I haven't read the book, but from my understanding of Agile methods and CMM, the two are not mutually exclusive. CMM is about improving and maturing the processes that you use. A company at CMM 1 has virtually no process, and can't repeat their results. But agile methods such as XP are processes, and often have even more effort put into improving them than more traditional methods such as the waterfall model. One common misconception about CMM is that it's about creating a whole lot of unnecessary documentation. If the documentation is unnecessary, that's not CMM at all, a CMM 5 company only does documentation that adds value to their processes, just like agile methods.

    1. Re:Agile methods and CMM work together by Anonymous Coward · · Score: 0

      Have a look at http://msdn.microsoft.com/msf Microsoft is reaching out to the agile audience with MSF for Agile Software Development. Many industry ISVs, SIs big and small were involved in defining and validating MSF. One of the interesting things is how Microsoft has brought the agile and CMMI worlds together in MSF for CMMI Process Improvement. David Anderson's paper talks about this at http://lab.msdn.microsoft.com/teamsystem/workshop/ msfcmmi/default.aspx

    2. Re:Agile methods and CMM work together by Bindia · · Score: 1

      (forgot to login before sending the response. Not being an anonymous coward :) Have a look at http://msdn.microsoft.com/msf Microsoft is reaching out to the agile audience with MSF for Agile Software Development. Many industry ISVs, SIs big and small were involved in defining and validating MSF. One of the interesting things is how Microsoft has brought the agile and CMMI worlds together in MSF for CMMI Process Improvement. David Anderson's paper talks about this at http://lab.msdn.microsoft.com/teamsystem/workshop/ msfcmmi/default.aspx

  44. Re:Agile is not for commercial software developmen by Anonymous Coward · · Score: 0

    I've been the founder/CTO for two tech companies that created "large commercial products with million lines code [sic... ha ha ha!]". I have always used some variation on lean/extreme programming, and it's been great. Both companies sold for millions of dollars and the products are chugging along (one of them more than ten years old). So you can argue all you want, but I'll just sit here enjoying my cocktail on the beach!

  45. lean product development by Stu+Charlton · · Score: 1

    Six sigma is more about production processes, but Lean product development certainly has a lot in common with agile methods. It takes a bit more rigourous approach to the process though -- development certainly isn't research and there are lots of opportunities for reuse of old lessons and/or artifacts, for example.

    --
    -Stu
  46. Lean works for Toyota by Stu+Charlton · · Score: 1

    And Toyota is slowly driving their competitors into the ground. I'd take another look. There's a lot more to Agile than the surface-level debates, especially if you look at it in the context of Lean product development techniques.

    --
    -Stu
  47. That's just not true. by Stu+Charlton · · Score: 1

    Lean product development is about iteration, and it's how Toyota & Lexus designs its cars, noted as the most reliable in the world. Why can't these techniques also apply to software, which is arguably even easier to change iteratively than car part designs?

    --
    -Stu
  48. A good agile podcast incl. interview with Mary... by israfil_kamana · · Score: 1

    ... is available on the iTunes store podcast section. Search for "Agile". Otherwise, you can get it here.

    --
    i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
  49. Sheer ignorance. Agile came from Lean. by israfil_kamana · · Score: 1

    Lean manufacturing was around in the 70's, based on the Toyota Production System. Agile is an application of lean princples to Software Development. Or more accurately, if you apply lean principles and tools to software development, you get Agile practices, since Agile practices are the natural result of Lean thinking.

    More importantly, Mary has delivered real product from more projects than most of us have ever attempted. She brings real credentials earned in product development to the table. What do you bring besides attitude?

    Honestly, look it up, before you pull more drivel out and bandy it about as if you were clever.

    --
    i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
  50. Lean is a big deal. by Stu+Charlton · · Score: 1
    Lean Thinking & The Toyota Product / Product Development system goes beyond software development; it's a major shift in the way people think about product development and operations. Agile methods are quite related to Lean, and this was one of the first books (along wtih David Anderson's "Agile Management" to articulate the relationship).

    I just hope more rigour and discipline can be instilled to get past the bullshit surface-level debates (how much documentation, XP = hacking?, pair programming is/isn't stupid) that really distract from the whole point of the exercise.

    I would highly suggest the following to get a better understanding of how this might fit into a software context:
    • Michael Kennedy's book "Product Development for the Lean Enterprise"
    • Womack & Jones' "Lean Thinking" or "The Machine that Changed the World"
    • Jeff Liker's "The Toyota Way"

    Toyota doesn't have a meticulously defined development methodology. Nor does it use PERT or Gantt charts to track its car development projects. Nor does it have a "project manager" to sequence & assign tasks (it relies on a "Chief Engineer" to coordinate the whole effort). Car development certainly involves a lot of written documentation, but there is no massive "requirements" document that is written up front -- there are lots of alternative requirements and design documents for sub-systems and parts and various tradeoff curves. The scope and requirements vary through the cycle of the project. There is also iteration on design, and lots of reuse of prior designs and artifacts.

    Toyota designs cars in a way that many people in the Agile community would love to design software -- in an interative and incremental fashion, without the massive soul-deadening top-down process enforcement. And they deliver the best quality, time to market, and profits in the auto industry.
    --
    -Stu
    1. Re:Lean is a big deal. by chthon · · Score: 1

      This is also what I think about software development. There should not be software project leaders, it should be up to the architects and the engineers to coordinate efforts toward a common goal.

  51. Small companies like Dell, Teh Borg... by israfil_kamana · · Score: 1

    ... several large financial firms I can't mention, the department of defense, most of modern manufacturing, 3M, etc.

    More versions isn't what Agile/Lean means. It means more iterations. You make versions (or releases) when you're ready to go to market. That's a business decision. You will certainly have many iterations before your business feels you've built enough to go to market. The technical job is to make sure that, to the extent you've gotten to high-priority scope, the quality of the code is such that it could be released at the end of any iteration, if the business sees enough of it's features in.

    People like Martin, Schwaber, Popendiek, Augustine, and the like... they have helped companies release 500K+ lines of code projects. Now explain WHY you feel large projects cannot use Lean or Agile. And what in God's name made you think that there was no change control or worries about upgrades or localization.

    Perhaps Mr. Highsmith was engaging at too philosophical a level, and expecting you folks to adapt Lean/Agile to your environment. If you have heavy release control needs, you sync up the cycles to your release cycles.

    Jeez, what is wrong with people on slashdot. Criticize with substance, not merely ad-hominem. Some of us "Agile guys" have done what you say we don't know how to do.

    --
    i - This sig provided by /dev/random and an infinite number of monkeys at keyboards.
  52. Agile is well worth the work by bADlOGIN · · Score: 1

    The Agile environment pays for itself many times over when you work in a world where each check-in kicks off compile, package, db create/destroy, 3k+ unit tests, appserver deploy and launch, and 2k+ functional/acceptance tests that culminate in auto deployment to stage on success. It pays again when at the end of each 1 week itteration you do a load test and deploy consistently to live. You feel great. "Of course we deployed to live. It's Wednesday."

    The strange part, is that when you've worked like this for a year, you wonder how the hell you though you were getting anything done before.

    --
    *** Sigs are a stupid waste of bandwidth.
  53. The PERT smokescreen by bADlOGIN · · Score: 1

    I saw the Lean Software development presentation given by Mary last week. The best part was when she referenced the interviews done for the book "The Polaris System Development" by Harvey M. Sapolsky (Harvard University press, 1972) citing that the PERT charts were found to be useless in actual project managment and were just hacked up to keep congress happy so that the teams could get things done.

    I shudder to think of the job I worked 5 years ago. They bought huge HP plotters to print out the MS Project charts, updated on a daily basis. In the most degenerate case, one documentation manager with two direct reports spent most of his day revising, planning, and in meetings so that he could show how far behind his team was slipping. The irony was that he had a background in documentation at that company, with those tools, on those products. He could have pitched in and helped make the deadline. However, his resource was not allocated for that project in that capacity so...

    Some people like to use the level of Dilbert cartoons to spot bad software development environments, but the existence of MS Project printouts is a dead giveaway:)

    --
    *** Sigs are a stupid waste of bandwidth.
  54. No silver bullet by Anonymous Coward · · Score: 0
    Let's be honest, if there really were a quick-'n'-simple way of developing bug-free software, we would have found it by now. This book can only be another fad.

    Anyway, what's with all this "rapid" development? I've seen a lot of hastily thrown-together shite in my time, so maybe a slow, methodical approach is really the rapid approach. Grasshopper.

  55. I call BS by Twylite · · Score: 1
    The book talks specifically about how Six Sigma, Capability Maturity Model (CMM), Capability Maturity Model Integration (CMMI), and Project Management Institute (PMI) certification can drag down development productivity and quality

    The moment a book claiming to be about software engineering trashes management processes like this, you know to call BS. It never ceases to amaze me how pretentious code-monkeys believe their immature approach to development is somehow hamstrung by proven management techniques that are able to deliver multi-million dollar projects ranging from constructing and mechanical/plant engineering, to the design and manufacture of electronics and automobiles.

    Let's start with some basic facts. PMI doesn't dictate your development methodology. PMI doesn't assume your project is cast in stone from day 1. PMI is about ensure that a reliable process is in place, and that there are measurable goals and delivery points so that you can check your progress in terms of time and quality. And if that's not how it works in your company then you have a management-monkey who didn't learn shit from the certification.

    CMMI worries about you having processes and procedures in place for various activities that are essential to the software process in a commercial environment, and capturing important information between steps in the process. It doesn't really care if you use the waterfall model or XP (although compliance is easier if you're using the waterfall model).

    The problem with Software Engineering at the moment is that it is being approaches as a technical problem by ivory tower academics. They're floundering in baths of bullshit and fighting with management types because they're unable to contribute anything new, they wank about perfect quality/process and forget about real-world concerns (i.e. commercial environments), and they're making old mistakes. Management theory has addressed (in other areas) many of problems we are seeing in SE. Somehow, SE thinks it is unique. It's not. It's just another production / operations function.

    And before you even think of bitching that "making software is not like a factory" - read a management textbook. Design (the creative, unique, once-off part ... y'know, like software development) is a production function. And it has to consider all the same things as SE ... oh, like user requirements, and a project plan, and quality, and maintainability, and testing, and ...

    --
    i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    1. Re:I call BS by Anonymous Coward · · Score: 0

      Please note it says "can drag down", not "always drags down".

      The moment someone gets so defensive about Six Sigma, you know the person's career relies on it because they have no real skills.

    2. Re:I call BS by Twylite · · Score: 1
      Please note it says "can drag down", not "always drags down"

      It also doesn't say "can drag up", which is more to the point.

      The moment someone gets so defensive about Six Sigma, you know the person's career relies on it because they have no real skills.

      I don't know whether to laugh or cry. Why is it that technically inclined people believe that "real skills" must be technical?

      "Real skills" depend on the environment. In a commercial environment the only "real skills" that count are the ones that can lead to increased stakeholder wealth. That typically means more profits for the company (increased income and/or lower expenses) and better salary and working conditions for you. So you start by cutting secondary activities in the value chain (i.e. reduce unnecessary administration and overheads), and then further improvement must come from productivitiy gains in the primary activities.

      Productivity gains don't have to come from the developers working faster. They can come from working smarter, from better allocation and utilisation of resources, from changing the product to be valuable to the customer, and from reducing wasted time.

      Most of these changes can be effected by management and/or process experts with little or no technical knowledge ... as long as they keep their fingers out of the development methodology.

      e.g. Managers that keep customers and upper management our of the faces of developers increase productivity ; PMIs that force the Back Room Boy to delegate to the other developers that are sitting idle can increase productivity ; Six Sigma experts that insist on handover and quality checks between phases of activity (like requirements and design) can increase productivity.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    3. Re:I call BS by Anonymous Coward · · Score: 0

      >PMI is about ensure that a reliable process is in place, and that there are measurable goals and delivery points so that you can check your progress in terms of time and quality.

      Ugh. Software engineering does not really lend itself to "measurable goals" and "delivery points", and the sooner project managers disabuse themselves of the notion the better. Engineering is a trial and error process. It makes no more sense to ask for a timetable than it does to ask for a timetable for solving logic puzzles. Insisting that the technical people (the people who do the actual work, i.e. not the folks with the PMI certs) are wrong about it just compounds the error.

      >And before you even think of bitching that "making software is not like a factory" - read a management textbook. Design (the creative, unique, once-off part y'know, like software development) is a production function.

      They have plenty of project failures and cost overruns to show for it too. What's your point?

      Look up the phrase "definition of insanity" sometime.

    4. Re:I call BS by Twylite · · Score: 1

      On the contrary, there is an extensive knowledge base in Software Engineering on how to make reliable estimates of software development time and cost. Most programmers simply don't have this knowledge, which is giving the entire profession a bad reputation.

      The only "creative" part of SE that is difficult to estimate is design -- "solving the problem" if you will. Coding is methodical application of rules; it still requires the skills of the craft, but it is easily and reliably estimated in a mature environment.

      As for design, there are several techniques (such as prototyping) to reduce uncertainty and arrive at an accurate answer sooner than the "brute force" method (i.e. doing the work and seeing how long it took).

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
  56. lean software development in a nutshell by kwoff · · Score: 1

    Don't put easter eggs like Hot Coffee in.

  57. Re:Yep. Anyone who hasn't read F.P. Brooks... by chthon · · Score: 1

    I think you mean near 1/3 of century.

  58. Marketing over science by Anonymous Coward · · Score: 0

    The author does not have any scientific credentials, but worked for a couple of firms of which only one is mentioned on the back cover.

    Most of the examples in the book are invented, theoretical models that are not or are hardly applicable in real life. Some of them even use very questionable values (see page 9 diagram "value stream for cola cans" where the bottler needs 1 minute to process a can - that would be the doom of every cola producer). Even though the diagram is borrowed, a serious writer would check the values and not throw them in the book as M. Poppendieck did.

    It is one thing to take a fancy idea (Extreme Programming) and repackage it to sell it as your own. With enough marketing and strong contacts in the field (influential friends that work for big companies) you might score some big consulting contracts and sell the books. It is another thing to scientificaly prove that this can work for a mid to large size software development company.

    The introduction of a process like this in a large company will swallow tremendous financial resources and will consume large amounts of time. If at the end it proves as the wrong process, the company is stuck with it and will have to invest constantly in fixing it.

    I work for a large company that implemented this thing (Lean Software Development - LSD :-), meanwhile it is more than a year since we have it and it really sucks. People spend lots of time trying to get in sync with the slice system, many groups have to cheat (sort of pushing slices around) long term goals cannot be achieved because whithin slices decisions are made that cancel things planned in the future, projects get canceled after moving them trough slices rendering all the slice planning useless and, and, and ...
    All this time, the consultants and advocates for this process are cashing big time, they are brought in to "analyze" things and "fix" stuff. There are expensive lunches, trainings, plane tickets and so on that go with this "process".

    A large organization has to find its own way of doing things from inside and develop the models and processes whithin the walls of the company. There are things to take in account like the availability of engineers on the job market, vacations, sick days, distribution of knowledge, personality, and so on that are not addressed at all in this 200 pages book about LSD.

    Maybe there are good ideas in the book, some of the tools there can prove to be usable, but I personally think that there is no need to hire M.Poppendieck to teach an organization how to steer the development boat.

    If you want to be hooked on LSD, go for it, but remebmer that just like an addiction, it is hard to get rid of.

    If not, save the money and learn to do things that are good for your development shop yourself.

  59. Great article!! by amyamie28 · · Score: 1

    Had a great ime reading on how to worj with this program. Enjoyed the read thought it was very well written.