Author Archive

Agile CMMI

Wednesday, January 23rd, 2008

“Are we a CMMI certified company?”

I was speaking with a business associate the other day. We were learning a bit about each other’s companies and he asked me this question. I answered as well as I could, trying to balance the art of diplomacy with frankness. I confessed that we were not, and that while there are many good things about the Software Engineering Institute (SEI) and its processes, we are a rather different software company than those that benefit from their Capability Maturity Model Integration.

“CMMI prescribes an intense process, and requires a lot of documentation in order to guarantee quality, repeatability and ongoing improvements, while we are an agile shop that is focussed on delivering high quality software with a well-defined but very lightweight process,” I told him. “CMMI is geared toward keeping a symphony-orchestra-like software company on track. There are a lot of players and the organization needs to move seamlessly forward when new players are switched in. We are more like a jazz ensemble: our extraordinary achievements are accomplished by recognizing the star power of the individuals in our team, and we are oriented toward freeing and empowering them.” I went on to describe a bit about the agile methodology, and how both the SEI and agile thought leaders are attacking the problem of managing software development from different directions. We are very interested in the quality of our software, and are constantly revising our processes to that end — its just that our context and techniques are different from CMMI.

After our meeting, as is often the case after I have charged forth with an off-the-cuff speech, I reflected on whether what I had asserted was really true. Are my previously held opinions of CMMI actually valid? I did a search on agile and CMMI and a few interesting articles dropped out. There are not a lot of good hits, and those that I viewed all validated the apparent antipathy with phrases similar to: Agile and CMMI: Oil and Water? It does seem that the community concedes that Agile and CMMI appear to be at odds. However, it seems that there may have been a spark of interest in reconciling the two methodologies a couple years ago. And although there are less hits discussing the topic more recently, it appears that agile thought leaders are participating in defining the next version of CMMI, and I will certainly review version 2.0 when it appears.

I’ll just pass on one article, which is provocative and well-written:
http://www.agilemanagement.net/Articles/Papers/StretchingAgiletoFitCMMIL.html
This article justly received a healthy distribution, so you will also find it on other sites. It describes David J. Anderson’s 2005 experience in designing an agile process for Microsoft’s Solutions Framework that was CMMI Level 3 compliant. The article is remarkable in providing details on the theoretical compatibility of CMMI and agile methodologies, drawing on the thinking of W. Edwards Deming, as well as describing how the principles were put into practice for Anderson’s MSF method.

While 2Paths is not currently in a position to begin the process of becoming CMMI compliant, there is much food for thought in Anderson’s article, and I expect that some of our upcoming process improvements will benefit from our studying it.

In this case, I learned a lot from attempting to speechify on a topic I was not fully abreast of!

Solstice fireplace

Friday, December 21st, 2007

It happened again, I got tangled in the eddy of the winding years

Just a moment ago, I stood in a thicket of pale green buds, yearning up toward the waxing light
There was no horizon there, just branches hung with sparkling drips, the first spring warmth, a gentle gurgle from the melted snow

I was down on haunches to take in a bright uncoiling fern
Delicate slow motion gesture
Every frond outstretched, exquisite grace
Each formed of tiny fractal copies of itself, and each alive

With the subterranean throb of waking life,
I slowly breathed the rising sun-warmed funk of last years mulch
Lost until I reeled and swooned toward the the tiny spiral there

With a microscopic crackle and electric hum
The frond unfurled with a creeping pace
I saw it grow!

—<0>—

Jarred awake, I stood and marked the passing time
Set off at once with determined steps toward the falling sun
Now the world was drowsy hot
Tawny golden wheat shimmered in the heated air, stirred with undulating ripples to the distant sky
Bees buzzed in the dun parched hollow

—<0>—

My footsteps plodded down the shadowed forest path
Cracked sudden on a thin-iced puddle
Jagged slivers traced a star out to the lace-edged frost
Concentric angles radiating from minute points

Like the veins in maple leaves above
Touched with flame, ablaze against a lacquered sky
That birch: a tumbled chandelier, leaves hued like candle flames

—<0>—

The sky bled fast to clotted indigo
Stars wheeled unchecked their arcing course
My crunching footsteps ringed with lilac in the snow
Beneath stark criss-crossed branches to my home, familiar cul de sac

Inside is gloom, it seems to be the end, so cold and dark and still
But at the hearth a ghost of warmth remains

Digging into ashes, there’s a sullen ember still

Blow gentle breath, the glow revives
With straw and twigs and crisp old leaves,
A ruddy light infects the stove, ignites

