Sunday, January 15, 2012

Code Freeze 2012 Continuous Delivery - I

I went to Code Freeze 2012 at the U of MN this week.  I've been going for years and although some years are better than others, I generally walk away with something worthwhile.  This year's topic was "Continuous Delivery", a subject I'm very interested in as, before I was moved off the desktop products I was managing, I was trying to get them up to speed with Continuous Build and Continuous Delivery.  There were almost 13 separate products without unit test that were deployed to the desktop: e.g. 64 bit windows, 32 bit windows, Windows 7, Windows XP, Windows Vista, Office 32 bit, Office 64 bit, Office 2007, Office 2010, and a variety of other configurations.  One of the more amusing days was when a customer called to complain that our product didn't work quite right under Parallels.  As if we'd tested that configuration given we weren't testing anything other than manually over a two week period.  Embarrassing.

The conference was better than usual, with presentations by Jez Humble of Thoughtworks, Michael Nygard who wrote Release It!, Jenna Pederson (can I say cute local developer and not get in trouble? She's more than cute...her brain is cute, as proven by her blog and, I could add, Jez Humble was good looking as well, and had a better accent...perhaps that protects me from developer sexism), David Hussman (he of the many "dudes"), and John Penix of Google.  It made me appreciate that no system was so legacy-ridden or large that it couldn't be refactored.

Jez Humble (not a consistent blogger) of Thoughtworks was not only informative, but incredibly funny.  He's a walking series of sound bites on legs.  One of my favorites was about Agile, "Everyone's taking orders standing up instead of sitting down."  Or, "We shouldn't have to come in and sit in a data center for the weekend.  Life shouldn't be like that."  Word.  And, after talking about a dev ops moment in which dev ops said "no thank you", he clarified, "They were operations people...they were not that polite."

Jez talked about lean software development, quoting Eric Ries, a proponent of a Minimum Viable Product.  For those of you in agile, this is the concept that you should always have working software.  And just enough.  I'm a huge proponent of this.  It's perhaps the most important aspect of agile to me.  If you have a project, then you should have short cycles where you provide something that works.  Might not be perfect.  Might not be what you want in the long run.  But it's a deliverable that if you were to put it in front of customers, it might make money.  It gives you a plateau where you can decide whether to continue at all, take a break, fire your developers and hire new ones...some location where you can make a decision and still have something in hand that is concrete.

He talked about, where they do 10 releases a day.  When Yahoo picked them up, they tried to change them, but were changed instead.  As is appropriate.

He talked about Poppendieck's Implementing Lean Software Development and the idea that you can measure your product by the amount of time it takes to change one (1) line of code (pg. 59).  Based on the products I managed, 24-48 hours minimum, even if all the Directors and VPs are available.  That's too long. The line should change in 1-2 hours, and the build/test/deploy/test should take another 2 hours.  Max.

And Jez talked about how continuous delivery is composed of three major parts:

Sounds about right to me.  If you don't include the perspiration.

No comments: