October 8, 2009

More Expensive and Complicated Equals Better: Carseats and Software

Filed under: .Net, Agile, Java, Python, Scrum, Software Development — Barry Hawkins @ 10:47 am

So I finally got around to checking out the TED site; I’ve quickly become a fan. One of the first talks I watched was Steven Levitt’s child carseats talk. Both the talk and the feedback comments on the TED site reminded me of things I see in software development. Here’s the video if you haven’t seen it.

Steven Levitt shows in his talk how 30 years of data on car crash fatalities imply that carseats do not outperform regular seatbelts for children ages 2 and up. Anyone who has a child or grandchildren will probably bristle at hearing that; as the father of a pre-schooler, it certainly gave me pause. We spent no small amount of time and decent chunk of money in selecting carseats for our child, thinking we had done our best to ensure our child’s safety. For that matter, it would be illegal for us not to have done so. To see a decent-sized data sample suggesting my child would be better off in a seatbelt at her age is rather unsettling.

By the end of the talk, I took away these observations:

  • This great swath of an initiative was started by a very small yet vocal group of proponents whose assertions received little scrutiny.
  • A solution tailored to the specific constraints of a portion of the audience has been put forth as the de facto solution for the entire audience.
  • There is an ongoing assumption that the more complicated and costly solution must be superior to the simpler, existing solution.
  • Cursory evaluation of a data set without rigorous attention to mitigating factors can lead to wildly inaccurate conclusions.
  • The acceptability of a given solution is often tested against a narrow band of the overall criteria, and the solution is often optimized to pass that test.
  • The likelihood that people will continue to choose the more expensive and complicated solution despite any data is high.

So, software professionals, does any of that sound familiar? It reminds me of numerous initiatives over the years that have led us inexorably to the software productivity morass we have slogged through for years now. I suppose the most heinous case study in my own experience would be J2EE and the insistence that it was the solution that any reasonable business application would choose for a platform. (Before you .Net folks jump on that one, DCOM and later the .Net enterprise stack was much the same.) And who hasn’t read a benchmark or white paper with seemingly incontrovertible data depicted in highly-polished graphics insisting that Product Y is the one solution to address them all?

I noticed that there were comments below the video on its page at the TED site, largely because the negative verbiage of the topmost comment jumped out at me. I took the time to read through them all (there were 36 at the time of this writing), and to my amusement, I saw parallels between them and how people react to questioning and examining our existing practices and means of developing software. See if any of these strike a chord:

  • The idea that what we’re doing might be wrong unsettles some people, and their response is often ferocious and irrational defense of the status quo.
  • Those who have a financial stake in the current mode of operation are less likely to be open to scrutinizing it.
  • There will be some people whose primary objection to the scrutiny is that they didn’t think of doing it first; these people will sometimes attack the person questioning things on the grounds that it’s all a selfish, attention-mongering endeavor.
  • There are some people who will also be open to examining why and how we’re doing things; whether they conclude the same thing or not, they are a welcome presence among the larger mass of those who ardently refuse to entertain the possibility of a need to change.

In recent years I’ve been greatly encouraged by the willingness of companies to question whether or not the heavyweight frameworks and technology stacks are what they should be using. Helping companies slough off high-ceremony processes in favor of right-sized process that focuses on delivering the right software in a timely manner has been some of the more rewarding work I’ve done the past several years. I think we have an encouraging number of people in the industry who are challenging the “more expensive and complicated always equals better” mantra.

For the brave individuals willing to put these questions to the community at large, I hope you find some comfort in knowing that the resistance and rejection you will encounter is a thing to be expected; you are not alone in that respect. Here’s hoping we continue to be open to self-examination, no matter what emotional responses it might provoke or what fear of the future it may stir up within us.

October 2, 2009

Just When a Wizard Would Have Been Most Useful: Coaching versus Contracting

Filed under: Agile, Scrum, Software Development — Barry Hawkins @ 4:12 pm

…Then they stopped, and Thorin muttered something about supper, “and where shall we get a dry patch to sleep on?”

Not until then did they notice Gandalf was missing. So far he had come all the way with them, never saying if he was in the adventure or merely keeping them company for a while. He had eaten most, talked most, and laughed most. But now he simply was not there at all!

“Just when a wizard would have been most useful, too,” groaned Dori and Nori (who shared the hobbit’s views about regular meals, plenty and often).

- J.R.R. Tokien, The Hobbit

I am very fond of the works of J.R.R. Tolkien; it would not surprise me to find that many of you recognize these words from the second chapter of The Hobbit titled “Roast Mutton”. It occurred to me recently that there are parallels between Gandalf’s role in The Hobbit and that of an Agile coach. Now, before my fellow Tolkien enthusiasts leap on their keyboards, bear with me on this. Know that I am not saying an Agile coach is on par with a wizard (OK, with one of the Istari sent by the Valar, but let’s table that so as not to scare off the normal folk, alright?); that should be enough to calm you down.