Soon leaping flames reveal the nestling room
Shadows stir and wave
The tinge of warmth invokes the memory of sun and light and growth

The fire’s heart: a den of coals ripples with its in-drawn breath
and flings it up as flame
Gives me hope and strength to abide the lull,
To ride the coiling year
Till Spring curves round again

The many “eyes” in “team”

Monday, November 26th, 2007

In every team, there is a dynamic energy that brings it together. We recognize that the individuals in our team are not only critical to our success, but are also motivated by it: the key is simply to enable each of us to most effectively play our part.

As a small shop, we must all play different roles at different times. Our effectiveness is based on adapting to the shifting demands on our team throughout the project lifecycle. Each of our developers is both a specialist and a generalist. Besides constantly enhancing our general abilities, we actively cultivate complementary individual specialization, enhancing our ability to deliver technically distinguished software.

While shifting roles and specialization help us remain interested and committed, effective leadership is required to ensure everyone is playing the right role at the right time. We are oriented to shift roles as needed, and this includes the leadership role. While some team members possess natural leadership skills, others have particular knowledge and insights which are critical at certain points in a project. Smoothly transitioning leadership — sometimes on a daily basis — is a sign that our team is adapting well to the shifting needs of the project.

Such a dynamic culture is only possible with timely open communication. This includes communication between our team and the client, as well as within our team. We need to quickly share information as it becomes available. At a minimum, we have internal daily project meetings, and must be ready to remove impediments as they arise. We require our client to be available throughout the project to provide clarification and direction as needed.

Its not easy to establish and maintain such a dynamic team environment, but it is highly effective. We are able to deliver high quality software more effectively than either a solo developer or a large organization. This is very rewarding for all of us, which galvanizes our commitment to pursue and refine our approach.

Autumnal Equinox

Friday, September 21st, 2007

It seems that just a breath ago you hung, suspended sideways on the playground swing, in weightless sun, to peer across the bar to distant shady green.

And now, blood-draining rush, too fast, too soon, the skin drags down your face in hurtle past the ground toward that shadowed gloom.

This moment marks the midpoint, just, between the light and dark. The rush bequiles that end is nigh, but pull on through, and thrust: feel the arc curve through the dusk and back again, toward the light once more.

Revisiting to get it right

Thursday, September 13th, 2007

When you’re on the stage and the curtain rises, it is easy to appreciate the value of getting it right the first time. If you’re well-prepared and on your game, you can be a star, if not, you’re a soon-forgotten nobody.

Early software development embraced the “get it right the first time” approach, following general engineering practices, but for many reasons, this approach did not always proven to be effective. There are obvious benefits to building a road right the first time, and extensive preparation is rewarded. The software development landscape is neither so well-defined nor as stable as the physical landscape upon which highways are built. Also, the cost of revising a road after it is built is likely higher than for rewriting code.

Nevertheless, it remains an intuitively attractive approach to attempt to get a job right the first time. “Measure twice, cut once” remains a popular expression. It requires a mind shift to feel comfortable embarking on a project knowing it will need to be revised, especially when there are pressing budget and timeline issues.

It helps to consider contexts in which an exploratory, iterative approach is favoured. Agile software development has something in common with the other side of the stage: appreciating the performing arts. When presented with a new play or piece of music, it is a vast unknown to the audience, just as the business problem is an unknown to the software development team. Of course, in both cases, the audience and development team will be drawing on whatever knowledge they have of the work in front of them, whether previous works by the same author, or what is known of the business or similar businesses.

On first listening, the audience can only follow the plot — every new development is seen as arising from what precedes it. The audience should not try to comprehend it all. The first time, the audience should just go along for the ride, with the goal of getting a general idea of the work. On the next experience, the audience will know the outline of the story, and can begin to appreciate some of the nuances: how are they being manipulated to expect one thing, when another thing is really happening? how are themes and resonances being developed below the surface? Shakespeare and Beethoven are not fully comprehended after many, many listens, and as author Jorge Luis Borges said, “Only rereading counts”.

With software development, we acknowledge that the business problem is difficult to understand and constantly shifting, impossible to grasp on the first pass. By the time one spends enough preliminary effort to get it right, the business has changed and the solution is wrong after all. We have found that the most effective approach, in many cases, is to get a quick overview of the problem, then lay out a simplified solution. By going through this exercise, knowing it will not be completely right, both the company and the developers gain insight from the exercise, and are in an excellent position to build on their experience.

