Thursday, August 27, 2009

favorite ideas from Poppendieck's Implementing Lean Software Development

When I read paper books, I underline and dog-ear the pages. Then I come back a bit later and blog about what I read--it's a way to reinforce what I got out of the book. Here's a summary of the ideas that most struck me this summer as I read Implementing Lean Software Development, from Concept to Cash by Mary and Tom Poppendieck. Quote-marks indicate direct citations.

  • Toyota's productivity is "consistently four times that of its competitors, and quality is twelve times better", says Jeff Sutherland in the forward.
A little history
  • The book begins with a 2-page history of the industrial revolution. Starting with the late 18th century French invention to use standard, interchangeable parts for firearms, the US ran with the idea to create mass manufacturing and economies of scale that had never been precedented. Then in the early 20th century Taylor applied the idea to people--making the work of automobile assembly line workers so easy they could be trained in 10 minutes, and therefore be easily replaced. This was in strong divergence with what happened in the loom industry in Japan, where the automated looms required a lot of expertise to maintain and tune--here, individual skill was highly valued and teams were preserved, even as companies were torn down and restarted.
  • Just after WWII, the Toyoda family (future creators of Toyota) felt the need to catch up with American mass manufacturing, but they did not have access to the wealth of resources required to benefit from economies of scale. Instead, they aimed for "just-in-time flow", which gave them the advantage of driving down the cost of variety in their products. The Poppendiecks say that this is "the only industrial model we have that effectively manages complexity".
The Manufacturing World
  • Jidoka -- autonomation -- "Toyoda automated looms... detected when anything went wrong and shut down automatically". This sets the stage for a "stop the line" mentality, mindfulness, safety and quality.
  • When there are mistakes, it's not the worker's fault--it's the process which has room for error. Fix the process so we can't make mistakes.
  • Plant managers were all expected to spend some time on the line.
  • It is the creativity and practical knowledge of the line workers themselves that drives continuous process improvement
  • Lean is infectious--Toyota and Dell have extensive supplier networks, and freely exchange information and training to support the supply chain. They define contracts in a way that align the interests of both companies.
  • Peter Drucker states that "a company that maintains a single management system throughout the entire value stream will see a 25 to 30 percent cost advantage over competitors"
  • BAA built terminal 5 at Heathrow airport with a novel kind of contract, including target cost and a risk/incentive pool. Whenever a subcontract finished, contractors got paid the target cost plus anything that was left over in the incentive pool. This aligned the interests of both parties, and work went more smoothly.
How does this apply to product/software development?
  • the Toyota Product Development System is designed for "generating and preserving knowledge for future use"
  • in product development, it is not waste to explore multiple options/technologies--they call this "set-based concurrent engineering"--these options allow us to evaluate trade-offs appropriately when the time comes to make a decision
  • "repeatable and reliable speed is impossible without superb quality"
  • the Kano model states that to impress customers, we need to satisfy basic needs, as well solve problems they weren't even aware of
  • "behind every great product there is a person with great empathy for the customer, insight into what is possible, and the ability to see what is essential and what is incidental"--Martin Cagan of the Silicon Valley Product Group
  • chief engineers at Toyota play a product owner role--they are responsible for the business success of their vehicle family, and they do first-hand research (genchi-genbutsu "go, see and confirm") of their potential customers as well as pay attention to marketing research and dealers
  • inspection to prevent defects is necessary; checking to catch defects is waste
  • just-in-time decision making is critical to effective risk management. The longer we wait to commit to a particular path, the more we know about our options--but if we wait too long, some options vanish. Establish, up-front, when key decisions need to be made, and then adhere strictly to those timeboxes. See set-based design.
  • "above all, team members must be mutually committed to achieving a common purpose"
Software development
  • "unused features are the worst kind of waste in software development". Justify every feature!
  • "great software grows out of a mind-meld between a person who really understands the business and a person who really understands the technology"
  • simplify--both the product and its implementation
  • part of the design must incorporate the concerns of operations staff--people that will support and maintain the application
  • seek a "product" funding model, rather than a "project". Products are funded incrementally, evaluated on their return on investment, and are released incrementally. Like landscaping or gardening, custom projects are never done. When a "product" is championed by business leaders, it is more likely to have business value.
  • Don't automate a complex process. Simplify the process, then code it.
  • When a lot of work needs to happen quickly, we need "self-dispatching" work--that is, remaining work items need to be evident to everyone on the team, and people need to see the overall status of the group
