« November 2009 »
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30


Wednesday, 18 November 2009
When success = failure
Topic: Change agency

There's a lot of buzz in the community about how to drive high productivity at the grassroots level, and how great it is when we can help develop a high-performing team. There are also those in the community who call for a heavy-handed approach to change; sometimes they use the term "shock therapy" to describe a process of instituting radical changes in team structure and organizational workflow in a short time. Some consultants speak of improvements in productivity in the range of 4x to 10x or greater. Although there has been recent movement away from the term, some consultants still seem to like the idea of hyperproductive teams. People still talk about "spinning up" high-performing teams.

In thinking back over a couple of experiences in team coaching and organizational change, I've begun to realize that there is more to success than just spinning up one or two "hyperproductive" teams. One experience was at the first company where I learned agile methods in 2002, and the other was earlier this year, 2009. In both cases, we achieved astonishing success in creating one team or a small group of teams that performed far outside the norm for their respective organizations.

In each case, the teams in question pushed the envelope of state of the art agile practice. In 2002, that meant two-week iterations, relative story sizing in terms of abstract points, task decomposition, and a daily burndown of tasks. In 2009, it meant a one-week development cadence with an independent release cadence, stories split vertically into small enough chunks that no task decomposition was necessary, no daily burn tracking, "naked planning," fully generalized skill sets, and self-management to the extent they screened and auditioned job candidates and handled their own personnel issues. In both cases, it meant a disciplined approach to Extreme Programming practices and an approach to development that today we could call software craftsmanship. The point is, these teams rode the bleeding edge of whatever the state of the art was at the time. Indeed, one could justifiably say they sharpened that edge. They definitely would have qualified for the label, hyperproductive.

So, these were roaring successes, right?

I used to think so. But I have to wonder: If they were successes, then why did "agile" peter out at the first company after an amazing three-year run of successful projects? Why are the people at the second company unhappy with the new way of working, despite the fact they deliver more business value than before and they can pump far more work through their process than they previously imagined possible?

On reflection, I think the basic reasons are these:

  1. Local process optimization
  2. Insensitivity to emotional factors

 

Case 1

In 2001 I joined a mid-sized financial services company with about 33,000 employees, operating in 6 US states, and with an IT department of about 1,300 people. It was a nightmare of waterfallish processes, crushing bureaucracy, cartoonish fake smiles, dehumanizing toadying, and walled-and-moated functional silos. Less than a year later I was fed up and ready to leave both the company and the IT field. At the urging of a colleague, I joined a small group of employees who wanted to analyze the business value the IT department added to the enterprise, and determine how to improve things. Along the way we discovered the Agile Manifesto. We enlisted help from ThoughtWorks to teach us agile methods. Long story short, in a few months we had built up an internal agile practice that could handle several projects at once, and we were delivering value regularly. The "business side of the house" loved our group. Line of business managers started to demand that the IT department carry out their initiatives using our methods. Things just got better and better...

...for a while. There are many war stories to tell from this time period. For purposes of this post, let's skip to the end of that three-year run. As soon as they could, IT management "took control" of the agile group. Within a week, they had (a) cancelled the practice of locating technical teams on-site with their internal customers; (b) scattered the agile practitioners around in the traditional organization, to dilute their influence; (c) conjured negative performance reviews of key agile proponents in the organization as a way to encourage them to leave the company; some were even put on probationary status, to pressure them to leave; (d) assigned some of the top performers to dead-end jobs babysitting relatively unimportant legacy apps; another tactic to encourage them to leave; and (e) re-established the waterfall process (decorated with a few agile buzzwords) as the sole way of delivering projects for internal customers. One year later, there was nothing left of "agile" but the word, much as the Cheshire Cat faded away and left only his smile behind.

Why would people do this, to the detriment of their own company, the organization whose success fuelled their own bonus programs and retirement plans? At the time, the reasons were incomprehensible to me. I chalked it up to incompetence or, in some cases, maliciousness. In hindsight, the reasons are obvious: We had embarrassed IT management. Where they insisted something would be too costly, too time-consuming, or technically infeasible, we went ahead and did it at reasonable cost, in a short time, and with technical excellence. We demonstrated that everything the traditional IT managers believed to be true of software development was wrong. We went around them, and worked directly with the lines of business. We ignored their standards and procedures. We openly disrespected the chain of command, the org chart. We went around the HR department, as well, and recruited our own people to join the agile teams. This made HR feel disrespected, too, since our behavior demonstrated that we did not trust them to screen job candidates adequately. To add insult to injury, we did all that while wearing blue jeans and working four-day weeks...at a traditional financial institution with a very conservative organizational culture.

