Feeds:
Posts
Comments

There’s been a lot of interesting conversation regarding the use of Kanban / Continuous Flow Development models and it’s something that I see a great deal of benefit in. I find myself struggling to understand whether it would be possible to start a team that hasn’t really used a process of any description before out with something like Kanban and for them to reap the benefits that people are discussing.

I think the reason I’m struggling a little is that I’ve read nothing that would suggest that Kanban in particular is teaching a team the principles behind the practices and whilst I’m sure that some would disagree, from what I’ve read there isn’t too much focus in that area and given Kanban’s relative infancy, there’s little to speak of about the practices either. For example, whilst I’m sure most could easily see how something like Kanban allows a team to Eliminate Waste, might they miss the fact that the process of mapping your Value Stream allows you to See the Whole (i.e. that your kanban should represent all stages in the life cycle of a feature request)?

At the moment and perhaps given my current circumstance, I feel a lot more comfortable that using a vanilla Scrum implementation will help the teams here at least move towards understanding the principles behind Lean so that we would then be positioned at a later date to implement a flow based model. It was Benjamin Mitchells tweet

Good tips from @henrikkniberg on software processes: evolve the right process for your context, expand your toolkit and experiment!

earlier that prompted me to make this post though I was also reminded of Matt Wynne and Rob Bowley’s presentation at XP Day Evolving from Scrum to Lean. Matt Wynne in particular once posted that for teams, Scrum is The Stabiliser Wheels on Your First Bike and that for organisations, it is like a bulldozer.

Following a suggestion from Rob who attended a presentation by Jeff Sutherland at BT titled Shock Therapy and my later watching a video which is of very similar content, we’re running an experiment here with one of the teams and have got them using Scrum with 1 week iterations.

Scrum is a collection of great tools, and the idea is that when used in this manner, they will help a team very quickly evolve to understand the problems they are facing (retrospectives come in very useful here) and the advantages of working in small batches to best be able to deliver to their definition of done every iteration. It’s easily understood (I accept that to some Kanban may also be easily understood) and some of the agile principles are baked in, it increases communication between the Product Owner(s) and the development team and its iterative nature means that the team is doing this over and over and in doing so, means that the practices and the principles that we’re talking about with them are there for them to see in action, time and time again. I should add that we’re not using Scrum alone, we’re using engineering practices such as TDD, refactoring any of the legacy code we come across and generally focussing in on quality throughout, we’re getting acceptance criteria up front which alone is proving worth the effort.

If the ultimate goal is to move to One Piece Flow then, how specifically is our current use of Scrum helping us?

As I suggest above, there are a number of benefits to Scrum but in respect of doing 1 week iterations, first and foremost, it’s giving both the team and their customers a much greater degree of visibility and better still, it’s happening sooner rather than later.

From the team’s perspective, any of the issues that they are facing are immediately apparent, furthermore and small issues that we might not have caught in say a 2 or 3 week iteration cycle are raised in their importance. The team really need to remove any impediment that they come across as soon as they can to give them as much of a chance as possible of delivering the feature that they have committed to at the end of the iteration. Any problems downstream of the development work going on (e.g. testing, deployment) becomes much more apparent. Doing a retrospective at the end of each iteration and taking meaningful actions away is allowing them to tackle some of the more process based issues they face, they have started to realise too that rather than relying on key people to do repetitive small jobs that come in, they should all be capable of carrying out the task and that furthermore, there would be real advantage in writing a tool so that the job can be done by people outside of the team.

From the business’ perspective, the team is creating a lot of data, quickly. This data includes the team’s velocity, the amount of time a feature that is requested takes to go from being requested to be being delivered and in that we’re also tracking how long that feature is in development.

Whilst I mention above it’s worthy of note again that secondly, it’s helping the team form together as a successful unit, it’s forcing them to self organise. I’ve mentioned before Tuckman’s team development model (I’ve previously heard learning models such as Shu Ha Ri and the Dreyfus model referred to when discussing this advancement.)