Having functional software to explore, the company will have much incisive feedback regarding how that software does not serve their needs, as well as how it does. Through subsequent iterations, client input from direct experience is quickly applied back to the software by 2Paths. The same issues will be revisited, and based on the evolving software, the solutions gain depth and sureness. We efficiently build up a store of experience from not getting it right, in order to confidently converge on an effective solution for the business when the curtain finally does go up.

2Paths 1,2 at Gibsons regatta

Monday, July 30th, 2007

It was a busy week for 2Paths adventurers. Leaving directly from the team-building whitewater rafting trip on Friday, several 2Pathians sailed to the little town of Gibsons to take part in a regatta that is part of the towns annual festivities. This meant a 1am arrival for the more party hearty of the two participating J24s.

Although the event was more casual than the strict one design racing the boats normally engage in, there was no shortage of spirited jostling between the two. Several lead changes and close crossings charged the 2Paths contingent, separating them from the rest of the fleet. After the 3 races, the software sailors earned first and second in their division.

While the more experienced team prevailed, the newcomers showed incredible speed and impressive skill. With a bit more time in the local waters Gord, Chico and crew will get their vindication over Nigel, Trevor and theirs.

The fun didn’t end with finishing gun. While one team went to the beach to swim in the clear cool water, the other heated it up with the nightlife. Rumours are still trickling in about busted moves at the street dance, prodigous shots at Grandma’s pub, and an midnight sortie in an tipsy borrowed skiff.

A solid foundation for Agile

Wednesday, July 11th, 2007

When experiencing an agile event, we naturally focus on nimble changes of direction, the grace and efficiency of execution, that make our own lives seem heavy and inert in comparison. This is true whether seeing an athlete in motion or participating in an Agile software development project. However, there is a necessary counterpart to the seemingly light and effortless movement: a solid foundation that frames and enables the agility.

As your favourite hockey player rockets down the ice, note the sprays of ice whenever he carves around an opponent. Those manoeuvers are only possible with a smooth, solid sheet and a honed skate. When the gymnast launches freely spinning into space, she knows exactly where the balance beam will be upon descent.

So it is with software development. We can only provide efficient and responsive adjustments to our applications because we have a solid foundation to frame our efforts. First, and most critical, is a basis of trust with our clients. In order to respond efficiently to their emerging and evolving needs, we rely on minimal documentation, loosely-defined requirements, and an initially generalized view of what the end product will be. This is natural enough — when beginning a new project, it is always uncertain exactly which details will best solve the business problem that brought the client to us, but it requires a lot of trust to begin the exploration, especially in a business world rife with “buyer beware”. Our team must work hard to establish the necessary foundation of trust, showing that client and developer are part of the same team, and both parties will only benefit from solutions that effectively and efficiently meet our clients’ business needs.

As development begins, we anticipate changes of direction by implementing test-driven development. With a comprehensive set of tests to ensure the software behaves in a known manner, we can confidently make significant changes as new business needs arise, knowing that a solid test framework will uncover and pinpoint any side effects of the added changes.

We undertake a series of short cycles, or iterations, in our development process. At the end of each iteration, we deliver a functional, though incomplete, software application. This allows our clients to experience our software early and often, which yields critical discovery and feedback which guides the development process. We develop on a fixed schedule, which establishes an effective rhythm to our development, which helps our clients anticipate and accommodate their review of the application in progress.

In order to deliver on a fixed schedule, the set of features slated for inclusion in each iteration cannot change mid-iteration, and our developers need the freedom to make some adjustments to those features to best deliver as time allows. Within the solid foundation of the iteration schedule, our developers gain the freedom to deliver rapidly and effectively, and at the start of each iteration, the client has the freedom to respond to the delivered software with very informed feedback from their hands-on experience. Each iteration can then launch freely into the direction that best meets the clients needs, with the agility to capture the optimum solution for their business.

We are proud of our ability to respond nimbly, mid-project, to the changing needs of our clients. However, like the lithe-limbed athlete, our movements are not as effortless as they appear — there is much work required to provide that solid foundation from which to safely change directions.

And the seasons they go round and round

Thursday, June 21st, 2007

“And the seasons they go round and round”

Solstice again
The spreading flood of light once more crests
About to fold back on itself
Narrowing to the tiny pool of damp and bitter Winter

But though the light has spent its gasp
The heat will spread a little longer
And those of us with lightness in our hearts
Can frolic for a season in this day’s afterglow

“And the painted ponies go round and round”

