I jumped at the chance to see Mary Poppendieck speak, and was well rewarded. Her talk seemed to bind together my work life, playtime and chunks of my personality. It was a bit scary how many buttons it pressed.
She started out by referencing the Malcolm Gladwell "Outliers" stories around elite hockey players being mainly born in Q1 of the year... the lesson being that talent is more nurture than nature, and that practice can be used to develop it in most disciplines (with 10,000 hours being the "magic amount" required).
How can we develop talent? Identify a skill that needs improvement, devise an exercise to improve it (or get one from a teacher), practice, and get immediate feedback. Focus on pushing to limits (such that you can expect repeated failures), and do it both regularly and intensively.
This is "deliberate practice", and I can see it writ large in my day-to-day work, and in my Aikido training. On an anecdotal tangent... I'm surprised by how many folks I bump into in agile circles who have an Aikido connection.
So what are the four elements of deliberate practice?
- A mentor, knowledgeable and involved, who can hire and review, set standards, guide, and ensure excellence;
- A challenge - do it frequently and it gets easy (in a software context, look at deployments: force yourself to do them fortnightly and you force yourself to lower the pain of doing them). Don't do easy stuff, find something challenging - and given how hard it is to match tasks to a large pool of people in such a way that all are challenged, perhaps this precludes assignment of tasks. Focus on constant improvement, which means regular feedback, which means keeping developers close to customers. Focus on what's not perfect, so it can be improved: look at problems first;
- Feedback, which might be design reviews, TDD, Continuous Integration, or visibility through common code ownership. Customer feedback every iteration improves the system, its capability to deliver, and motivation;
- Dedication: skill development takes time, spent in one place, uninterrupted. We need career paths for technical development - Toyota have a 6-10 year apprenticeship for engineers which takes them across the business to experience different aspects of the company and supervision from a senior engineer;
Mary also came out with a lovely quote from Katsuaki Watanabe of Toyota: "The root of the Toyota Way is to be dissatisfied with the status quo". See that? That's my personality that is.
She also quoted Dijkstra's challenge: "Those who want really reliable software will discover that they must find means of avoiding the majority of bugs to start with, and as a result the programming process will become cheaper. If you want more effective programmers, you will discover that they should not waste their time debugging - they should not introduce the bugs to start with." - and asked how much of release cycles is typically spent "hardening" software, i.e. bug fixing. 30% is apparently typical.
And finally, she showed off the software craftmanship manifesto. I loved the way it build on the values of the Agile Manifesto and took them in its own direction. I couldn't help wondering if something similar might serve the UX community - which, from what Johanna related earlier today, is trying to clarify its identity within agile.