Posts tonen met het label kanban. Alle posts tonen
Posts tonen met het label kanban. Alle posts tonen

maandag 30 mei 2011

What I did last year

I've worked for nearly 1 year now at my current job, as head of IT. Time to make a summary of the improvements I have helped achieve (credit goes to as much to the team and the company as to myself!):

  • the team used have at least as many projects as there were people. Everybody basically worked on their own projects. I changed this by introducing two teams, one focused on front end work and one on .net project development. Every project was tackled by the team, not by an individual. The number of simultaneous projects became limited to a two or three.

  • the IT department had a bad name with regards to completing work. In fact, it was hard to name a project that was completed on time and on budget, if completed at all. There were projects of a couple of months running for over three years. Together with the team, I introduced Kanban, focused on limiting work in progress, made sure small pieces of business value were delivered as soon as possible, made work in progress visible. The IT mission statement became "we deliver" and the team set a target for the year in terms of number of rolled out projects which they though was ambitious, but which they had already made after the first 3-4 months.

  • Evaluations were a mess and severly demotivating for the team members. Basically, the former heads of IT would grade everybody once a year on 16 ill defined criteria, using an ill defined score between 1-10. That's 160 scores you have to give meaning to! I got rid of this pointless exercise by developing a 360 degree evaluation together with the team and carrying this out every quarter. This meant that team members gave each other a grade along with feedback, and also that the company at different levels gave feedback to the IT team as a whole. I as head of the department still give a grade on three criteria. This was a compromise as I would rather not have graded people at all, not even via 360, as grades are by definition demotivating.

  • Instead of a yearly evaluation, or even half yearly as it has become, I sit with every team memeber in a 1-1 every three weeks. this gives short feedback times and ample opportunity to discuss how things are going. By the time the evaluations take place, there are no surprises for anyone.

  • The salary increase process was unclear, there was no direct link to the evaluation process. I improved this process by making explicit what grade led to which salary increase, and by defining the various salary scales more clearly, especially how one moved from one scale to another.

  • The IT department was primarily being outsourced to another company for development. Although the company claimed that IT was one of the three pillars, there was virtually no interaction between IT and the rest of the company. I started up a process of developing an IT strategy together with the team and company, and created projects that focused on automating manual work that non-IT employees did, as well as projects that directly supported the main business of the company and their customers.

  • One of the main concerns the company owners had was that there were single points of knowledge/failure in the IT team. I resolved these bottlenecks by making everyone work as a team, doubling up the technical expertise, and promoting knowledge exchange.

  • The morale of the IT team was low. By introducing team sessions, retrospective meetings, 1-1 sessions, team activities, trainings, and conferences, the morale has improved dramatically. The team has clearer goals, more control over it's own work and planning, and it's work is more visible within the company.

  • I have grown the team from 6 to 8, with 2 people moving on in the mean time. I introduced a new interview process, consisting of a first meeting with me and HR, followed by a four hour hands-on workshop, and then a final meeting with the company owners. This process has served well to deliver good candidates.

  • By estimating projects before hand using story points, by reporting on the used up budget during the project, and by evaluating the final used hours vs budget afterwards, the estimation process has become much more transparent. By enforcing that all estimates are made by more than one person, and by people who will do the work, the budgets are beginning to be met. Before, almost all projects went over budget, although nobody talked about it.

  • The average grade given by company management to the IT team has increased by 45%

  • I arranged that we are now Microsoft Silver partner, and this has sigificantly reduced the licensing costs of the entire company.

woensdag 9 maart 2011

Switch (the book) and Agile/Lean/Kanban/Scrum

"Switch, change when change is hard" is a great book about change (see an earlier blog entry). Now lean/agile/kanban/scrum (LAKS) is all about continous improvement, and all improvement is change (although not all change is improvement!). So after having read the book I started wondering which of the guidelines in the book are reflected in the LAKS way of thinking/frameworks. After all, LAKS is good at continous improvement so there must be significant overlap with the guidelines in the book. Here's a first stab (from my limited experience with primarily scrum and kanban).

Direct the rider, find the bright spots

In the retrospective, which is a meeting held regularly, what went well is a typical item on the agenda. This serves to assert the positive, but also triggers an awareness of things that are working and can be extended and improved upon for even greater gain.

Similarly, in the daily stand up team members tell what they did. This is an opportunity to share their work amongst the team, and thus also communicate about things that went well, problems solved, etc. Thereby creating awareness of the bright spots.

Direct the rider, script critical moves

During the retrospective, the most pressing problem is identified and tackled by defining (and carrying) out one (and only one) small step that will lead to an improvement. Typically this is *not* a complete solution to the problem, but just a first small step in the right direction.

Also, during the daily standup any impediments are identified with the explicit goal of getting these resolved as soon as possible with the product owner. This is an example of a scripted action that should lead to improvements (ie removal of the impediment).

Direct the rider, point to the destination

One of the goals of LAKS is to stabilize the velocity and then improve it. Having the velocity visible in charts (like the burndown) for all the team to see (and also the variability in the velocity) is key to making sure the team knows what they are aiming at.

Also the iterative development process with frequent demos and constant interaction with the customers and/or product owners ensures that the software that is being developed (the final destination) is constantly being realigned and redefined, and is constantly in the fore front of everybodys mind.

