By Chris R. Chapman at June 28, 2008 00:40
Filed Under: agile, alt.net, better practices, eXtreme Programming

I’ve been preoccupied with helping my client assess and visualize a SharePoint 2003 to MOSS migration for the past few weeks, and as a result my blogging suffers.  Always something!

Tools_for_agility_wpToday, a couple of agile resources I wanted to post for posterity and share.  First, a white paper by Kent Beck published by Microsoft on the use of tools in agile software development entitled Tools for Agility:

This is an excellent, quick essay by the creator of eXtreme Programming on the value of tooling for enabling agile software development.  A consistent theme for Beck is how the evolution of utilities like continuous integration and xUnit frameworks foster faster transitions between tasks that an agile/iterative/lean team encounters over the lifespan of the project.  Beck also offer his prognostications on future agile tools and practices.

Altnet_podcastNext up, the Alt.NET Podcast.  Yes, I’m a Johnny-come-lately to discovering this feed, but I’m a huge fan of developer podcasts like Hanselminutes and the Agile Toolkit as a means of obtaining insightful information during my down-time driving to the cottage or enduring a ride on the TTC subway (uggh!).

This morning, I listened to the Adopting Agile episode with Owen Rogers – really good stuff that made me think hard about the philosophies and positions I’ve held about non-agile teams and how to persuade them to make the transition gradually with just a single commitment to deliver a working increment of software once a month.  From here, in Rogers’ experience, it’s easier to begin rationlizing the adoption of agile/lean/iterative practices to enable the once-a-month rhythm.  Very much in the “stone soup” tradition.

That’s it for today – I’m off to the cottage this evening for the “holiday long weekend” here in Canada.  Time to catch up on some Inversion of Control podcasts…

By Chris R. Chapman at November 08, 2007 15:00
Filed Under: agile, bduf/waterfall, better practices, eXtreme Programming, scrum
Ed.: I've made some minor changes to this post to improve flow and revise the conclusion.

A few weeks ago (October 16 to be precise…) I happened across an intriguing blog post by developer David Christiansen entitled Is there REALLY any rigor in Waterfall?  Far from being a standard pro-agile polemic, Christiansen describes his own intellectual journey from a self-professed waterfall-neutral “fence-sitter” to agile/iterative-friendly convert through firsthand experience and research.  Rather than accept prima facie the rhetoric on the problems with phased delivery, he researched the model’s pedigree and coupled it with his own experience and had his own revelation:

“For the last couple of years I’ve sort of ridden the fence on where I stand on project management. I’ve conceded that waterfall might have a place in the IT world in the past, that it’s a tool we should have in our toolbox, even if we don’t use it very often…

The waterfall approach to managing software development projects is one of the most costly mis-diagnoses ever. It structures projects for failure. It creates a cost-change curve that is unacceptably expensive (you know, the cost of a change grows exponentially as the project progresses) and is largely responsible for the high failure rate of IT projects.  Waterfall creates a project structure that is rigid and forces you to make decisions and predictions when you know the least, then abide by them no matter what realities you expose in the process.

I am off the fence. Waterfall doesn’t belong in any IT project manager’s toolbox. It is based on and littered with myth.”

While I do enjoy reading about another developer’s Conversion on the Way to Damascus, David’s piece stands out to me because outside of Craig Larman, he’s the only person I’ve come across who makes reference of Winston W. Royce’s role in the story of the waterfall model.  While Royce isn’t really responsible for the waterfall model – that came about as a result of our industry’s 30 year failure to RTFM – knowing who he is and the history behind phased delivery is vitally important to putting the rationale for agile/lean/iterative models into their proper context. 

Is there a One True Way?

A week later, David’s post was picked up in a feedback thread to a rather pedantic advice column on InfoWorld that was responding to a student’s query on the value of requirements vs. testing (btw, I think both the instructor and the student are wrong) with the ensuing fracas prompting David to write a follow-up post where he expresses some disbelief about the fervor that seems to pervade the pro/con waterfall debate, ie. that there’s only “one true way” to deliver software: (emphasis mine)