Of course, we’ve had a few problems outside of the team too, there are some people that feel that the amount of time that not only do the development team require of their customers in prioritisation sessions and in analysing requirements but that they themselves spend in meetings every week adds too much of an overhead. So far I’ve answered this by saying that the team have some clear goals to meet and once they have done so, they are free to move to whatever they deem appropriate, be that longer iterations or indeed a Continuous Flow Model. I’m also working to help people understand that software development is an inherently collaborative process and that in my opinion, you’ll never see the true efficiency gains to be had from a software team until you change the organisation to accomodate that, something that this post by James Shore alludes to.

Anyway, I’m off to the eXtreme Tuesday Club’s inaugral Kanban Klub meeting tomorrow night so perhaps some of the things that I am struggling with about Kanban will be answered then. In the meantime, Scrum is seeing a little of a renaissance in my estimation as a tool to help development teams quickly mature in to ones that don’t just apply processes and don’t think to ask questions but ones that are questionning for themselves which process that they should be using.

James Shore made a great post the other day, Stumbling Through Mediocrity in which he talks about how dysfunctional companies will never truly reap the benefits of an Agile adoption as they aren’t inclined to actually change their ways. Rob Bowley then followed up with his post, Agile Isn’t Enough likening the introduction of agile to dropping a bomb on the internal workings of an organisation which then sends out ripple effects with much wider repercussions that actually get ignored by managers.

I posted a while ago about the fact that I thought that all a team needed to be successful was a clear set of parameters to work within and the support needed to build a learning culture and I maintain that opinion. Indeed when I started at 7digital I was keen not to sell any particular methodology. I set out 3 things that I thought that the department as a whole should focus on; Focus On Quality, Releases as Non Events and Building a Learning Culture. Whenever I spoke about those things I was careful and still am to a certain degree, not to use the dreaded “A” word.

One of the biggest impediments to introducing a change in process whilst I was at my last company, aside from the abundance of people with their own political agenda, was my attempt to introduce “Agile”. I realise now that rather than bestowing the virtues a bunch of practices I should have spent more of my time talking more about the principles. Furthermore, I should have found out whether or not people wanted to change. If they didn’t perceive there to be a need to, then it was my responsibility to find out why, perhaps they had a point and perhaps even in having that conversation they may have heard my point a little more. You live and learn.

What’s interesting though is that whilst there were a large number of people that I used to perceive to be willing to fail, pretty much all of them wanted to get the job done or the project delivered but I was putting it down as a failure because we hadn’t successfully engaged with our Customer, we weren’t in my opinion delivering everything that we could be for them and we hadn’t truly enabled the development team to deliver a quality product. Often I would sight agile as I thought that it would be the answer to these perceived failings and I still think it is, ironically it became a barrier to it though.

Given the posts I mention above, it would suggest that I am not alone in my point of view. My take on it is though, everybody hears the “A” word and thinks “here’s a process that we can use to deliver this piece of software” but actually it won’t. It requires commitment that a lot of people just aren’t willing to give and in many respects, perhaps the word Agile is in fact a hindrance.

Perhaps we should just start sitting with our customers more and hearing exactly what they want from the software that we deliver them and in doing so, put our case across about what we want from them. Do we necessarily have to persuade them of anything other than that we want to deliver the best quality product and that we want to do that by working as closely with them to understand their business model, that we want to as honest and transparent as possible about how we’re progressing. It’s keeping these conversations going throughout the project that’s most difficult. And it’s that very thing that we should be working on the most. The arguments have been won already for how much more successful we are when we use certain techniques as opposed to others, they should be implicit when we say we’re going to develop software.

Madmen In The Halls

I read Tom De Marco’s book Slack a few months ago, the first chapter titled “Madmen in the Halls” starts by suggesting that:

“The legacy of the nineties has been a dangerous corporate delusion: the idea that organizations are effective ony to the extent that all their workers are totally and eternally busy. Anyone who’s not overworked (sweating, staying late, racing from one task to the next, working Saturdays, unable to squeeze time for even the briefest meeting till two weeks after next) is looked on with suspicion. People with a little idle time on their hands may not even be safe. As [one of the authors friends] at Digital Equipment Corporation told [him] during the company’s darkest days, “There are madmen in the halls looking for someone to ax.” Of course, the ones they were looking to ax were the folks who weren’t all that busy.”

