Posts Tagged agile

Points or days? Should we care?!

Some months back, I wrote a mail to you guys about the easiness and the usefulness of using points system in a story instead of calculating its size in days or hours. I thought that I should blog this discussion now as I think that it might be useful for others too.

For calculating the effort involved in a story we now use days as the unit. By days we actually mean “ideal” days.
That is, we smartly ignore other work related things a developer does in a typical day and calculate only the amount of time s/he has to spend on the story.
We have calculated an ideal day to be 60 % of the developers’ typical day. In other words, it is 4.8 hrs or let us say 5 hours to approximate.

I think that this ideal day system for measuring the effort or size of a story brings in some unnecessary ambiguity into our calculations.
To understand what I mean, let us go back and ponder on what estimation means to us?

What are we trying to do in the estimating meetings?
The answer I think is, during the estimation meetings we are trying to define the size of each user story. In other words, we are trying to categorize each user story based on our previous experience and calculate the effort involved to put these stories into sizes or points like S, XS, M, L and XL or 1,2,3,5, and 8 respectively.

Great, so why do you use “ideal” days?
Well, I think that we use ideal days because we somehow wanted to relate time to effort so that we can know how many actual days a story is going to take or taken. Also, it becomes easy to express the status in number of days to the stakeholders rather than with an abstract entity called points. Yepp, true…but I think, this creates ambiguity to a very large extent when practised. For instance, an ideal day for person A need not be the same as the ideal day for Person B. So I think this system is highly subjective. It does not make sense to me to use a system that varies a lot between individuals.

If we wanted to measure how long a story is going to take, we should instead use the team velocity and perhaps create baselines using Burn down charts.
These two measures together can give a better approximate estimate in time for a story.

Let me add some weight to my argument with Mike Cohn’s thoughts on estimation

Choosing between story points and ideal days
With Agile methods, it is perfectly okay to use either points or ideal days as the measure of the size of a user story.
But I think that the points system is more advantageous and complete. Read on…to know why?

According to Mike (and I totally agree with him of course), below are the key advantages of using a points system
a) My ideal days are not your ideal days
b) Points estimate do not decay
c) Points are pure measures of size
d) Points estimation are usually clearer and thus faster

a) My ideal days are not your ideal days
Let us say, two runners one fast and one slow are standing at the start of a trial. Each can see the whole track of the trial and can easily agree that the track is one kilometre long. They either come to the agreement because of their previous experience or by comparing it with another track. Either way the process is easy and intuitive. Tracking the length of the trial is similar to the points system. That is, one simply measures the size.

Now, let us bring in some ambiguity by adding more parameters…
Suppose instead of discussing the length of the track, the runners wanted to calculate the time it takes to run the trial. Obviously, the time taken by the fast runner will always be lesser than the slower one. It is going to be difficult for these runners now to come to a consensus. Both of them with different numbers are correct from their point of view. They probably will never agree as to how long it will take to run the trial.

There is another thing that we need to pay attention too. An Ideal day between developers differ a lot because they are constantly involved with something else other than the story development. Things like support issues, big maintenance bug fixes, investigation, design for future projects all takes time.

So as said, the ideal days system is too subjective to be a standard.

b) Points estimate do not decay
An estimate in points has a longer life span than estimates in ideal days. It is simply because the point estimate only takes into account one parameter and that is the size.

Let me explain this with an example. Let’s say that we are to use ideal days to estimate a story that has to use a new technology like flex. We know that none of the developers have worked with it before and we have to do a lot of investigation and learning to produce the story feature. So, let us assume that the developer estimates it will take 13 ideal days to complete the story. Great!

Now, let us fast forward a few sprints and ask the same developer how long another similar flex story will take to do. Obviously, the estimate will be lesser, let’s say s/he says 3 ideal days. Bingo! we got a problem here. Similar stories take different amount of days to implement.

Many teams tend to ignore this as a problem because they think it is only logical that the amount of ideal days decreased, because the developer knows more about the technology now than before. They also argue that measuring team velocity over time would even out this difference. But it actually won’t in reality.