Frankly, I’m perplexed by the belief among many technology practitioners in the ideal, the “one true process,” that will solve any problem, whether it is Waterfall, Spiral, Agile, or whatever comes next. It is a fixation I believe is unique to IT - I don’t remember seeing this type of zealotry when I worked as a manufacturing R&D engineer at Bell Helicopter. Engineers there had a much more experiment, do-what-it-takes sort of attitude that couldn’t be captured, analyzed, and then reduced to a simple prescription for project success.

With all due respect (and a wink and a nod), David’s probably not thinking of some of the holy wars that are waged in other disciplines like physics, quantum mechanics, climatological science and medicine when it comes to “one true way” zealotry.  Hell, look at the trouble Robin Warren and Barry Marshall had to overcome in gaining acceptance of their evidence that a bacterium and not spicy foods were responsible for the vast majority of gastric and peptic ulcers.  Intransigence and zealotry can be found just about anywhere.

But I digress:  I also have to disagree with David's observation that the "experiment, do-what-it-takes" attitude of the Bell R&D engineers can't be captured and turned into a prescription for better project outcomes.  In fact, this is the very essence of the models used in manufacturing (ie Toyota Production System, Lean) that agilists have adapted into a variety of methodologies from Scrum to XP to Crystal Clear to Lean.

Thus, while I agree that there isn’t an out-of-the-box “silver bullet” that will make every project successful, I am of the opinion that practices which belong to the family of empirical process controls have the highest probability for successfully delivering working software than any other process because they have significantly better visibility into project activities and an internal feedback-loop to support self-correction based on the realities of the situation at hand rather than a six-month-old plan.

Empirical_process_controls

Agile Values

David concludes his post by observing that in the final analysis it may be better to rely on human characteristics such as “brilliance, bravery, strength, and intelligence” to solve our problems than a naive and idealistic belief in a singular “right” way to build software.  I think David’s got this half right, because I think he’s not fully aware of the values that back-up agile/lean/iterative practices – and I’ll grant that the zealots probably don’t know them, either. 

For example, take the first value statement of the Agile Manifesto:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

Individuals and interactions over processes and tools.

Next, consider the Four Values that Kent Beck defines for project success under eXtremeProgramming practices:

We will be successful when we have a style that celebrates a consistent set of values that serve both human and commercial needs:  communication, simplicity, feedback and courage

Finally, consider Scrum creator Ken Schwaber’s comments on the challenges and rewards for implementing agile practices:

Of all organizations that attempt to become a world class software organization (by adopting agile practices like Scrum) only one third will make it.

The inspect and adapt practices of Scrum is where the pain comes in, because when you start doing that you discover everything in your organization that’s not working.

Agile is hard work;  it’s a long process and it is extraordinarily satisfying

These aren't the words of idealistic zealots, but reasoned pragmatists, and they demonstrate a closer affinity to the core "human" values that David seems to cherish.  While he may be dissuaded or alienated by the zealots who proclaim "one true way", the fact of the matter is that agile/lean/iterative disciplines (and that is what they are) work because they are built upon the fundamental understanding that building software is about people and how they can work best in a very complex and creative enterprise.

By Chris R. Chapman at October 16, 2007 09:28
Filed Under: agile, better practices, eXtreme Programming, ken schwaber, scrum

Indeed - I had no idea this existed and from what Jeremy Miller notes, neither did a roomful of Microsofties:  Another secret from within the Halls of the Mountain King, I suppose - and a bit of the left hand/right hand syndrome. ;)

First glance, I like what I see:

  • P&P "dudes" are actively involved in the site and development of materials, labs, articles and the like;
  • The Agile Manifesto is mentioned front-and-centre - wow, I NEVER thought I'd see that happen. 
  • Other community-driven tools are prominently featured on the front page, including CC.NET, NAnt, NUnit, NMock, RefactorPro!, etc. - Now, they do have to dedicate some space to shoehorning TFS into doing some continuous integration, which I'd never do - but it is a MSFT site;
  • There's a link to material written by Venkat Subramaniam on agile design (he's the co-author of Practices of an Agile Developer: Working in the Real World) which is a positive vote for the Pragmatic Programmer community;
  • Scrum and XP are featured prominently - and well they should be, beyond the fact that Ken Schwaber has authored a book for MSFT Press on Scrum which is in its second edition.