Motivate the elephant, find the feeling

Feelings in IT? Never! Still, nothing like a weekly demo for customers to cause a developer te break out into a cold sweat. Fear and the desire to please are strong motivators to deliver good software on time. Also, regular interactions with the customer and/or product owner go a long way to fostering and understanding of why the customer wants what he/she wants. Generally, this understanding will lead to improved software being developed.

Motivate the elephant, shrink the change

Refactoring and test driven development are great examples of shrinking the change. If you have unit tests in place, then improving your code (refactoring) is a breeze and nothing to be afraid of any more. In fact, it becomes a pleasure and something you do because it makes you feel good.

In general, LAKS avoids trying to "get it right the first time". Instead the focus is on building a small part as simple and as fast as you can, and then improve from there. A big software project is chopped into smaller user stories, all broken down into even smaller tasks, each task written test driven so that refactoring is easy going forward.

In terms of processes, LAKS provides a starting point only; a bare framework and a minimal set of guidelines. The whole point of LAKS is to begin with something (anything) and improve upon it continously. Finally changing the process into something unique that fits your business. The guidelines or framework are not contained in a complicated 400 page manual but typically fit on one A4. I'd call that shrinking the change.

Motivate the elephant, grow your people

LAKS is all about the team, not the individual. Team members are encouraged to become more multi disciplinary so that they can help out whenever bottlenecks occur and can cover for each other during holidays and illness etc. This requires growing both technical as well as team player skills.

Frequent interactions with customers extend the domain knowledge of the team, thus enabling them to build better software. In addition, code reviews and peer programming allow team members to learn from each other.

Typically, team members can pick their own work from the current queue of prioritised tasks. They are thus more responsible and have greater control over their own work. This is most often conducive to personal growth.

Shape the path, tweak the environment

The focus on the team typically means scrum or agile teams will be working together in team rooms. This fosters communication and mutual understanding, opening the road to frequent minor improvements, often too small to mention or pinpoint.

LAKS is often about making things visible, think kanban or scrum board (information radiators). This means that team members are confronted every day by the work in progress and waiting for them. They literally see it on the walls of their team room. Having the work visible makes it easy to talk about it, and this often leads improvements being discussed right infront of the board.

Shape the path, build habits

LAKS is all about habits. We have the daily standup, the retrospective, test driven development, refactoring, peer programming, code review, scrum planning meetings, demos, and more. As we have seen above, all of these habits are conducive to improvement. After all LAKS is a process, and a process is nothing more than a collection of habits we have all agreed to build.

Shape the path, rally the herd

The team focus instead of the individual focus is one form of rallying the herd. Peer pressure tends to drive people to carry out improvements they might not have done solely for themselves.

Also, the large and active LAKS community is a great source of motivation to improve should you find the team beginning to flag in enthusiasm. Nothing like a good conference or open space to get a team fired up again about making improvements.

dinsdag 8 februari 2011

Small barriers


I'm a tall guy, so when I shower I move the shower head all the way up along the adjustable rail just so I can stand under it without stooping. Of course, not handy for the rest of the family who can't even reach the shower head to lower it when they want to shower. So my wife was constantly reminding me to lower the shower head back when I'm done, and I of course was constantly forgetting. But then I figured it out. My wife was always reminding me after I had left the shower and already dried off, so adjusting the shower head then would mean getting wet again (from the shower head dripping), and it was this small, teeny "barrier" that was blocking me from actually learning/remembering to do it myself. On the boundary line between concious/subconcious I was making a decision that I just didn't want to do it.

Once I became concious of the barrier blocking me, it was easy to fix. Now I lower the shower head before I leave the shower and dry off, so the dripping is not a problem as I'm already wet anyway. Now I always never forget.

Trivial? Maybe. But I happened upon more examples once I realized how such small barriers can control your behaviour. Another personale example is the garbage container. I have to roll it out on monday evening for it to be emptied by the truck on tuesday morning. Meaning that tuesday evening I have to go back outside to roll the now empty container back. Something I never relished doing, especially in the winter, when it's cold, and you're nice and cozy inside.

In this case the barrier is more obvious, the cold outside. But the solution less so. Funnily enough, I just started jogging again (yes, not easy to keep up either) and when heading back it suddenly dawned on me that since I was outside anyway, I might as well drag the container back in. Trivial? Duh! But still it was now almost a pleasure to do the task, whereas before it was always a chore I "forgot" every now and then.

Small problems, and even smaller solutions, but the impact can be big. I've seen that with agile as well. Using a kanban board to make the work and flow (or lack thereof) visible is a great information radiator which encourages lively discussions right infront of the board. Nothing like a bunch of blocked tasks (impeditments or barriers) to start a discussion how we can improve the process. And the solutions are often small, trivial steps that in themselves cannot be the complete solution, or so it seems. But quite often, just making one tiny step is all it takes. All the subsequent improvement steps you thought were goign to be needed fall by the wayside because the problem is gone, the flow is back, and the process is working acceptably again. Too often people think up elaborate plans to tackle a semmingly big problem and then get stranded. Kanban I find encourages you to identify the first small step and then do it, and then see what next. Works much better.