Slashdot Mirror


Agile Software Development with Scrum

bADlOGIN writes "Anyone and everyone on Slashdot probably knows that business-driven software development efforts all too often end up as a mess. After a number of years of observation, research, and fine tuning, Ken Schwaber and Mike Beedle have released a book that makes a subtle but vital revelation about the nature of software projects and how to better run them. Learning what Scrum is and how to practice it is not all that profound. However, sitting back and realizing why Scrum works and how it addresses the fundamental flaws of the last 20 years of software engineering is. This book could be viewed as the "why" component to all of Extreme Programming's "how." Agile Software Development with Scrum author Ken Schwaber and Mike Beedle pages 158 publisher Prentice Hall rating 9/10 reviewer bADlOGIN ISBN 0130676349 summary This book could be viewed as the Why component to all of Extreme Programming's Hows. It explains managing software development as an empirical process.

What it's all about:

Books that claim to hold the keys to developing software the right way are most often: a) a dime a dozen, b) self-serving vendor drivel, or c) all of the above. While this book is fairly new on the shelf (Copyright October 2001), it has a level of research, professionalism, and effort towards being tool- and language-agnostic that may place it in a fourth category of being: d) none of the above. Agile Software Development with Scrum is a complete picture of the Scrum process from theory to practice in real life examples. The name Scrum was chosen because the process is similar in nature to rugby play where success is built upon being quick, adaptive, and self-organizing. The target audience for the book is "executives, software managers, project leaders, and programmers." While the authors make no assumptions directly, being familiar with Extreme Programming, "classic" waterfall methodology, and having hands-on experience with the chaos of software development is indeed helpful.

