Archive for the 'practice' Category

On the Release Train at Ignite Realtime

The devs at Ignite Realtime (the open source, community site for Jive Software’s open source Real Time Communications) were brave/kind enough to share a detailed post about their intended changes to their release process.

On the Release Train at Ignite Realtime

I’m impressed they’re willing to share this with us (the global audience). Even more, I’m impressed that they’ve chosen strict, predictable release cycles (see next).

The key points to this model:

  • We put out a new release every three weeks (although each release will have gone through a nine week process total).
  • Three weeks before each development cycle is reserved for product management; three weeks after each development cycle is reserved for QA. But notice that all three processes are all happening at the same time.

We made a similar choice several years ago. A minor difference is that we chose four week cycles. The key is to chose a cycle that is relatively short (you’ll see it’s likely dramatically short compared to your prior release cycles), but long enough that you’re not burning time money in regression. This latter cost can be mitigated if you have automated regression tests (which we are building).

Product Release Cycle

A major difference we have is overlapping cycles. We also do weekly builds to QA within this four week development cycle. QA tests our code each week (in theory) as the code is delivered. The reason we have overlapping cycles is because we add two weeks regression and a third week of “quiet” before a release. The regression we do is exhaustive and time-consuming. The quiet week is simply to add schedule buffer to that release. A consequence of overlapping cycles is the need for two testing systems.

A few of points of clarification: 1) our release cycle is more complex because of the regression testing window, 2) we do monthly Production deployments, and 3) the development and QA cycles are each only four weeks long. The two weeks of regression do add additional burden to the QA team. This regression “double-duty” on the QA team is non-ideal and we are agressively pursuing automated testing.

In summary, I believe having short, predictable release cycles is a major contributor to the quality code and products we produce. This release cycle won’t work for everyone, but I do believe it should be strongly considered as a viable option when selecting a release management strategy.

Footnote: I’m curious as to why they don’t do their continuous integration off of the trunk. See this comment:

Switch the builds in our continuous integration environment, TeamCity. The new branch becomes the “stable” release of the product and trunk becomes “development”.

UPDATE: Matt Tucker of Jive Software clarified that they do CI on both the stable branch and development trunk. Thank you Matt!

Spawn of the Broken Build

spawn-of-the-broken-build.jpg The Spawn of the Broken Build… Born from a thousand inexcusable broken builds and the anguished curses of developers calling wrath down upon those willing to roll the dice with a renegade check-in. She came, she kicked some developer ass, and she was vanquished to the circular file by a chanting mob. Rescued, pressed again into service by a band of hearty, toothless rogue developers, and dealt a final mortal blow by the silver pike of management.

Oh great spawn, where art thee? The legends are strong.

(Actually, she’s in a bag in my office awaiting another rogue band. If you know of pirates of such a need, in possession of hearty constitutions and ample sense of humor, I just might be able to conjure up a similar build spawn trophy for you. Leave me a comment with ample curses about your broken build problem, or hearty chanting for a token idol, and if you’re serious we might be able to assemble one for you in our spy works.)

Keep It Simple… Sucka!

While looking for a classic quote on wordiness, I came across this page, complete with wordiness ’smells’, strategies for terseness, and a practice piece to edit. Well done, and terse by itself - an under 10 minute read. But I didn’t find the quote.
Kudos to anyone who offers a ‘writing’ quote in a comment. Bonus points for quotes specifically about terse-ness.

The ‘R’ Word

Oh I was all set for an agilisto tirade when I saw a reference to Jeff Patton’s Requirements Considered Harmful… Especially given the title - I mean really - requirements… harmful? That’s like saying apple pie is harmful, sweet kisses from a baby are harmful… your mom’s hugs are harmful! I needed to read this just to get riled up! Read more »

Lean Mean Software Machine

A colleague recently asked about Lean software development, spawning a brief but interesting discussion on the topic. I browsed the first few chapters of the Poppendieck’s latest book on lean a month ago, and it seemed compelling (chapters available free online here and here). Being back in the land of 20 minute builds makes me think again that it might be worth exploring the topic further. Because hey - I just might have time to read the book, and wouldn’t reducing build time be a great lean practice?

