Archive for January, 2008

Scrum is really fond of recoiling at anything that vaguely resembles Waterfall methodology, but after a while, this provokes the following question: How do you balance Agility and Process? By definition, [Business] Process means following established procedures, usually in a certain order. This is already starting to quack like a duck in a Waterfall to Scrum aficionados.

On the other hand, it is patently stupid to be Agile for the sake of saying that you are being Agile. That is like pretending that there is a hopscotch board in front of you wherever you need to walk. Entertaining for a little while? Perhaps; however, over time, you will not only expend a lot of unnecessary effort, you will look foolish. Scrum, XP, Lean Development, and other Agile methodologies are, well, methodologies, and as such, are processes. Although clever witticisms such as “Scrum: it depends on common sense (Danube Training)” and “Scrum is not a methodology — it’s a pathway (Ken Schwaber)” are helpful when in the context of the tapestry that they pertain to, lifting them out as sound bites will insure that they are used in the wrong circumstances to justify incorrect assumptions.

So, back to my Blog title: Process Makes Perfect. I am not quacking here; even Agile PM has procedures to insure results. The introduction of Agility to a company is always tough because it forces the employees at all levels to think sideways, not completely out of the box. No Agile screed that I have ever heard of asks an enterprise to jettison everything in the name of Agility; rather, it is learning to recognize that you have many more options besides ludicrous speed and ranking full stop.

If you look at all of the fancy diagrams that supposedly depict Scrum processes with 3D delivery time loops, poetry and Bible verses, and even BHAG flowcharts, they really all say the same thing:

Wait for it…

Think Different

OK, I am not joining the ranks of the Apple fanatics (NSFW) here at Achieve with this bold appropriation of their late 90’s advertising campaign. It just so happens that this describes Agile thinking very, very well…when it is paired with a standard process to follow.

Nobody complains about the Waterfall when it is producing quality software, meeting deadlines, communicating well, and insuring that clients feel like heroes. No one cares how Agile your company is if you deliver a shoddy product that the customer didn’t ask for, late and over budget. There is a balance that can be struck — and should be found — where the best practices of differing methodologies can actually provide better results than any one on its own.

If a process is a series of steps in a predictable order, such as points on a straight line, then agility is thinking multidimensionally: away from the line. The main cause of grief from Waterfall is the strict adherence to the idea that “we can’t do that until we have done this”. This dot is in front of that dot on the line, and you cannot think differently enough to see that there is more than one dimension. Agile methodologies encourage anyone who is familiar with this mode of thinking to do a sort of mental Aikido when the standard operating procedures meet with resistance or raised impediments:

Aikido techniques are normally performed after first blending with the motion of the attacker, so that the defender may redirect the attacker's momentum without directly opposing it, thus using minimum effort...Aikido demonstrates this philosophy in its emphasis on mastering martial arts so that one may receive an attack and harmlessly redirect it. In an ideal resolution, not only is the receiver unharmed, but so is the attacker.

If the process is running smoothly, and product (quality “potentially shippable” code) is being generated, there is no real problem. It is when one perfectly-shaped piece of gravel catches your left front skateboard wheel at high speed that you realize that the attack is imminent — in this metaphor, the asphalt meeting the side of your face. Being flexible in your processes not only allows for agility, but brings you closer to not only dealing with your “attacker” (WIBNI, anyone?) but finding an ideal resolution to the apparent confrontation.

Here is some more abuse of the code block tags; something else to pair up with this idea of an Agile process, this time from the buzzword bingo that is the Agile Manifesto:

Simplicity--the art of maximizing the amount of work not done--is essential

As I have stated before, Achieve has an Approach. This is where I am going with my defense of Process. Recent hard work has determined that we may have found a balance point between Scrum and Process that will provide the Company with the best of both worlds.

Stay tuned for the other side of the double-wide!

I would like to hijack a quote from The Shawshank Redemption:

“I believe in two things: Discipline and the Scrum. Here you will receive both.”

There are too many stories (note the lack of a capital S there) about how Scrum or some other Agile Flavor of the Weak fails to take hold in a corporate environment. I believe that this is due to Scrum being seen as some magical panacea, some sort of instant oatmeal solution to right a foundering project or product. This is not the case, and is the acknowledged dodge of Scrum trainers everywhere. It is even an early PowerPoint slide in the Danube standard CSM training presentation: Scrum is Not a Silver Bullet.

Here is what Scrum is NOT going to do for you:

* Fix a lack of honesty
* Make a Team play nice in the sandbox
* Remove micromanagement
* Force clients to play by our rules
* Produce good code / product for you
* Make your job easier

You have to do this yourself.

This is where discipline comes in. Martial arts are called disciplines for a reason. Discipline can be thought of as a form of punishment, or it can be seen as a form of self control, and the latter (not the former) leads to hallway usability testing, spontaneous code reviews, staying late to get something just right (and avoiding technological debt), and other evidence of pride of ownership. Discipline is what leads us to quality; Scrum is just a way to help you to be successful in your job description. To paraphrase Ben, own your code.

Achieve doesn’t hire weaksauce. Of that, I am certain, having seen most everyone’s resume, written your corporate bio, and definitely seen how, when we put our minds to it, we turn out excellence. The new year promises many more opportunities to churn out quality solutions for name-brand clients, great Web 2.0 honour, and ph@t l3wt. Discipline is focus, pride, and that extra effort that effectively makes our clients heroes, and it should not be a warden enforcing it: it should come from within.

At the 2007 Achieve Summit, Gary Markowitz presented The Achieve Approach. This is — from my point of view as a ScrumMaster — essentially a scalable series of questions that needs to be asked and acted upon for each and every thing that an Achieve Team does, no matter how large or small the chore is. To quote Chuck D from Public Enemy, “here come the drums.”