Intra-team politics
  • a discussion often changes once a "decider" has been selected. Make it clear who that decider will be, and then watch the arguments unfold.
  • it's important that proposed changes in a system are done scientifically--so we can evaluate the old against the new (PDCA)
Value stream mapping
A value stream represents the work we do starting with a customer order and ending with delivery of that value. The map needs to be detailed enough to uncover problems, but should also abstract sufficiently so we can see the big picture
  • long delays indicate queues--we want to get rid of queues because they represent an unfulfilled need, a warehouse of undelivered value that wastes money to sustain, and they inhibit feedback from the customer
  • process loop-backs indicate churn--if you're re-prioritizing, re-checking, re-designing, re-doing, it's waste!
Reducing cycle time
  • balance the workload
  • minimize the items in process
  • minimize the size of work items
  • release regularly
  • limit work to capacity
  • use pull scheduling
Lean capitalizes on everyone's brainpower
  • Lean can only be realized when there is true respect for people in the workplace. At Boeing in 1988, the 777 project started with the premise of "working together"--and this fundamental respect for people ended up creating a work environment that shares many attributes with Toyota's lean process.
  • Deming wrote about how to use people's full potential in the workplace: "appreciation for a system (synergy of parts), knowledge about variation (problems come from the system itself), theory of knowledge (Plan Do Check Act), psychology (skill, pride, expertise, confidence, cooperation)".
  • Also see Deming's 14 points to increase quality.
  • Deming said that a company's purpose is to create products that please the customer so much that they'll keep buying more products--that is, to make a sustainable system, focused on long-term relationships
  • In a lean organization, problems aren't recurrent--they aren't systematic--because as soon as a problem is detected as systematic, the system is changed
  • "standards are viewed as the current best way to do a job, so they are always followed"--anyone who finds a better way is expected to change the standard documentation

Friday, August 14, 2009

industrial tourism

A mentor of mine once said that insanity comes from isolation--that without close connections to people outside ourselves, we miss out on reality checks, and start doing things that are crazy, just because in our particular situation it seems to make sense. I think this insanity arises at both a personal and group level. I think the companies that encourage employees to reach out and network with other professionals end up finding more ideas and integrating more successful ways of working.

One means of networking I hadn't heard of before I came to France was first introduced to me by my colleague, Olivier--"tourisme industriel", or industrial tourism, a year ago, as a way to accelerate learning and improve the team's experience. Just this past week we had two "tourists" come in to observe our dev team--and while they didn't have a lot of experience with Agility, it was refreshing to have a new pair of eyes on our process--their questions came much more freely than an intern's or a new team member's, I believe, since they weren't expected to integrate these practices--they were simply here to find out if it made sense for them. I'd be really interested in trying this back in the States on a long-term basis, but the companies I'm familiar with would likely be too concerned about intellectual property to try it. Because of the questions from the tourists, we took a few minutes yesterday to do a special retrospective on whether we should change anything in our process. The tourists noticed that our connection with the XP client was excellent, that our adhesion to the Pomodoro breaks was lacking, and that the idea of deploying to prod was valuable.... Well, no changes came out of this retrospective--we're going to just keep going with our half-hearted Pomodoros, because we think it makes sense in our particular situation ;)

Wednesday, August 5, 2009

the coach's customer

Naresh Jain just sent out a pointer to this Business Efficacy eBook, and its 14 pages are well worth the read. The main take-home messages for me are:
  • In every coaching opportunity, find ways to deliver value to the recipient--otherwise, your changes will not stick around for long. As a coach, I'm constantly asking people around me to leave their comfort zone, to do things I believe are possible, but they don't. But if I can find their currency, this change will be something they value.
  • Each individual has different motivators, of course! Each person has different ways they like to be acknowledged. Tailor your interactions!
  • Timing is everything--we're shooting for specific goals and we need to reinforce good behaviors; the amount of effort or time we put in to this isn't important, it's the results!
  • The coach needs to stay focused until the recipient has made the new practice a habit, and will create opportunities to practice if necessary!
  • The coach needs to provide clear expectations.
  • We don't care about volume, breadth, utilization, effort, or percent done. We are focussed on a narrowly defined objective.
  • A coach encourages learning by asking questions more often than lecturing. Often the difficulty is in applying what we've learned to our daily habits. Ask the team/individuals about what's going on, or how principles might apply to specific behavior.