InfoQ did a nice review of the new book, but we’re still left to wonder how much this version differs from their previous lean book (a 2004 jolt award winner).

I laughed until I cried…

A man is flying in a hot air balloon and realizes he is lost. He reduces height and spots a man down below. He lowers the balloon more and shouts, “Excuse me, can you tell me where I am?” The man below says “Yes, your in a balloon that’s hovering over thirty feet above this field.”

“You must work in information technology.” says the balloonist. “I do,” replies the man, how did you know?” “Well,” says the balloonist “everything you have told me is technically correct, but it’s of no practical use to anyone.” The man below says “You must be a corporate manager.” “I am,” replies the balloonist, “how did you know?”

“Well,” says the man, “you don’t know where you are, or where you’re going, but you expect me to be able to help. You have the same problem you had before we met, but now it’s my fault.”

HA Ha, ha… (sigh)

From the Pretty Good Joke Book.

Sources Leaked

Two of my favorite blog aggregators (after Central Standard Tech of course) are the Thoughtworks blogs, and the ObjectMentor blogs. Thoughtworks tends to range a little more afield, but has some strong contributors in Jay Fields, Obie Fernandez, George Malamidis, Neal Ford, and of course Martin Fowler. Lot of Ruby there… The ObjectMentor blogs have less content, but are more focused.

The Lost Craftsman Articles

I’ve bemoaned the loss of Software Development magazine. Sometimes a spy in the field has to rely on anything he can get his hands on. Being that SD was free and good made this easy, and kept those bean-counters back at central intel off my back. I always read Robert Martin’s ‘Craftsman’ articles as if he was sending secret coded messages to me:

‘Field agent black - pay attention to my missives, and you’ll be amply rewarded with real software construction nuggets you can apply to stay alive in an ever-more-hostile development environment.’

Characters like the green-but-hungry Alphonse, seductive Jasmine, and the mysterious Mr. C face real-world problems, and describe their solutions in a conversational style complete with real code examples. Ahh pseudonyms, I could so relate!

Thankfully, the entire series is posted here (click the craftsman link). 49 installments in all! Act now before some bean-counter realizes the profit potential of these sold as a single volume. Forget dailylit - start working through the craftsman now.

Software Shogun Wisdom

“Your code is like a sword, but process is your discipline.

without the second, you cannot master the first.”

I want to say one word to you. Discipline.

Some google rockstar coder is getting inordinate attention for a rambling attack on Capital-A Agile, causing infoQ to opine that it might be time to ‘take agile off the resume’. Was it ever on the resume? Ok, perhaps for those needing to improve monster.com hits, but really, has there ever been another trend in software developement with a higher ratio of books sold-consultants paid-talk made TO people actually doing it? (Ok, so perhaps SOA is getting there… )

I suspect that all this talk about good-agile/bad-agile, agile=good/agile=bad misses the point. We’ll slaughter each other in some method holy war when in the end, its still about discipline, whatever Agile-agile-hybrid-homegrown-rup-waterfall process you use. Discipline is hard, and many many organizations fail to develop it.

The next time I’m interviewing a candidate, I’d rather ask ‘tell me how you apply discipline to software development. Where could you have applied more discipline?’… rather than ‘got Agile?’. But of course, XP/Scrum/Agile play better on the resume…

 

Infecting with Pair Programming

Recently at the object technology user group I had the chance to participate in an open space on ‘Test-Driven Development in a Legacy Codebase’. Trying to write tests for legacy code is like hitting your head against a brick wall, installing a door, walking through it, hitting your head on another brick wall, installing a door, walking through, over and over and over. So it was encouraging to find that my peers and I brought a host of brick wall experience, and various strategies for installing doors.

One theme of the discussion was how to disseminate TDD practice. You’ve had some success, now how best to refine it and share it - infect others, in the TDD parlance. Read more »