It’s sad to be able to draw parallels with some of the rash actions that were being taken then and the drastic ones people are being forced to take now.

Inevitably, as people look to make their respective companys’ more efficient and trim their bottom lines, Development teams are called upon to get the latest cost / time saving feature delivered as soon as possible.

It’s at times like this, when we’re being asked to go as fast as we can it becomes increasingly difficult to sell the fact that we need to deliver a quality product rather than one in which we’ve cut corners, as Jason suggests in his post, perhaps quality will suffer as part of the credit crunch. But now is precisely the time that we should be pushing harder to see the quality of our product improved.

I’m a believer in the Lean principle that you should decide as late as possible and that development teams should seek to defer decisions until the last responsible moment. Should we defer that decision to include unit tests, to tackle that particularly naughty piece of the code that is always causing us problems or to automate our build and deployment process. Definitely not.

Choosing not to pursue quality from the outset is almost like behaving like a student, leave doing it until the last minute and you will either hand in something that’s rushed, doesn’t really meet the expectations and will therefore need to be reworked or having to ask for an extension to the deadline.

I met some friends for lunch the other day and when asked how it was going in my new role, I said to them that it was all a bit like doing the Hokey Cokey at the moment. To put that in context, there are a number of changes that I want to see happen here which are superficially, very simple. In attempting them though, and as anybody else who has attempted to implement any type of change will know, you take a step forward, you take a step sideways and sadly, you even take steps backwards.

One of the friends that was at lunch with me summed this up a little better when he suggested that it was rather like trying to get home when you’re drunk. Let’s face it, getting home is a relatively easy thing to do (I’m assuming that you’ve not ended up in another country here…), you often come a cropper though, you might fall asleep on a bus and go past your stop; You might even just be so wobbly that when you’re walking you actually cover 3 times the amount of distance that is actually necessary. The thing to remember though I suppose, is that you get there in the end. You might even learn something along the way. Like for example, to get a taxi next time.

Having had time to reflect on the time I spent at my last company, one of the things that I’ve realised is that for me personally, it’s important to recognise the small wins. If you don’t and you spend your time just raging against the machine at large, you’re not going to do yourself any favours and really if it’s that bad, take some time away, come up with another plan and approach and start again.

I know I’ve said before that I don’t believe in an Agile Adoption initiative but humour me a little here…

As I rode home dodging in and out of traffic a couple of weeks ago, with the saddle still as low as it would go from the last descent that we did on the bike ride over the Downs that weekend, I realised that it really can be the simple things in life that are most pleasing. It was good to be sat in the saddle cruising down the road on my bike. Then, at a point where I hopped off a kerb back in to a side road and the bag on my back swung round knocking me off balance I quickly realised that it was also the simple things that can catch you out.

Some 5 weeks ago now I set the first team up to use the processes that I want the whole department to be using in time. We did 3 1 week iterations and have recently completed one that ran for 2 weeks. As I took the team through the initial estimation exercise I was reminded of the discussion that has been taking place about whether or not estimation is waste. I agree with all of the points made and I think that once a team has realised it’s velocity it can take the decision to move away from lengthy planning exercises and indeed estimation entirely. Why then have I suggested to them that they estimate their stories? I think they have to start somewhere, the team needs to understand their velocity and in understanding your velocity they can start to look at the things that are slowing them down. One of the things that I have previously said is that it’s important for a team to gain some momentum, to get an idea of their rhythm and this is one way that I think they can do that.

At the same time though, I was advocating keeping the Product Manager away from the team, even when they were saying that this was a hinderance to them in their retrospectives. My reasoning for this was to enable them to get started without interruption. The piece of software that they’re working on was created as a Proof of Concept previously and we’re now looking to take it through to a Private Beta and so I thought the team had enough to go on for a short time without the additional “noise” generated by having a Product Manager involved, on the assumption that whilst the initial requirement was to get a production version of the software shipped once they started seeing the software during the demos, they would then start wanting additional features and distract the team. What has actually happened though is that we’ve ended up having to wait for a few decisions to be made which ultimately have slowed us down. This could have been avoided if I had got the Product Manager involved from the outset.