In the excerpt from The Hobbit at the top of the page, Bilbo and the dwarves have run into their first predicament. Note that it’s not a particularly difficult situation; they just need to find shelter and partake of some food. Fire would be nice, too, if it could be managed. (Mind you, it’s the first day of their journey; they set off mere hours ago fully provisioned and riding on ponies.)

It isn’t very long before the fledgling group finds itself not only without shelter and food, but in the hands of three rather nasty trolls who are deciding how best to eat the entire group. Gandalf returns once things have gotten out of control, and with some subtle adjustments to the situation, the crisis is averted.

Could Gandalf have come back sooner and spared them this entire experience? Perhaps, but in their struggle a few key things happened. First, the group had to work out how to assess tasks at hand and appropriately delegate. To their credit, that effort was partially successful. The most skilled firestarters were assigned to that task, one of the keen-eyed dwarves was assigned to be the lookout. Second, they gathered some field experience that led to the establishment of improved practices, i.e. don’t leave the ponies laden with packs when you make camp, particularly if it’s all your food. (They lost most of their food that night when the pony carrying it bolted and ran straight into a nearby river later that night.)

Third, Bilbo Baggins was called upon to perform his first task as burglar, albeit a fool’s errand that landed them in the troll predicament. While Bilbo was wildly under-equipped for his job, he managed to work through it. That experience began a developmental journey that would prepare him for the great things that would be expected of him later on.

This was not Gandalf’s first adventure, nor was it the first group of people he needed to equip and challenge in order to develop them to a point that they could accomplish their goal. At this point, he’s been in Middle-Earth just shy of 2,000 years. He would have been more than capable of walking them through their entire journey, but to what end?

Agile coaching is a discipline that aims to help teams develop their own use of methodologies like Scrum and cross-methodology practices like testing, user stories, etc. This means equipping teams with just enough information to strike out on their own for a bit, then letting them run with it rather than dazzle them with one’s own mastery so as to appear like the indispensable demigod. Until people struggle with the terse maxims of Agile Software Development, they cannot internalize them. And when the wizard is always around, why bother struggling?

One of my greatest frustrations as an Agile coach is how few companies are willing to take a coaching approach with their Agile adoption. They want you to come in and be the demigod as a full-time contractor. Sure, there are fiscal, political, and seemingly practical reasons that they will cite; I chalk most of them up to being excuses for a lack of willingness to embrace what it would take to face the hard task of nurturing what you have. It’s seemingly easier to just throw more money at more bodies and hope that somehow things will all work out, and surely if you can stumble upon some superstar to wrangle the mess, you’ll eventually be able to browbeat them into becoming a full-time employee.

Don’t get me wrong; in some ways, I benefit from this dysfunction. From a selfish business standpoint, having a single full-time client is certainly easier than juggling multiple concurrent clients and their schedules. As far as actually accomplishing the aim of my business, however, I think it hinders the mission.

One of my aims in working with companies is to be a coach despite being brought in as a contractor. It’s certainly possible, though it is more challenging. There’s not that natural separation of the coach from the team that forces them to take up the mantle on their own. Few things in my work are more rewarding than having a developer come to me and say, “I wasn’t really sure this Agile stuff could work, but now, after going through all this, I wouldn’t want to go back to the old way of doing things.”

Much later in the journey of the hobbit and his dwarf companions, Bilbo is again called upon for a challenging task. His response makes me think Gandalf’s approach has worked:

“…Perhaps I have begun to trust my luck more than I used to in the old days” – he meant last spring before he left his own house, but it seemed centuries ago – “but anyway I think I will go and have a peep at once and get it over. Now who is coming with me?”

- J.R.R. Tokien, The Hobbit

Here’s hoping more people will be willing to embrace the challenging, messy, and altogether beneficial task of equipping teams and allowing them to struggle when necessary, even if it means the occasional scuffle with trolls.

January 16, 2008

Mike Cohn on transitioning to Agile Software Development at Agile Atlanta

Filed under: Agile, Scrum, Software Development — Barry Hawkins @ 8:47 am

I found out yesterday that Mike Cohn was going to be speaking at Agile Atlanta. Given that our AJUG meeting had fallen through, I pulled some schedule gymnastics in order to make the meeting. Don’t pass up a chance to hear Mike. Succeeding With Agile: A Guide To Transitioning And Improving will be his new book that fleshes out the principles of the talk he gave tonight; I scribbled down some notes below.

Agile Transition Planning

  • Have goals in a transition backlog, to help you figure out how you’re doing on those goals and what you can do to assist those goals.
  • Set quarterly transition goals,having those be like releases for software
  • Have monthly iterations where you talk about what you can do
  • Have weekly meetings talking about how you can do it
  • Establish a “guiding coalition” that includes a sponsor and area managers who can help ensure success