This is pretty cool to see - I'll have to sift through the materials before giving a final thumbs up or down, but if first looks are any indication it's a positive step in the right direction.  What I sincerely hope to find is a broader acceptance of Scrum, XP and the agile community-driven practices, and not the first step in trying to co-opt and coerce bastardized flavours of them into the MSF (yuck!) or somesuch.

Finally, I find it gratifying to see this on a personal level as it vindicates the tools and practices I (and many others) have advocated for years in the face of hostile opposition.  Memo to my former colleagues and bosses:  I hate to say "I told you so", but... :D

By Chris R. Chapman at January 05, 2006 08:25
Filed Under: agile, eXtreme Programming, lean, scrum

I was intending to do a post today on why I see the need for adoption of agile processes to guide software development by reviewing what's not working in traditional waterfall/spiral processes today.  However, a comment by a colleague to my post That Damned Construction Analogy got me inspired to take a different tack today:

Manufacturing and software development both follow certain process. These process' are different and cannot be equated, parallel between SD and traditional understanding of manufacturing process is completely wrong. However I believe that SD as a relatively young discipline can implement some of the tenets of the Lean Manufacturing

It was the mention of Lean Manufacturing that piqued my interest as agile and lean have some common heritage.  Lean is, as my astute colleague points out, a business management process that was developed for Toyota by one of their engineers, Taiichi Ohno.  It emphasizes a just-in-time delivery model that gets things to the right place at the right time, the first time, while minimizing waste and being open to change.[1]

Similarly, Agile methods have a goal of enabling software development teams to become more cross-functional, fearless and adept at delivering solid, tested software on regular intervals.  No more, no less. 

The emphasis in agile methodologies like Scrum and XP is on high cohesion and loose coupling (hey, just like best-practice OO!).  Whereas the predominant waterfall sets up a series of highly dependent, brittle and error-prone cascades from one person to the next (think: requirements to developer to QA to client), agile processes embrace change by providing a lightweight set of rules and best practices that enable a team to focus more on delivering software than adhering to an unrealistic plan and often failing to meet original expectations.  Adaptability, not predictability is the objective.

In this regard (and to stay somewhat in-theme), it's useful to consider the words of that oft-quoted master strategist, Sun Tzu:

Water shapes its course according to the nature of the ground over which it flows; the soldier works out his victory in relation to the foe whom he is facing.  Therefore, just as water retains no constant shape, so in warfare there are no constant conditions. He who can modify his tactics in relation to his opponent and thereby succeed in winning, may be called a heaven-born captain.

This is why I'm an agile advocate:  Because I believe that there is a better way to deliver software than is being done now.  And it can be found in tested and proven agile methodologies that emphasize adaptability over predictability.  This is not to say that I endorse a plan that has no objective or ability to deliver!  Quite the contrary!  I endorse agile because it is a way of counterbalancing the competing forces that usually wreak havoc on software projects:  time, budget, skill sets, feature sets and quality control.  It also frees up teams from needless busywork that does not do anything to deliver business value.

Over the next several posts, I'll be covering my two favourite methodologies, XP and Scrum, and some of the best-practices that have been influenced by (or have themselves influenced) agile processes.  I'll also be exploring some strategies for winning over waterfall stalwarts. Stay tuned, because it's going to get really interesting!

About Me

I am a Toronto-based software consultant specializing in SharePoint, .NET technologies and agile/iterative/lean software project management practices.

I am also a former Microsoft Consulting Services (MCS) Consultant with experience providing enterprise customers with subject matter expertise for planning and deploying SharePoint as well as .NET application development best practices.  I am MCAD certified (2006) and earned my Professional Scrum Master I certification in late September 2010, having previously earned my Certified Scrum Master certification in 2006. (What's the difference?)