Ultimately, you have to start somewhere, doing a regular planning meeting allows the Product Manager to give the team the priorities, the stand ups allow the team to plan on a daily basis and to remove any obstacles, the retrospective allows you to inspect and adapt and the demos allow the Product Manager to seethe result of what the team have been working on, it enables them to feel part of the process and to look at how they could extend the product.

How do you introduce new processes to teams? Do the simple things, do them regularly and learn as you go. Wax on, Wax Off.

We’re Hiring

Well, it’s been an exciting 5 weeks since joining 7digital, not just for myself but for the company too. I’m sure most of you will have seen some of the press coverage we received on Tuesday when we were the first in Europe to go 100% MP3 and DRM Free. As part of that we also announced opening up our API through our partner program.

Obviously this will increase the demand on the development team here so, as the title suggests, we’re hiring. I’m looking for a couple of Developers at this stage as well as a Software Architect. We’re not going to be able to offer the earth in terms of salaries, what we can offer you though is a very exciting company to be part of, a development team which will be changing lots over the coming months with an increased focus on quality, simplicity and agility.

We’re looking for people that are passionate about their trade, people that want the ability to make a difference and to be part of something. I really believe that my role here is to facilitate change and not to direct it, and that change should come from the people that are doing the work on the ground and that could be you.

If you’re interested, feel free to drop me a line through careers.inbox+development [at] 7digital.com or if you would prefer, contact me directly through my linkedin profile. I’m sure I can persuade you just how much fun this place is and will be to work, come on, when else would you get an opportunity to work in a place that has an Official Badge Of Awesomeness From TechDigest (See the bottom of the article.).

It Was A Stone Groove…

And so it was. Somebody left that message in the leaving card that I received last week when I left BBC Worldwide. I spent an incredible 4 and a bit years working there and have many fond memories of the place and people.

So what now? Well, I’ve started as a Development Manager at 7digital, a start-up based in Shoreditch (Apparently now known as Silicon Roundabout), which promises an exciting opportunity to be part of something as they look to expand their development capabilities. Expect more of the same from this blog (that is, irregular updates and occasional rantings) as I endeavour to help them with things to come.

Now, off to go and do some research on this Waterfall thing, I’ve heard that it’s all the rage.

HelloWorld()

The Stretchy MonkeyThis has been overdue for some time now but I should announce to the wider audience that Charlie Rough was born on the 23rd May at 10.40 weighing in at a healthy 8lbs 13oz. Mother and baby were doing well then and still are, we’ve had a few issues as I’m sure most new parents do but thankfully everything seems to be settling down a little now.

We’ve had a bit of time so far for GeekDadding though all we’ve managed to do is create him his blog and email address. More soon though I’m sure and with the recent update to the Lego Digital Designer I think that’s where we’ll be starting.

This is a post that I’ve had in my drafts for some time now, mainly because I’ve been trying to temper it’s message somewhat, having posted Agile Adoption – Just Say No the other day though I thought it was worth posting as a follow up as it relates to the last of the 3 points that I made.

Handling Polystyrene, somebody running their fingers down a chalkboard, two things that have always made me cringe. Well, you can now add the word Agile to that.

It seems that in my haste to see Agile adopted, I’ve not taken the time to clearly state to people why I see it as a worthwhile pursuit. After our recent reorganisation there’s even more talk of a move to Agile, we’ve got our own Agile Consultant, there’s even some people working on defining an Agile process. All good stuff.

Or perhaps not. There are some things to be really concerned about here, to desire to have, or to create an Agile process misses the point somewhat I think, there are plenty of good books out there which will help with a vanilla implementation such as Agile Project Management with SCRUM (Microsoft Professional)*, more importantly though let’s not pit Agile against Waterfall (for that is what is implied) – let’s not suggest that one is better than the other because there isn’t an argument there.

So what can we be doing, if not Agile, what should we be aiming for?

Well in my head it’s simple (some people might take the opportunity here to say that most things are…), we should be aiming to do the best job for our customers that we can. That’s a pretty vague and unsubstantial statement, to be more specific, if we’re considering delivering projects / products at an enterprise level, I think you need the following two things:

1. A Clear Governance Model

This serves two purposes, it ensures that the customer is getting sufficient visibility of the progress being made on a project, it commits them to the project in some way, it is a vehicle for communication with them. Secondly, it gives the team some parameters to work within, consider the Forming, Storming, Norming and Performing group development model which suggests that during the forming stage a team will meet and understand the opportunity and challenges that they are presented with. If we focus on the typical challenges faced by project managers I think it’s fair to say that attempting to work within the classic Time, Scope and Budgetary constraints is one of those challenges but we should also recognise that there’s always some movement on those and that in that the challenge is to operate within a set of parameters and in my opinion those parameters should be mandated by the governance model both from a tolerance perspective and a communication / escalation perspective. My point here being that how the team is delivering is not important to the customer nor in fact to the team initially, they should set out a set of principles by which they want to be driven (perhaps during the storming and norming phases) in each instance based on their knowledge of their environment and allow the practices that they use to evolve as their landscape changes around them.

2. A Culture In Which It Is OK To Make Mistakes

This may make some of you think, that would never work in an organisation but let’s face it (and be honest) we all make mistakes on a daily basis, it’s what you do about those mistakes that define you and your organisation. Now granted, you don’t create a culture, you build relationships and trust but as well as that, I think you need to build an environment of learning, one where you’re looking to continually evolve and that everybody’s committed to furthering themselves and others around them. All very easy to write about, a lot harder to actually implement and live by.

* I don’t necessarily subscribe to the opinion that Scrum is sufficient as an agile process in itself, I agree wholeheartedly with my colleague Matt Wynne that Scrum is a vehicle for introducing a change culture at an organisational level and like the stabilisers on a kids bike for a team – see the full post here.

Mishkin Berteig has posted an interesting article regarding what he considers the best agile practices to implement now, that is those that deliver the highest return on investment. After the recent reshuffle here I’ve had the opportunity to start to work more closely with a couple of our development teams which has been great.

I agree with all of the points that Mishkin makes, I would in fact add one to them, I think teams should be running Retrospectives from the outset, one of the fundamental principles certainly in Scrum terms is to Inspect and Adapt and it’s not until a team starts to learn to understand its’ own performance and has the desire to improve itself will they realise any value in what they’re doing. Retrospectives give teams an opportunity to reflect over their last iteration / sprint and indeed over the entire time that they have been working towards delivering the software, it allows them to see the improvements that they’ve made as well as the areas that still need some work.

As I get to spend more time watching and helping teams adopt agile practices though, I’m starting to distil further my own opinions on how to approach a so called adoption, I think this largely boils down to 3 things:

1. Understand Why

It’s a concern that so often I hear people talking about that fact that we’re doing this one agile or see people doing a sit down stand up (the clue’s in the title folks) just because they think they should be. Before you get started take a look at what you’re already doing; what is it that you think you could be doing better, understand why you think you need to change, you could perhaps even consider running a retrospective to gather some information first.

2. Be able to clearly state your vision for any change

If you’re going to make a change, I think you should be able to clearly state not only the reason why but the vision you have for how the change will be effected and most importantly where you’re aiming for. In that, I also think you should need to be able to measure how effective the change you’re making is. Discuss the principles that are aligned with your vision, I think the Lean Software Development principles are a pretty good starting point for a discussion round this.

3. Don’t use the word agile

This is a bit of a difficult one. If you’re going to change what you’re doing and even have any inclination to want to use agile techniques, don’t call it agile. Why? Well, for a couple of reasons; Firstly there are those people that you’ll come across that are naturally resistant to it and it’s better not to expose yourself to that pain in the first place and secondly, I don’t think that to be agile should be the end goal. Sure business agility will deliver a lot of benefit to your organisation which they’ll thank you for but agile isn’t necessarily the only way to achieve that. By constantly reviewing what you’re doing and aspiring to do it better at all times you’ll deliver huge value, Dr Deming’s plan-do-check-act cycle (on which agile is loosely based) should help you there as a framework by which to carry that out.

I’d be interested to hear what you all think, have I missed the point or am I along the right lines?

Older Posts »