Albert Einstein turns out to have been both an awesomely brilliant physicist and an enthusiastic but comically bad sailor. Apparently, he spent whole summers amusing his neighbors by capsizing frequently and needing to be fished out of the water. You would think that he could be calculating wind directions and consequences in some small corner of his vast brain, while also solving World Peace, but you would be wrong. Not sure about the World Peace thing, but he definitely couldn't sail.
Einstein's difficulties have several points of relevance to you, if you
are a person charged with helping people develop software in an agile
way. It's not just a parable--it's a valuable set of lessons learned! Here's how to plunge forward in your agile training program with more speed and less splashing.
Speed Teaching Tip 1: Brilliant High-Level Generalizations Are Not Your Friend When You're Trying To Learn To Do Something In Particular With Multiple Tricky Steps. Some would-be agile trainers like to sweep their arms expansively and say "everything you need to know is in the Agile Manifesto!" Or maybe they will agree to throw in the Agile Principles too. In fact, I challenge you to find an "Agile for Beginners" deck that doesn't start with a little meditation on the Manifesto. Yet how helpful is that?
Did the Agile Founding Fathers write up the Manifesto first, and then derive their various methodologies from it? No, they did not. They tried a bunch of stuff, kept track of what worked and what didn't, wrote books, staked their intellectual property claims to some different specific methodologies like DSDM and Scrum, and then eventually agreed that the Manifesto captured some common things across those specific methodologies.
Why, then, do we insist on teaching agile as though it can be derived from the principles instead of vice versa? We get pointlessly tied into knots that way. Let's not do that any more. When working with beginners, you can skip those Manifesto slides. I give you permission. Which leads us to:
Speed Teaching Tip 2: Maps, Checklists, and Procedure Descriptions Really Are Your Friend. Airplane pilots reliably maneuver their crafts all over the world with far more reliability and far fewer accidents than the average American motorist, and let's just say we're glad Einstein didn't fly us to our most recent conference speaking gig. How do the pilots do it?
They use checklists to keep track of the details. Yes, they have experience, knowledge of the principles of aerodynamics, and muscle memory, and no, they wouldn't be able to depend solely on checklists when conducting an emergency landing on the Hudson. But they can focus on the things that take human execution because they have written down the detailed things they need to remember, and they make it a routine to consult those lists.
Would it be so bad to create a standard set of checklists for our software development teams? How about if we stipulate that people can tailor the lists to their needs, and that the lists will change over time? Complicated things lend themselves to being presented in a predictable order. Which brings me to:
Speed Teaching Tip 3: Just Use a Timeline. When people learn, they need to attach the new information to old information in their brains. Everyone's brain is going to do associations differently, but you have a fighting chance of attaching at least some information to everyone's brain if you organize your thoughts in chronological order. Almost everyone you will ever present with a deck can relate to "beginning, middle, and end." Organizing your agile presentation "topically" the way you think about it will drastically cut down on how much other people can actually absorb from you. What unifies "Pair Programming, Sustainable Pace, and Evolutionary Design?" Only you know.
There is something unbearably cute about the idea of Albert Einstein capsizing sailboats around the world in his free time. But if large scale agile transformation is something you do for actual pay, I recommend stowing the brilliance and hauling out some dry procedural documentation, at least when working with beginners.
From a post by "Angel" on http://www.boatdesign.net/forums/sailboats/einsteins-sailboat-tinef-40050.html. Watermark suggests image wasn't obtained legally by Angel, but what a cool photo! |
Speed Teaching Tip 1: Brilliant High-Level Generalizations Are Not Your Friend When You're Trying To Learn To Do Something In Particular With Multiple Tricky Steps. Some would-be agile trainers like to sweep their arms expansively and say "everything you need to know is in the Agile Manifesto!" Or maybe they will agree to throw in the Agile Principles too. In fact, I challenge you to find an "Agile for Beginners" deck that doesn't start with a little meditation on the Manifesto. Yet how helpful is that?
Did the Agile Founding Fathers write up the Manifesto first, and then derive their various methodologies from it? No, they did not. They tried a bunch of stuff, kept track of what worked and what didn't, wrote books, staked their intellectual property claims to some different specific methodologies like DSDM and Scrum, and then eventually agreed that the Manifesto captured some common things across those specific methodologies.
Why, then, do we insist on teaching agile as though it can be derived from the principles instead of vice versa? We get pointlessly tied into knots that way. Let's not do that any more. When working with beginners, you can skip those Manifesto slides. I give you permission. Which leads us to:
Speed Teaching Tip 2: Maps, Checklists, and Procedure Descriptions Really Are Your Friend. Airplane pilots reliably maneuver their crafts all over the world with far more reliability and far fewer accidents than the average American motorist, and let's just say we're glad Einstein didn't fly us to our most recent conference speaking gig. How do the pilots do it?
They use checklists to keep track of the details. Yes, they have experience, knowledge of the principles of aerodynamics, and muscle memory, and no, they wouldn't be able to depend solely on checklists when conducting an emergency landing on the Hudson. But they can focus on the things that take human execution because they have written down the detailed things they need to remember, and they make it a routine to consult those lists.
Would it be so bad to create a standard set of checklists for our software development teams? How about if we stipulate that people can tailor the lists to their needs, and that the lists will change over time? Complicated things lend themselves to being presented in a predictable order. Which brings me to:
Speed Teaching Tip 3: Just Use a Timeline. When people learn, they need to attach the new information to old information in their brains. Everyone's brain is going to do associations differently, but you have a fighting chance of attaching at least some information to everyone's brain if you organize your thoughts in chronological order. Almost everyone you will ever present with a deck can relate to "beginning, middle, and end." Organizing your agile presentation "topically" the way you think about it will drastically cut down on how much other people can actually absorb from you. What unifies "Pair Programming, Sustainable Pace, and Evolutionary Design?" Only you know.
There is something unbearably cute about the idea of Albert Einstein capsizing sailboats around the world in his free time. But if large scale agile transformation is something you do for actual pay, I recommend stowing the brilliance and hauling out some dry procedural documentation, at least when working with beginners.
Hi Elena,
ReplyDeleteI'm afraid I disagree pretty vehemently with all three points - allow me to rant sonorously :)
1) The fact that the 'Agile Founding Fathers' distilled the essential learnings from their experience and wrote it down for others is how we progress : (standing on the shoulders of giants and all that). I think that suggesting everyone should follow the same path to discovery as the original discoverer leaves us re-inventing the wheel over and over again.
Personally when learning a new subject, I like to have the high-level concepts laid out so that I can frame my learning around them and I don't just get lost in the detail of multiple tricky steps. Sure they usually don't really sink in until I have concrete experience; but to just skip them at the start is, I think, doing students a disservice.
2) Flying an plane is nothing *at all* like software development though. The problem with checklists and procedure descriptions is that is exactly what the industry has been doing wrong for so long. They deemphasize the contribution of thoughtful individuals towards problem solving. They encourage people to shy away from empowerment and responsibility and lean towards following the checklist and blame-shifting. They encourage effort being put into improving the checklist rather than improving the team. You know, that whole not valuing 'individuals and interactions over processes and tools' that we skipped at the start ;)
For me, a fundamental lesson from the agile movement is that software development is not something that can be standardised and commoditised if you want to do it even remotely well (at least not yet it isn't). That is why I think it would indeed be bad to create a 'standard set of checklists' for software development. "But of course you should change them to fit your own needs" is IMNSHO just the usual weasel wording that skirts the fundamental problem.
3) Actually that makes sense if you are talking about the chronological order of your adoption strategy - but where how exactly Pair Programming, Sustainable Pace and Evolutionary Design as concepts fit together chronologically? Do you do these at the beginning and not at the end or something? I guess I don't so much disagree here as not understand how you are suggesting such topics be presented?
OK I feel better now :)
cheers
Pez
Hey Pez! I'm honored to have inspired this rant! Thanks so much! To your specific points:
ReplyDelete1) If it helps, the "leave out the Manifesto" idea was a rhertorical flourish more than a serious idea. (Excited I was successfully provocative with this for sure!) I'm really focusing on "beginning agile," so the Shu of the Shu-Ha-Ri. Pragmatically, not philosophically, I have observed that the "Manifesto" part of my decks, and yes, it's there, is received as a "fluff" section for an audience that wants to get straight to the good stuff of "what do we do?" I think the Manifesto grows on you over time, and it's good to introduce it, but it's not good to fawn over it too long if you have an audience of beginners.
2) As a fundamentally disorganized person, I find that checklists are my friends every single day. I regard them as a "suggestion" and I feel free to disregard them, but it helps to have the whole thing laid out and at the ready. I would respectfully suggest that an agile trainer can't really teach people to be creative and thoughtful if they aren't that way already. On the other hand, an agile trainer can provide a coherent and ordered set of software development patterns which can be useful. Think of the lists as sheet music for a small ensemble who will gradually do more and more improvisation.
3) I would say that the brain is going to store Pair Programming, Sustainable Pace, and Evolutionary Design in some unpredictable place useful to the brain doing the storage. My point here is that when I introduce these concepts to people for the first time, I do it within a chronology. So I divide my trainings into a predictable pattern of: short introduction, then sections on project provisioning, inception, iteration 0, iterations, and release (if releases are done as batches of iterations). Within that structure, I would be tempted to introduce Evolutionary Design in the introduction, since it is a chronological concept in itself. And although Pairing and Sustainable Pace are also concepts that should hold true for all phases, I would wait to introduce them until I got to release planning, where they would be important to estimation. Again--just for a beginning audience to avoid flooding them.
I totally appreciate your perspective! Cheers,
Elena
The right approach depends a lot on what people are ready for & how they think. I started out agile transformations being very instructive & offering a lot of step-by-step guides, which worked GREAT... for the first team I helped through starting up agile.
ReplyDeleteThe next Agile-noob team I worked with was seemingly the same kind of project, but had done enough reading and had enough curiosity that they leapt on all my step-by-step guides asking "why this?" and insisting "that will never work for us!".
The difference, I think, is this - the first team had Agile dictated to them, and so were expecting dictates (some of their dictates from me were "you, as a team, have to decide this"). They needed practice to get comfortable. The second were exploring for themselves, and wasn't interested in practicing anything they didn't understand. I've learned since then to meet the team I'm working with where they are - always with at least a little conceptual "why the hell should we do things differently" discussion, and then take it the direction they need to go.
I do worry about going too far down the path of procedural documentation without coaching and coaxing - in that first team, telling and writing down what they needed to do just once would've left them with an empty shell of practices.
Excellent points, April! I agree with you that we wouldn't do procedural documentation WITHOUT coaching and coaxing! And I'm not talking about a consulting engagement, really. I'm talking about a curriculum that can be used broadly without too much customization. I'm looking for something scaleable for companies that can't afford an expert agile coach for every team.
ReplyDeleteI'm willing to back down from my position on this significantly, but I still think there is a little too much "philosophy and it depends" in most agile curricula I have seen, and a little too little "nuts and bolts."
There is no substitute for character, diligence, and pure technical genius. If you have them, you're in good shape, and if you don't, you're in bad shape.
If you're the kind of person who depends on a checklist to literally tell you what to do every single time, then giving you yet another checklist to follow does no harm, in my view. If you are a person who likes to be reminded of things you forgot, but who still uses common sense, I still see no harm in providing a checklist. If you're a person who makes it up as she goes along, it's not clear to me why you're in training for agile.
But that's just me! Always great to hear from you!