Tuesday, April 24, 2007

Another discovery at ACCU conference "Bicycle repair workshop"

Something else I discovered at the ACCU conference: Bicycle Repair Workshop.  Should I name to originator?  Or should I let her live in quite anonymity?  Perhaps I should actually seek permission to talk about this here, but then was it not Picasso who said “great artists steal.”  (No I did ask permission.)


First the name: its a straight take from Monty Python.


What it is, is a forum where software developers at the company can gather and talk about the problems they are currently encountering.  The originator envisaged a forum for people to talk about process issues, and specifically Agile practices but its free form enough to let people take in what they want.


The workshop takes up an hour or so on a regular basis, I can’t recall it it is weekly, bi-weekly.  There is a bit of fun (cakes supplied) and people turn up only if they have something to contribute – so a self selecting group.


Like the book groups and Tech-Talks that I’ve created in the past the forum gives people the opportunity to talk about the issues they face.  By exposing, explaining and naming the problem/issue/challenge/opportunity it becomes more manageable.  By explaining it people are forced to make some sense of it to themselves and then to other people.  And when other people see it they can help.


In one of his books Gerry Weinberg (Secrets of Consulting I think) compared problems in companies to moss.  In the dark, moss grows and becomes bigger.  Exposed to light moss dies.  Problems are the same, when you hide them they become worse, expose them and it becomes easier to deal with.


I see this happening when people gather in a pub or coffee bar, or stand around the water cooler and moan about things in their work place.  They know what is wrong but they feel helpless to act.  So bar and water cooler conversations don’t result in much action.  Often these problems don’t get talked about in official forums either:



  • because these problems shouldn’t exist, e.g. the according to the official process manual these things shouldn’t happen

  • because office politics gets in the way, e.g. everyone knows that X needs to change but nobody feels they can say it

  • because somethings we can’t talk about, e.g. Fred under performs and needs to be let go

  • because solving the problem needs resources and we all know the company won’t spend money

  • because we are embarrassed to admit to our own problems

The advantage of the semi-official forum, like Bicycle Repair Workshops and book groups is that people are freed of these constrains and can talk more freely.  For managers this posses a problem: too much support and involvement with the forum will make it official and kill it, too little support and it will turn into another moaning shop and nothing will happen.


By creating a forum people are allowed to talk about a problem and expose it to the light.  The advantage of the Bicycle Repair Workshop is that it is directly asking for and discussing these issues.  I occasionally facilitated a Tech Talk into such a forum, and the books we studied in book group lead to discussions about problems bit I never tackled the issues head on, on a regular basis.


Of course it mights be possible to have too many forums.  All of these activities take time and commitment.  A company running bicycle repair workshops, book groups, Tech Talks and what ever else may over tax people.


These three types of forum share another thing in common.  They can be created through bottom-up action.  You don’t need to be a manager to create them, you can just do it.


On the other hand, if you are a manager then then can create other types of forums. I’m working with a company now to help them revise their development process and become more Agile.  One of these things I’m doing it running twice monthly improvement meetings, kind of reverse-retrospectives.  These are more official so have a different flavour.


In all these cases the real problem is turning information and learning into action.

Monday, April 23, 2007

Other blogs on ACCU conference

More stories from the ACCU conference at:



I am sure there are other ACCU bloggers so if anyone knows them please let me know.


 


 

Sunday, April 22, 2007

Failures in Agile process?

One of the questions that was posed at ACCU conference was “What are the downsides of Agile development?” – and “What does Agile failure look like?”


I have tried to answer the first question before but failed myself.  One downside is that the Product Owner role – typically filled by a Business Analyst, Product Manager, Customer or other proxy-customer – is given an immense work load.  This is a subject James Noble has done some work on.


What happens is that Product Owners have to keep doing their original job and service the needs of an Agile team.  As the Agile team becomes more productive they ask more and more of the owner.  Consequently the owner gets maxed out and themselves becomes unproductive.


However when I thought about this I don’t think the failure is a failure of Agile, I think it is a failure of the business.  Put it this way: for years “the business” has been complaining that software teams do not deliver what they want.  Now along comes Agile and says “we will deliver exactly what you want” but “you need to tell us exactly what you want.” 


It is no longer enough to set half a dozen developers working on a problem and expect them to come up with the right thing.  If customers want what they ask for then they need to tell the developers exactly what they want in detail.


The second question, “What does Agile failure look like?” is hard to answer because we don’t have many case studies of failed projects.  This isn’t just true of Agile projects, it is true of many IT projects.  Companies don’t like to talk about failure. 


Still I can see several failure modes for Agile:



  • Teams fall back to the old way of doing things: I’ve only heard about this not seen it myself.  Typically it occurs when you bring in a lot of consultants to make your team and process Agile.  Things work when the consultants are there but when they leave teams fall back to the old way of doing things.  Unit test break and aren’t fixed, planning meeting are missed, quality slips and deadlines are missed.  The presence of consultants gives the team a backbone but knowledge is not really transfered to the existing team.

  • Failure to get management buy in: Agile is often introduced at the bottom of the hierarchy, by developers at the code face.  Eventually there comes a point when managers need to support it or stop it.  This doesn’t happen and the development process is left in a random state.

  • Failure to get developer buy in: this occurs when management buy into Agile but developers don’t.  They don’t want to write tests, do code reviews or pair, believe in technology over visual planning, etc.  Again the process is left in a random state.  I expect to hear more about these types of failure in future.

The common theme here is not that Agile fails, after all IT projects and processes fail all the time so there is nothing new or special here.  Failure of an Agile project looks a lot like the failure of a Waterfall or RUP project.


Rather Agile fails when you fail to see the benefits of the new approach.  So when you do a little bit but not enough to improve quality, improve delivery dates, and make things predictable.