It was all amazingly productive and added tremendous value to the enterprise. It was also absolutely intolerable. One year after IT management "took control" of agile, only 4 out of 60 agile practitioners were still employed there. Those four had settled back into quiet, secondary roles in the organization where they could accumulate long-term retirement benefits as long as they kept their mouths shut and didn't make any waves. Everybody (who was anybody) was happy again.

Local process optimization. Our group was physically and philosophically separate from the rest of the IT department. It grew up as a skunkworks operation and only survived as long as it did because our customers wouldn't allow IT management to crush it openly, since they were realizing value from our work. We did not improve the company's IT processes across the board. We only optimized our own work, in isolation from the other 1,300 IT professionals in the company. We were so fully isolated that most of those people probably never even realized anything unusual was going on. If you asked them about it today, I'll bet they wouldn't even know anything like this had happened in 2002-2006. The business managers who learned about the value of agile methods during that time moved on to other jobs, or retired. The organization itself has not gained or retained any deep tacit knowledge of agile practices or their value, and has not fundamentally changed its culture.

Insensitivity to emotional factors. We simply ignored most of the individuals whose support we needed in order to achieve long-term process improvement. They responded in a perfectly normal human way: They bided their time until they could crush the agile initiative, and then they did so quickly and firmly. They "punished the innocent" and made sure anyone who had been part of the agile group either sat down and shut up, or left the company. It's possible that those managers left the company eventually, too, and that a new crop of managers has experimented with agile or lean methods again since 2006. If so, they have not benefited from anything we did in 2002-2006, because internal history was rewritten to expunge all memory of it. This huge waste, this huge loss, is a direct result of our insensitivity to the emotional needs and politically-motivated fears of key management personnel. We succeeded and we failed with the same stroke.

Case 2

Early in 2009 I was engaged, along with another agile coach, to help a certain company improve its business processes and to help a couple of technical teams get up to speed with Extreme Programming practices. This is a smaller company than that in Case 1, with under 1,000 employees working in only two geographical locations. We were working with teams and stakeholders at one location, and most of the technical teams worked at the second location. There, they had been practicing Extreme Programming for five years already, under the guidance of an internal agile coach and with the support of their own management team.

The two of us quickly determined that the main problem in the organization was not the technical teams' use of Extreme Programming, but rather backlog grooming upstream from the technical teams. We focused mainly on that, and did not pay any attention to the teams at the second location. In the meantime, I coached the technical teams at the first location in agile methods, which were new to them.

Long story short, in about three months the teams that were new to agile methods were applying more-advanced techniques and delivering value better than the teams with five years of XP experience behind them. They were using methods I mentioned earlier, which represented state of the art practices circa 2009, and were functioning at a hyperproductive level as compared with the organization's general IT performance. They were applying agile values and principles throughtfully and crafting their own practices accordingly, rather than following "rules" from a book by rote. After five or six months, however, they were floundering. The team was far out of sync with the pace of work the rest of the organization could sustain.

Within their own workstream, they were able to pull work much faster than the stakeholders could keep the backlog up to date. This caused a lot of dissonance in customer collaboration. It also forced the team to revert to story sizing. Whereas relative sizing was a state of the art practice in 2002, as described in Case 1, in 2009 it is no longer a state of the art practice. Here, a team that was already skilled at commitment-based short-term planning without fine-grained estimation had to drop back a step and start sizing user stories, simply because the stories were not in appropriate shape for them to pull; they did not have any idea how big the stories might be or any inkling of potential technical risks until the very day they were expected to start working on them. This was a source of frustration for the team, and also a source of stress for stakeholders, who felt as if they were "failing" in some way although they really didn't have time to do any more than they were already doing.

Local process optimization. We had a single team functioning at a level of performance that was out of sync with the rest of the organization. We introduced change too rapidly and in too localized a way, and caused friction in the organization. This particular team was capable of absorbing that much change that quickly, but because they were out of sync with the rest of the organization their very success created stress and frustration for them and their customers. When they had to back off from leading-edge practices, it made them feel as if they had "failed" with agile, in some sense. That is especially unfortunate in view of the fact that even after they slowed down they were operating at a level of agility beyond that of most agile teams in industry.

Insensitivity to emotional factors. In hindsight, I think this was the area where we failed most spectacularly. We failed on two levels: First, we drove change forward as rapidly as possible and ignored the emotional impact of change on the team and their immediate collaborators; second, we ignored the people at the second location (at least, initially), who had built a sense of personal pride and an internal reputation in the company as agile experts in the course of five years of nurturing XP teams there.

