Monday, April 12, 2010
He Came to Bury Agile: Long Live Agile
Friday, April 9, 2010
When To Slack + What it Gives Us
- Beck, in XP Explained 2nd ed, talks about slack as a way of making sure we meet our commitments--it is about transparency and building trust.
- Slack gives the Product Owners perspective on the health of the code and of innovation. If all developers do during slack time is refactor, we can ask if they're taking on too much work (and creating technical debt). If they're tweaking functionality they worked in the past, we may need to look at functional debt. If they're creating entirely new prototypes, then we only need to monitor the feedback cycle on these ideas to be sure the value is qualified before much is invested. Near the end of the iteration when I see people hovering around the story wall looking for something useful to do, I know they're not overworked--and when I see them starting prototypes, I know the iteration buffer is big enough.
- When the team reaches slack before the end of an iteration, they can share in success together--maybe they were lucky, or maybe they worked together well, but in either case, it's a success. The value is two-fold: the iteration work is Done-Done (and hopefully deployed and generating business value), and the team bonds are stronger.
- DeMarco says slack is a way to give employees control. Dan Pink talks about why control is important--motivation comes from autonomy, purpose, and mastery. So giving employees control is a way to keep them happy, motivated, and productive.
- Retaining our employees, as the Toyoda family and DeMarco have noted, is the most significant means of avoiding huge drops in productivity.
- DeMarco talks about being too busy, the myth of total efficiency, the impact that no slack has on change... we are not cogs in a machine, we can't be interchanged and we can't task switch without penalty. If we don't invest in slack, we will end up being overly bureaucratic, rigid, and conservative.
- Whenever there are no more cards to work on
- Towards the middle of the week (because people are tired Friday and Monday)
- When the whole team agrees there is no useful/effective/efficient way to divide up the remaining work any further. If some people are in slack while the rest of the team is pulling in the iteration, it can deteriorate team spirit.
Thursday, April 1, 2010
Slack: we’re not slacking off!
In a technical climbing technique known as lead climbing, a rock climber, the lead, takes a calculated risk by climbing above any anchors, in order to climb higher. This kind of climbing requires precise coordination between the lead and the second, for without slack, the lead cannot advance at all; with too much slack, a fall is more dangerous; and with too little slack the lead can be thrown off balance and fall. (Photo Credit)
Note that it is physically impossible to climb without slack. When it comes to software, however, I’ve too often become obsessed with productivity, moving cards, increasing velocity, process improvement, and delivering business value, to the point I optimized out all slack. It’s not that I’m the only one to get lured by the “myth of total efficiency”—it is a common problem in agile and non-agile environments. Slack is covered authoritatively in Tom DeMarco’s Slack, included in the core XP Practices in Beck’s Extreme Programming Explained, 2nd edition, institutionalized by the Pomodoro Technique, and championed by Deming and the lean school of thought using pull scheduling. Yet on a recent discussion on the Extreme Programming yahoo list, I got the impression that my understanding of slack is a bit unique.
Buffer Slack and Creative Slack
Back to rock climbing—a good second will always give the lead at least some slack until the lead starts descending—triggered either by a fall or the lead calling “belay!”. There are two kinds of slack on the cliff—the constant foot or so of buffer slack that allows the lead to move freely in the same spot. The second kind of slack is the excess rope that the second liberates only when the lead is climbing higher. This creative slack is given when the lead requests it explicitly, by yelling “slack!”. This call signals that the second must stay vigilant, because it means the lead’s life now depends on correct belaying.
Just as in rock climbing, I see two kinds of slack for a software team. The first is buffer slack—it is the down time between official work, be that work related to story cards, administration, or meetings. It is work that happens when we’re waiting on someone else or we’re not yet ready to take on new work. Buffer slack is what gives us time to reflect and to consider the larger context of what we’re working on. We might fix a bug, or refactor some code that was out of scope of our last story, but that we just happened to notice. It doesn’t require communication with the team because it won’t impact them or the goal of the iteration.
Creative slack is analogous to climbing higher on the rock face—it requires a bit of forethought, a consideration of the feasibility and impact of the next few moves. Creative slack requires a significant investment and focus before one can start advancing. It allows us to improve our current technology, to build prototypes of potential new features, and to consider strategic moves for the product. I’m not giving license here for YAGNI or BDUF. It’s just that we can’t make significant gains without some forethought. Creative slack happens when the team explicitly schedules it; on my current team it’s the time between iterations, and it is typically 15% of our work week.
It’s funny that I didn’t discover the second kind of slack in the software realm until I came to France. Buffer slack happens naturally, unless we over-optimize our process. So when I intentionally left some room for it on my team in Philly, I thought I had slack—and I did—buffer slack. Yet our retrospectives in Philly identified a problem—a lack of innovation—that we weren’t sure how to fix. Our product owner insisted that any time he heard a good idea, he wrote it up on a card and scheduled work on it when he saw fit, so he denied that innovation was suffering. What I didn’t realize is that we needed to schedule creative slack for the whole team. When I joined my team in France, with the standard 7-weeks vacation, 35-hour work week, 2-hour long lunch breaks, there was a lot more natural buffer slack. So when we started nailing iterations early, all the buffer activities were already done. I noticed that the end-of-iteration slack was creative in ways that simply was not possible in buffer slack. It was a new kind of slack: creative slack. I’m not the only one to have learned about Slack from the French culture of working to live instead of living to work. Though he is a native Pennsylvanian, DeMarco studied here in France, at the University of Paris. Maybe that’s why he knows so much about slack.
Note: Though important for recharging, non-work activity (returning a personal phone call, lunch break, evenings and weekends), is not slack in my opinion. Slack is not the same as slacking off.
The Published Discourse on Slack
One of the main reasons I was attracted to Extreme Programming, when I first read about it in 1999, was the idea that we can do good work without overtime. In Beck’s Extreme Programming Explained, 2nd ed., he explains that slack is about building trust—about keeping our iteration commitments. This is obviously buffer slack. James Shore builds upon the buffer concept by saying that it's the variability in problems that determine how much slack we need. In the Pomodoro technique, we learn to pause every 25 minutes. Why? Partly to make sure we're doing what's important. In my opinion, this is buffer slack too—it is still focused on the tasks at hand, rather than uncharted territory.
Though not specifically labeled creative slack, DeMarco’s work touches upon the idea, by identifying that if you don't have slack, you can't take risk, because there's no room for recovery from failure. He also says that the more optimized you are, the less slack you have, and the less you're able to change. Both risk-taking and change are likely to lead us into new territory, and is therefore, what I’d call, creative slack.
Unanswered Questions
I have a lot of questions about what to do with creative slack. Apparently Google requires that employees demonstrate a proof of concept before they are allowed to invest significant amounts of slack time in a project. My team is not doing that—all our creative slack is purely free and unmanaged. This doesn’t seem quite right to me because some of those projects have no value to me as a Product Owner—but I do not interfere because I think the energy these projects generate gives enough of a velocity boost that it’s justifiable. I also don’t want to kill good ideas that I just don’t understand yet.
What do you think about the following?
- Can you manage slack (like Google does, without diminishing the energy generation of slack)?
- Can you suggest items for exploration (without impacting the restorative power of autonomy)?
- Should slack be unconditional?
- Should it be a reward?
- Does discussion forum/tech news/book reading/technical exploration count as buffer slack or creative slack? Or is self-improvement slack a category that should be explained here?
- How do we balance individual needs for slack with team needs?
- Is creative slack part of your job?
Tuesday, March 9, 2010
Agile Besançon--March
This month at our Agile Besançon meeting (meeting announcements at http://groups.yahoo.com/group/software_dev_in_free-county/), we did a Cowboy Coding Contest. Six people came, which is definitelyenough to have fun, and we set up one laptop with a projector so everyone could see what Ludovic and I were up to. Initially we thought we’d do multiple attempts at the same algorithm (implementing a Decimal to Roman Numerals converter),
but we wanted something new for the second try, so we did a binary search instead. We spent just over 30 minutes for each programming task, followed by a review of our approach. Anyone who wanted could share their code, their algorithm, or speak more generally if preferred. Since people were allowed to code in any language, we ended up seeing implementations in Java, Python, and C++! I would have gone faster if I’d picked Java, but I don’t want to lose everything I know about Python, so I practice it when I get a chance…
As usual, we ended our meeting with a quick feedback cycle… people enjoyed coming out to do code, but thought the algorithms could have been laid out more clearly (bduf?). They also thought algorithm implementation isn’t good practice for object-oriented programming.
Thursday, March 4, 2010
Point Synchro with a timebox
Tuesday, March 2, 2010
favorite lines from Peopleware
Counter-productive Managers
Much of the management culture that has been exercised for millennia is simply counter-productive:
- Rather than scolding employees for making mistakes, pro-actively ask them "what dead-end roads they've been down" recently. If none, then they're not being creative enough, not taking enough risks, and not going to provide the value we expect of them.
- On average, they claim that salaried workers spend only 5% of their time on "planning, investigating new methods, training, reading books, estimating, budgeting, scheduling, and allocating personnel". Without a curious/reflective attitude, how will the workers improve?
- There's no such thing as overtime. "The best workers have been through it all before... they take their compensatory undertime when they can, and end up putting in forty real hours of work each week". Instead, managers need to identify workaholics, and encourage them to pay attention to their personal lives, because otherwise, ultimately, they'll burn out.
- We cannot increase productivity in knowledge work by turning up the pressure. Any short-term gains in productivity have to be weighed against future loss of employees.
- Cutting corners on quality is no way to increase productivity. Just as the lean folk say today, DeMarco and Lister said 25 years ago that "the trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted". They add "Quality... is a means to higher productivity", yet "Quality is free... to those who are willing to pay heavily for it". That is, we must pay heavily for quality but the returns justify the investment.
- Parkinson's Law: "work expands to fill the time allocated for it". The authors say this is a destructive myth.
- Coding Wars: the authors collected data from various environments and compared time-to-completion for correct implementations of sample programming tasks. They found a 10:1 ratio between best-to-worst, and better half being 2:1 as fast as the wore-performing half of programmers. What was more interesting, though, is there was a 10:1 ratio between best-to-worst organizations. If you work in a noisy, disruptive office, well, everyone is affected. If no one can can get any work done "between 9 and 5", work on it.
- Disrupting the flow of concentration may require "fifteen minutes or more" to get productive again. Many environments are so disruptive, no one gets into flow enough to get anything done. When applied to an agile context, I think that flow is different. The authors concede that people doing similar work in the same room aren't often disrupted by the hum of their coworkers, and the general consensus on the XP list is that we're trying to optimize the flow of the team, not of individuals in a team environment. That means interruptions related to the current activities on the team are OK, a change in direction and distractions are not (hence the Scrum rule prohibiting changes to the sprint's cards?) Answering the phone--is obviously disruptive. The authors advise against electronic interruptions of any sort.
- Cornell University's findings on the effect of music--workers were less creative!
- "Professional means unsurprising". An organization is constantly becoming more uniform, more rigid, more standardized. This reduces "the potential to generate energy or do work".
- Aptitude testing doesn't work for making hiring decisions--but it does help employees do self-assessments, to motivate them to improve and to work hard. What we need is autonomy, purpose, and mastery, according to Dan Pink.
They say that "someone who can help make a project jell is worth two people who just do work".
- In Alexander's A Pattern Language, he writes "without communal eating, no human group can hold together...we found this worked most beautifully when we took it in turns to cook the lunch"
- "The business we're in is more sociological than technological, more dependent on workers' abilities to communicate with each other than their abilities to communicate with machines"--and so recruiting should include an evaluation of a person's communication skills and sociological aptitude.
- Change the culture of turnover. Encourage employees to sign-on permanently.
- "Voluminous documentation is part of the problem, not part of the solution". And so the Agile manifesto wasn't first to publish this idea. They even touch upon the idea of complex rules-->simple behavior; simple rules-->complex behavior explained in Complex Adaptive System theory, and talk about "malicious compliance" where employees can follow the letter of the law while going entirely contrary to the spirit of it.
- This is the book that coined the term "jell" to refer to a cohesive, interdependent group of individuals whose production of the team is greater than the sum of its parts.
- On a jelled team, managers don't need to provide motivation--it's already there. The people find the work more enjoyable than it should be--just because of the team. The goal could be arbitrary--but everyone has agreed to help achieve it.
- Much of our work is still independent--the team serves to make sure everyone's pulling in the same direction.
- "You can't make teams gel"
- Autonomy only exists when managers give their employees room to make mistakes.
- Managers who support teams aren't doing the work of the team--they're focused on healthy relationships
- Promote excellent quality
- Make (even fabricate) milestones, so people can see progress and feel done
- "Promote eliteness"
- "Encourage heterogeneity"
- "Preserve and protect the team"
- "Provide strategic but not tactical direction"
- they have a strong sense of identity (shared jokes, shared lingo)
- they've got a sense of eliteness
- joint sense of ownership
- individuals seek peer review
- interactions are fun, easy, healthy, warm, confident
- loyalties within the team are stronger than to the company
Thursday, February 25, 2010
we need stories from more lean companies
So much of the lean literature and discussion is about Toyota that this has been rough news... we need to hear more stories about Dell, Zara, Amazon, and other lean companies. Where do you get this kind of news?