The primary theme of the book is simple, but the impact is profound: software development is an empirical rather than a defined process. That's a nice big sweeping claim to make: fortunately, the authors spends a lot of time making sure that you as the reader understand what they mean by the statement and that they're serious about it. Comparisons to other empirical processes are illustrated with examples of changing, complex problems. The authors seek out and provide unique insights from process dynamics experts on the nature of empirical versus defined processes, and cite profound supporting work regarding the limitations of algorithms in complex systems with external inputs (e.g. Wegner's Lemma).

Along with a good dose of theory, there is a generous helping of practice and how-to. Agile Software Development with Scrum covers the basic practices and concepts needed to manage software development in an empirical fashion. The authors do a good job of addressing the classic "but what about..." questions on the spot in a conversational manner and include anecdotes throughout to make specific points and include full process examples towards the end.

What's good about the book?

Scrum is the missing "why" to Extreme Programming's "how." By it's nature, Extreme Programming incorporates all of Scrum's spirit, and vice versa. This book has a foundation of ideas and an explanation of what it takes to seriously improve the state of the practice of software engineering. The order is reasonable, and the depth of information should give any determined individual the ammo they need to make a change in how software is developed in their current job or their next.

What could have been better? There are only three things worth mentioning for improvement, all of which could be easily done. First, there were occasional typographical and formatting errors -- places where indentation, capitalization, or bullets were missing broke the flow. Second, the graphics in more than one section were blocky, low resolution circa 1987. And last, the $30.95 list price was a bit steep for 158 pages. It should be noted that the typographical and graphics issues were the only thing that prevented me from rating this 10 out of 10.

Summary In my opinion, this book has been needed for a long time. The issues and failures of defined processes such as the "classic" waterfall methodology can't be set aside until there is an approach that can justify itself both in theory and in practice to replace it. Extreme Programming has gained much attention, but tends to depend too much on the fact that "it works because it works." Scrum gives you a way to fix your development efforts without as much culture shock or risk. It's worth considering implementing before your competition does.

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

168 comments

  1. What is Scrum? by Anonymous Coward · · Score: 5, Informative
    1. Re:What is Scrum? by Anonymous Coward · · Score: 0

      >Scrum is a way for everyone to feel good about their job

      I thought that was the Scrotum.

      Communication/collaboration
      Why do you need a methodlogy to communicate? Cant we communicate without a methodology?

      Simplicity
      What does simplicity have to do with a methodology? If anything a methodology is taking away from the simplicity.

      Feedback
      What Feedback have to do with a methodlogy? Its what we've been doing for years.

      Embrace change
      What else would you? run away from it?

      Iterative development and design
      Wasnt this covered a decade or so ago? Why dont you come up to date.

      Emergence
      What about it? Why do you think a methodology has anything to do with this?

      Adaptation
      Software Engieers have been doing this for years... through neumerous languages, technologies, platforms, etc. It has nothing to do with a methodlogy.

      Software First
      Its always been that way for software engineers. Ask a hardware engineer and he'll say something different.

      Methodologist = not a smart person... lacking inteligence, lacing immagination. Want to be one? follow a methodology.

  2. sounds interesting... by f00zbll · · Score: 3, Insightful

    might be worth a purchase, but still not completely sold. self-organizing is nice when engineers on the team understand the reality that organizing with other team members is good thing. It still doesn't help when one member of a team doesn't listen to anyone and ends up rewriting their code 5-6 times.

    1. Re:sounds interesting... by PincheGab · · Score: 4, Insightful
      It still doesn't help when one member of a team doesn't listen to anyone

      In that case, no development methodology will work. The best methodology to follow is to send the team (non)member home.

    2. Re:sounds interesting... by Derkec · · Score: 1

      Exactly. If a member of your "team" isn't a team player, it becomes very difficult to justify paying his or her salary. Well said
      .

    3. Re:sounds interesting... by killmenow · · Score: 1

      But sometimes that person is really tight with the CEO and it becomes very difficult to justify playing roullette with your own salary.

      And I don't want to hear it about getting a better job where you don't have to deal with the politics...any sufficiently sized organization (say, more than three people) will develop office politics. It is human nature. I've worked in many organizations trying for years to find the mythical "no bullshit" company...the closest I ever got was when a business partner and I worked for ourselves as consultants...but even then, with just two people, bullshit happened.

      Wait...maybe it's me!

    4. Re:sounds interesting... by Anonymous Coward · · Score: 0

      Team Player: Corporate-speak for "someone who will agree with us even when we are wrong."

      About as useful as a foot growing out of your forehead.

      But that's the cubicle philosophy: make sure they are advanced-degree-holding real go-getter achievers in the (four) interviews and then expect them to turn off their brains, shut their fucking mouths and do as they are told once hired.

      And when they don't, fire them before they make YOU look like the idiot you really are.

      And THEN sit around and gripe because your projects never ship. lol No wonder the economy is fucked.

    5. Re:sounds interesting... by Anonymous Coward · · Score: 0

      any sufficiently sized organization (say, more than three people) will develop office politics. It is human nature.

      Not in this humpty-bumpty. I see, hear, or smell that crap, and people are going to be fired wholesale, right after I cram those office politics right up their ass.

      Innovation, Office Politics, Profits...

      Pick two.

    6. Re:sounds interesting... by leshert · · Score: 1

      What part of "In that case, no development methodology will work" didn't you understand?

      It's as if you're comparing two models of automobile, and insisting that the second CAN'T be better than the first, because it doesn't run underwater.

    7. Re:sounds interesting... by killmenow · · Score: 1

      What part of my post gave you the impression I didn't understand?

      I agree with it. I'm just saying that in those situations, while the natural inclination may be to remove the "non" team member, politics and self preservation often interfere.

      What part of that don't you understand?

    8. Re:sounds interesting... by leshert · · Score: 1

      The top-level comment of this thread said: "might be worth a purchase, but still not completely sold...It still doesn't help when one member of a team doesn't listen to anyone and ends up rewriting their code 5-6 times."

      I thought you were still commenting on the suitability of SCRUM. My bad.

    9. Re:sounds interesting... by Anonymous Coward · · Score: 0

      Well said. This is unfortunately the problem these days. Lots of "team playing" with suck ass bosses, and the one who calls the bluff gets booted off.

    10. Re:sounds interesting... by Derkec · · Score: 1

      There's a differance between a "team-player" in corporate speak and a team-player who is someone who actually helps out a team.

  3. lack of promotion, or lack of substance? by prgrmr · · Score: 2, Interesting

    ...While this book is fairly new on the shelf (Copyright October 2001)...

    Since when is a year and a half "fairly new"? This makes me wonder if both this book in particular and extreme programming in general are really the Nirvana they appear to be? Is lack of promotion for or lack of substance with extreme programming the reason the Big Guns like IBM and Sun haven't promoted Extreme Programming Consulting services, or have they simply not found a way to co-opt the market yet?

    1. Re:lack of promotion, or lack of substance? by PincheGab · · Score: 5, Insightful
      Since when is a year and a half "fairly new"?

      When you are learning principles, a year is nothing. Lemme see, your gcc book might be old in a year or two, but your algorithms book from ten years ago is still very useful.

      Same thing here, books about development methodologies never age (refer to The Mythical Man-Month, rightfully, still required CS reading).

      If you think a year is too old for principles, then you follow fads too much.

    2. Re:lack of promotion, or lack of substance? by prgrmr · · Score: 1

      Point taken. However, given that this is an after-the-implementation expository (after all, Extreme Programming is how old?) rather than new paradigm advocacy, it's obviously more than a fad.

      Extreme Programming won't be labeled a fad until Microsoft gets ahold of it.

    3. Re:lack of promotion, or lack of substance? by Anonymous Coward · · Score: 0

      For a big corporation to change their culture in a decade would be shocking. It takes three generations. (A generation being how long it takes for about half the staff to change.)

    4. Re:lack of promotion, or lack of substance? by Anonymous Coward · · Score: 0

      Thats just it. Microsoft is no dummy to be taken by XP

  4. CmdrTaco, the whiny little bitch. by MondoMor · · Score: 0, Informative
    So today, CmdrTaco posts a duplicate article. Not out of the ordinary, since he can't be bothered to read his own site.

    The twist this time, is that he posted the dupe an HOUR AND A HALF after the first one. Not a week. Not a day. 1.5 hours. There was only ONE story between them.

    Amost every single post in the discussion attached to CmdrTaco's article says "OMG DUPE".

    Of course, he didn't bother reading this (nor the other stories on the front page). Once he woke up and discovered that his idiocy was laid bare, he had the nerve to suggest that the readers should have emailed him:

    CT: Yeah yeah. It's a dupe. Funny that not a single reader emailed me in almost 2 hours to tell me.


    Listen up, shithead. YOU should be proofreading and checking up on your posted stories, NOT THE READERS. Some readers ACTUALLY PAY YOU, so the least you could do is not insult them by posting dupes and implying they should do your checking for you.

    What a fucking worthless prick.
  5. Scrum? by Masa · · Score: 1, Insightful
    First I read "Software Development with Scum" and I thought that this must be something about those clients I have been working for.

    It's not a secret, why business-driven software development so often turns to be a such a mess. The demanding part (management, customers) is just plain stupid. No, sorry, bone-headed whould be a better term.

    1. Re:Scrum? by tobes · · Score: 5, Interesting

      Not to be rude, but perhaps if you feel that way you should spend more time setting expectations. Developers always complain about management (I know I've dealt with some crappy managers), but I think that it's the fault of the industry as a whole for not setting expectations right.

      Half the time the problem is the vendors telling management that their product will slash costs by 200% and be implemented in a week for a 10th the price of the competition.

      If you're a consultant I'm sure you've seen the ever popular salesman screw job where your sales person doesn't have to guts to tell your client what their development is really going to cost them, so it ends up being done by the you (the developer). That always leads to some fun discussions.

    2. Re:Scrum? by PincheGab · · Score: 2, Interesting
      It's not a secret, why business-driven software development so often turns to be a such a mess. The demanding part (management, customers) is just plain stupid

      I'd argue that it is our professional responsibility to make management and customers happy, we should drive the process and we should feel responsible for success. Having said that, I'll be the first to say that there are customers out there that you do not want to have (I'm sure we all have war stories about these!).

      I just want to make the point that business requirements change, clients (or employers) do not know exactly what they want, and all of that is a part of life. We do not get clearly-defined programming assignments like we got math problems in school. That is why methodologies that embrace change (like SCRUM) are so exciting.

    3. Re:Scrum? by Anonymous Coward · · Score: 0

      Yeah, if it weren't for those damn users and management, software development would be perfect...

    4. Re:Scrum? by error0x100 · · Score: 1

      Half the time the problem is the vendors telling management that their product will slash costs by 200% and be implemented in a week for a 10th the price of the competition.

      And the managers keep doing this because by and large, software developers (especially less experienced ones), let themselves be walked all over. Instead of saying to their managers, "listen, this is insane, the answer is NO", they say .. "uh .. ok ..." and then proceed to work 15 to 20 hour shifts for the next few months. So you bail the manager out, get a pat on the back, and the manager walks away with the idea that he can do this again, because his hardworking, obedient developers will save him each time.

      Although the economy is a bit rough at the moment, that does NOT mean that employee abuse is somehow OK. Developers, learn to "just say NO" to ridiculous expectations. Tell him straight, that you think it is just not reasonable to be able to finish the project in the specified amount of time. Work hard but work normal hours, with maybe a little overtime, and if the project still runs late, it means that not enough time was allocated. Your boss will have to answer to the client, and after this happens a few time, he will start to learn not to make insane promises to clients. If you honestly worked as hard as possible within reasonable work hours, it plain and simple is not your fault that the project ran late.

      Managers abuse employees because employees let them.

  6. Empirical - IOW... by Master+of+Transhuman · · Score: 0


    "We don't know what we're doing"...

    "So we'll fake it"...

    --
    Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
    1. Re:Empirical - IOW... by PincheGab · · Score: 0

      Hehe, I see a budding consultant!

  7. Methodologies by j_kenpo · · Score: 2, Insightful

    Sounds like an interesting book. I'm always on the lookout for good books on program design methodologies and software development strategies. I've come across a few for OOAD and a using the Rational Unified Process that have caught my attention within the past three years (the titles of the two books escape me at the moment). Although neither are as heavily referenced as some of my programming books, they still had a good mind set for development life cycles and methodologies that I've used in projects that I'm working on, both large and small. Then I've read some total dogs that really sucked, such as System Analysis and Design Methods from McGraw-Hill. Although it had a few (and I mean very few) good points, most of the book was regurgitation of the garbage that they summarize in the first few chapters. The only thing that I'd give a plus is the follow along of a new analyst in a developing system and the interactions he has with the development team (which after about 3/4 of the book, I ended up just reading those, after all, it was kind of nostalgic to remember what it was like to be so eager to jump into a project that you'd spout out technologies and algorithms when you meet a customer for the first time, only to have them look at you real funny and have no clue what your talking about). Id be interested to hear what books the rest of the Slashdot community would recommend as real jewels on this subject.

  8. For the life of me by Bob+Abooey · · Score: 4, Insightful

    I can't help but think all this is just one giant mind fuck. The IT industry is such a volatile industry that seems to love to be lead around by the nose and is greatly influenced by the flavour of the month.

    Why not try to take a look at some of the long time methods used by engineering industries to see how they go about designing bridges and cars and stuff like? Do you think that GM people stand around and talk about Extreme Engineering for their engineers who design high tech engines?

    --

    All the best,
    --Bob

    1. Re:For the life of me by Linux+Ate+My+Dog! · · Score: 5, Insightful

      Why not try to take a look at some of the long time methods used by engineering industries to see how they go about designing bridges and cars and stuff like?

      I live in Boston, home of the Big Dig. Right now is not the best time to impress me with construction as a model for controllable effective on-time on-budget engineering of large-scale projects.

      In fact, we get to hear this a lot as software engineers "Look at construction! They got it right!" Well, of all big construction projects I remember (Betuwe tunnels in the Netherlands, Stopera in Amsterdam, Big Dig in Boston) went into time and costs overruns, often by 100 to 400% on either variable.

      And then there is my bathroom which I had remodelled a year ago, and the stories of my hoemwoner friends who did the same. On time? On budget? Don't make me laugh. Go do the rounds among people who have had remodelling done: horror story after horror story. Construction people were like software engineers in the dot-com boom: flooded with offers, so they would overbook and the customer who complained loudest would get his project done. Many sub-teams (projects, tilers) did and do not communicate, project leads are at the mercy of the scheduling of the sub-contractors, the quality os not standardised at all but incredibly variable so you have to get "lucky" with who has a slot free to do the work on your project, many of the people are overworked or "self-medicated" to deal with their stress and the conditions of labor.

      I bought the whole "Look at construction!" mantra, and then I actually looked at how construction was done. These guys wing it as much as we do for the small projects, and when they can't wing it for the big ones, major shit happens like on our projects. And the old COBOL software is still running after 40 years and will keep running as long as the environment doesn't change, just like bridges stay up for decades as long as the environment doesn't radically change.

      Do you think that GM people stand around and talk about Extreme Engineering for their engineers who design high tech engines?

      Actually, yes, these people are constantly re-evaluating their process because their time-to-market requirements are constantly getting tighter and tighter. Just read Business Week for six months and follow the changes in the auto industry through their articles: they are all about faster, faster, and listen-to-the-customer constant process-reengineering, with CEO ans design heads being hired and fired depending on how well they can make theri human- and machine-assembly-lines line up and fire.

    2. Re:For the life of me by PincheGab · · Score: 1
      Why not try to take a look at some of the long time methods used by engineering industries to see how they go about designing bridges and cars and stuff like?

      Here you open up a can of worms: First of all, traditional engineering solves much simpler problems that IT: Build a bridge that will support 100 tons, will last 50 years, and will be 100 feet wide. Pretty simple, huh? Will the specs change? Still the problem is pretty simple. Build a high-rise? Still pretty simple and straight forward.

      IT has to meet demands not made of traditional engineers: Have you ever seen a 60-story high rise get an additional 30 stories added on? Now, how many computer system do you know that have had a 50% increase in load/features/etc...?

      As for development methodology: Traditional engineering principles have been around for hundreds if not thousands of years. Humanity has been building and designing physical things for a great many years. IT is very much new. Not only are the demands increasing, but the underlying technology is changing as well, and very rapidly at that.

      The systems we are building are very complex, and the systems we build are much more central to businesses (ie, which is more important to a business, the building it's housed in, or the IT system that it uses?). Add to that the volatile goals of IT systems and you have a monumental problem. It is not a "mind fuck," it is people trying to make change an integral part of systems development. In the face of changing systems requirements, you cannot simply develop an outdated solution because "that's the way it was planned."

    3. Re:For the life of me by Derkec · · Score: 2, Interesting
      This really isn't a fair comparison. GM's engineers make releases every year at the same time. They tend to make only incremental changes to their previous designs. Because of this, they can only react to changing customer\marketting requests at these intervals. Also, there is little room for manevour after release so things pretty much have to be right before wide release. Patches are expensive, difficult and their need may have killed people. Therefore, serious testing has to have happened before a true release.


      Wait a sec....


      Incremental and regular releases, insulation from changing requirements, lots of testing... kinda sounds like what the XP guys want us to do with software. We just have to have much tighter iteration periods.


      Seriously though. We are talking about differant engineering tasks. Some methodologies might transfer with only a little modification, but most won't.

    4. Re:For the life of me by Furry+Ice · · Score: 5, Insightful
      Do you think that this has never been thought of? This is how software development started. It was abandoned because it does not work. Much of the research in software engineering has simply tried to identify the things which make software engineering so much different from conventional types of engineering.

      In the Mythical Man Month, Fred Brooks identifies the "essential difficulties" of software development as complexity, conformity, changeability, and invisibility. I'll explain each of these terms.

      • Complexity: Software does not benefit from repetition. Many other forms of engineering benefit from being able to repeat small elements or scale them into larger elements to scale the project. In software, reptition is eliminated as much as possible through functions and procedures. Scaling-up a software project necessarily involves increasing the number of distinct components. As the number of components increases, the number of possible states and interactions between those components increases non-linearly. It's also important to note that this complexity is the essence of the software. Creating a simplified model of the software is generally useless, unlike in physics.
      • Conformity: The complexity of a software system often stems from the need to conform to arbitrary constraints (the beloved "Requirements" document). Software needs to interface with external systems, software, formats, and rules, all of which are specified without rhyme or reason. This complexity cannot be removed through any design decision.
      • Changeability: Software is under constant pressure to change because it is easier to change than physical, manufactured products. People have an inherent understanding that they cannot ask for a complete redesign of a bridge. Their lack of understanding of software development does not keep them from asking for software changes which may require a complete redesign, however.
      • Invisibility: This one is a little hard to explain, but is closely related to complexity. Software systems are so complex that a useful, comprehensive graph or diagram of them cannot be created. UML diagrams are cute, but you need several different types of them to be able to see the whole picture, and any diagram for a reasonably large system with one type of view of all it's interactions would be ridiculously huge. Couple this with the fact that you need many such diagrams, some of which are not even planar (difficult or impossible to represent in 2 dimensions), and you start to see the problem. The human mind has very powerful visual processing; the engineer gains much by being able to visualize her system. While other types of engineers are able to visualize their systems, unfortunately, software developers cannot.
    5. Re:For the life of me by Jerf · · Score: 1

      Ditto on the other three replies as of this writing pointing out that the construction industry is far from paradigmatic, but also:

      Do you think that GM people stand around and talk about Extreme Engineering for their engineers who design high tech engines?

      Actually, while I'm sure it wouldn't be called "Extreme Engineering" I would not be surprised that they take a bit more experimental approach to engine design, now that it's all in a computer that can reasonably accurately simulate the effects of various design choices.

      Times have changed in the automotive industry. The "waterfall"(-analog) model in the "old days" was forced on them, with an engine design and a few prototypes at best before shipping. Now an engineer can change one component and find out what happens. I suspect they don't use the "waterfall" either anymore, in favor of something a bit more "agile".

    6. Re:For the life of me by pmz · · Score: 3, Informative

      Actually, yes, these people are constantly re-evaluating their process because their time-to-market requirements are constantly getting tighter and tighter. Just read Business Week for six months and follow the changes in the auto industry through their articles: they are all about faster, faster, and listen-to-the-customer constant process-reengineering, with CEO ans design heads being hired and fired depending on how well they can make theri human- and machine-assembly-lines line up and fire.

      The difference is that the auto industry takes this stuff very seriously and there is often committment from the top executives on down. They incorporate their engineering practices as a core part of their business. They understand the value of engineering and good processes.

      The same is far from true in most software firms. Many software engineering managers are just transplants from other parts of the company. They often have little experience or training. They often think in terms of buzzwords rather than fundamental concepts. They often screw up.

    7. Re:For the life of me by Anonymous Coward · · Score: 0

      Functions are precisely repitition. The implementation of them is simply factored out, in order to simplify the problem and provide a single point of failure and alteration. An advantage not particularly provided to the physical engineering disciplines.

      Almost no software providers practice Software Engineering. Frankly they don't tend to know what actually works or not, simply because they never attempt to provide the ethic required to actually engineer something. There are a few, mostly specialized producers, that actually attempt a process that provides correctness in implementation, but I rest assured that most of the tools responding in this thread certainly aren't even remotely familiar with using any methodology in the work place.

      I would also imagine than the typical automobile, including its requisite software, is about twenty times more complex than any project you've been involved with. If you think any engineering discipline doesn't have to deal with immense complexity, have to design in conformance to immutable specifications, and provide flexibility for the future, you're one delusional pup.

    8. Re:For the life of me by photon317 · · Score: 1


      I agree. I still think books like this one are interesting to read, as they help you think about the problem, but essentially the Software Development problem comes down to these simple points, IMHO:

      1) Talent - Get talented guys. Programming talent almost really can't be taught, find the "naturals". If you can't find talented programmers, and you're left with the random industry jerkoffs, then resign yourself to a slow process with buggy software.

      2) Make them happy - Programmers who are asked to work 80 hour weeks for 40 hour salaries while expecting a layoff at any time between tommorow and 6 months out don't do good work. Increase their quality of life, and they do better.

      Other than that, you can spout all the techno-babble you want about software development and it doesn't change a damn thing.

      --
      11*43+456^2
    9. Re:For the life of me by Anonymous Coward · · Score: 0

      Looking too closely at physical engineering techniques and practices, in an attempt to improve software development, is a waste of time. Lots of people have tried, and aside from basic management practices, there is nothing there.

      What is really needed is (A) experienced programmers, who know how to use tested libraries for maximum benefit, to solve their individual programming tasks and (B) managers that are familiar with programming and know how to manage the programmer type.

      XP is a great SD technique, but programmers and managers have to buy into it for it to be truly successful.

    10. Re:For the life of me by bgat · · Score: 1

      Since when does GM do high-tech engines? :^)

      --
      b.g.
    11. Re:For the life of me by SimonInOz · · Score: 1
      It always tickles me that people compare software building with car building. In a car factory, there are hundreds of people bolting stuff together, welding, pressing steel, etc. People think this is like programming. It's not - it's more like compiling, linking. I have tools for that.

      But way over there in the corner, in a little room, there's this guy. He sits about thinking, coming up with new ways to build cars. Faster, better, higher quality. Now THAT'S equivalent to programming. But no-one ever talks about him .... (Have a look at "The Programmers Stone" for some sensible thoughts)

      --
      "Cats like plain crisps"
    12. Re:For the life of me by ajm · · Score: 1

      I agree. If you actually watch construction projects you'll often see them put in sidewalks one week only to tear them up the next to lay pipe. Programming has been beaten up too much be people saying it should be more like construction, people who've clearly never even seen a road being built.

    13. Re:For the life of me by Ardias · · Score: 1


      > Patches are expensive, difficult and their need may have killed people.
      > Therefore, serious testing has to have happened before a true release.

      Car makers hate recalls much more than consumers do, but AFAIK, they have always been forced into it. Ford was forced to deal with Pintos that blew up every time they were rear-ended. It was internally documented that Ford/Firestone knew about the problems with tires on SUVs years before they were forced to replace the tires.

      If they had done some serious testing before release, then maybe Seymour Cray would never have died because his SUV flipped over due to a bad tire.

    14. Re:For the life of me by Anonymous Coward · · Score: 0

      Actually there are teams that design the individual aspects of an automobile, not a single visionary Super Hero responsible for the entire R&D for automotive construction. You also trivialize, a little, the importance of the processes used to develop the processes used in the mechanical construction of an automobile. These processes are, too, the domain of teams of people.

      It's also amusing when people pretend that automobile manufacturing doesn't involve software design. It does, only unlike the Slashbots that I could teach my little brother to replace in a matter of a few years, they actually develop processes for software engineering that produce correct code.

    15. Re:For the life of me by pmz · · Score: 1

      It always tickles me that people compare software building with car building.

      How are they fundamentally different? What is simple about designing a car, the materials that go into it, the tolerances of all the moving parts, the factories that will build it, the tooling for those factories, and the tremendous effort of managing many thousands of employees? The more exposure I get to automotive and manufacturing engineering, the more impressed I am that cars work at all let alone for 250,000 miles for the better ones.

      And yes, software engineering for non-trivial projects is this complex, also, but I rarely see a "software engineer" that admits it or even is aware of it. That is why most software still sucks.

    16. Re:For the life of me by Hognoxious · · Score: 1

      3) and if you can't clear obstructions out of their way, at least don't become an obstruction yourself.

      Otherwise, totally agree; well said, Sir/Madam (delete as applicable).

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    17. Re:For the life of me by Anonymous Coward · · Score: 0

      You are right about the methodlogies being a load of crap. IT industry is full of people who went to school for "Information Technology" not Computer Science. They werent bright enough to undertsand programming, and was always looking for getting something done without programming. Back 10 years or so, no self respecting Software Engineer wanted work as a brain dead IT guy, so the ones who graduated with IT degrees went on to become the big shots of IT by somehow hooking up a few apps to get teh job done. Its no wonder that IT people keep looking for this silver bullet to get their projects done. So we are in this mess because there are lots of idiots running IT shops and theres a lot of people comming up with "methodologies" to get the IT managers open up their wallets.

      Every methodology, along with a bunch of bullshit, evntually says its about having good engineers, and having good communication. Hell, with good engineers you dont need a methodology, they are good engineers because they know what works through hard earned experience. Methodologies are for inexperienced engineers. Why everybody is looking for this magic bullet is beyond me. Look for good engineers that despices methodlogies... those are the ones that will make a project succeed, not methodolgy idiots that wants to hide behind a process.

      If you look at successful projects like Linux or Darwin, etc, you dont see anybody clammoring around a methodology. Its successful because the people who work on these projects love what they do and know what they do. Methodology fools will always point to these projects and say tehy are using XP priciples because lots of people are looking at the code, but I'd argue that XP and any other methodlogy that makes that cliam is making use of what good engineers have always been doing for decades. Methodologies like XP, SCRUM have stolen ideas from us and trying to seel it back to us as a new innovation.

  9. Huh? by NFW · · Score: 2, Funny
    Anyone and everyone on Slashdot probably knows that business-driven software development efforts all too often end up as a mess.

    Seems to me that "end up as a mess" describes software efforts in general, no matter what drives them.

    --
    Build stuff. Stuff that walks, stuff that rolls, whatever.
  10. Master the Tao, all else will follow by arvindn · · Score: 5, Insightful
    After a number of years of observation, research, and fine tuning, Ken Schwaber and Mike Beedle have released a book that makes a subtle but vital revelation about the nature of software projects and how to better run them.

    They have discovered that the Tao is the heart of all programming.

    Hark, the master speaks:

    A novice asked the Master: ``Here is a programmer that never designs, documents or tests his programs. Yet all who know him consider him one of the best programmers in the world. Why is this?''

    The Master replies: ``That programmer has mastered the Tao. He has gone beyond the need for design; he does not become angry when the system crashes, but accepts the universe without concern. He has gone beyond the need for documentation; he no longer cares if anyone else sees his code. He has gone beyond the need for testing; each of his programs are perfect within themselves, serene and elegant, their purpose self-evident. Truly, he has entered the mystery of Tao.''


    A novice asked the master: ``I have a program that sometime runs and sometimes aborts. I have followed the rules of programming, yet I am totally baffled. What is the reason for this?''

    The master replied: ``You are confused because you do not understand Tao. Only a fool expects rational behavior from his fellow humans. Why do you expect it from a machine that humans have constructed? Computers simulate determinism; only Tao is perfect.

    ``The rules of programming are transitory; only Tao is eternal. Therefore you must contemplate Tao before you receive enlightenment.''

    ``But how will I know when I have received enlightenment?'' asked the novice.

    ``Your program will then run correctly,'' replied the master.

    Learning what Scrum is and how to practice it is not all that profound. However, sitting back and realizing why Scrum works and how it addresses the fundamental flaws of the last 20 years of software engineering is.

    Once you obtain that realization, you will have truly mastered the Tao.

    1. Re:Master the Tao, all else will follow by ken_mcneil · · Score: 0, Offtopic

      Ahh...modded up as insightful when it's clearly a joke. It is clear to everyone here that this is a joke right?!

      Perhaps this is just confirmation of my long held suspicion that there are people out there with the "All I ever needed to know about programming I learned from /. and when I grow up I want to be a caffein addicted code cowboy" attitude. Truly...deeply...scary. You should all be ashamed of yourselves.

    2. Re:Master the Tao, all else will follow by TerryAtWork · · Score: 4, Insightful

      See, here's the problem.

      Programming is still an ART, not a science.

      When you hire a coder it's like hiring a poet. You never know what you'll get and everyone wants the other guy to have paid for the coder's learning experiences.

      This is hunting and gathering. We haven't hit agriculture in the geek business yet.

      --
      It's Christmas everyday with BitTorrent.
    3. Re:Master the Tao, all else will follow by Anonymous Coward · · Score: 1, Insightful

      Uh - if you employ a scientist, you never know what you'll get and everyone wants the other guy to have paid for her learning experiences.

      And farmers aren't poets.

    4. Re:Master the Tao, all else will follow by Anonymous Coward · · Score: 0
      the median score of your last eleven moderated messages, sorted in ascending order

      Sorting order doesn't effect median.

  11. Totally Useless by Peter_Pork · · Score: 5, Informative

    I glanced at this book before, and I found it totally useless. The few ideas presented are already well-known facts about software engineering, heavily adorned with buzzwords like extreme programming and agile software. I did not see a single idea that was not present in Fred Brooks' "The Mythical Man-Month", that was written back in the 70s. Do not waste your time with this: I'd much rather read a classic, timeless work on project management and its challenges that this scum. If you want to look at contemporary, more applied works, I recommend Steve McConnell's "Rapid Development" and "Code Complete".

    1. Re:Totally Useless by pong · · Score: 3, Insightful

      That the ideas presented in this book are not new, doesn't make them useless. I'd almost say on the contrary. The "soft" part of my book shelf contains

      The Pragmatic Programmer
      XP Explained
      GoF Design Patterns
      Object Oriented Software Construction (Meyer)
      Software Craftmanship
      Code Complete

      Getting familiar with different takes on and approaches to software development has definitely made me a better developer. XP (and SCRUM and other agile methods) has a lot to offer, and a few short comings too. It is not the end all be all of software processes, but it was *the* new thing that made everyone aware of the benefits of unit testing and refactoring, even if these disciplines were not new at all. XP's two major short comings in my opinion is that it puts too much responsibility on the customer and the "simplest thing that could possibly work" does not strictly allow experienced developers to leverage their experience to solve the problem as fast as they are able. I'd like to get my hands on this book and see just how SCRUM differs from XP - I bet it will make me a better developer.

  12. "How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 5, Informative

    I've worked with XP on 2 projects and more normal "MSF"-like approaches for about 7 projects. (The remaining ones were kind of unmanaged to begin with, which is the pits)

    Anyways, XP doesn't work. Proponents like to say that XP is high throughput, but I just don't see it. At my last job (where XP was employed) programmers had to put in long hours, despite this being against XP tenet. This resulted from abbreviated design cycles and hit-and-run feature development.

    We like to talk about agility and mentally substitute quick hack jobs as a way of limiting cost overrun when features change midcourse (which they often do). What XP people don't tell you is that XP encourages these features to be hacked in (simplest thing possible, remember?) without regard for how it might be later removed with little effort.

    In other projects where features were designed and implemented with a good degree of modularity, that feature was canned or changed, yet we were able to extricate it with little effort - simply by #defining it out or by not shipping the modular DLL it resides in. In comparable XP-driven projects, I've been told "No, modularizing it is not a requirement. Do the simplest thing - add whatever you need to the existing classes and just do it."

    In XP, implementation is cheap up to a certain point where suddenly refactoring becomes imperative. Refactoring is then a very painful process given a very short iteration cycle. You won't find an XP shop that will encourage modularity over implementation time. But, like anything, the biggest gains come from pacing and managing, not from writing as much code as possible in a short amount of time.

    Ok, so now you say that pair programming compensates for the short design cycles. Get real - no one really does this because this, too, does not work. Most programmers are like any other people - they can be tempermental, stubborn, selfish, and proud. The worst part is, the younger and more inexperienced the engineer, the less willing he is to accept other points of view. Try working with that. You can't.

    Where XP excells is late stage bug fixing, where hit-and-run is definitely the right strategy.

    1. Re:"How" eXtrEmE pRogrAMming destroyed my project by tcopeland · · Score: 5, Interesting

      > Do the simplest thing - add whatever you need
      > to the existing classes and just do it."

      Hm, that doesn't sound XPish. XP says to refactor as you go. So when you add some code and things are getting complicated, refactor to make it simple.

      > You won't find an XP shop that will
      > encourage modularity over implementation time.

      "Modularity" can be taken to extremes, too:

      int x = IntegerFactory.createInteger("5").toInt();

      > Most programmers are like any other
      > people - they can be tempermental,
      > stubborn, selfish, and proud.

      Yup, just like anybody else. But how will these people ever improve their interpersonal skills if they don't work with other people?

      > Where XP excells is late stage bug
      > fixing, where hit-and-run is definitely
      > the right strategy.

      If you do XP all the way through, the pair programming, short iterations, and especially the unit tests will minimize the "late stage bug fixing". You did have unit tests, right?

      Yours,

      Tom

    2. Re:"How" eXtrEmE pRogrAMming destroyed my project by fliesd · · Score: 2, Insightful

      So with out doing all the pieces of XP. Having a horrible attitude about working with others, and not trying to do refactoring through out every stage of development. All while working overtime.

      It is not a wonder why you have faild and I'm pretty sure it is not XP's fault.

      If you use XP in a hit-and-run fashion you'll get hit, and management will dive off, leaving you to blame XP.

    3. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 0

      The pair-programming aspect is the core of XP - all the rest is secondary, in my experience.

      You're only doing XP if you pair-program. Pair-checkin isn't too bad, either, but at code-write-time is better.

      If pair programming isn't working for you, remember that "the only constant in all your dissatisfying relationships is you", and change your attitude.

    4. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 2, Insightful

      I've worked with XP on 2 projects and more normal "MSF"-like approaches for about 7 projects. (The remaining ones were kind of unmanaged to begin with, which is the pits)

      Anyways, XP doesn't work.


      Data is not the plural of anecdote.

    5. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 0

      XP does not say that each feature should necessarily be hacked in. When a programmer adds a feature in the simplest way possible, then it is followed by refactoring to attain the primary goals that the system should be as simple as possible and that the programmers should not repeat themselves.
      XP does not say: implement each story as atomically, ignoring the rest of the system.

    6. Re:"How" eXtrEmE pRogrAMming destroyed my project by Wojina · · Score: 2, Insightful
      Anyways, XP doesn't work. Proponents like to say that XP is high throughput, but I just don't see it. At my last job (where XP was employed) programmers had to put in long hours, despite this being against XP tenet. This resulted from abbreviated design cycles and hit-and-run feature development.
      I'm not an XP expert who has experienced radical success with this methodology. I'm just a developer that tries to maintain a broad perspective on software development. However, I have yet to meet a person who claims to have done XP that actually did XP when you got right down to it. The XP methodology is a package deal. You can't just pick and choose a few ideas from it and call it XP. One company I worked with claimed to be doing XP because they didn't spend any time on design...nevermind the fact that they didn't practice test-driven development, refactoring, pair programming, or user stories.
      In XP, implementation is cheap up to a certain point where suddenly refactoring becomes imperative. Refactoring is then a very painful process given a very short iteration cycle. You won't find an XP shop that will encourage modularity over implementation time. But, like anything, the biggest gains come from pacing and managing, not from writing as much code as possible in a short amount of time. Ok, so now you say that pair programming compensates for the short design cycles. Get real - no one really does this because this, too, does not work. Most programmers are like any other people - they can be tempermental, stubborn, selfish, and proud. The worst part is, the younger and more inexperienced the engineer, the less willing he is to accept other points of view. Try working with that. You can't.
      So now you're telling me that refactoring was not a priority on your team and that you didn't practice pair programming. Let me also assume that you didn't practice test-driven development, either. You might even have written a few tests, but I'm willing to bet that you didn't develop a full test suite. Did you practice continuous integration? Did you run your unit tests after each build, and did you consider your task complete when your tests passed? My guess is no because it's pretty clear that you tossed out key fundamental aspects of XP because you didn't think they could work in the "real world".

      Here's a new reality for you:

      Any developer who can't get over his stubborn, selfish, and proud nature to work closely with another peer is not worth hiring.

      I'm not saying it won't be difficult for some people, but anyone that wants to can make it work (much like marriage). As to accepting other points of view, my experience is quite the contrary. The younger, inexperienced engineers that desire to improve look to the experienced engineers for advice, and they seek opportunities to work with them. The sad reality is that the more experienced someone is, the less likely that they'll accept the input of others. They've already decided how things work. Clearly, you've arrived.
    7. Re:"How" eXtrEmE pRogrAMming destroyed my project by Sharkeys-Day · · Score: 3, Insightful

      programmers had to put in long hours

      That's not XP. XP forbids long hours for more than a week, because you can't write good code when you are tired, overworked, and have low morale.

      Do the simplest thing - add whatever you need to the existing classes and just do it.

      That's not XP either. XP says do the simplest thing, but specifically does NOT define "simplest" as "least time to implement". The simplest thing in XP is a compromise between least time and least code, with the specific condition that code is not allowed to be duplicated. The least time solution is often "copy this function and modify it for my needs". The XP solution is "refactor this function so I can use it too". This means you are doing small refactorings throughout your project, and modularity appears wherever it is needed.

      Refactoring is then a very painful process

      Refactoring is painful if you are not confident that the changes will work. If you are not confident, it is because you do not have a full automated testing suite. Let me guess... you aren't doing that either?

      pair programming ... no one really does this because this

      You tell us about all the parts of XP that you don't do, and then you complain that it does not work. Building a brick wall without mortar won't work either, but it's not the brick's fault.

    8. Re:"How" eXtrEmE pRogrAMming destroyed my project by praetorian_x · · Score: 1

      If you do XP all the way through, the pair programming, short iterations, and especially the unit tests will minimize the "late stage bug fixing". You did have unit tests, right?

      Unit testing, at least on most of my projects, just isn't possible. The reason: The database. I work for a financial firm writing internal j2ee apps that hit enormous databases (yeah, even the development databases) with diverse users. There is just no way that, on a short iteration cycle, I can assume that the state of the database can be reset to some baseline in any sort of timely manner.

      I'd love to be able to host the database on my own computer and engage in rapid prototyping as some XP'ers suggestion, but there's just no way. Maybe on smaller projects, or on framework projects, or on shrink wrapped products. But not in my line of work.

      Not that I don't love the idea of Unit Testing. I do. I just haven't seen it provide much more than trivial benefit to any of the projects I've worked on.

      Then again, maybe I'm an idiot. (Actually, on second thought, I *am* an idiot.)

      Cheers,
      prat
    9. Re:"How" eXtrEmE pRogrAMming destroyed my project by tcopeland · · Score: 1

      > There is just no way that, on a short
      > iteration cycle, I can assume that the
      > state of the database can be reset
      > to some baseline in any sort of timely manner.

      Right on. So don't test against the database directly. Use mock objects. Since you're doing J2EE, I reckon you're using JDBC in your session beans, or you're using a bunch of entity beans, or you've got some sort of DAOish layer somewhere. Any of those can be mocked up in one way or another; give it a whirl.

      I don't mean to minimize the difficulty of unit testing J2EE stuff - I mean, any time a bean gets resolved it throws a wrench in the tests. But try to refactor as much as possible into plain ol' Java objects, and mock out the rest.

      I'm an idiot too - that's why I write a bunch of tests, otherwise I'd be breaking things all the time :-)

      I've had great results with unit testing PMD - here's the current test report. So I'm pretty hyped up on them....

      Good luck,

      tom

    10. Re:"How" eXtrEmE pRogrAMming destroyed my project by William+Tanksley · · Score: 2, Insightful

      In XP, implementation is cheap up to a certain point where suddenly refactoring becomes imperative. Refactoring is then a very painful process given a very short iteration cycle.

      Wow. I bet you'd also say that design is cheap, up to a certain point where testing becomes imperative. Or perhaps that implementation is cheap, up to the point where you have to integrate with the other programmers.

      Wrong. Testing, and refactoring, are imperative from day one, according to XP. Before you add code, you start with cleanly factored code; if it's not clean, refactor it until it is. Then write the first component of your design in the form of a test. Next implement the code to make that test pass. Continue writing down more of your design in the form of a test and making the tests pass.

      Once your design is fully expressed as tests and the tests all pass, refactor the code *immediately*.

      Note how testing and refactoring are intermingled with coding? If you put the testing, coding, or refactoring off till later, you'll quickly find that your work becomes painful.

      Integration should be constant as well -- the entire product should be ready to ship at least once a week, and should be built and tested in full at least once a day. If you put this off, you'll be creating work for yourself and setting yourself up for an expensive failure.

      -Billy

    11. Re:"How" eXtrEmE pRogrAMming destroyed my project by praetorian_x · · Score: 1
      Right on. So don't test against the database directly. Use mock objects. Since you're doing J2EE, I reckon you're using JDBC in your session beans, or you're using a bunch of entity beans, or you've got some sort of DAOish layer somewhere. Any of those can be mocked up in one way or another; give it a whirl.
      Two problems with this:
      • You have to put a mock layer into your application and actively maintain that layer, keeping up with the changes that occur in your data layer. When a test case fails, is it because your logic is wrong, or is it because the mock layer doesn't accurately reflect the database layer?
      • You won't catch any problems with the data layer. Say you introduce some ass-backwards logic that accidentally saves a duplicate into a primary key column. You won't see this if you use a mock data access layer. Say you know a select should return x number of values. How can you test this without actually going agaist a database? Etc.

      In the case of PMD, what appears to be a framework/tool, Unit Tests are probably a dream. With database-based J2EE apps, less so.

      At the same time, I like the idea enough to make another dash at it. We'll see how it goes.

      Cheers,
      prat
    12. Re:"How" eXtrEmE pRogrAMming destroyed my project by Jason+Pollock · · Score: 1

      What type of database are you using that you can't have a local instance of the tables? Not an entire copy of the live data, but a small subset of test data? DB-2? Even then, you should be able to create a small test database instance and test against that. Sure, it does require management support to find people to set it up, but automated unit tests are a central component to XP. Without them, there's not much point in doing anything else.

      Slashdot had a story of how one group managed it. Here, we're setting up similar things against Oracle.

      Jason Pollock

    13. Re:"How" eXtrEmE pRogrAMming destroyed my project by torpor · · Score: 1

      Anyways, XP doesn't work. Proponents like to say that XP is high throughput, but I just don't see it. At my last job (where XP was employed) programmers had to put in long hours, despite this being against XP tenet. This resulted from abbreviated design cycles and hit-and-run feature development.


      What you did was not XP. You even admit it in the same breath ...

      If you're not enforcing the tenets, its unfair to say that "XP doesn't work".

      --
      ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
    14. Re:"How" eXtrEmE pRogrAMming destroyed my project by Kazoo+the+Clown · · Score: 1

      I liken these arguments over methodology to what's wrong in education in the US-- people keep looking for a "magic" methodology that will fix all the problems, attempt to impose it on all the teachers which pisses off the good ones till they all find better jobs, then in time when it's seen things aren't any better, they distance themselves from the "old" magic methodology, blame it for the failures and start the process over again with a "new" magic methodology. Phonics vs Whole Language is an obvious example.

      The thing is, ANY of these methodologies can produce effective results, but it's dependent on the type of project and the individuals and personalities involved. Some teachers will do better using one methodology, some with another, depending on their personalies and individual abilities. When you attempt to require everyone to conform to a single methodology, you have removed from them all responsibility for the success or failure of the methodology, and sometimes by association, of the project as well.

      On one extreme, there's the software developer as knowledgeable professional, competent to apply such knowledge and experience as necessary to the tasks at hand, and at the other extreme, there's the software developer as a coder who, without an explicit structure which to conform to cannot effectively produce. Neither of these extremes exist in reality, most developers are somewhere in between. In any event, the utopian ideal of a universal methodology is of interest because there is a ready market, and the fact that no real solution exists produces just the vacuum necessary to suck imaginary solutions out of thin air.

    15. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 0

      You tell us about all the parts of XP that you don't do, and then you complain that it does not work. Building a brick wall without mortar won't work either, but it's not the brick's fault.

      Attempting to follow any methodology "by the book", in the belief that it is the "one true way", seems to me to be fundamentally flawed from the outset. My own view on programming is that one needs to be able to look at every single particular situation, and decide what will be the best approach to that situation. Choosing the "best" approach usually boils down to choosing the most practical approach, which is usually about finding the best compromise between meeting immediate needs ("we need the thing to work tomorrow for a demo, hack something in", short-term needs ("this feature must work by the end of month when we deliver the product") and long-term needs ("good clean code design which allows for maximum re-use"). You can't just refactor code whenever you like if that code is part of a re-usable module that a dozen other applications depend on, since you break those applications. On the other hand, you can't outright forbid changes either, since that may encourage proliferation of workaround fudges in higher-up layers of code. You also can't always wait for new major version updates of modules - that would take too long. And you can't, no matter how great you are, design a re-usable module from the start to be able to handle any situation -- all modules need occasional "low-grade" incremental changes. (Sometimes people argue "yes well you should design your code properly from the start, and you wouldn't need to change it so often". This completely ignores real-world factors such as available time and budget - must be nice to live in such an ideal world). So whether or not to make any particular change involves estimating how much effort would be required to fix whatever the change breaks (e.g. fixing dependent applications). Also, in terms of what level of system engineering to do, you need to decide for each particular contract. Its silly to try to do full-scale process engineering for each smallish contract your company gets, but for bigger contracts it may make more sense.

      I don't think there is a "one size fits all" methodology, and I would guess that is what is meant by being 'agile'. But you need a team of dedicated, talented programmers.

    16. Re:"How" eXtrEmE pRogrAMming destroyed my project by error0x100 · · Score: 1

      Agreed.. to have fixed, unbending "you are not allowed to do this" or "not allowed to do that" rules is silly - sometimes it really is just the most practical solution to do some particular thing, such as copy 'n paste a function. Certain types of behaviour should of course be discouraged, and other types encouraged, but choosing what to do is very much dependent on precisely what you are doing. Its impractical and wasteful to always pair programmers, for example, but I believe it is a good idea to do it once in a while, particularly, less experienced programmers learn a lot when doing that. It sounds to me like the ACs "XP-destroyed project" had more to do with people trying to follow a bunch of rules "religiously". That, and more likely, (a) general poor management (i.e. unrealistic time/budget etc) and (b) bad programmers. Nothing can save you from bad programmers, and there seem to be more bad programmers than good out there.

    17. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 0
      You can't just refactor code whenever you like if that code is part of a re-usable module that a dozen other applications depend on, since you break those applications.

      Refactoring is improving the structure of code without changing its behavior. As every reputable explanation of refactoring in XP will tell you, you need good unit and integration tests to catch a refactoring that accidentally changes the expected behavior.

      Picking and choosing parts of XP without understanding how they complement each other is a recipe for disaster.

    18. Re:"How" eXtrEmE pRogrAMming destroyed my project by alext · · Score: 1

      Er, yes it is. Perhaps you meant to say " proof is not the plural of anecdote"?

    19. Re:"How" eXtrEmE pRogrAMming destroyed my project by Anonymous Coward · · Score: 1, Interesting

      Looking back over the past four years I can honestly say XP is the best thing that happened to software development at our company. And this is coming from a grizzled veteran of 22 years.

      For last 15 years I've been writing software for company that makes medical instruments. It's a tough market, because the FDA is all over us, and for good reason: if the software doesn't work as stated, people can die.

      Up until four years ago we used the waterfall model of development exclusively, then we made the jump to XP. I was a little leery of XP at first, but there is no denying the result -- XP produced the best tested, most rock-solid version of our product ever, with all the features Marketing wanted, and on a schedule Marketing was comfortable with. Smiles *all* around. This, folks, is not nothing.

      I don't think XP is for every programmer, but for the right mindset it's a blast. In our particular environment, our team of 8 voted to tear down all the cubicles and instead sit around one large table in a common "war" room, surrounded by whiteboards on all four sides. The table itself was packed with up-to-date PCs networked to common repository. The goal was that there should be no barriers to communications, and it was your responsibility to do everything you could to increase the flow of information. To that end, team member were encouraged to ask each other anything, at any time, simply by shouting a questions and answers across the table. It was similar to a loud, chatty newsroom: lots of conversation, plenty of funny, sometimes sarcastic humor, and some occasional swearing. A word of warning: if you don't have a sense of humor, the respect of your peers, or an ability to work in a noisy environment, you wouldn't last a week on our team; but we screen our new hires pretty carefully for this.

      Privately my biggest apprehension about XP was pair programming. I always considered myself a bit of a free thinker who works best independently, and I was certain I wouldn't like it. But I can't argue with the results. Although I'm a fairly adept Java programmer, it's humbling to see how much better the code is with another pair of eyes on it as its being created. On top of that, I got to work with some pretty top-notch folks; seeing others pick apart a problem definitely increased my analytical skills.

      At the end of the day, each programming pair checked their work into the repository using their initials as part of the version number; for us, this constituted a code review. No code ownership was allowed, which meant that 1) everyone got a chance to work on the things they thought was cool at least some of the time, and 2) everyone had a shot at improving the code. New unit tests were always written before writing code, and added to the growing suite of unit tests. Before checking in a code module the submitter had to run all unit tests, which by the end of the project took about 10 minutes (over 15000 assertions!). Every night an automated test engine would kick off 6 hours of functional test scripts to exercise the latest build... Every morning started with a ten minute "stand up" (a meeting where no one is allowed to sit down - believe me, this *guarantees* brevity) to review the previous day's progress, the evening's functional test results, any problems/cool things encountered, and plans/pairings for the new day. Overall product progress tracked by everyone on a big wiki web, which was also used to communicate with Marketing and other groups.

      What impressed me the most about XP was how satisfied our customer was. I'm speaking of our Marketing department. For once, Marketing finally felt like they were in control of the schedule. This was accomplished not by allowing them to dictate end dates (never works anyway), but by giving them, as the customer, full and exclusive control over the feature list. Our software team worked in four week development cycles called iterations. At the end of each iteration we'd get together with Marketing, show off what we have, and then have them tell us the features to implement for the next iteration. We could not change the feature list, nor argue with it - that was their call; however, they could not change our estimates for how long it would take to complete each feature. The schedule was totally in the customer's hands, at all times, as it should be.

      I'm not saying XP is for everyone -- in fact, if you really have profound doubts about the process then don't even bother applying for a position on an XP team because you will *not* be happy, and you'll just bring everyone down). I am also not saying that XP will alway produce excellent products that are on schedule; but what I am saying in the right hands, XP can do ezactly that, and has the pleasant side effects of re-energizing your team and re-establishing everyone else's faith in your team's ability to deliver results.

    20. Re:"How" eXtrEmE pRogrAMming destroyed my project by Bob9113 · · Score: 1

      In XP, implementation is cheap up to a certain point where suddenly refactoring becomes imperative. Refactoring is then a very painful process given a very short iteration cycle.

      Start refactoring the same day you start coding. Properly done, agile development will not be any faster than traditional development - thorough unit testing and refactoring take time. If it seems wildly faster than traditional development, and late in the project you find refactoring painful, it's a fair bet you've let the lack of micromanagement affect your personal commitment to quality. Agile development is not an excuse to write bad code, and every developer should feel personally compelled (and organizationally free) to improve unsound code the moment it emerges. Thorough unit tests ensure that refactoring doesn't affect a retrograde improvement in existing functionality, so the pain should border on non-existent.

      The goal is for the end result to more accurately reflect the customer's needs, to contain less unanticipated functionality, and to mitigate the danger of new features and feature creep, not to reduce the initial cost of development of a given feature.

  13. People way more significant that methodology by Boss,+Pointy+Haired · · Score: 5, Insightful

    In my 10 years software development experience, I've come to the conclusion that people are by far the most significant factor in the success or otherwise of a project.

    In fact, I believe that people are so significant that they make the use or otherwise of any particular "methodology" an irrelevant ingredient in determining the outcome of a project.

    Good coders will produce good results with or without methodology.

    Average / below average coders will produce average or below average results with or without methodology.

    Trouble is, it is impossible to test this theory experimentally; you just have to believe it :)

    I think.

    1. Re:People way more significant that methodology by Strigiform · · Score: 2, Interesting

      Your experience matches that of the science-fiction writer Gene Wolfe (a retired engineer) who said something to the effect that people were the most difficult part of engineering.

    2. Re:People way more significant that methodology by PincheGab · · Score: 1
      Good coders will produce good results with or without methodology

      Ahh, but are they not "good" because they employ a methodology that works? You cannot build software without following some methodology. If you sit down and start coding, that's a methodology in itself. There's always methodology.

    3. Re:People way more significant that methodology by Boss,+Pointy+Haired · · Score: 1

      Ok, perhaps what I meant was "Methodology X".

      If you enforce "Methodology X" on a good coder, s(he) will just create a wrapper for their own personal methodology within Methodology X.

    4. Re:People way more significant that methodology by pcraven · · Score: 4, Insightful

      Good coders have their own methodology. The key is that they do not follow a methodology just for the sake of the methodology, but they understand what works.

      Programmers who recently are introduced to patterns are amusing to watch. They see the patterns, and try to apply them to the problem. But the correct solution to a problem will naturally imply some sort of pattern. Pattern books are useful only in adding to a programmers experience. Here is a problem. Here is a good solution. But don't try to apply our solution to your problem, as your problem will always be a bit different.

      Another way to state: People who are good at brain-teasers are usually good at figuring out problems in real life. But rarely do the brain teasers mirror real life.

      The other key to success is some good management. Good programmers can get by with mediocre management. But even a team of crack developers will fail with bad management. When you go into a job, always make sure the management is strong. Otherwise you may just be wasting a few months or years of your life.

    5. Re:People way more significant that methodology by PincheGab · · Score: 1

      Hehe, that sounds like an old, conservative fart! Maybe that's why I find going back to college for a postgrad so exciting: No stodgy old closed minds!

    6. Re:People way more significant that methodology by swillden · · Score: 2, Funny

      Maybe that's why I find going back to college for a postgrad so exciting: No stodgy old closed minds!

      Everyone knows there is no stodgy closed-mindedness in academia.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    7. Re:People way more significant that methodology by devinjones · · Score: 0
      Alistair Cockburn wrote about this in Characterizing People as Non-Linear, First-Order Components in Software Development Here are some excerpts:
      "This is a report from experience, from reviewing roughly three dozen projects and methodologies over 20 years."

      What I find striking about these projects is that they show:

      • Almost any methodology can be made to work on some project.
      • Any methodology can manage to fail on some project.
      • Heavy processes can be successful.
      • Light processes are more often successful, and more importantly, the people on those projects credit the success to the lightness of the methodology.
      When I interview a project, I always ask what caused them to succeed in the end. The single most common answer I receive is, "A few good people stepped in at key moments and did whatever was needed to get the job done."
      There is a lot more about the characteristics of good programmers, and how to find them and manage them successfully. I think this is a must read for any project manager.
    8. Re:People way more significant that methodology by Anonymous Coward · · Score: 0

      This has been my consistent observation for many, many years. Having a bright staff, pragmatic management, and realistic shared goals are the best predictors of success.

      Statistically, most companies have an approximately average talent level. This is especially true in large companies where the staff's skill level approaches the population mean. Because of competition, these companies *must* do better than average.

      They want a magic bullet which makes their average staff perform better than average. This desire makes their management gullible to half-baked methodologies and false promises.

    9. Re:People way more significant that methodology by donnz · · Score: 1

      Another way to state: People who are good at brain-teasers are usually good at figuring out problems in real life. But rarely do the brain teasers mirror real life.

      I observe that those said people are often good at minutiae of life but can never get their heads out of their arses long enough to see what is really happening in real life:-)

      As for the grandparent comment about people being more important - isn't this exactly what agile "methodologies" recognise? Whilst I am not a convert to the lap dancing extremities of extreme programming, I do strongly agree with the underlying observations made with regard to agile development.

      I particularly enjoyed Martin Fowler's knock off of the endless comparisions between software development and civil enginering. In a wide ranginging article he manages to capture just about all the hazy confused conclusions I've arrived at after 15 years in this industry.

      --
      -- Free software on every PC on every desk
    10. Re:People way more significant that methodology by Stu+Charlton · · Score: 1

      Good coders will produce good results with or without methodology.

      Absolutely!

      But it doesn't mean their results will be used by the customer.

      In other words, good people will develop things "right". Methods help you develop the "right thing" by providing a communications framework between the team, management, and the customer.

      Agile methods like SCRUM and XP were created under the assumption that people ARE the the most important thing in development and methodology is secondary. They ask: What's the least intrusive set of ceremonies/tasks/disciplines so a group can work effectively?

      XP in particular was created because many projects get canned because:
      a) results were delivered, but they weren't the results the customer wanted,
      b) money ran out and they couldn't use results developed up to this point (it was all "groundwork"),
      c) customer needs & direction changes and it eventually costs too much to modify the design, so the project is cancelled or re-written.

      So -- in the end, hire good programmers, have a good manager, and use a process that is congruent to your goal.

      If that goal involves constant requirements change, and unclear customer requirements -- an agile method like XP or SCRUM may be more appropriate than an incremental process like MSF or Spiral or RUP (which can be made to be agile too).

      --
      -Stu
  14. Obligatory 'real engineer' comment by kahei · · Score: 4, Funny

    Hi,

    Why can't software be more like [real engineering field]? Nobody messes around with [extreme programming|OOP|empiricism] in [real engineering field]! I mean, how would it be if [bridges|planes|hospital equipment] were designed like software is? Books like this just make me realize that [software engineering is not real engineering|my branch of engineering is harder and therefore better|OOP is all a myth and everything should be in FORTRAN].

    Yours truly,

    [crusty old engineer|enthusiastic young engineering student|idiot]

    optional: P.S. the term software 'engineering' is a misnomer

    --
    Whence? Hence. Whither? Thither.
    1. Re:Obligatory 'real engineer' comment by MonopolyNews · · Score: 1

      but the template is true. Civil engineering is thousands of years old, for comparison.

      --

      Slashdot Journal on Monopoly News
  15. Less heavy going by tarquin_fim_bim · · Score: 4, Informative

    Is a piece by Mountain Goat Software, they explain things with pictures, much better for us simpletons.

    1. Re:Less heavy going by Anonymous Coward · · Score: 0

      I think that Billy Goat Hardware explains things with better pictures for simpletons.

    2. Re:Less heavy going by rcp · · Score: 1

      Thanks! We can't have a great goat reference like that without a goatse.cx link. But I disagree - that looks like really, really heavy going indeed!

  16. Methods are nice... by TopShelf · · Score: 1
    But rock-solid commitment to development efforts by the business users seems to the biggest risk in IS projects from my experience. The two most prominent user attitudes I've run into are:

    1) It's a systems thing, so I don't really need to know the details, and
    2) I'm too busy to get involved with this effort, even if it means a total redesign of my job.

    arrrrggggghhhh....

    --
    Stop by my site where I write about ERP systems & more
  17. Judge them by their work... by NigelJohnstone · · Score: 4, Informative

    A quick search on google reveals their past work:

    "Ken Schwaber is a Senior Consultant with Cutter Consortium's Agile Project Management Practice and is an experienced software developer, product manager, and industry consultant. He has been in the industry for more than 30 years, starting as a programmer and, by 1984, managing IT for one of Wang's divisions. In 1985, Mr. Schwaber founded Advanced Development Methods (ADM), a company dedicated to improving the software development practice. He initiated the process management product revolution of the early 1990s, when methodologies were automated and put to practical use on ADM's Mate process manager...."

    So basically a software development manager for failed Wang that went on to make a company that tells other people how to run projects.

    and Mike Beedle:
    http://www.mikebeedle.org/
    Runs two businesses, started out as a Lasers expert in 93, then in 94 switched to writing books on programming, judging by his papers.

    Guys, if you post PR puff like this on Slashdot don't you think people will check if you know what you're talking about?

    1. Re:Judge them by their work... by Vigilante42 · · Score: 1

      True, but if you look a little bit closer at the Cutter Consortium and the people involved you'll find one consulting organisation that actually has such an amount of experience and skill that everybody should listen. They produce an excellent Cutter's Journal which contains some of the most interesting articles on methodology issues I've read. Shame that a subscription is about the Mexican GNP per year though.

  18. other recommendations (was Re:Methodologies) by grey1 · · Score: 2, Informative

    "The Mythical Man Month" is old, and isn't yet another methodology that washes whiter than white. But it's small, easy to read, and needs reading by most people involved with managing software development. Then they won't believe that getting more developers will lead to faster development.

    Or maybe I'm making a mistake - maybe all of you have read this already...

    [Fred Brooks, ISBN for my edition = 0-201-83595-9, details on amazon]

    --
    "we demand rigidly defined areas of doubt and uncertainty!"
    1. Re:other recommendations (was Re:Methodologies) by j_kenpo · · Score: 1

      Actually I had, and this is an excellent recommendation. I had forgotten about it, even though I probally shouldnt have, definitly a good one to keep in mind.

    2. Re:other recommendations (was Re:Methodologies) by bADlOGIN · · Score: 1

      "The Mythical Man Month" should be required reading for anyone attempting to manage a software project. Working for a manager who says they've never heard of the book is one of my personal danger flags:)

      --
      *** Sigs are a stupid waste of bandwidth.
  19. No Silver Bullet by xyote · · Score: 1, Insightful

    We've already known why software development is screwed up, and known that for 25 years. Any new book that can't articulate what the known problems are and exactly how the new technique addresses some of those problems is a complete waste of time. And any reviewer who can't convey in his review whether the book is addressing some of these issues is completely wasting our time.

    1. Re:No Silver Bullet by Anonymous Coward · · Score: 0

      Software engineering is easy to understand. What I don't understand is how many different books regurgitate what everybody knows already, but with frilly words and fluffy diagrams attached to them...

      My golden rules are :

      1. Always overestimate the time and cost of a project. Usually you will be spot on.
      2. It wont work the first time, so get realistic.
      3. It might not work after the 5th time either!
      4. Test to destruction, not just general light usage.
      5. Educate managers to expect problems as a normal day to day occurance and get them off software cloud 9.

  20. Schwaber consulted at an ex-employer of mine... by Croaker · · Score: 2, Informative

    The whole Scrum thing was a major change of pace for the company I used to work for. They had just "re-engineered" the company, and extreme programming was the next "in" thing for executives to do, so they hired on a new VP (nothing gets done in a company like this without a new VP to manage it) and that VP brought in Scwaber. Apparently, the guy was a real jerk, and there was major friction between him and the rest of the company. One person I know who actually worked with him called him 'a cancer' and claimed he connived to get people fired, including one manager whose job he coveted. From what I was told, Schwaber himself actually got fired over that.

    Scrums worked out OK, overall. Since I was not a developer, the daily meetings actually were good for me, because that's when small issues that I needed to know about usually got hashed out. Not being a developer, I can't say much beyond the daily meetings on how scrum worked out.

    I transition out of development about 6 months after scrum was introduced. There were major morale issues at the company, and about a year and a half later I finally left to a small startup. It's hard to untangle how scrums worked out in the environment where there were many other issues negatively affecting the company. Lots of stupid decisions, lots of idiot executives. The group I was in just before leaving the company was laid off entirely a month later. Then they freaked out and rehired several people, with back pay and huge pay increases, because they realized after the fact they couldn't get along without them. The company has survived, and its stock has actually gone up in the past year.

    1. Re:Schwaber consulted at an ex-employer of mine... by daviskw · · Score: 1

      I've had the daily meetings. I hate the daily meetings. They are useless and a waste of time. I now spend that time thinking "I should have made it to the meeting." It is a much better use of time.

      Our daily meetings go like this: Everybody goes around the table. Each person says what they did yesterday, what they plan on doing today, and are there any impediments.

      My scrum statements:
      "Yesterday I worked on [blah]. Today I am going to work on [blah]. No impediments." Now there is something useful.

      --
      Beware the wood elf!!!
    2. Re:Schwaber consulted at an ex-employer of mine... by pmz · · Score: 1

      the daily meetings actually were good for me

      Ugh, nothing is worse than wasting the equivalent of a whole day per week in meetings. They never last "just fifteen minutes," and the result is often a ad-hoc design-by-committee project, where no one has the guts to commit to anything.

    3. Re:Schwaber consulted at an ex-employer of mine... by Anonymous Coward · · Score: 0

      I recognize the situation Croaker has described. I was one of the developers, and as an Anonymous Coward, I can tell you that this story is absolutely true. It was the most miserable year of my life. I had to deal with developers who were talented, but accomplished nothing useful and kissed up to Schwaber after he showed up, and they made me look ineffective. It was a truly awful experience working for him, and I was glad when he got kicked out.

      Yes, the company had many other problems, but they had nothing to do with the success of this experiment.

      I'm sure the methodology is fine. I was with it in principle. I just think it was executed by a poor manager, one who just happened to have created the methodology. Great thinkers are not necessarily great managers.

      Incidentally, the VP in Croaker's story has commented later on in this thread. :-)

  21. perhaps a better book by f00zbll · · Score: 2, Insightful
    would be "how to convince management and HR to hire good people and not bodies." It's been said time and time again by numerous people, but it all boils down to the programmer. Why then hasn't anyone written a book on how to get management to put quality of the staff first. I've worked at companies that had formal testing policies, but to be honest that doesn't work. What you end up with is a bunch of people who are good at memorizing text books, but have no practical experience. Not having a formal interview processes isn't better either. From past experience, the best people where the ones the team had no doubts. The times we hired bodies was when HR bitched and moaned and said "You guys are impossible to satisfy." Or worse, HR throws "The person you're looking for doesn't exist."

    In most cases, it is better to not hire bodies. In all the cases I've seen first hand, it results it delays and problems. Not only are the good programmers bogged down with stupid questions, but they end up spending time fixing other's code. The end result is the same programmer is less productive. There really should be a book that teaches programmers how to negotiate with management and how to work with HR. I've had to learn that the hard way.

    1. Re:perhaps a better book by Fulcrum+of+Evil · · Score: 1

      here really should be a book that teaches programmers how to negotiate with management and how to work with HR. I've had to learn that the hard way.

      Yeah, I'm still learning that one. Kind of hard in some places, where management's idea of negotiation is 'my way or the highway'.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  22. scrum? by i+chose+quality · · Score: 2, Funny

    i thought it was the process of looking at your coded scum and drowning the rising depression in rum, which is a special technique in gonzo-programming... ;-)

    --
    the computer is online
    i am not at it
    what a waste of ressources
  23. Please mod the above down by Croaker · · Score: 1

    You know what, it was inappropriate of me to spread rumors about that guy. Please do me a favor and mod the above down...

  24. There is no holy grail for development by master_p · · Score: 4, Insightful

    After 3 years in full development, all I can say is that the most important part is defining good requirements; which means that the real needs have been understood well. So, the more time is spent in planning and discovering requirements, the better course the project has.

    1. Re:There is no holy grail for development by Anonymous Coward · · Score: 0

      You are an idiot! You are advocating the idiotic waterfall method. Have you ever had the waterfall method work? Don't lie! What about scope creep? What about delivering a product that no one needs because it took too long? This really is the holy grail, but you are too stupid to realize it.

  25. Every small IT shop i've been at does this by 192939495969798999 · · Score: 2, Insightful

    and they don't call it scrum, it's called overlord-peasants. The overlord picks what to do , and the peasants do it. The trouble with scrum is that it's only as good as the overlord / manager can be, because if they are adding features that 1) take too long to implement, or 2) don't really help in the long run, then the whole process is wasted. You turn out crap really, really fast instead of turning out crap slowly... fast or slow, it's still crap.

    --
    stuff |
    1. Re:Every small IT shop i've been at does this by Anonymous Coward · · Score: 1, Informative

      First let's realize that someone has to choose what to do.
      Second, let's realize that someone(or more) has to do it.
      Now scrum advocates having a set of features agreed upon at some level. Perhaps not detailed. Now the developers will accomplish the task(s) while protecting the system's integrity and adding logic & strength to the request. Nothing is wasted, if it isn't right then it was a good learning experience for the "overlord"

  26. Great! by The+Bungi · · Score: 2, Insightful
    software development is an empirical rather than a defined process

    I wonder how far this will fly with nazi project managers. They are fairly attached to their ass-backward "methodologies", you know.

    Seriously, for the record, I agree with the statement above. But this type of thing simply does not work in most IT shops. I have no problem with some sort of control over the software development process (that is, I'm not saying PMs and PDs are completely worthless) but telling them something like this will probably be useless. They don't think of software developers as artists or craftsmen, but rather as "resources" that need to be managed, cajoled and pushed to meet deadlines. Nothing more, nothing less.

    Sad, but true.

  27. I hate to sound like a broken record... by Aron+S-T · · Score: 2, Interesting

    Every few weeks someone posts a book here about some new "methodology" that will save the world of Software Engineering. Please write this down and stick this on your forehead. Then have your pair programmer read it to you once in a while:

    1. Programmers are not engineers
    2. Programming is a human-centric activity
    3. There are no "silver bullets"
    4. Agile methods are useful only to the extent that they remind us of everything Fred Brooks already said.

    Read here.

    1. Re:I hate to sound like a broken record... by Anonymous Coward · · Score: 0

      re Fred Brooks: um, excuse me, but why does your 30 year old book still apply to current development methodologies. Rubbing our face in it Fred? Be kind, take that off the market!

  28. for the fragile business! by sniggly · · Score: 0

    Where did I see this ad for software for the fragile business? ID software? Quake3 arena?!! What's agile? when you can frag-ile them more rapidly than your peers. It's agile to sell to them fragile-minded business people a package, software with a membership fee that will be a drain on their resources. It's software for the fragile business so that competitors with the agile OS can slam dunk em off the market with lower prices... agile software development.. what a buzzword! Maybe its GOOD but why use a tainted term?

    --
    Of those to whom much is given, much is required.
    1. Re:for the fragile business! by leshert · · Score: 1

      Maybe because the term "Agile Development" was around for years before Microsoft started using the slogan "Software for the Agile Business". Same goes for "eXtreme Programming" versus "Windows XP".

      So if tomorrow, Microsoft releases "SnigglyOS", are you going to change your /. id? ;-)

  29. Next Book... by BigBadBri · · Score: 2, Funny
    Bloated Software Development with Rolling Maul

    Describes how to generate useless bloatware using techniques derived from the favoured tactics of the front row - futile, irritating and devoid of any entertainment value.

    --
    oh brave new world, that has such people in it!
  30. no, the managers aren't stupid by Anonymous Coward · · Score: 0

    it's just that they never listen.

    You're supposed to write the manual first, with the users, flesh out the help screens, write psuedo code, then code. Coding is 20% of billing.

    No manager is going to tolerate that, s/he wants to see working code before the first payment is made, and lots of it. After the users complain that nobody asked them, you go back and modify it. You never get around to doing the manual, and help consists of your support contract soothing confused users.

    This is why software sucks. Ask the lusers who are stuck with Results/Plus, Paradigm, or any other vertical market app.

    1. Re:no, the managers aren't stupid by Hognoxious · · Score: 1
      write psuedo code
      Pseudo code? Wanna buy a punch-card reader?
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  31. Bad Marketing by pmz · · Score: 1


    First "Extreme Programming", now "Scrum". Yuck.

  32. WOW!! 3 years in FULL development, huh? by Anonymous Coward · · Score: 0

    That's just long enough to be considered smart by management and stupid by your co-workers. Unless your co-workers have all of 2 years experience. In that case you know it all and you're a god:)

  33. Sumbitter doesn't know rugby by illtud · · Score: 2, Funny
    The name Scrum was chosen because the process is similar in nature to rugby play where success is built upon being quick, adaptive, and self-organizing.


    quick, adaptive, and self-organizing?? Have the authors ever met rugby forwards?

  34. Ken Schwaber in Seattle 18 Feb by imnoteddy · · Score: 2, Informative

    For those of you in the Seattle area Ken Schwaber will be presenting a talk entitled
    "Agile Processes and the Scrum Methodology" at the meeting of the Seattle Java Users Group at 7 PM tonight.

    --
    No electrons were harmed creating this post, though some may have been subjected to electrical and/or magnetic fields.
  35. No. Ken Schwaber presentation has been canceled by Anonymous Coward · · Score: 0

    Check the newsgroup. He can't make it because of the snow storms on the east coast. He's stuck in Boston at the moment...

  36. LOL! _Exactly_! Mod parent up by msouth · · Score: 1

    (subject says it all)

    --
    Liberty uber alles.
  37. It's all about the people by slantyyz · · Score: 2, Insightful

    My last company's advertised methodology was SCRUM. We told all of our customers we used it, and management even convinced themselves that we were using it.

    The funniest thing is that SCRUM isn't necessarily a bad model, it's the people who think that it's a quick fix to their process that is the problem.

    These KISS methodologies seem pretty hard to screw up, but when you have a team constructed of the wrong people (micromanagers, pigheads, and big-methodology freaks), it's a recipe for failure. Because of the team composition (and team member apathy for that matter), our sprints rarely (if ever) yielded the expected or desired results.

    The thing I couldn't stand the most about SCRUM, however, was the silly terminology lifted from rugby. Sports metaphors in a field dominated by nerds? Ugh.

  38. Tao epigrams (in print) by Anonymous Coward · · Score: 0

    Oh wise programmer, I see that you also have been reading "The Tao of Programming" by Geofrrey James (ISBN 0-931137-07-1). Sharing wisdom and giving credit is the open source way to true enlightenment.

    "A program should be light and agile, its subroutines connected like a string of perls."

  39. An Improvement: by CajunArson · · Score: 2, Interesting

    We could scrum, but that just wouldn't have the same effect as:
    Software (yes it is!)
    Creation of some bugs
    Realization of the fact we have bugs
    Objectification of the bugs into modular and reusable parts
    Timing of when to unleash bugs
    User requirements: They had better require bugs!
    Many Iterations to turn bugs into Features!! (MS only needs one iteration to do this)

    Or we can just call it SCROTUM. For example, insted of saying: let's SCRUM, you could say: let's scratch out that SCROTUM problem.

    This poorly worded acronym brought to you by the letters X and P. :p

    --
    AntiFA: An abbreviation for Anti First Amendment.
  40. Carnegie Mellon SEI CMM by MonopolyNews · · Score: 1

    google for more info

    --

    Slashdot Journal on Monopoly News
  41. Important Background about SCRUM by jeffsutherland · · Score: 2, Interesting

    After reviewing the first 73 comments on this book review, there are some important background pieces of information missing.

    SCRUM was invented by technical people for technical people by a Smalltalk team in 1993. The inventors were well steeped in Brooks Mythical Man Month. The challenge was to get mere mortals to function as well as Brooks Surgical Team, which IBM had shown was the highest productivity approach to software development. The solution came from the Japanese auto industry where they first applied the SCRUM term to new product development. Critics should read:

    Takeuchi, Hirotaka and Nonaka, Ikujiro. 1986. The new new product development game. Harvard Business Review 64:1:137-146 (Jan/Feb), reprint no. 86116.

    SCRUM is designed to eliminate all project management meetings and replace them with one technical meeting a day about 15 minutes long. It should be led by a technical leader, i.e. someone who does real coding. All decisions are made in the SCRUM.

    SCRUM is designed to get management out of the way and to assign them tasks they are responsible to fix, i.e. get stuff out of the way that is blocking team progress. If they can't do that, the SCRUM should replace the managers.

    SCRUM is designed to completely eliminate project leaders. Project planning and reporting including complete charts and graphs that will satisfy senior management is designed to be done in less than 10 minutes a day. Development input for project status should be restricted to less than 60 seconds a day. GANTT charts are verboten.

    If a SCRUM doesn't do the above, it is not a good SCRUM. Management must give up some control in return for getting a better product faster. Anyone who has seen SCRUM really work will never go back.

    Jeff Sutherland http://jeffsutherland.com/scrum

  42. Mock database objects by zipwow · · Score: 1

    You may already know this, but when you said, "... Say you know a select should return x number of values..." it reminded me this bit of wisdom:

    If you have mock database connections, don't let the name fool you. They're not database connections, and you shouldn't implement any kind of whole 'layer' in a mock database connection.

    Which means, if you can hand your code that is under test a mock connection, don't have one "mock connection" for the whole system. Make a "mockMyThingConnection" that (if it can) stores off the requests in order, and returns a predetermined set of results. Then check the requests to be sure they're what you expected.

    The simplest case of this is where you have something that makes one simple query, like looking up a country. Your unit test can make a simple mockConnection (heck, it could be anonymous , even) that will check that the request it gets fits some sanity values (asks for the country table and includes the code passed in, for example) and then returns the result you expect the real data layer to give you.

    This mockCountryConnection is *only* for this test case, and is trivial to write.

    You're right that you won't catch any problems with the data layer for this kind of unit test, but then again, you're not testing the data layer. Presumably, you have other unit tests for the data layer, then integration tests (perhaps monkey-based*) for the interaction between them.

    I tell myself every day, "MockObjects do not have to do anything resembling the full contract of the objects they replace".

    -Zipwow

    * Monkey-Based Integration Tests: This is our current approach where I work. It involves one or more non-automated semi-intelligent button-pushers who follow a rigorous training program before going bannanas on the application.

    Unfortunately, we're non-optimal in our implementation of this because we have extra-intelligent humanoids doing the heavily scripted (but not automated) button-pushing. This is non-optimal because their talents of interface evaluation, and non-obvious error detection aren't being fully utilized.

    --
    I don't know which is more depressing, that 2/3 didn't care enough to vote, or that 1/2 of those that did are crazy.
    1. Re:Mock database objects by tcopeland · · Score: 1

      This thread has slipped off the Slashdot main page, but what the heck, we'll carry on anyhow :-)

      Right on - mock objects are thin, thin, thin. If you have to do tons of setup, something's wrong.

      I was thinking about a database - it's kind of weird in that it's are part of the application, but it's not compiled in or anything. I mean, there's this big complicated DB schema that has all sorts of constraints and triggers and whatnot and the application sort of sits on top of that and hopes for the best. And there's no way to "check" the DB short of replicating lots of DB logic (table relationships and whatnot) in the application code, so that if one changes than both have to change.

      Thus, the obvious solution is never to save any data. It all must be reentered every time the application runs. :-)

      See ya,

      Tom

  43. Excellent points. Thank you. by bADlOGIN · · Score: 1

    My intent with this review was to give a general overview and introduction that had a wide apeal. Perhaps I went a bit too wide:) Either way, it has given me an appreciation for the challenge of attempting to write a summary of any involved technical topic.

    If I subject the public in the future, I may have to stick with Kuro5hin over slashdot so I can get more editorial feedback and provide a clearer picture.

    --
    *** Sigs are a stupid waste of bandwidth.
  44. Scrum is not really about coding... by PinglePongle · · Score: 2, Insightful

    unlike eXtreme Programming, which is mainly about coding.

    Scrum is all about managing the project, and in a way which matches the reality I perceive better than "traditional" models.

    I've read the book in question, and I believe in Agile methods. One of the comments above says "methodologies are nowhere near as important as people" - check out the Agile Manifesto; line 1 says "we value individuals and interactions over processes and tools". Ken Schwaber (and Jeff Sutherland, who posted a reply here) are co-signatories.

    The big problem I have found with Agile methods is that often the senior management team is unwilling to relinquish the impression of control over their projects. They insist on knowing everything up front - time, scope, budget - and even if they understand the empirical nature of software projects, that sense of control is very hard to give up.

    I have found many of the "Top-down" implementations of Agile processes to be buzzword driven - the last thing you need to do Scrum is a new VP; the Scrum is intended to make the VP redundant ! I'm not surprised many people have had bad experiences with XP - the 12 practices are finely balanced, and distorting that balance (e.g. by over-emphasizing "the simplest thing that could possibly work") is a great way to ruin a project. Of course, I'm inclined to believe those organisations will struggle with any methodology; one thing Agile methodologies seem to do is draw out organisational weaknesses.

    I'm working on a project right now where we have a very agressive schedule; we are pretty sure we can code the thing, but because our average corporate decision takes longer to reach than the project's timeline, we're hitting some rough spells. The cause is the decision making process; the effect is an unhappy project. In a "traditional" project, with analysts and project managers etc. and a sizeable up-front analysis phase, our corporate weakness would be less obvious; because we're saying "decide today, we'll have working code by the end of the week", our inability to decide is highlighted.

    I'd recommend Ken's book; it's worth reading, and even if you don't agree with all he has to say, you might learn something.

    --
    It's all very well in practice, but it will never work in theory.
    1. Re:Scrum is not really about coding... by FatherScrum · · Score: 1

      Well said! We often force the decision stuff by going ahead and making the decision ourselves. This particularly works well if you have domain knowledge. But, regardless, you're doing something, making something, which the user can react to. And, if they react negatively, they get to choose between fixing what you did (when you'd otherwise be idle) OR putting it at lower priority, giving you more work to do, and making sure that they are there to make decisions (now that they know they see the consequences, otherwise). (whew, long sentence) Go to the Scrum Discussion group on egroups if you run into problems and want other people's advice. Ken

  45. why every developer should love scrum by eversunsoft · · Score: 1

    Agile methods, including scrum are really a developers best friend. A core part of scrum, is the daily scrum. A 15 minute meeting in the morning that asks 3 questions:

    • What did you do yesterday?
    • What are you doing today?
    • Is anything standing in your way?

    It puts the focus on the bottom line, which is productive development. It's really so simple that you shouldn't even need a book to understand this. But, people generally make things more complicated than they have to be.

    The book does make for interesting reading. The formatting and graphics do seem from 1970 though. I suspect that the authors used agile techniques to get the book out the door really quick.

    1. Re:why every developer should love scrum by FatherScrum · · Score: 1

      The techniques were way agile; we were shooting for an OOPSLA release and were behind schedule. Sorry.

    2. Re:why every developer should love scrum by daviskw · · Score: 1

      I disagree. This format sucks. When my boss instituted this he did it like it was our best friend in the whole world. The problem is that everybody is working on something different and nobody actually cares what anybody else is doing.

      It's like going to a group psychosis meeting where everybody talks about their own current nerosis and other mental problems. Who gives a shit what some other neurotic braniac is going through.

      God I hate these meetings.

      --
      Beware the wood elf!!!
    3. Re:why every developer should love scrum by Anonymous Coward · · Score: 0

      This is bullshit. If you have a problem, ask your manager, supervisor or peers. This is like the pull vs push problem. Your manager dosent need to keep polling you to see if you have a problem. Its your job to inform your manager of a problem and its his job to clear it out for you. why wait till tomorrow morning meeting to tell your boss that something is in your way, and for him to wait another day for the morning meeting to tell you that hes cleared it through for you... its a simple concept called COMMUNICATION, and no methodology is going fix that for you.

  46. Arrogance by platos_beard · · Score: 1
    You gotta admit, even if our accomplishments aren't that great, programmer's arrogance is astounding. In another article on /.'s front page, nerds are unpopular because they're smarter than everybody else. And now...
    Build a high-rise? Still pretty simple and straight forward
    Puhleeease. Maybe the reason most software sucks isn't that our job is so much harder than everyone elses, but because we've got excuses for every damn thing that goes wrong.
    --
    What's a sig?
  47. Schwaber will be speaking in Calgary by Norman+Lorrain · · Score: 2, Informative
  48. Business-Driven SD a Bad Thing(tm)??!! by robmered · · Score: 1
    "Anyone and everyone on Slashdot probably knows that business-driven software development efforts all too often end up as a mess."

    What the...? The raison d'etre of nearly all commercial software, barring games, is to meet some business need. Whether it is for external customers (in the case of software houses) or internal business users (for in-house IT depts.), we develop tools to solve business problems. All too often, software development results in something some backroom cowboy reckons is really 7337, but fails to adequately meet the actual business needs of the user, precisely because the development was not business driven. Sure, as developers, we facilitate and guide, and provide professional advice on, development of software, but come on!

    How the hell is software supposed to solve business problems if it's driven by some haxor's wet dream rather than business? What a bizarre world view, even for an 'engineer'.

  49. Delivering software by Stu+Charlton · · Score: 1

    In order:

    1) Have a good manager (the more the better)
    2) Have a good programmer (the more the better)
    3) Have a process congruent to your goal.

    Processes will not eliminate the need for managerial or technical competence.

    They do, however, help:
    - communicating with the team
    - communicating with the customer
    - keep an eye on quality.

    And the whole point of this "communicating" is to:
    - gather requirements
    - clarify requirements
    - prioritize requirements
    - make people realize ASAP the requirements have changed
    - figure out how the heck we can encode these requirements in software

    The whole point of agile methods like XP or SCRUM is to support projects where requirements aren't clear, their priorities aren't clear or change, and requirements themselves change. Which is like most in-house business environments. It might (or might not) be appropriate to product development.

    Cheers

    --
    -Stu
  50. building industry equivalence by Reinout · · Score: 1

    Complete in agreement.

    I'm doing research in the building industry and many of the things you mention are valid in the building industry too. In a different wording:

    Allmost everything is a one-off project. We ain't building 10000 volkswagens of about the same type. THEN you can do some "traditional" engineering and some heavy process optimisations. Basically the building industry builds prototypes only (apart from soviet housing blocks).

    Changing requirements. Yes. The architect changes his mind. The customer changes his mind. The constructor has to do it. Faults creep into the design, the constructor has to compensate for it.

    Perhaps an extra analogy:

    BAD BAD professional relationship between customer and contractor. The customer wants the cheepest ride possible. The contractor has to accept it. But the customer unvariably made errors in his specification. The contractor is quite happy to do a bit more work to correct that, but he attaches a hefty price tag to it.

    Both the construction and the software industry have their big problems. Some can be cured by better processes, some by a culture change, some by better information. But probably not all.

    Well, that's where we engineers are for, isn't it? Solving nice problems!

    Reinout

  51. mod parent up please. by tree_frog · · Score: 1

    mod parent up please.

  52. Yet another fool trying to make a methodology by Anonymous Coward · · Score: 0

    Dont we have enough bullshit as is? When are we going to realize that it is all about having good software engineers who have a passion for development as opposed to a stupid methodology?

  53. Sounds too much like Scrotum by Anonymous Coward · · Score: 0

    and I aint no cock sucker. Good 'ol fashioned software development has served me very well. all these bullshit methodologies is all talk no shit. Every methodology, along with a bunch of bullshit, evntually says its about having good engineers. Hell, with good engineers you dont need a methodology, they are good engineers because they know what works through hard earned experience. Methodologies are for inexperienced engineers. Why everybody is looking for this magic bullet is beyond me. Look for good engineers that despices methodlogies... those are the ones that will make a project succeed, not methodolgy idiots that wants to hide behind a process.

  54. Processes are for IT monkeys by Anonymous Coward · · Score: 2, Interesting

    IT monkeys who havent done any Computer Science is heavily in need of methodologies to hide behind processes, so they can cover up their incompetancies by following a process. I've also found this to be true for managers as well that have gotten out of their engineering roots into managing people. In the process of looking for advancement, these managers have lost their true passion of solving technical problems, and have come to be those they despice; paper pushers, managers that have to kiss ass for their next advancemet, etc. Its these kinds of people that seek methodologies to help them complete a project, and sadly they have forgotten what really matters; the engineers that solve the problems. So, they come up with these methodologies when they hear some one at GM or Ford used a methodology and completed a project. Whe the project finally succeds, because of the hard work by the team of engineers, the insane manager writes up a post on slashdot about how good the methodology is, instead of giving credit to his team that really made the difference. The real truth is that companies like GM and Ford have poured so much money into their projects that they really cannot fail any more.

    By contrast, real Software Engineers, would like to think for themselves and excell in their projects because they have a passion for solving real problems, and find themselves hindered by monkey managers who push processes over intelligence. If this is not the truth, open source projects like Linux would not succeed. they dont dictate a process over people, infact they reward people over a process; self fullfilement fo doing something right.

  55. Re:No. Ken Schwaber presentation has been canceled by Anonymous Coward · · Score: 0

    Another mindfuck session saved by the snow.