Both questions are good questions and deserve more attention.

Wednesday, April 18, 2007

Waste from the ACCU conference (Testing)

As I mentioned last time, I came back from the ACCU conference with a bunch of notes and a lot of thoughts.  Recording them in this blog seems like a good way of remembering and sharing these thoughts.


Last time I referred to the Great TDD debate.  At the conference Mary Poppendieck reminded us of the key principle behind TDD and other forms of unit (especially automated) testing when she quoted from one of the original Toyota sources:



  • Testing to find defects is waste: the defects should not be there in the first place so any attempt to find them is waste.

  • Testing to prevent defects is essential: defects slip in, we should catch them as soon as possible so create systems with tests that prevent defects.

Hopefully it should be obvious were TDD fits it: TDD is there to prevent defects and reduce waste.  However, testing later in the cycle, e.g. system test, is waste and although it may be necessary right now we want to get away from faults, testing and waste.


On the face of it this is bad news for software testers.  If we start testing to prevent waste rather than find waste then they are out of a job.  Well I have three reassuring thoughts for software testers, they will not be unemployed anytime soon because:



  • Few organizations can actually implement this principle, some will always need testers.

  • We have a lot of code out there where nobody prevented the defeats and therefore needs testing.

  • Testing itself is an activity that can add value to products –  as Oracle considered last year.

Also, most of the software test managers I have ever worked with have been keen to point out that they would rather conduct Quality Assurance than Test.  Too often these activities are lumped together but when you think about it they are very different.


So, in the short term testers have plenty of work, in the long term their future is in quality assurance – a more value add activity.


Now at this point a lot of people tell me I’m an idealist.  After all, everyone knows software is buggy, has always been buggy, and always will be buggy.  I remember being taught at University how every piece of software contained an infinite number of bugs.


I asked Mary Poppendieck about this, her answer was basically: you get what you expect, if you expect to get bugs then you will.


Well, maybe I am an idealist.  But what is wrong with wanting software without bugs?  What is wrong with setting my sights higher?

Sunday, April 15, 2007

Back from the 2007 ACCU conference

I got back yesterday from the 2007 ACCU Conference.  Once again this was a great conference.  Lots of good stuff on Agile and Lean (Mary and Tom Poppendieck delivered a keynote), software management, programming in general, Java, C# and C++. 


I mainly kept myself to the management and agile sessions.  Also I was involved with a lot of ACCU business type stuff occurring around the conference.  It is about the time when all the key players in the ACCU are in the same place and a lot of association business gets done.  As well as delivering my own session and taking the stage with Mark Shuttleworth and Mark Poppendieck I was in meetings about the ACCU journals, growing membership, conference organising and a host of discussions about the association.


Over the next few blog entries I’ll try and debrief myself and highlight the things I feel I learnt and need to remember.  My comments from this time last year still stand, the best speakers are no necessarily the ones you expect them to be.  (Apologies for that blog entry, its one of the ones with formatting problems.)


Right now here are a few bullet points.


I met three people who are separately working on projects that compile the same code base to Java and C#.  These people have the code in one language and have some pre-processor step which makes the syntactic modifications so it can compile for the other.  Is this a trend?  Will we one day have Java# ?


Ed Sykes and Jan-Klass Kollhof did a really good session.  They set out to produce a distributed algorithm using Python and JavaScript in web browsers.  They just about succeeded but actually their session was far more interesting for what it said about systems with emergent behaviours.  They also took a stab at futurology and suggested Web 4.0 Distributed Computing.  You heard it here first!


The great Test Driven Development debate rumbled on. Well, when I say debate it is a bit one sided.  There are a few people who think TDD is not a good practice then there are the vast majority of people who have tried it think it is a good practise that improve quality. 


Mary Poppendieck presented some figures from Mike Cohen’s book Agile Estimating and Planning.  Before introducing TDD Cohen’s company had 10 faults per 1000 lines of code, after 3 months of TDD this had fallen to 3 per 1000 lines.


For me this debate is a little like the Black Adder scene were the Captain (Tom Baker) says to Black Adder (Rowan Atkinson):



“Crew? Opinion is divided on the matter, all the other captains say you need a crew and I say you don’t”.


Gail Ollis did a good session on Advocating Agility, one of her first slides quoted the start of A.A.Milne’s Winnie the Pooh:



“HERE is Edward Bear, coming downstairs now, bump, bump,
bump, on the back of his head, behind Christopher Robin. It is,
as far as  he  knows,  the  only  way of coming downstairs, but
sometimes he feels that there really is another way, if only he
could stop bumping for a moment and think of it.”


Gail had spotted the great sentiment expressed here: we do painful things because we simply don’t know how else we might do them and don’t take the time to find out.  I left intending to use this quote myself. 


In looking for this quote on the web just now I seen that neither Gail or myself is the first to spot this, its all over the place and often associated with change.


OK, thats a first stab at debriefing the conference, over the next few entries I’ll write more.

Monday, April 09, 2007

Software Strategy

In this blog I keep coming back to same interests:



  • Software application development: specifically the use of Agile or Lean techniques to improve the process.

  • The link between IT and business strategy.

  • Opportunities to make better products.

  • How improving our learning can improve our application development, IT strategy and create better products.

Well I am please to announce that I’ve decided to make these passions into a full time job.  I have created a new company to help organizations with exactly these issues.


Software Strategy will help organization improve their learning, improve their strategy and improve the execution of strategy.


Specifically Software Strategy will help organizations deliver the software application which are necessary to delivery their strategy.  Unique software applications have the ability to help companies succeed.  Either because they sell the application itself or because the application allows the company to better deliver some product or service.


For more information see the Software Strategy website.  The company already has a full order book and several interesting prospect in the pipeline.