This blog has moved. Go to SoftwareDevelopmentToday.com for the latest posts.

Monday, December 20, 2010

My Agile adoption story, and why it matters to you



Every person has their own different story of how they found out about Agile and how they came to experiment and ultimately adopt it in their projects.
Mine is also different than most, I started as a skeptic. I was one of those that said "it will never work". But I did come around. Here's the story of how it happened

The downfall of traditional waterfall

As many of the people that entered the software development industry during the 90's, I also had my first job in a small company. A start-up that was growing very fast and exhibited all the usual growth pains: more projects than people, lots of extremely hard-working but not experienced people, egos to match, etc.

As it happens, the typical way start-up companies deal with the growth pains is to hire a couple of experienced people that come in and "install the process" that will deliver us from all problems. And that's what happened to us. The company hired a few experienced project managers, they slashed the number of projects and created a process to structure and organize our work. We badly needed it.

However after a while we figured out that the new process was not helping us finish projects on time or with the right features or quality. It was better than chaos but not really that good. At this time I got interested in processes and organizational issues. My thinking was: "there must be a better way".

Re-discovering the wheel

What followed was something many of us in the industry have gone through and will continue to go through in the future. I started reading about other companies that had faced the problems we faced and discovered that it was not only us, and especially it was not only the software industry that was trying to apply the same old ideas and finding that they failed when applied in real projects.

I discovered Deming first, then Toyota, Six Sigma, the whole nine yards. I started understanding some of our problems: focusing on schedule and forgetting that quality is more important; separating work and creating handovers architects to designers, to developers, to testers, etc.

It was clear that what we were doing at that time (Rational Unified Process) was not a good option for us. That's when I started experimenting with different approaches.

My Path to Agile


I started by using simple RUP and focusing on managing the scope, but this not your garden variety of scope management. This was aggressive scope management, negotiated from start to finish of the project. The whole idea was to plot the progress against expected progress and remove content every time we saw a deviation.

This solution was OK for schedule-driven projects, but we still had the same basic problems of leaving risky or valuable things to later in the project, our teams were still very much silos working on partial features which lead to a lot of work partially done. This was not the droid solution we were looking for.

Agile appears on the scene

At that time a local research institute was pushing for more research on Agile Software Development projects. As luck would have it I was switching projects and the new project was selected as one of the pilots. Now, keep in mind that this was 2004, not the heyday of Agile yet, and I was a skeptic. I decided to take the project and prove conclusively that Agile was not the success story we were being told it was. Boy, was I wrong!

The Agile pilot project

We decided to do everything by the book to ensure that we really learned from the project execution and would then be able to find better ways of working based on that experience. A new team was hired, and we started slowly designing the process based on Scrum. Other teams were using XP for comparison's sake.

Then, a funny thing happened. As I read more and more about Agile, I started to find similarities between Agile and what I had read in Deming and Jeff Liker's work. There was the uncompromising focus on the customer, the respect for people, the empowered team with a Product Owner to steer the scope (which I had learned could work well), and more.

I was starting to feel that Agile was no longer a small thing to improve a dead wrong process. It was much more. It was, and is a paradigm shift the consequences of which are still dawning on me today, a good 5 years after the first project.

This is my story

I wanted to share this story with you because I know that many have had similar experiences or are going through that transformation right now. There are a lot more of us, going through the evolution and learning from our application of Agile. That collected knowledge and learning will hopefully improve our industry in the long run.

Agile Finland, a Finland based non-profit association wants to support more of these transitions and that's why we put together a program to support those of us that have started the Agile transition process.

Agile for the experienced

Myself and a group of other Agile Finland members decided that we would create a program to support those of us that have started the transition to Agile and are at a cross-roads, looking for improvements that cannot be found in the available literature. We also don't want to visit every single conference on Agile Software Development we can find. We want to learn from each other and from the top practitioners and researchers in the industry.

The Agile Coaching and Leadership Academy was created from this cooperation. But this is no longer a project by a small group of Agile practitioners. Agile Finland was able to attract a much bigger training institution to help us and vouch for the curriculum that we are putting together.

University of Helsinki joins the effort

Together with the Computer Science department at the University of Helsinki we created the basic program for the course, but now we need the most important ingredient: you, the people who want to learn and improve the performance of your organizations. We want to offer this opportunity to 15 people interested in not only listening to the best minds in the field, but also actively contributing by sharing your experiences and learning from other's experiences.

Check out the program and the details of the training program here and join us in improving our Agile knowledge.

Photo credit: jillclardy @ flickr

Labels: , , , , , , , , ,

at 14:45 | 0 comments
RSS link

Bookmark and Share

Monday, January 26, 2009

Acceleration, schmeleration. Scott Ambler misses the point...

Through
this post on InfoQ I learned that Scott Ambler is writing about productivity in Agile and how to measure it. He comes up with an interesting concept, that of acceleration.

Anyone familiar with statistical process control knows that a process does not have "acceleration" by itself. A process is either under statistic process control (ie churning out about the same amount of output per unit of time, within an acceptable variation) or it is not (ie the output is not reliable).

If a process's output is changing outside the control limits (ie not in statistical process control that actually means that the process is not under statistic process control. When that happens it is due to either one of two:
  • Common cause - This is a cause that is known and happens repeatedly (e.g. accumulated technical debt in a way that can be anticipated).
  • Special cause - Something totally out of left field that cannot be predicted.


If the velocity of the team is decreasing constantly (to the point that you can measure acceleration as Scott proposes) then you are in the presence of a common cause (ie predictable cause that impacts velocity). If that is the case you know that it's not the team that is to blame, it is the system in which the team is working that is causing the decreased velocity.

Scott misses the point completely, when it comes to processes, if you can "predict" the acceleration in velocity then you can do something about it. However, you do have to work at it, you need to investigate the systemic causes for the velocity to decrease and identify the root cause that, being solved, can change the system's behavior. This is not necessarily easy or quick...

In practice this means that every single team out there can improve their productivity (and should) by looking at their velocity, seeing if it is within the statistic control limits and acting on it. If the velocity is in control (as in statistic control) you can improve it by changing the process (the whole process, not just the team's sprint-process). If your velocity is not in control then you need to eliminate the "special causes".

What does this all mean? It means that instead of selling the idea of
"pricing" velocity increases for an Agile team (or any other team) Scott should be trying to tell people about the consequences of actually knowing whether your velocity is increasing/decreasing or it is stable.


Here's what really matters:

  • If your velocity is stable (in control) the only way to improve it is to change the process (do a proper retrospective, identify root causes and then act -- the old PDCA). Remember that the "whole" process influences the team's velocity, not just what you do within a sprint (requirements, production, etc. should be looked at also).
  • If your velocity is not stable (not in control) then you should start by analyzing the reasons for it's oscillation and start solving those. These tend to be random events that happen in an unpredictable fashion (e.g. a developer forgot to submit one change to the VCS before testing started).

Labels: , , , ,

at 10:01 | 0 comments
RSS link

Bookmark and Share

 
(c) All rights reserved