Because…we will see that using ideal days, the team velocity always remains the same even though developers do more work. See, the developer now after a few sprints produces the same feature in 3 ideal days, where the first time it took 13 ideal days. In other words, in 13 days the developer is now capable of producing 4 such stories (4 stories X 3 ideal days = 12 ideal days). But with ideal days the developer’s velocity is always 13 even though s/he can complete 4 such 13 days stories in 13 days. So ideal days do not reflect the actual team velocity in this case. (logically, after a few months the team velocity should have gone up)

With the points system, we do not take time into account…we just calculate the size. For instance, we say that the flex story is about 8 points or XL large and then after a few months, the team velocity is calculated, now we see that the velocity goes up because the team is now able to complete X number of more XL stories than they did previously.

c) Points are pure measures of size
As said earlier, points are pure measures of size and ideal days are not. Of course, ideal days can be used as a measure of size, but with deficiencies. As in the above example, points remain the same but ideal days tend to vary depending on the developers expertise.

Story points being pure measure of size has a couple of advantages. First of all, story points allow the team to estimate stories with analogies. It makes the estimation easy and more fun as we are only talking about “this story is like the other one” and hence should be for example an L or 5 points. When we estimate in ideal days, we can use the same analogy approach, but the problem is that we tend to bring in the calendar days and measure how long a story will take to execute instead of looking at how big a story is. As said, “how long” approach has hidden problems!

Secondly, a story being an abstract measure of size escapes the temptation to correlate it with reality or time. Less is more!
Ideal days has an inherent comparison built in :-) That is, we tend to always end up comparing actual vs ideal time.
Then this pondering eventually ends up with questions like, “how the heck we ‘only’ did 8 ideal days of work in a 14 day iteration?” You know more often than not, many teams put the blame on some bully. :-)

d) Points estimation are usually clearer and thus faster
Yes, to me it sounds obvious that it should be really easy to estimate a story on just the size. We skip detailed level of discussion and it makes things easy.
So in estimation meetings, we got to decide only if a story is an XL or M?…Then arises suggestions like we got to do these and these things. Further the last time we worked on that piece of code we found that we had to re-factor it etc. We can also use our previous stories as analogies. Perhaps a similar story that was an XL involves lesser effort this time?! Maybe maybe not…that’s what we decide in estimation meetings.

My point here is that it is easy to talk on higher level and skip going into the details.
Of course, we got to break down the story into smaller tasks. But that has nothing to do with estimating a story size.

Finally, I think that estimation in ideal days has some advantages. But I unfortunately can see only one obvious thing.
Stakeholders want to know when a story will be finished. Is it by Aug 1 or Aug 15? Calculating ideal days might be easier
to get to the date the stakeholder wants to know. But it is like a shortcut and it creates a lot of side effects for the team members.

So I think we gotta stick to the best practises that agile gurus suggest. That is points for a story size and velocity based on points for the team! Just as Ez as it can be :-)

,

12 Comments

ThoughtWorks conference on Scaling Agile

As some of you might know, four of us here in Bangalore went to a conference/seminar at ThoughtWorks on ”Scaling Agile”. For those of you who do not know much about ThoughtWorks, they are a successful company with over 1000 employees in six countries. They are the fore-runners when it comes to Agile project management. ThoughtWorks also sells an Agile project management software called Mingle.

 

During the conference, it was very exciting to see how similar our work framework was to theirs. Does this mean that we are on the right track? Oh yes; not only by following one of the Agile principles of “reach the customer faster” but also by following some of our core values very effectively.

 

Right, below is what ThoughtWorks had to say about how someone whom they call an Iteration Manager should try to establish in his/her team (this role is bundled in the role that Lena and Jojo are doing at present…)

 

Iteration Manager should work toward a professional and accountable work environment. Such environments exhibit proper behaviors and mannerisms, such as the following:

  • Mutual respect is displayed for self, others and customers
  • Successes are celebrated
  • Mistakes are treated as learning experiences

 

Strikingly relevant to what we already have, isn’t it? I will post you this book today.

 

Okay, going back to the conference, below are the key points we learned from there

 

  • Programming is an art and software development is a social activity – Improve the conversation and you improve the software
  • Embrace change – Dare to make a difference
  • Rapid feedback – Develop to make your MUST HAVE work faster. Get rapid feedback from the customer. In our case, UxD and Test
  • Continuous Integration – Check-in your code often. Create a test harness like Unit test and functional test simultaneously
  • Face to face communication is a must – ThoughtWorks does it using video conference, chats, etc
  • Make yourself easily accessible
  • Make dev. Environments close to Production.

 

 

