Accurately Analyzing Agility
Book announcement:
Agile! The Good, the Hype and the Ugly
Bertrand Meyer
Springer, 2014 (just appeared)
Book page: here.
Amazon page: here.
Publisher’s page: here
A few years ago I became fascinated with agile methods: with the unique insights they include; with the obvious exaggerations and plainly wrong advice they also promote; and perhaps most of all with the constant intermingling of these two extremes.
I decided to play the game seriously: I read a good part of the agile literature, including all the important books; I sang the song, became a proud certified Scrum Master; I applied many agile techniques in my own work.
The book mentioned above is the result of that study and experience. It is both a tutorial and a critique.
The tutorial component was, I felt, badly needed. Most of the agile presentations I have seen are partisan texts, exhorting you to genuflect and adopt some agile method as the secret to a better life. Such preaching has a role but professionals know there is no magic in software development. Agile! describes the key agile ideas objectively, concretely, and as clearly as I could present them. It does not introduce them in a vacuum, like the many agile books that pretend software engineering did not exist before (except for a repulsive idea, the dreaded “waterfall”). Instead, it relates them to many other concepts and results of software engineering, to which they bring their own additions and improvements.
Unfortunately, not all the additions are improvements. Up to now, the field has largely been left (with the exception of Boehm’s and Turner’s 2005 “Guide for the Perplexed“) to propaganda pieces and adoring endorsements. I felt that software developers would benefit more from a reasoned critical analysis. All the more so that agile methods are a remarkable mix of the best and the worst; the book carefully weeds out — in the terminology of the title — the ugly from the hype and the truly good.
Software developers and managers need to know about the “ugly”: awful agile advice that is guaranteed to harm your project. The “hype” covers ideas that have been widely advertised as shining agile contributions but have little relevance to the core goals of software development. The reason it was so critical to identify agile ideas belonging to these two categories is that they detract from the “good”, some of it remarkably good. I would not have devoted a good part of the last five years to studying agile methods if I did not feel they included major contributions to software engineering. I also found that some of these contributions do not get, in the agile literature itself, the explanations and exposure they deserve; I made sure they got their due in the book. An example is the “closed-window rule”, a simple but truly brilliant idea, of immediate benefit to any project.
Software methodology is a difficult topic, on which we still have a lot to learn. I expect some healthy discussions, but I hope readers will appreciate the opportunity to discuss agile ideas in depth for the greater benefit of quality software development.
I also made a point of writing a book that (unlike my last two) is short: 190 pages, including preface, index and everything else.
The table of contents follows; more details and sample chapters can be found on the book page listed above.
Preface
1 OVERVIEW
1.1 VALUES
1.2 PRINCIPLES
Organizational principles
Technical principles
1.3 ROLES
1.4 PRACTICES
Organizational practices
Technical practices
1.5 ARTIFACTS
Virtual artifacts
Material artifacts
1.6 A FIRST ASSESSMENT
Not new and not good
New and not good
Not new but good
New and good!2 DECONSTRUCTING AGILE TEXTS
2.1 THE PLIGHT OF THE TRAVELING SEMINARIST
Proof by anecdote
When writing beats speaking
Discovering the gems
Agile texts: reader beware!
2.2 THE TOP SEVEN RHETORICAL TRAPS
Proof by anecdote
Slander by association
Intimidation
Catastrophism
All-or-nothing
Cover-your-behind
Unverifiable claims
Postscript: you have been ill-served by the software industry!&3 THE ENEMY: BIG UPFRONT ANYTHING
3.1 PREDICTIVE IS NOT WATERFALL
3.2 REQUIREMENTS ENGINEERING
Requirements engineering techniques
Agile criticism of upfront requirements
The waste criticism
The change criticism
The domain and the machine
3.3 ARCHITECTURE AND DESIGN
Is design separate from implementation?
Agile methods and design
3.4 LIFECYCLE MODELS
3.5 RATIONAL UNIFIED PROCESS
3.6 MATURITY MODELS
CMMI in plain English
The Personal Software Process
CMMI/PSP and agile methods
An agile maturity scale4 AGILE PRINCIPLES
4.1 WHAT IS A PRINCIPLE?
4.2 THE OFFICIAL PRINCIPLES
4.3 A USABLE LIST
4.4 ORGANIZATIONAL PRINCIPLES
Put the customer at the center
Let the team self-organize
Maintain a sustainable pace
Develop minimal software
Accept change
4.5 TECHNICAL PRINCIPLES
Develop iteratively
Treat tests as a key resource
Do not start any new development until all tests pass
Test first
Express requirements through scenarios5 AGILE ROLES
5.1 MANAGER
5.2 PRODUCT OWNER
5.3 TEAM
Self-organizing
Cross-functional
5.4 MEMBERS AND OBSERVERS
5.5 CUSTOMER
5.6 COACH, SCRUM MASTER
5.7 SEPARATING ROLES6 AGILE PRACTICES: MANAGERIAL
6.1 SPRINT
Sprint basics
The closed-window rule
Sprint: an assessment
6.2 DAILY MEETING
6.3 PLANNING GAME
6.4 PLANNING POKER
6.5 ONSITE CUSTOMER
6.6 OPEN SPACE
6.7 PROCESS MINIATURE
6.8 ITERATION PLANNING
6.9 REVIEW MEETING
6.10 RETROSPECTIVE
6.11 SCRUM OF SCRUMS
6.12 COLLECTIVE CODE OWNERSHIP
The code ownership debate
Collective ownership and cross-functionality7 AGILE PRACTICES: TECHNICAL
7.1 DAILY BUILD AND CONTINUOUS INTEGRATION
7.2 PAIR PROGRAMMING
Pair programming concepts
Pair programming versus mentoring
Mob programming
Pair programming: an assessment
7.3 CODING STANDARDS
7.4 REFACTORING
The refactoring concept
Benefits and limits of refactoring
Incidental and essential changes
Combining a priori and a posteriori approaches
7.5 TEST-FIRST AND TEST-DRIVEN DEVELOPMENT
The TDD method of software development
An assessment of TFD and TDD8 AGILE ARTIFACTS
8.1 CODE
8.2 TESTS
8.3 USER STORIES
8.4 STORY POINTS
8.5 VELOCITY
8.6 DEFINITION OF DONE
8.7 WORKING SPACE
8.8 PRODUCT BACKLOG, ITERATION BACKLOG
8.9 STORY CARD, TASK CARD
8.10 TASK AND STORY BOARDS
8.11 BURNDOWN AND BURNUP CHARTS
8.12 IMPEDIMENT
8.13 WASTE, TECHNICAL DEBT, DEPENDENCY, DEPENDENCY CHARTS9 AGILE METHODS
9.1 METHODS AND METHODOLOGY
Terminology
The fox and the hedgehog
9.2 LEAN SOFTWARE AND KANBAN
Lean Software’s Big Idea
Lean Software’s principles
Lean Software: an assessment
Kanban
9.3 EXTREME PROGRAMMING
XP’s Big Idea
XP: the unadulterated source
Key XP techniques
Extreme Programming: an assessment
9.4 SCRUM
Scrum’s Big Idea
Key Scrum practices
Scrum: an assessment
9.5 CRYSTAL
Crystal’s Big Idea
Crystal principles
Crystal: an assessment10 DEALING WITH AGILE TEAMS
10.1 GRAVITY STILL HOLDS
10.2 THE EITHER-WHAT-OR-WHEN FALLACY11 THE UGLY, THE HYPE AND THE GOOD: AN ASSESSMENT OF THE AGILE APPROACH
11.1 THE BAD AND THE UGLY
Deprecation of upfront tasks
User stories as a basis for requirements
Feature-based development and ignorance of dependencies
Rejection of dependency tracking tools
Rejection of traditional manager tasks
Rejection of upfront generalization
Embedded customer
Coach as a separate role
Test-driven development
Deprecation of documents
11.2 THE HYPED
11.3 THE GOOD
11.4 THE BRILLIANT
Bibliography
Index
Hi,
I recently completed your book. Thank you for sharing your insights, it is much needed! Too often people get caught up in the new saviour of the day. I respect your courage and propensity to be fair, open, unbiased, objective and critical, maintaining the best interest of software engineering as a discipline.
I have shared by thoughts by doing a somewhat different book review, please have a look: http://khanmjk-outlet.blogspot.co.za/2015/11/review-agile-good-hype-and-ugly.html
Cheers
@khanmjk