The team members could see that they were performing better than they had done previously, yet they were not happy about it. They didn't have time to be happy about it. They had lost their individual cubicles in favor of a collaborative workspace geared for pairing; the Furniture Police did not consider all the aspects of an effective team work space when they set up the team area, and did not consult the team about their needs. As it turned out, this single factor had a significant impact on team morale. The last time I checked in with them, they had lost one senior team member and two others were emotionally "checked out," showing up for work but not really feeling engaged. They are still delivering value at a higher rate than any other team in the company, but they are doing it mechanically, without a deep personal investment in the process.

The in-house agile experts felt threatened by the new ideas the consultants brought. We caused them to feel that way by failing to engage them properly from the beginning. With the consultants now gone, the in-house agile experts have reasserted themselves as the thought leaders for process improvement. They are imposing "rules" such as they use with their own teams, based on state of the art agile circa 2004. That is when they started to introduce XP, and it is the style of agile work they understand best. In hindsight, I think we should have approached change by engaging these individuals from the start and introducing change at a far more gradual pace. We didn't help them understand how agile practices have evolved in the industry since 2004. As it is, the pattern that is emerging is similar to that at the company in Case 1: A brief flurry of localized extreme high performance followed by a breakdown and re-establishment of the organization's previous equilibrium state. Cold comfort: At least in Case 2 the previous equilibrium state is superior to that in Case 1.


Thinking back over these experiences leads me to another question: One year after the boastful consultants have left a client organization, what does the process look like at that organization? Did the changes "stick?" Consultants often quote client testimonials in their marketing material. What would the clients say one year, two years, or five years after they released those quotes?

The question reminds me of a conversation I had with the CEO of a previous employer, an agile services consultancy. There was one client in particular we used prominently in our marketing materials, who had given us a glowing recommendation. Two years after that successful project, we were reviewing the list of upcoming engagements and prospective engagements one day and I noticed we had never obtained any follow-on work from that particular happy client. I asked him why, if the client had been so happy with the results, they had never brought any more work to us.

His answer was along the same lines as this blog post. Our team had performed at a pace that was far out of sync with the client organization. Our customers could not keep the backlog up to date fast enough to feed our team meaningful work. They threw stories together helter-skelter just so they wouldn't be paying us an hourly rate to have our people sit around and wait for something to do. The experience was so stressful for them that they decided they weren't suited for agile work, and they reverted to traditional methods and traditional services firms.

It occurs to me that we may have served our client better had we adjusted the pace of change and the demands for collaboration so that they were more closely aligned with the client's ability to cope with change. The initial project may have taken a bit longer, but we probably would have won follow-on work from the client because they would have learned how to collaborate effectively with an agile services provider. Instead, they came away feeling as if this "agile" stuff can produce impressive results, but it just isn't for them.

Turning all the knobs up to eleven while ignoring the human costs of doing so may not be the definition of success, after all. Beware of consultants bearing gifts of hyperproductivity.

