Tag Archives: agile

On Top of Your Game

On Top Of Your Game

Sharpen The Saw

I love the idea of being able to take some philosophical ideal and somehow apply it to my world. If it can be used to help solve real issues, remove blockers and/or present opportunities for continual improvement, then that must be a good thing. Most agile practitioners or enthusiasts have heard of the concept of Kaizen. It’s a principle from Japanese philosophy that says something like, small changes made daily add up to life changing experiences. The corollaries are many with some being stated by famous personalities over the years. One of my favourites is by Albert Einstein when he postulated; “compounding is the greatest mathematical discovery of all time”.

Read More

Of course he’s right. Small changes really do add up, and they really can bring large benefits over time. This whole concept got me thinking, about how I might try to apply the same thing to a typical agile delivery model. What improvements might I look for that could be applied daily and that would continually improve the application delivery lifecycle? Where could I find small adjustments that are easy to understand, even easier to implement and yet  still yield measurable results over time?

There are so many elements to consider. Some are process orientated, some related to tools and yet others that were clearly about people? When I started to get into it, I realised that there wasn’t a simple answer and that like Kaizen itself, I would have to take things in small, discrete quantities, each addressing the various elements of the whole. Delivering working software would be essential to the whole thing obviously, but what are the dependencies and how can they be manipulated for the better?

In the agile delivery world, understandably there are many, many tools and processes across the full stack of any given platform, be they open source or proprietary. I decided that one way forward might be to go back to the agile manifesto and look at the 4 core values. In other words, to examine: individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation and responding to change over following a plan.

Would it be relatively straightforward to address each one with a Kaizen mind set? I wasn’t sure, but I thought that I should try to work through it by a process of inductive reasoning. My conclusions wouldn’t be guaranteed, but perhaps more common sense-based. There wouldn’t be a step-by-step guide to agile delivery heaven, but if I realised that if I could manage to change just one, small thing daily, then perhaps I might find myself on the road to agile, cumulative righteousness.

Steven Covey phrases it well when he talks about “sharpening the saw”, [1] . In his book he asks us to apply the habit to ourselves. In doing so, I think that we cannot but help apply it to our lives and our work. To keep the saw sharp is to be at the top of your game, to deliver well using the tools at hand and a winning mind set. As the New Zealand All Blacks say, “ritualise to actualise” [2].

In this blog, I will address the agile manifesto with a ‘Kaizen’/’sharpen the saw’, mind set. I will look at tools and processes, and the importance of working software. I will examine why people and interactions are at the heart of every successful delivery model and why being able to adapt with minimal fuss is still important for businesses today.

Kaizen and the Agile Manifesto

In this section I’ll aim to develop the concepts of ‘Kaizen’ and ‘sharpening the saw’ and logically extend them to the agile manifesto.

Value 1 – Individuals and interactions over Processes and Tools
In my mind and in practice, individuals and interactions are interweaved. Therefore to ‘sharpen the saw’, we must look to the core of each to properly understand what exactly can be improved. We should work to build upon the following each and every day: trust (individuals and teams); value (your relationships); authenticity (be genuine in your dealings); flexibility (to maintain a healthy work life balance); development (encouraged, recognised and rewarded) and integrity (doing the stuff you said you would do).

Processes and Tools are extremely important but they alone are pretty useless without people and interactions to wield them.

Value 2 – Working Software over Comprehensive Documentation
Ensure that the spirit of the team captures the idea of delighting customers each iteration by continually delivering working software and something of value, no matter how small. It’s hard to over-estimate the meaning of this and in my mind extends back to the individuals and interactions part of Value 1. By delivering working code, as an agile team, we accomplish many valuable achievements. We increase team morale, we build trust with our customers and ourselves. We keep our business alive by shipping products that earn revenue. Delivering working software should be a value that is at the heart of every team and we would do well do remind ourselves of that on a regular basis. Working code, means revenue!

Comprehensive documentation can be extremely important, but if we have no working software, it’s pretty pointless. Documentation should definitely not be forgotten and agile is certainly not an excuse to develop code without it.

Value 3 – Customer Collaboration over Contract Negotiation
Much pain has come from awkward or badly negotiated contracts and much of this could have been ameliorated by focusing at least equally on effective customer collaboration. Build and maintain good relationships with customers is at least half the battle of delivering a great product. Like Value 2, Value 3 also harks back to Value 1, individuals and interactions. It’s much easier and productive to collaborate than to negotiate.

Value 4 – Responding to Change over Following a Plan
Plan for change is the best way to think about this. Within teams it is a really good idea to help them understand that adapting to change quickly and with minimal fuss is not only great for efficient delivery, but also for team morale. A happy team is a productive team, is a responsive team.

I am also a firm believer in the tenet that an organisation will eventually or inevitable move into a phase of decline, unless there is a concerted effort to prepare for change; EVEN when sitting on top of a current and very successful peak.

Scrum – Standup Speaking Order

Scrum Using Random Numbers

After taking up the mantle of scrum master in a distributed team, I quickly discovered a small issue with the daily standup. Normally, when a team is co-located a scrum master can use any one of a number of techniques to automatically decide the speaking order of the daily ritual; for example clockwise from the first person into the room, anti-clockwise from the person standing nearest the window; or randomly throwing a ball to a team member and have them do the same. There are many techniques similar to this, but none work effectively with geographically distributed teams who may be using a tool like Skype as the main method of communication. A few searches on the web soon highlighted that there is little advice for the organisation of distributed scrum teams and I didn’t find a satisfactory answer. I gave it some thought and hatched a plan of my own.