The Achieve Approach consists of four items:

  1. Discover
  2. Architect
  3. Develop
  4. Deploy (or Launch)

If you look at these items as a series of questions that are to be asked of every Task, Story, Project, Sprint, or other work that we do at Achieve, we have a framework to insure that the Team is thinking through a problem, rather than rushing to Development and missing critical bits of information that later crop up as impediments. Even though it may seem — at first blush — a little ridiculous to ask these questions for every Task that a Team creates for a Product Owner’s Story, the scalability of the Achieve Approach will make this a valuable exercise.

Scalability means that a routine (in this case, examining the four parts of the Achieve Approach) is suited for both large and small applications, and that it is nimble enough to apply equally in micro- and macro-environments. The Approach seems to be built for a Project: these four steps are “phases” or “stages” that are dealt with in order to be able to produce the needed information to move to the next stage or phase. This type of approach will be derided by hard-core Scrum practitioners as “waterfall methodology.” Just the fact that you have to complete Discovery before you move on to Architecture sends CSMs into a foaming-at-the-mouth frenzy. “This is not Agile! Waterfall is for lumbering oafs! We don’t need no stinking Discovery!” Although there is some concrete value in having a phased approach, Scrum itself loathes this sort of Six Sigma PM thinking because of the perceived waste of time that comes from doing classical due diligence with rigid phases.

That is not what the Achieve Approach is about. The scalability of the Approach is what keeps it Agile. At a Project level, there may be specific phases that Achieve walks through in order to insure that when we hit the Development phase, we have all of the information needed to successfully Develop. At the Scrum level, it is much more of an Agile process where we simply ask the four questions on a per-Story or per-Task basis in order to bubble up impediments before they interrupt the Sprint. Ingraining these four steps into our everyday thinking should help us ask the questions that need to be asked in order to provide accurate estimates, the correct number of tasks, and bite-sized chunks of work to insure that we can deliver quality and timely releases to our Product Owners within the timebox of the Sprint.

Here’s a real-world example of the Achieve Approach working in a Sprint in question format:

STORY: As a [client developer] I want to be able to [easily theme the four verticals on my website] in order to [implement the new Rotato without making it look like it is a new part of the website]

REQUIREMENTS: [simple functional specifications and use test cases as provided by the Product Owner] — this is to be addressed in a later Art of Scrum

TASK IT OUT: Normally, the Team would start throwing out sticky notes with tasks on them in order to try to meet all of the requirements that were laid out by the Product Owner within the Story; here is where, as a ScrumMaster, I am going to ask for the Achieve Approach to be considered.

  • Scrum it up and bounce out all of the Tasks needed to complete the Story
  • Arrange the Tasks in the order that is needed to complete the Story
  • Keep in mind the Team’s resources, and if Tasks can be done in parallel — this is important for Agility
  • Have the Team consider the four elements of the Achieve Approach: even if it takes 15 minutes extra per phase (mostly Discovery and Architecture I am guessing) it is massively important to think these things through at the Planning Scrum so that estimates are accurate and that the Team does not incur Technological Debt
  • Perhaps each Task can be labeled with the Achieve Approach steps in order to insure none are missed

START SPRINTING: If an impediment occurs, again run through the four elements and see where the impediment was missed, if applicable

DELIVER THE GOODS: Make your Product Owner feel like a Hero by giving them a Product that they cannot wait to demo to their Stakeholders

I would like to see Achieve be able to understand Projects, Stories, and Tasks — especially with their resulting impediments — categorized into Discovery, Architecture, Development, and Deployment so that we could understand better where additional work is being generated by not thoroughly planning ahead of time. Although Scrum is designed to deal quickly with problems as they arise, I still feel that the best way to avoid problems is to think them through in the first place. Perhaps we as a company are not doing enough Discovery. It may be that we are arrogantly trying to Architect on the fly. It could be a common misconception that Launching (or Deploying) is a simple push-button process.

This is a rather long blog (hooray for Nyquil), but the upshot is this: learn it, love it, repeat it: Discover, Architect, Develop, Deploy. This mantra will become a saving grace as we find it reminding us of the path to quality code and products.

Here is the very basics of Scrum methodology; we will start simple for the new year:

* Make a list of the things you need to do (Product Backlog)
* Get someone to decide what’s most important and put the list in priority order (Product Owner)
* Set a fixed deadline in the foreseeable future (Sprint Duration)
* Estimate how much you’ll be able to complete by the deadline (Planning Scrum)
* Work through the list in priority order, completing each thing before moving on to the next (Sprint Itself)
* Check your list every day to see how you’re doing (Daily Scrum)
* Even if you haven’t completed everything on the list, release the software when the time is up, in order to realize some benefits
* Review how it went to see if there’s anything you would do differently in future (Sprint Retrospective)
* Repeat (Iterate)

Sometimes, the jargon gets in the way.

Kelly Waters has a great blog called All About Agile that I have recently discovered that has good, no-nonsense Scrum articles, Here are the 10 Points of Success for Agile Development:

1. Active user involvement is imperative
2. The team must be empowered to make decisions
3. Requirements evolve but the timescale is fixed
4. Capture requirements at a high level; lightweight and visual
5. Develop small, incremental releases and iterate
6. Focus on frequent delivery of products
7. Complete each feature before moving on to the next
8. Apply the 80/20 rule
9. Testing is integrated throughout the project lifecycle – test early and often
10. A collaborative and cooperative approach between all stakeholders is essential

Keeping in the spirit of “no jargon”, just contemplate the meaning of the above list. If you would like to read more, check out the full article here.