Establish transition teams, they’re pursuing the tactical elements of some of your goals; some will be organic, some will have been formally established. Organic tends to be preferred; these will have the internal motivation necessary to get the most out of Agile.

Transition Team Members

Who to include

  • Be aware of power distribution
  • Know where expertise and credibility lies; passion alone does not a team member make
  • Know who benefits and who loses from this
  • Know what groups might have a tendency to resist this and/or may align to blockade this as an allied force; strategic inclusion can defuse this

Who to exclude

  • Avoid “snipers”
  • Avoid big egos
  • Avoid snakes who poison relationships
  • Avoid conscripts

Leading an Agile Transition

Transition team and other formal leaders must lead the transition, but not in the way they may have in the past.

Prerequisites of Self-Organization

  • Container – boundaries along which people align
  • Differences – enough difference to provide a vibrance
  • Transforming Exchanges – interaction meaningful enough to provide value to participants

NOTE: I have had to tweak this via changes to agile team organization

Patterns of Agile Adoption

  • Technical Practices First – high impact, does not scale well, partial adoption is risky
  • Iterative First – not as controversial, but teams can get very complacent, scales relatively well
  • Requirements First – if you’re there, OK, but meh; wait for the right project?
  • Start Small – has been de facto, but less so these days, cheaper, good for those on the fence as to whether to commit, it’s slow
  • All In – it’s over quickly, no organizational dissonance of having two systems at once, risky, costly, usually requires a reorganization
  • Stealth Mode – no additional pressure, no one knows until you tell, no one can say no, no organizational support
  • Public Display of Agility – over the top, can reduce resistance, obvious need for organizational support
  • Impending Doom – can shock team out of complacency, admitting pending disaster can free team to experiment, can help overcome resistance, transition can be quick, not always an option, big change in time of trouble can increase stress

Patterns of Agile Expansion

  • Split and Seed – split team up, add in newcomers
  • Grow and Split – get team big then split
  • Internal Coaching – develop team, give team members additional responsibilities to coach other teams

Addressing Resistance

  • Sell the problem, not the solution
  • Understand the types of resistance you are encountering and address them in appropriate ways

January 8, 2008

CodeMash 2.0.0.8; why I choose to attend

Filed under: .Net, Agile, Free/Open Source Software, Java, Python, Scrum, Software Development — Barry Hawkins @ 11:33 am

So tomorrow I fly out to Cleveland for the 1-hour ride to Sandusky, Ohio for CodeMash. The first CodeMash ever took place last year, and I was very glad to have been a part of it. I had intended to submit proposed talks for this year, but alas my schedule was already a bit full and I honestly lacked the energy to put together the topics I would have wanted to present. I cannot wait to be there, several of my colleagues from Bruce Eckel’s OpenSpace conferences will be attending.

One benefit of being an independent consultant is that I am able to choose the conferences I attend without having to justify it to some management or department head. Most of the things I choose to attend would probably not be approved by an organization that insists on being able to directly relate the entirety of a conference’s content of focus to the attendee’s daily tasks. Still, there are numerous conferences throughout the year that appeal to me, and I can only afford to be unbillable for a certain number of weeks out of the year. CodeMash makes my shortlist, and here are a few reasons:

  • CodeMash is a multi-language conference. There’s a breadth of exposure and a cross-pollenation of ideas that are simply not available at single-language events.
  • The attendees drawn to such events are typically more open-minded about software development approaches and the fact that there is no “one way” or “one language” for anything.
  • The speakers drawn to this type of conference tend to have a perspective that is broader and more in touch with software development realities than insisting on foisting some delusional monocultural vision for their language/platform/tool of choice.
  • There’s a strong OpenSpace element to CodeMash, and I have experienced first-hand how amazing and energizing it can be.

So, that is why I am going to CodeMash. Looking forward to sharing my experience with my readers, all three of them.

January 19, 2007

CodeMash – a rich, inspiring experience; more to come

Filed under: .Net, Agile, Java, Python, Scrum, Software Development — Barry Hawkins @ 4:31 pm

So, for the latter half of this week I have been at CodeMash in Sandusky, Ohio. It has been one of the best conferences with traditional-style presentations that I have attended for some time. We have had some remarkable Open Space sessions interspersed throughout the regular agenda. I think most of us are saving up our posts for afterward; it’s been a pretty non-stop pace. The last group I was talking with yesterday wrapped up after 1:00 AM, if that gives you any idea. This has had that same cross-platform, cross-disciplinary feel we had last March at Bruce Eckel’s Programming The New Web. Lots and lots of great stuff. I only hope I can capture a good bit of it and share.

Powered by WordPress