Apart from these, ThoughtWorks stresses on the importance of graphing out our project activities so that the Project Team and the stakeholders can find out the bottlenecks in the project now and then. I do not think that we do it today but they talked about the importance of maintaining charts which can be discussed on a weekly basis. This chart becomes more interesting especially during the retrospectives, if not immediately.

 

It was interesting to see how they keep track of the number of check-ins a day through a graph. At ThoughtWorks they say that they have a general rule that whenever a developer checks in a code, s/he is responsible for the aftermaths. If a bug is found in the recently checked-in code, it’s the developer’s responsibility to see to it that the bug is fixed or the code is rolled back within 5 hours.

 

When it comes to practicality, I would like to jot some things on the Continuous Integration part. I think that we have completely missed out on this part when we moved to the new Harvest model. ThoughtWorks has MOSCOW requirements in the product backlog. When the project is under implementation, the development team discusses the design aspects and implements the most important MUST have ASAP. They check-in their code (they said 20 times a day) to the main branch, and write unit test and functional test simultaneously and make sure the automation test passes really at the beginning. The test and the design team then picks up the task and works with them. Thus overcoming the “continuous waterfall” pitfall in the development cycle. The dev, design and test team work simultaneously on the tasks. Fantastic!!

 

We tried something similar to what they suggest here May sprint and it seems to have worked well for us. But again, we all in our roles need to make ourselves more accessible, else we will end up in the continuous waterfall.

 

Below are what ThoughtWorks thinks are challenges and options to overcome when it comes to scaling Scrum

 

Challenges

Options

Limited face to face

Formal and scheduled communication channels like meetings chats, video conference

Consistent view of big picture

Scrum of Scrums

Lack in clarity of responsibility/ownership

Information radiation

  • Program updates
  • Collaboration tools like Mingle

Decision making

Improve escalation points

Knowledge sharing

Communities and forums

 

Below are the key take-aways from the presentation ThoughtWorks did during the conference.

 

  • Program plan and governance – By governance they mean communication
  • Continuous Integration
  • Trigger points for structural changes – We need to get red hot at things that work less good and burn to improve it ASAP
  • It takes more time to change
  • Focus on Objectives, Principles and ADAPT!

 

 

Oosch! You know what? I think that the next time you guys come down here, we should make a visit to ThoughtWorks. They really have an open, flat, motivated and a smart work environment!

 

 

 

 

 

, ,

3 Comments

Who is a designer?

Sweet copy from campaignmonitor.com

Sweet copy from campaignmonitor.com

It doesnt matter whether you have “designer” written on your business card. If you are reading this blog you are most likely involved in software development – if so, the short and simple answer to the above question should be “YOU BETCHA”.

Why, you might ask, do I make this argument? Well, because I feel that everyone involved in software development should feel, act and respond like a designer. Nobody is excused, nobody should be able to hide behind statements like “heck, I just write the code – what do I know about icons?” There is no excuse for not being a designer. You’re allowed to suck at it though. The minimum level should be that you feel like a sucky designer. Why is this important?

It is important because user experience and aesthetics matter so incredibly much that if you don’t take an interest in it, you should find another job. To sum it up:

Sucking at design craftsmanship is ok! Not taking an active interest in design is inexcusable!

As long as you are actively seeking responses from colleagues or other sources in matters of user experience and aesthetics – you’re doing a great job! Well, at least you’re improving. My point is: you CANNOT sit on your rump and wait for those who actually have “designer” written on their business card to come up with a fantabulous-expicalidocious design. Agile software development does not work like that.  Your team needs to take design decisions based on what is technically possible right now, you need to take coding decisions based on an overall design rationale and you need to make everything look fantastic. And you need to do this just in time. Because if you don’t, somebody else will, somebody smarter than you.

So how do you work as a designer even if you are not a “real” designer? Its easy: you take an active interest in matters of design, challenge all assumptions and you communicate.

And what if you’re a “real” designer – how do you work with all the people around you suddenly claiming to be designers? Same recipe: you take an active interest in coding and/or implementation, challenge all assumptions and communicate!