First, I thought it would be excellent if everyone in the team knew the order of the day before participating in the standup, and second, I did not want anyone, including myself dictating the order of the day after the standup had started. Scrum masters should act as servant masters and outside of facilitation, blocker removal etc. they should not really assume a role of superiority, nor should any of the other team members. It was clear that some kind of random process was required to generate numbers, something akin to rolling a die; but with 5 team members and 6 faces on a standard die, how was it to work?

It’s not rocket science and the answer I found was very simple. All dice do not necessarily have 6 sides and the ideally suited pentagonal trapezohedron has 10 sides. Why do I say ideally suited? Well with 5 team members each person can be allocated 2 numbers (sides) like so;

Team Member 1 = 1 & 6,
Team Member 2 = 2 & 7,
Team Member 3 = 3 & 8,
Team Member 4 = 4 & 9,
Team Member 5 = 5 & 10.

[Alphabetically by first name could be one way of deciding the order of team members.]

The Pentagonal Trapezohedron

 

 

 

 

 

 

Each morning (or at the specified standup time) one of the team will roll the virtual die, found here to decide the speaking order. Based on the example team above, if a 4 or a 9 is rolled first, then that team member speaks first and is awarded a single point. If a 2 or 7 is rolled next then that person speaks second and is awarded 2 points, and so on. At the end of the 5 rolls ( or one roll for each team member), the tally should look like the following;

Team Member 4 = 1,
Team Member 2 = 2,
Team Member 1 = 3,
Team Member 3 = 4,
Team Member 5 = 5.

Pretty simple really, and effective because on top of this a reward system is introduced whereby at the end of a given period, say 3 months an award is presented to the team member with the LEAST amount of points, i.e. the person who had to speak first, or as near to first, most of the time. Additionally my team have created a ‘Dice of Fortune’ chart which illustrates each person’s points position after the draw and adds a little excitement to the start of the day. This is how our chart looks after just over a month of play.

 

 

 

 

 

Rally – Application Lifecycle Management

Rally

Not so long ago I tweeted that my team had started to use Rally as the platform of choice for managing the software development side of our business. Having successfully completed a few sprints using Rally, I thought I would present a birdseye report on our ‘getting started with Rally’ experience and on how quickly we were able to adapt to the new environment.

If you are considering moving to an agile development approach or are looking for an alternative Application Lifecycle Management (ALM) platform then please do read on; there should be some useful information in this blog. Before describing my team’s experience with the platform, it is useful to introduce the Rally platform. Rally as a whole offers a lot more than an ALM application, the company’s products range from the free (locally installed) community edition to the full enterprise edition, offered on-premise or as a Software as a Service (SaaS)-based solution. Training can be provided on-site and a number of community resources are also available for use online. Wikipedia neatly summarises Rally in the following paragraph: “Rally Software, founded in 2002, offers SaaS-based Application Lifecycle Management (ALM) platform and products, Agile coaching services, courses through Agile University and online forums focused on Agile and Lean practices. Rally is based in Boulder, Colorado, with offices in Raleigh, North Carolina, and London, England.” [1]

Navigating to Rally’s URL a user is presented with a simple login page and when they log in for the first time they are asked to select from one of three roles; Contributor, Executive, Organiser. As team scrum master I selected the Organiser option and my team selected Contributor. Rally then provides a dashboard most suited to the role chosen. I spent a few days familiarising myself with the environment and entering the details from the team’s current backlog before introducing it to the team. The dashboard can be heavily customised and there is a wide range of widgets that can be added, rearranged and deleted to suit each user’s individual taste, see below.

 

 

 

 

 

 

My team is distributed, so it was essential that we could all log in, view and update the various screens within Rally as a team during our sprint planning meeting. The team found this to be extremely easy, navigating was clear and simple and adding items to the sprint backlog was also straightforward. We found that there was a little bit of confusion as to the best way to enter user stories since Rally offers a number of methods to do this, but once we had settled on a system this worked well. The task breakdown and estimation was also easily completed online during the sprint planning meeting and I found it very effective to have each member responsible for a task to enter the details for that task so that they were all involved in creating the sprint backlog.

During the sprint each team member has a time recording sheet where they enter the number of hours spent on their tasks, Rally is proactive about this and team members are also required to enter the number of hours they think remains for the same task. Initially this seems like an oversight, but not so. It is important since it is estimated time remaining and not time spent that is a more effective measure of how well the sprint is going.

At the end of the sprint Rally automatically calculates some basic sprint metrics and of course the burndown chart is available on the dashboard throughout the duration of the sprint. Additionally, Rally also offers the ability to create test plans and record application defects.

In summary, Rally provides an effective way to manage ALM and is ideally suited to agile scrum. Whilst training could prove useful, we found that anyone with an ounce of tech-savy should pick-up the techniques required for scrum-based software development. Rally is conducive to effective scrum rituals and enables quick production and clear visibility of scrum artifacts. It is certainly worth considering amongst the other platforms available.

Rally’s website here