I recall a comment from Ron Jeffries on the Extreme Programming discussion list some time ago, to the effect that if you haven't gone all the way with agile then you don't have a frame of reference to understand when and how to back off from particular practices without losing the value of the agile approach. (Of course, his comment wasn't as verbose as that. Verbosity is an affliction of mine.) Anyway, I've gone all the way more than once and in more than one context. I think I have a frame of reference to understand when and how to back off. I recently had an initial visit with a new client. Until I understand their organizational culture and their values pretty well, I won't be turning those knobs anywhere near eleven.


Posted by Dave Nicolette at 10:38 AM EST
Post Comment | View Comments (5) | Permalink
Thursday, 22 October 2009
UMLet UML diagramming tool
Topic: Tools

I found a UML diagramming tool that I think is well suited to agile modeling. It's called UMLet, and it runs either standalone or as an Eclipse plugin. The product home page is here: http://www.umlet.com.

The reason I say it's suitable for agile modeling is that it works well, but it isn't slick and it doesn't have ten thousand options for making the diagrams look pretty. When a diagramming tool is too slick, it can be tempting to spend a lot of time fooling with it just because it's fun, and to go into more detail in the diagrams than is appropriate for the agile style of development.

If you like making pretty pictures, or you think our job is to produce highly-polished diagrams rather than working software, or you're a stickler for using the specific icons defined for a particular version of the UML, or if you enjoy playing with diagramming tools to the exclusion of pulling work items through to the "done" state, then you might not appreciate UMLet. If you'd like a simple tool to produce high-level UML diagrams easily, then you might like this tool.

Here are some of the reasons I like UMLet:

  1. It's Open Source software.
  2. It runs on all mainstream platforms: Microsoft Windows, Apple OS X, and Linux.
  3. It runs standalone or as an Eclipse plugin.
  4. It's simple enough to use that it doesn't require a user's manual or a training course.
  5. It supports all the usual suspects - class diagrams, sequence diagrams, use case diagrams, etc. - and is good enough for high-level diagramming without falling in love with its own reflection. It's just crude enough that you won't be tempted to play with it all day long. One might say it's perfect in its imperfection.
  6. It's easy to clip out a diagram and save it as a graphics file, to drop onto your project wiki or into a presentation or document.
  7. It saves the data in XML, so if you have to rescue your diagrams at some future time when UMLet is no longer supported or goes commercial, you at least have some reasonable basis for doing so.
  8. It's easy to check the diagrams into and out of your version control system along with the production code and test suite. Easy to script all that, too.

 

Here's a crude class diagram I put together in a few minutes' time using UMLet. I'm sure it isn't academically correct, and that's okay with me.

The only problem I've seen with UMLet is that it throws NullPointerExceptions out of the AWT dispatch thread quite frequently. It doesn't seem to do any harm, though.

I'm using UMLet on Ubuntu Linux. Here's how I installed it.


Posted by Dave Nicolette at 2:21 PM EDT
Post Comment | View Comments (1) | Permalink
Read It Later plugin for Firefox
Topic: Tools

When looking for information online, I often come across interesting articles or blogs that I want to read later. I had been bookmarking them in a folder created for the purpose. When I remembered to look there, the items may or may not still have been relevant and timely. In any case, I had to clean out that folder manually, since they weren't really bookmarks I needed to keep for repeated reference. I recall a day when there were over a hundred items in that folder, and I didn't even remember why I had tagged most of them.

One of the things I came across while looking for other information was a Firefox plugin called Read It Later. Its purpose is to manage a special folder in your bookmarks file where you can stick URLs of sites you'd like to read later. This is for items you'd like to read on a one-time basis; it's not a substitute for RSS feeds. It can also save the pages locally for offline reading. It's easy to move items to your permanent bookmarks or delete them when you've read them. The plugin doesn't actually do all that much work, but it's a time-saver and it's very well-behaved code.

Here's a screenshot of a Firefox window with the Read It Later homepage displayed, and showing the elements the plugin adds to the toolbar.

To add an item to the read it later folder, click on the checkmark near the right-hand side of the toolbar. On the right, the drop-down list of saved sites is open in the screenshot. Simple and useful. I've had no problems with it so far. The Read It Later homepage is here: http://readitlaterlist.com/.


Posted by Dave Nicolette at 1:20 PM EDT
Post Comment | Permalink
Is this a process smell?
Topic: Continuous improvement

I was just scrolling back through old blog posts, trying to decide which ones to keep when I revamp the site, and I came across a post from last February on the subject of tools that provide continuous feedback. I noticed a comment from Lee Winder that I had overlooked until now. He writes,

...we have a system which alerts designers when a new build is ready on the CI machine.

If we have fast turn-around, they could be getting alerts every 10/15 minutes, which is certainly to much if they only update once or twice a day.

Since the alerts are e-mails, I've recommended they filter them into a CI folder, only checking the alerts when they need a new build to see when the last one was generated.

I wish I had seen this earlier. It seems to me the statement, "they could be getting alerts every 10/15 minutes, which is certainly to much if they only update once or twice a day," suggests a process smell. It may or may not be a real problem, but it sounds questionable in the context of agile-style workflow. It may be worth finding out why (1) the team is only updating (checking in?) once or twice a day, and (2) why they think that is satisfactory.

It isn't necessarily a problem. "Smell" doesn't automatically mean "bad;" it just means, "Find out where the smell is coming from, in case it's a problem." It might only be that you neighbor's cooking smells funny. OTOH, it may be that your curtains are on fire. It doesn't hurt to find out for sure.

If this team is updating only once or twice a day, then by implication they're only running their own build once or twice a day. Lee's company does video game development in C++, and the practical limit to the number of updates per day this team can make may be different than for typical business application development in languages like Java and C#. Game development involves several distinct types of programming, and the practical maximum builds per day may be different for this team than for other teams working on the same game. Even so, it might be good to understand exactly why they are limited to just one or two builds per day, just in case the curtains are on fire. Couldn't hurt.

The notifications aren't from this team's own build; they are consuming a build from another team. That team is updating at least every 10 to 15 minutes; not bad. A simpler solution might be to remove this team from the distribution list for that build's automatic notification. There's no need to have the email server churning when the notifications aren't useful. Team members have to go in and delete all the useless emails at some point, too. Maybe it's low enough impact that it doesn't matter, in context. It sounds a bit wasteful, anyway.

An information radiator is sometimes helpful in cases when one team needs the latest stable build from another team. I've seen cases when a large monitor is set up in each team room showing the build status for all the parts of the project that are in flight at the moment. This team would be able to tell at a glance whether they needed to pull a new build. I don't know which tools they're using at Lee's place, but I've seen this done using Big Visible Cruise in conjunction with Cruise Control. It may be possible with other CI servers, as well. Just a thought.


Posted by Dave Nicolette at 10:31 AM EDT
Post Comment | View Comments (2) | Permalink
Wednesday, 21 October 2009
Agiles2009 Conference
Topic: Events

Ágiles 2009 took place on October 6-9 in Florianopolis, Brazil. It was the second in a series of agile development conferences bringing leading-edge software development and project management practices to Latin America. The first was held last year in Buenos Aires, Argentina. It was organized by a small group of highly motivated and dedicated people, primarily a group that had met during their university years in Buenos Aires and who are driving agile and lean adoption forward in Argentina, but also including professionals from several other Latin American countries who share a passion for agile development. The first conference was a great success. The second was at least as informative and enriching, if not moreso.

Of course, these are not the only agile- and/or lean-focused events in Latin America, but they are the largest and they seek to bring in international participants. With strong support from the Agile Alliance and from key commercial sponsors, the Ágiles conferences bring together agile and lean practitioners and researchers from across the continent as well as from North America and Europe and help tie together the various local and national agile/lean adoption movements in Latin America.

In addition to Latin American thought leaders in agile and lean adoption, the conference included several well-known figures in the general agile movement, including Diana Larsen, Brian Marick, Joshua Kerievsky, Naresh Jain, David Hussman, and others. There were too many excellent sessions to describe in a blog post, and the quality of those presented by Latin American speakers was on par with that of the better-known speakers. Look to this region for the next generation of leaders in moving the industry forward with effective management and software development methods.

Several participants took some great photos of the event. You can find links to their photo albums on the Latin American Agile Community site: http://sites.google.com/site/comunidadagiles/agiles-2009> I didn't take any great photos, but I took a few mediocre ones. Here's a shot of me with some of the Argentines I met last year, as we began to gather in the lobby prior to the opening keynote:

Left to right: Alejandra Alfonso, Adrián Eidelman, Emilio Gutter, Juan Gabardini, and me.

This one is from Joke Vandemaele's presentation on Power Workshops, a technique she has been using successfully to launch complex agile projects at a company in Belgium. The visuals on the wall are the ones from an actual project that she used as an example.

Brian Marick made himself available for pairing during the conference. He invited anyone who wanted to sit with him to work on an application for his wife's veterinary practice. Here he has grabbed a spot in the lobby and is pairing with one of the conference participants as others look on.

After the final session on Thursday, a rock band made up of people from OnCast Technologies, a Florianopolis-based agile consultancy, put on a concert in the lobby and invited others to join in and jam.

The conference proper was two days long, and was preceded by two days of training courses. These included a TDD & Refactoring course taught by Naresh, a CSM course taught by Alan Cyment, a Certified Product Owner course taught by Alexandre Magno, and a course on retrospectives taught by Diana.

My small contribution was a presentation of my session on Agile Metrics. The presentation continues to be popular. This one was standing room only and went overtime, as usual. Although it seems a rather mundane topic, it is clearly one that is on the minds of many project managers and program managers as they learn different ways of planning and tracking projects.

Florianopolis is quite a nice city. In my spare time I walked around and saw as much of the place as I could. I especially enjoyed the natural scenery around the bay.

The weather was cloudy the whole week. The clouds and mist on the mountaintops in the distance made for an ever-changing scene.

Some parts of the city reminded me of certain European cities. This is the old central market plaza, for instance:

All in all, a great conference with great people, and a fantastic place to visit.

With last year's conference in Argentina and this year's in Brazil, we've all had a chance to try the churrasquerias in both countries. Both are world-famous for their beef. The burning question on the minds of the conference organizers, since most of them come from those two countries, was: Who has the best beef, Argentina or Brazil? To me, the question reminded me of Belgians and Germans debating about who has the best beer. It's basically a moot question, since Ireland has the best beer. (In my humble opinion, anyway.) Sorry to disappoint our gracious conference hosts, but I have to say Venezuela has the best beef. Ágiles2010 will be in Lima, Perú, so the true test must wait for a future year. Fortunately, the future of agile and lean will be a long one.


Posted by Dave Nicolette at 8:02 PM EDT
Updated: Wednesday, 21 October 2009 8:05 PM EDT
Post Comment | View Comments (1) | Permalink

Newer | Latest | Older