I’ve been listening to Joni Mitchell’s tribute album. There are some interesting performances, especially Bjork’s, which approaches the Boho Dance from such a different direction that I now appreciate a new dimension to the lyrics. With the original, Joni suggests a resignation toward the subject, that character who cannot step outside the boho dance, and the focus for me was the general contrast between the consumer/voyeur and the creator. Bjork makes it so much more personal — she expresses a passionate dislike for that constrained character, and by extension, the whole art-shilling dance.

Jame’s Taylor’s song is also touching. He’s the only one who seems free to take his tribute, The River, and simply toss it off in his own voice as if it were an old standard. Thus it is refreshingly free of the agonized artifice and self-conscious striving of some of the others.

The album is still in heavy rotation in my house, primarily because it serves as an echo of Joni and her original versions, which are virtually unchallenged in the potency of their impression. The tribute is an afterglow of Joni Mitchell in her prime.

“We’re captive on the carousel of time”

Joni came into my life just as I first ventured into life itself. Court and Spark carried me through my first love. I was a naive puppy, and she sang to me of richer possibilities — sensuality augmented with intelligence and sophistication, yet still purely naked in her vulnerability.

As a musician, I was just beginning to perform in public. Her startling originality, wandering free of the conventions of functional harmony, her phrasing that honoured her words and meaning over the stricture of the four square beat: all these impressed me deeply, as I sought to find comfort under the gaze of my little audience. To this day, I seek out music that follows its own integrity over that of the current convention.

“We can’t return, we can only look behind from where we came”

And even here, building software day after day, year after year, an echo of idealist youth seeps through. At 2Paths, I really value the team, a diverse collection of brilliant and eccentric misfits, who contribute in their various idiosyncratic ways to develop high quality software. Its the people that make this more than just a boho dance.

“And go round and round and round in the circle game.”

Learning curve

Wednesday, May 30th, 2007

Many people would prefer to bask in comfort as an established expert in their field, with the experience and confidence to prevail in their domain, rather than struggle as a novice in unfamiliar territory. I actually prefer the bracing challenges of being steep on the learning curve.

Not being handy to the open ocean, I don’t really have the ready opportunity to become a very skilled surfer. There is sheltered water nearby, and I spend a lot of time on and around the Straight of Georgia in a sailboat, and have gained a degree of expertise in that domain. However, there is no substitute for the untempered swell of the west coast, so I take a surf trip a couple times a year, to keep in touch with the Pacific’s primal forces.

In the course of a recent three day trip, I was subjected the usual large doses of humility, but at the same time, there were brief flashes of exhilaration, and the genuine satisfaction of achievement - from breaking one’s own barriers - that are unobtainable once one has reached their peak. Sailing is a lot of fun, and I’m certainly still learning, but I get a lot of pleasure from dramatically raising my surfing skills in a single weekend.

The same principle applies at work. The java world is changing rapidly, and there is much work to be done to keep up with the technology. Beyond that, we are maturing as a company, constantly improving our processes and methodology, and we all enjoy the satisfaction of raising our own bar. We are actively using Java 5 as our language of choice, AJAX in our UI, and JPA for database integration needs. In the last couple of months, we’ve revamped our build automation infrastructure with the help of Subversion, Continuum, and Selenium. And keeping up with currently in-vogue agile methodologies, two of our team recently certified as Scrum masters.

With each improvement, we not only enhance our ability to deliver agile, high quality, rapidly developed custom applications, we also reap the tremendous satisfaction of continuous learning and personal achievement.

Sailing, half-Pathed

Thursday, April 19th, 2007

Not an official 2Paths event, but there was plenty of Pathian presence onboard the J24 “Now” at the Royal Vancouver Yacht Club regatta on the weekend. Gord and Trevor are genuine members of the tribe. Nigel, 2Paths espresso guru, skippered his first regatta in the boat. We could give Nigel .5 rating for his coffee contribution, and let’s give him a nominal .25 rating for being offspring of a genuine 2Pather. Then there’s Nicki, who, as girlfriend of Nigel, could rate a .125 of a 2Pather, while Rebecca, as a wife of, should rate no less than a .25, yielding an easy half-Path score for participation.

Nicki, Rebecca, Gord, Nigel
Nicki, Rebecca, Gord and Nigel on Sunday

There’s no time for photo opportunities during racing, but we had time to relax and share stories between races.

Gord and Nigel
Gord relieves Nigel at the helm
Gord
Gord on Saturday

To complete the team photos, here’s the photographers finger, showing the sacrifices made on the otherwise wonderful weekend.

Team sacrifice
Trevor’s sacrifice