If your team is laid back, good at their jobs and generally cool and nice people. This is easy. On the other hand, if your team has a few know-it-all schmucks who wont let other’s touch their territory. Fire those and start over with achieving a fantastic, innovative and cool design process where everyone is involved. It’s all about hiring the best and setting them free.

So, to end this little article, here is a short TODO for people who think they can be involved in software development without being designers.

  1. Realise I am a designer.
  2. Make my team realise that I will be a part of the design process whether they like it or not.
  3. Try to stop sucking at design

, ,

No Comments

Hire the best and set them free…

a quote by Quincy Jones that has been used quite frequently throughout this blog; here and here. Now, I would like to elaborate some on this.

I think there is a great secret to learn from this quote. The first part of the quote is quite obvious. Everyone wants to hire the best and most of us are really good at doing this. We even have big recruitment companies that are experts on finding the best of the best that will suite us. But I would like to focus on the part “Set them free”.

Set them free

If you have a business, where success is built on every team member’s effort, and you want to fail; here you have my best tip:

- Hire the best and enslave them. E.g. make them do same repetitive work each day and make them strictly follow company policies. And the worst, shoot down ideas directly.

If you follow this tip, two things could happen. If you really hired the best, this person will realise that he/she isn’t free to use their creativity and will quit the job and choose freedom. Or if they choose to stay, they won’t be the best anymore, all creativity will be lost and you won’t value for your money.

Instead of shooting down ideas, give them a chance. Remember you hired the best! Embrace their creativity! If you want to build a successful business that is built on your employees’ achievements, then you have to simply set them free.

We are all born to be free and in freedom we can and will do amazing things!

Collaboration, shared values, respect, freedom; Embrace and succeed!

, , , , , , , ,

4 Comments

It isn’t Agile because you say so

I have yet to observe a process that wouldn’t benefit from a dash of Agile. Or why not a really healthy dose. From being frowned upon by many in the late 1990:s, it has become mainstream to realize that there’s something really important in the agile message. Whole companies are run with agile values at the core. Like IKEA. Like H&M. (Yeah, I’m from Sweden.) Or Toyota (Lean is very, very similar to agile. I’d say that at the core it’s the same thing.)

While more and more people are trying to relate to the concept of agile, we also run the risk that the meaning is devalued and kidnapped. It’s highest fashion to label yourself Agile. There are several problems with that. If you fool yourself you run the risk of not going at your full potential. Or if it’s just “play pretend” you risk really fooling others and they might not realize for a long while that they could have ran so much faster. And of course, false agile also risks giving the “movement” a bad name it truly doesn’t deserve.

You find lots of people that say they are agile. Yet, when you probe it some it’s clear that it seems to have totally different meaning to many. Like it didn’t matter. But it does matter! Agile is a stance, an attitude, a philosophy, a core value even. It’s something you must comprehend. Something you must give some time to soak your being. Something you must truly believe in before you have the right to use the label. I’m totally sick of hearing people excuse shortsighted moves with a sloppy “we are agile”. That’s wrong in so many ways. Agile is all, 100%, totally and utterly about sustainability, about the long term.

All “casual” agilists out there should be forced to really try an agile process. Why not Scrum? Of course, running Scrum doesn’t make you agile. But you can’t give Scrum a real chance without starting to get an idea about what the concept of agile is about. Then hopefully the casuals will be humble enough to first stop calling themselves agile and then working hard with themselves and their views to really earn the label.

Or maybe they’ll find that it’s not for them. I don’t think agile leaves many people indifferent (given that they given it some thought and started to grasp it). Rather, you either love it or hate it. When the agile values become clear to you there are no longer any gray areas. If you have a strong belief in your fellow human beings you’re likely to find agile being your thing. At the very core of agile there is this strong conviction that most people really want and can contribute. In agile land there’s no room for cynics.

Does your organization want the agile label? Then start with removing all processes that are in place for monitoring that people contribute or are doing their jobs. Install mechanism that make it clear to people what’s expected of them and what they can expect from others. Make each and every process fully transparent. Demand authenticity from everyone, including yourself. Make sure you learn from experience, good, bad, in-between. Yours and others. Don’t save any effort, whatsoever, to enable communication. And keep asking yourself, every day, every breathing moment. Are there some remains, somewhere, of your non-agile past? Hunt them down. Remove them! Ban phrases like “that’s not how we usually do it” and “we’ve already tried that”.

, , , ,

1 Comment