Integrating Agile Development 121
Integrating Agile Development in the Real World | |
author | Peter Schuh |
pages | 346 |
publisher | Charles River Media |
rating | 8 |
reviewer | James Edward Gray II |
ISBN | 1584503645 |
summary | An encyclopedia of agile software development practices. |
The book opens with a couple of chapters exploring exactly what it means to be an agile development team. The author doesn't spoon feed you a definition. Instead, he takes a look at the Manifesto for Agile Software Development and pulls from that a collection of values important to agile software development. A list of agile principles is presented, and each of these aspects is examined from the angle of what it's trying to accomplish and where it can help when building software.
At this point, the book introduces seven methodologies including The Crystal Methodologies, eXtreme Programming, and Scrum. Each approach is defined by their practices and focus. The author does a nice job of telling you where these methodologies excel and even where they don't. The approaches are contrasted, but not with an eye towards finding out who is right and who is wrong. Instead, the author digs for the strengths in each practice.
The next few chapters offer suggestions about what agile practices can do for your development team, and outline how to adopt a few agile practices. This is one of the many places where the book really shines, thanks to its realistic approach. The author knows that not everyone can run out, soak up some eXtreme Programming training, and convert their entire division overnight. If you can, great, but this book is more focused on people who don't meet certain agile requirements and others who just want to test the waters a little. For these groups, there is sensible advice like, "Start by doing X, Y, and Z, because they're great ideas, easy to implement, and will help you a lot." If you like those changes, the author suggests what to try next. Even better, you're told to back away from the changes you don't like, sprinkle in some ideas from other methodologies, and even customize the practices to your needs. That may not be as extreme as some agile developers would prefer you to be, but it is agile programming distilled down to what it can do for you personally. I found that to be a great touch.
With the introduction to this new world of software development covered, the book moves into detailing actual agile practices. Early chapters in this section focus on the programmer, testing, and even the database side of the operation. Later chapters get into management, the project, and an agile development cycle. When a practice is defined, you're warned of prerequisites you should have in place before considering it, offered advice for how to get started with it, and even given a few variations that might work better for your group. I wouldn't say that the detail here is sufficient to teach you all you need to know, instead this section arms you with the knowledge to decide what you should be looking into. To kick-start your research efforts, a practice always ends with a list of further resources, available both online and in print.
The final chapters of the book get more abstract, dealing with customers, communication, and even just people. There's a lot of sound advice hidden away in these pages for some difficult challenges. I personally learned a lot about how agile development deals with customers and I have a few new ideas I'm anxious to try on my clients.
As an added bonus, the book has a very nice layout, filled with intelligent, witty prose and good looking charts. These effects are always subtle but can make a text a lot more approachable. I believe my only complaint was that the author tends to throw around acronyms assuming you know what they stand for. I think he even eventually got around to defining all but a couple, but not always when you first encounter them. A glossary probably could have helped in this case.
In summary, this book is agile programming for everyone. As a one-man operation, common practices like pair programming aren't even an option for me. The author knows that the methodologies aren't one-size-fits-all, and really focus on exactly what they can do for you, whatever your own needs may be. If you don't follow any development strategy (hope that's not true), would like to know more about the agile practices without joining a cult, or even just want to stay sane in your traditional software development company, Integrating Agile Development in the Real World will give you plenty of fresh ideas.
You can purchase Integrating Agile Development in the Real World from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Hardly ...its a really terrible book!! (Score:4, Informative)
Style aside the substance is terrible. If I actually tried to implement the testing and development enviorments that he suggest my boss would first fire me and then run me out of town for ruining his company.
The most frusterating was chapter 4 where he actually does start to touch on something that could be useful and definetly had merit but he doesn't finish the idea and leaves the reader frusterated wnating more. That could have used a book all on its own.
Avoid this book at all costs.
maybe you should trying reading something (Score:1)
pensioned off... it terrorises human beings from birth." - Gabriel Garcia
Marquez.
ps
if you were shot in the head - you might be happt to be alive only complete twinks think spelling is important
Somewhat offtopic but... (Score:5, Funny)
Some of the best days of my Software Engineering class were spent doing an Xtreme Programming assignment with a cute female chick as my partner. We earnestly spent days with her looking over my shoulder while I showed off my l3tt c0ding skills.
She even thanked me for the 95 we got in that assignment.
Aah, eXtreme programming....the best software engineering methodology for geeks.
Re:Somewhat offtopic but... (Score:2, Funny)
Re:Somewhat offtopic but... (Score:2)
Re:Somewhat offtopic but... (Score:2)
Re:Somewhat offtopic but... (Score:1, Funny)
She even thanked me for the 95 we got in that assignment."
So dude, did she thank you by giving you head, or did you just resort to self-service again?
Uh, 'eXtreme'? (Score:2)
Re:Uh, 'eXtreme'? (Score:2)
That, and it's abbreviated XP, so those are the letter capitalized...
Re:Somewhat offtopic but... (Score:1, Funny)
Re:Somewhat offtopic but... (Score:2)
better book (Score:5, Informative)
working link (Score:2)
the plan (Score:4, Insightful)
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Sounds great but how do you convince the sales/marketing/business/management types that it is better to deliver a working product than to syphon money from a customer, deliver something barely resembling what they requested and then charge them more to improve the product to meet their "new" needs.
Most developers can make software that the cutomer wants if they actually talked to the customer, but sales and marketing people somehow think that developers don't have perople skills to deal with customers... it is a sad world when someone with a business degree tries to make a technical decision.
Re:the plan (Score:5, Funny)
"I deal with the god damn customers so the engineers don't have to! I HAVE PEOPLE SKILLS! Can't you understand that, I AM GOOD AT DEALING WITH PEOPLE! WHAT THE HELL IS WRONG WITH YOU!"
Re:the plan (Score:1, Insightful)
The majority of the applications I work on are for my business partners who want to cut the red tape as much as me and my managers.
Finding a happy medium for producing fast/complete applications while making them supportable for the next 20 years without spending months trying to document and work through processes would be a God-send.
Re:the plan (Score:1, Funny)
"Damn it! I HAVE PEOPLE SKILLS!"
Re:the plan (Score:2)
Your case to make then, is that it would be better for your marketing people not to have to find work at a new company when yours goes out of business, and that they can do that by allowing the development team to deliver quality software.
Re:the plan (Score:2)
Re:the plan (Score:1)
Quick tip: what to make isn't a technical decision; it's a business decision. HOW to make it is the domain of us techies.
Re:the plan (Score:2)
I remember working for a company where we had a full suite of products and I would of
Re:the plan (Score:2)
I agree completely that we techies should collaborate vigorously. I also agree that letting salespeople control the product plan, especially when they arbitrary schedules based on their own fantasies, is a mistake.
But I disagree that techies are qualified, simply on the basis of raw intelligence, to make business decisions. A good product manager is just as smart as the programmers. There's no reason to think they could step in and dictate development, just like t
A big stumbling block... (Score:5, Insightful)
Most big enterprise require loads of (normally useless) documentation. If your client is into CMM or any ISO standarization this is even worse.
There is no agile way of producing this documentation.
Re:A big stumbling block... (Score:2)
CMM and ISO software standards have little to say about quality in the conventional sense (i.e. a particular product does what its supposed to and does so for a reasonable time). They're all about an organization's processes consistently applied. No useful output is required.
Re:A big stumbling block... (Score:3, Insightful)
Re:A big stumbling block... (Score:1)
Clearly you haven't partaken of the kool-aid...and are in desperate need of a fresh dry-erase marker....and a better PM. If you are the PM...well, there's always waterfall.....
Re:A big stumbling block... (Score:1)
While Agile programmers certain like to avoid documentation (http://www.martinfowler.com/distributedComputing / thud.html), if such documentation is a user requirement, than deliver it.
The key is helping the user understand what they are paying for. When the user begins to understand the cost of documentation, and 'documentation maintenance' when the code bas
Re:A big stumbling block... (Score:1)
Re:A big stumbling block... (Score:2)
Re:A big stumbling block... (Score:1)
Coming out of a "traditional" waterfall style of iterative development it can be a bit dificult to wrap your brain around it, but it does work.
Re:A big stumbling block... (Score:2)
Re:A big stumbling block... (Score:3, Insightful)
Ultimately, requirements are supposed to define what the customer will consider an acceptable product. Too often what they end up being is a bunch random features which may or may not actual
Re:A big stumbling block... (Score:2)
For eg, a typical requirement specification document is a bunch of unchanging bytes that says stuff like: "the system must do blah". There is no sync-ing of this dead document with the oft-shifting ground reality of the codebase it purports to document. The situation gets a bit better with API documentation, but it is still a problem.
Instead, if after saying "the system must do blah" , imagine a litt
Re:A big stumbling block... (Score:1)
Having tried Extreme Programming, I can testify. On a recent project, we had pretty much 100% test coverage. After 36 developer-months of happy construction and no formal QA, we released to the public and have had a total of 2 bugs in production and zero downtime in the five months since launch. The CEO, a Silicon Valley veteran, said he's never see
Re:A big stumbling block... (Score:1)
Re:A big stumbling block... (Score:1)
In these days of forums and /. do we really need documentation?
Well, maybe a browser or a modem may need some... a bit hard to get onto the forums without those!
Re:A big stumbling block... (Score:1)
XP teams have been blessed up to CMM level 3 with only minor additions. See the papers from Agile conference proceedings (and also from CMM people like Mark Paulk) for details.
There are indeed plenty of relatively agile ways to produce necessary documentation. It's the unnecessary documentation, the stuff that nobody ever reads, that agile methods tend to leave out. But I'd say that leaving out pointless work is a process feature, not a process bug.
Extreme Programming Installed (Score:4, Insightful)
People are starting to take XP very seriously simply because it delivers quality code instead of just documents about code. The core philosophy can be summed up: "A feature does not exist unless there is a test for it." (P.83) This means that coders (pairs of programmers in XP) first construct unit tests of product features before the attempt to code the features. What this means in practice, is that the code that XP delivers (continuously in 3 week long iterations) can never be broken! I'll say that again just to make sure you read it: XP code can never be broken! I really think XP's adaptive, test-first philosophy is the best thing that has happened to software engineering since Dijkstra told us that the "Goto Statement is Considered Harmful" in 1968.
This book is the best of the XP series if you've actually made the decision to use XP. If you're not sure about what XP is or what it's limitations are, go to google and do your homework. When you're ready to actually install an XP project, get this book.
Agile programming is great (Score:2, Insightful)
But that's it really. You don't need more of a paragraph to explain it. Any smart programmer, once explained the basics, should understand in an instant how it can help them. Then the thinking spreads into the
My experience with eXtreme Programming != good (Score:4, Insightful)
My biggest issue was not having well-defined user specs and documentation to work from. As much as I consider myself a generally bright person, and a decent listener - I felt like I was often having to interpret and 'guess-timate' a lot. And it's frustrating for a team to be in the hotseat when there's no document saying 'it says right here, you promised X by date Y.' It seems too loosey-goosey imo.
Now granted, I'm not 'up' on XP, I'm only commenting on my experience with orgs that claimed to be implementing it -- perhaps their way of doing XP was flawed. But for all the talk about rapid development and the sort of hip mystique around it, I didn't find it be a time or money saver.
I think traditional 4 stage life cycle development tends to work in my exp. Perhaps it's because I've been involved in larger financial apps w/ lots of business rules/reqs, where you just can't afford f-ups, people get understandably upset if you screw with their money.
I'm curious is XP 'sold' as working on large apps, or is it really most suited to smaller projects, and/or minor enhancements to existing applications ?
Re:My experience with eXtreme Programming != good (Score:2)
It always is. If you're using XP and it doesn't work out, it's because you did it wrong. Just ask any XP zeal^H^H^H^Henthusiast.
My experience with eXtreme Programming == good (Score:3, Interesting)
It sounds to me like there was some misconception about the processes and principles surrounding XP here. XP claims that out of the four following variables of software development, only one is generally variable:
- Length of project
- Budget of project
- Code Quality
- Scope of project
The length and budget of a project are often fixed, and developers should not be required to sacrifice code quality. Therefore, the scope of the project is where one can
Re:My experience with eXtreme Programming != good (Score:2)
That's a reasonable theory. It sure doesn't sound like my XP experiences. Perhaps you can tell me more about how they did XP.
felt like I was often having to interpret and 'guess-timate' a lot.
Extreme Programming requires an on-site product manager. Why would you have to guess if the guy who can decide is ten feet away? And if the product manager was, as XP recommends, defining the acceptance tests, where was the room for mystery?
the apps tended to have a lot
Re:My experience with eXtreme Programming != good (Score:2)
Greetings from TSP Hell (Score:5, Interesting)
Example: the process dictates doing a manual code review individually and in a group, BEFORE COMPILING, to look for things like missing semicolons and other routine errors that the compiler would catch all by itself. If you've done your reviews right, then the code should compile the first time without errors.
Seems like I've heard all this before. Like around 1978.
Re:Greetings from TSP Hell (Score:2)
Re:Greetings from TSP Hell (Score:3, Funny)
Re:Greetings from TSP Hell (Score:2)
Re:Greetings from TSP Hell (Score:2)
Re:Greetings from TSP Hell (Score:2)
AP falls on its face... (Score:1)
Here are a few "features" of AP...
In short, AP is fast and saves money in the short term, but costs much more (in maintenance costs) in the long term. It's great for t
Re:AP falls on its face... (Score:4, Informative)
Re:AP falls on its face... (Score:1)
Agile development is a bunch of horseshit (Score:2)
Everything else in agile development methodologies is a bunch of horseshit, I'm afraid. 95% of software development problems would be solved by having good, descriptive, well thought out specs. So that developer wouldn't have to guess what the heck program manager meant by this and that.
My point is, development is usually good enough given clear, co
Re:Agile development is a bunch of horseshit (Score:2)
If you ever see one of these let me know.
Re:Agile development is a bunch of horseshit (Score:2)
How does agile development address these issues? That's right it doesn't address them.
Agile dev is not a bunch of horseshit (Score:2)
And this is where s/w specifically differs from other engineering processes. You are not making exactly the same thing over and over again. Or 'finishing' and walking away after a few months. The trouble with waterfall style development is that the description is never complete.
How many s/w projects out there ever finish? Linux? Windows? OpenOffice? Firefox? Have any of these finished? What complete spec. for all of those existed before t
Re:Agile dev is not a bunch of horseshit (Score:3, Insightful)
If you regard something like Windows as a single project, then no, it's never finished - in the same way that a house is never finished bcos it gets redecorated/refitted every few years. It's more accurate to think in terms of multiple successive releases. And on those terms, a house and a piece of software are identical - you keep working on it until it's a good enough quality to sell.
A description of a house doesn't have to be complete, down to the s
Re:Agile development is a bunch of horseshit (Score:1)
In XP (I realize that there are other agile methods), the client is supposed to be on-site. Thus, the client can answer these questions whenever they come up. I realize that not all clients will want to spend their days sitting around a bunch of developers, but believe me when I say it actually helps quite a bit. Have you found otherwise?
Re:Agile development is a bunch of horseshit (Score:2)
We don't build software. Compilers build software. The specifications are written using code. Compilers can't build software without a strict specification. We, the developers, develop that specification. We take requirements and we develop software based on those requirements much like a house or skyscraper developer does. A house developer may draw you a picture or create a model and ask the customer, "do
Re:Agile development is a bunch of horseshit (Score:1)
Re:Agile development is a bunch of horseshit (Score:1, Informative)
http://www.softwarereality.com/lifecycle/xp/case_a gainst_xp.jsp [softwarereality.com]
They even have a book on it now
http://www.amazon.com/exec/obidos/tg/detail/-/1590 590961/ref=ase_softwarereali-20/104-8363309-843276 6?v=glance&s=books [amazon.com]
Re:Agile development is a bunch of horseshit (Score:2)
yeah, that's the problem: requirements gathering is the most failure-prone activity in software development.
Waterfall methods approach this problem by generating pallet-loads of documentation, and having everyone and their brother (theoretically) review the paperwork. This of course almost never happens. When it does happen it's almost impossible for the users to visualize the syst
Re:Agile development is a bunch of horseshit (Score:2, Insightful)
To my mind and experience, the greatest benefit of Agile methodologies is that all of them put a premium on communication. Many of the practices (pair programming, on-site customer, etc.) are aimed sqaurely at fostering communication between team members.
Test-driven development is a good tool and because it's one that's easy for programmers to understand, it's usually the first Agile practice to get adopted. However, I don't think that it's the only (or even th
Re:Agile development is a bunch of horseshit (Score:2)
Yes, and the customer is not a subsitute for a spec. Ideas are written down for a very good reason: people are not capable of remembering a large amount of detailed information in their heads.
If you have an infinite amount of money to burn, you can rewrite the application every time the customer's recollection of the requirements changes, otherwise you'd better have a spec.
Programming methodologies are like diets (Score:1)
Re:Programming methodologies are like diets (Score:1)
Does anyone else think... (Score:3, Insightful)
My experience here is limited; I've never done any proper XP or similar. But I've read quite a bit about those sorts of development practices, and used a few others (all the way back to Jackson Structured Programming), so I hope my intuition isn't completely out here.
My feeling is that just about all of these practices work much better as tools and tactics, to be chosen from and used where you feel they work and then dropped, rather than as part of a rigid methodology.
Management tends to want to treat development as a predictable, join-the-dots process -- and many methodologies seem to reduce it to that. But they don't! They just hide the creativity and unpredictability where it can't be seen. IME, a rigid methodology just gets in the way of good developers, and gives the bad ones something to blame...
So use some of these techniques and ideas, by all means: it looks like they can work very well. But don't treat them as the be-all and end-all of development. There's always a need for creativity and good judgement.
Re:Does anyone else think... (Score:1)
For example, Beck's second edition of Extreme Programming Explained talks more about the underlying principles and values than specific methodology implementation details. Most agile proponents recognize that no single approach works for all shops, or even two shops.
-J-
Heh, Peter Schuh (Score:1)
Re:Summary: This is a great book (Score:2)
Re:Summary: This is a great book (Score:3, Informative)
Imagine oral documentation. I wonder if you can
No need for UML diagrams. Just words passed, man to man
Imagine just refactoring, playing in the sand
Someone needs to update that article with a nice link to this article [wikipedia.org].
Re:Summary: This is a great book (Score:2)
Often we do that by turning to the product manager, who sits in with the developers so that they can provide immediate answers to things that would indeed otherwise turn in to telep
Re:Summary: This is a great book (Score:2)
Let's re-word this a la Imagine...
Imagine there's no client
No specification sheet
Just a manager's perception
From only one project meet
C
Re:Summary: This is a great book (Score:2)
That idea alone is indeed dangerous. In the context of the other XP practices, it works very well.
Let's re-word this a la Imagine...
Yes, if people did as you imagine, it would suck. Fortunately, that's not what happens on a good XP project.
Re:My experience (Score:2)
The ones about bullshit [usda.gov]?