To capture this all in one phrase, I'd say the coach needs to help teammates succeed, in their own individual definition of success.

Tuesday, August 4, 2009

Pomodoro Technique Illustrated by Staffan Nötenberg

In addition to Francesco Cirillo's book on the subject, Staffan Nötenberg adds experience and supporting research in the Pomodoro Technique Illustrated. Here are my favorite ideas:
  • Procrastination, forgetfulness, and being overwhelmed in our lives can be replaced by energized work
  • Our brains have a lot of natural rhythms and tendencies. There's a reason why sports stars have quirky game-day habits. Let's capitalize on our brain's natural strengths!
  • Follow a ritual for winding up the Pomodoro... it frees your mind for more important things. Capitalize on building good habits!
  • Our brains are not good at task switching, because we have limited "working memory"
  • Our brains are very good at finding associations. Many memory techniques teach us how to build those associations.
  • There are two ways to understand time: sequential vs duration. Sequential is more intuitive for children, and is less anxiety-prone for us adults
  • To get into flow, it's helpful to have the right environment: clear goals, sufficient challenge/interest, alertness, immediate feedback, and the sense of control.
  • Analysis paralysis is a symptom of having too many choices. If we limit our task selection to the beginning of each pomodoro, we don't lose time constantly rehashing what to do next.
  • The difference between a to-do item on an Activity Inventory and what's on the Today list is commitment. Maybe other people assign items for our to-do list, but when we do Pomodoro, it's our choice to schedule things for Today, and it's our goal to get those items done...and our satisfaction to succeed. It's critical that the commitment is realistic!
  • Each Pomodoro day has the following stages: planning, tracking (something, each pomodoro), recording (consolidate to Records Sheet), processing (analyze the data), visualizing (retrospective).
  • The key to memory is rehearsal. If you want to remember something, review it now, a day later, a week later, a month later, and then again 3 months later. This will strengthen the neural pathways so the info is easy to reach. As part of Staffan's daily retrospective, he draws a mind map of what he learned during his primary task of the day.
  • There's something about commitment that adds fire to our work. Use this catalyst by planning the day with a Today list, and use a Now List at the beginning of each Pomodoro to keep focused.
  • The daily retrospective is important to keep us learning.
  • Interruptions occur. Negotiate to keep them from interrupting your flow. If it's really urgent, you'll have to void your pomodoro. If you do anything that is not on to your "Now List", the Pomodoro is void (unless it didn't interrupt your flow and it took less than 10 seconds).
  • External Interruption Negotiation--inform the other party you're in the middle of a pomodoro, and will be done in X minutes; ask if you can get back to them then; add it to your Today list or Activity Inventory
  • Tracking: Staffan records interruptions (' for internal, - for external), unplanned items (U), estimation error (boxes for initial estimate, circles for re-estimates, and triangles for 2nd re-estimates)

Breaks
  • At a minimum, each break begins with getting away from the active task--i.e., standing up from my desk!
  • Giving ourselves regular breaks brings multiple benefits: ability to reprioritizate tasks, tendency to view the larger context and discover new associations, and clear delineation between work and rest.
  • Flow is incompatible with a perspective of the big picture. So we need something to wake us up, regularly, to ensure we're still on the right track.
  • Much of the discipline in Pomodoro is about setting up artificial rewards... I get a 5-min break if I work for 25, I get an X on my sheet if I don't get distracted, etc.
  • Short breaks give our brains a pause from a bombardment of stimulus. Get away from machines and texts! Otherwise you're likely to develop "attention deficit trait"--i.e., you're stealing focus away from the next pomodoro.
  • Breaks are critical to get us out of flow-mind, and allow us to switch to overview mind--where we're capable of making changes to priority/schedule/plans. It may be hard to be disciplined to stop when the bell goes off, but if instead we realize this is a wake-up call, it's no longer something being imposed upon us... it's our choice to be able to reevaluate where we should be going