Monday, February 2, 2015

Task finish late more often than they finish early, why?

"Failure to plan is planning to fail"     -  Winston Churchill. 
"It is better to be roughly right than precisely wrong." - John Meynard Keynes 

Planning should enable us to take right and reliable decision. Don't get me wrong, I am not asking for precise estimation.
I strongly believe in quick and rough estimation which evolves as time pass through.

In this post, I am leaning more towards what impact, human behavior and type of work we do, make on our rough estimated number.

Student Syndrome or waiting till last responsible moment ;)

Student Syndrome, refers to waiting to start a task until the last possible moment that does not preclude on time finish. (This is human nature and very difficult to change.) Lets take same feature A example. As a developer, I thought task X should not take more than 3 days but I kept one day buffer and said 4 days.

When we think we always think like below: Work (3 days) + local Buffer (1 day)

But while executing we feel very optimistic to finish the task in 3 days and we start with cleaning technical debt, preparing some flow for project or documents etc.

We behave reverse i.e. Local Buffer (1 day) + Work ( 3 days)

Finally I started my work and my work took 4 days. I ended up delaying the schedule vs. finishing on time. I had local buffer but it did not help. Therefore having shorter iteration in development cycle might help in keeping the focus vs. big iteration.


Lateness passed down (Central Limit theorem does not apply for software)

Software tasks are mostly dependent upon each other, hence the impact of delay of one task may cause delay in other another too. Let me elaborate what I mean by this. Lets estimate a feature A, which has 3 tasks X, Y, Z.  Task X would take 4 days to finish. Y and Z subsequently would take 2 days each. So initial estimate for feature A is 8 days.

For some technical reason task A took 5 days. Now obvious question would be to think what impact would it have on tasks Y and Z? Developers would mostly say other tasks would finish in 2 days each, since I learnt a lot while finishing task X.

You might think that our new estimate for feature A is 10 days vs. 8 days.  If the tasks in feature A are independent to each other, than this new estimate might be good but in most cases if task X took 1 days longer there are possibilities that task Y and Z might take longer too.  Therefore for any revision, look for inter-dependency within tasks for more accurate estimates.  

my experience
Manisha







Tuesday, January 20, 2015

Scrum master committing to master

One of my colleague commented this and somehow this sentence walked with me home. It definitely made me ponder more on this topic. Some of my random thoughts

People, I meet most of the time, who are process advocate have little connection with software but they know how to come up with a process for development team. It makes me wonder how can you come up with a process for something you have never experienced. No offense to any of gurus, it is truly my view. 

To me a process is dependent upon:
1) your organization, 
2) team, 
3) technology, 
4) project and 
5) never the less upon culture. 

With so many variables how can one process definition be sufficient. My confusion does not end here. Lets look at the other side of coin. We have hundreds of processes available. Each process has flavors and your can mix and match process too. i.e Scrumban, Scrumlite, proto-kanban etc etc.. 
Question is how I select which process would be best to start with?
1) I usually like to start with understanding my variables. Once I have understanding about my variables I move next.
2) I go on to understand which values are most important for my organization and team. 
3) My hunt further continues in process area, which process would help me in delivering those values in less friction way. 

Now to do any of the above you really need to know and understand developer's heartbeat. Things which can go wrong during development process. Knowing developers instincts. So being a process advocate who can code would not only give you above advantages but would also let you come close to the team, will make your more reliable and will make you a good leader which your team might look forward too.

More importantly, which I feel missing in any process is. how to keep your team motivated and happy. 

A happy team can do miracles. Any process will fail if you don't have right people in your team. So what is more important process or team. In my perspective it's team. If your team is nice and you have people with right mindset they can make any process work. Other way round seems very very difficult to me....

Thoughts
Manisha



Wednesday, December 10, 2014

Think outside Scrum or Kanban

Today was that day again when I ended up moderating Kanban vs. Scrum process meeting. Honestly was deep into one code refactoring and meeting reminder popup awakened me. Had to quickly gather up myself and started thinking. Why teams always choose one process over other and never ask or understand "what process has to offer them".

Having experience with multiple teams and process. I kind of hate and love Scrum and Kanban. People just like to blame the process vs. putting effort into understanding them. Scrum does not seems to working, lets try kanban.

I wanted them to think out of the box and they keep coming back to Kanban. It's like, I heard it, I saw it and I know I want it. What would be world without waterfall, RUP, Scrum, Safe or Kanban or Lean Startup models.

I was being asked this question long long back and it stuck in my head like a tumor. I myself don't have best answer and always start to think what is a process first before thinking how it can benefit us?

As per wikipedia, it is a series of events to produce a result. In our IT world we can say process helps us to produce software. But how one process does it where as we have each company solving different problems with different set of behaviors in one organization. It's getting late but will think for my new process. Manum may be which will solve next generation problem. May be good starting point would be think of problems which we want our process to solve and pick and choose goodness from all around.

Always like comments
Manisha

Monday, December 1, 2014

Velocity driven Planning vs. Commitment Driven Planning

In my earlier blog, I explained how we should do commitment driven planning. I thought it would be good idea to share why I prefer Commitment Driven Planning.

I would suggest if you don't have experience then try them both yourself. I have my preference toward Commitment Driven Planning.

The biggest issue I face with velocity driven planning, is being predictable. Velocity is volatile. It moves around from iteration to iteration. It bounces around. Again it lot depends upon what your team is doing? Are they developing as well as supporting software which is under constant change. Because incase of less challenging environment you might be able to predict them but in average team environment it is very taxing job.

If I have to take average of my team's last 6 iteration velocity which ranges from 26 to 90 story points. The average is around 35 story points but can we plan 7th iteration with 35 points, is this right amount of work? I tried scheduling work based on our average and failed. I tried doing and taking same approach for next three iteration and failed..

I could not predict the number of story points my team might deliver. Simply because there were lots of unplanned work keeping coming along our way and also team did not think about technical design that well in advance and we failed for numerous other reasons.

Velocity depends upon lots of factor and I think it's variability create more issues vs. helping us. I would love to let my team work at their best potential without thinking about the velocity. Velocity is valuable over long term i.e like building customer profile may take 8 sprints on an average. My team is producing at 35 story points on average but that does not mean they have to product 35 story points every sprint. Over the period of 10 sprint they will produce on average of 350 story points but bringing this much work on each sprint based on this average would not work.

We should always remember the purpose of sprint planning. The purpose of sprint planning is to commit to a set of product backlog items. The purpose is not to come up with the list of task or hours but tasks and estimates are a tools for determining what we can commit to. 

As usual let me know your feedback or if are doing it differently in your team.

Thanks
Manisha

Commitment driven Planning: my favorite

I have worked with multiple teams and each team have their ways to estimate and plan the work in sprint. We can plan our sprint/iteration in two ways.

1) Velocity Driven Planning (VDP)
2) Commitment Driven Planning (CDP)

We all have fairly good idea about velocity driven planning but very few of us do commitment driven planning. My team loves it, so thought of sharing our process.

To start commitment driven planning, team estimate their capacity by simply taking a guess of how many hours of plannable time each individual would be able to devote in the sprint. In subsequent sprint team adjust their time by adjusting the plannable time up or down based on their experience.

What is Plan-able time? 

We all know that if we have to be good corporate citizen, we have to attend some meetings or reply to some HR emails or support our organization ecosystem. This is Corporate Overhead and varies from corporate to corporate. First think how much corporate overhead each individual have. 

The left over should be considered your productive time. Remember productive time may not be always working on planned things

Not working on planned thing is not slack or padding or buffer but working on things which can or may occur during a sprint like, production outage, blocker bugs etc. We don't know how this time would be used but team has all good intention to pull work incase Unplanned time is not used. It is a block to accommodate emergency. Look at your sprint and calculate how much time would you need to keep aside for these unplanned activities. 

Left over time is hopefully your plannable time. This time can differ from sprint to sprint and team to team. One sprint they might have lots of support issues but another sprint it might end up pulling more features. Over the period of time it will average itself out.

Once team have the fair understanding about their capacity then team looks at the prioritize backlog. Team will commit to item by item in the backlog. They look at an item, break them into tasks and ask "Can we commit to this". If yes repeat the same process for next item. 

I prefer Commitment Driven planning because team tends to do three things: planning, technical design discussion and product design discussion vs. just planning.

Would love to hear your experience.
Manisha

***Mastery is capability in context 


Process for Art vs. Commodity

I am thinking a lot about process of late. People talk about Scrum, Kanban , XP blah blah. We all agree that none of the process is perfect to solve all your problem. Mostly everybody talk about organization culture, context and business problem influences your process model.

I am not denying about their importance but I strongly believe there is one more factor which is equally important if not more.

Your engineering team. How team feels about writing code? do they feel it as form of art ( I know it's very subjective) or as bunch of functions to complete a business objective? We all write software for business, government or other institution and we know customer only cares about FUNCTIONS.

Question is WHAT YOUR TEAM CARES ABOUT? How they feel about code? Understanding them and their need will be base of any process you put around them.

To my experience if you have a team which treats code as commodity would be happy, following any well define process. Whereas passionate people, who would like to be creative, would prefer little unstructured but responsible system.

May be their own customized personalized Kanban or LeanBan or ScrumBan. First understand the team and then define the process which fits their developer personality.

In my organization one team was very reluctant following any process so we tailored Scrum to their need.

I explained them what Scrum or Kanban or Drum Rope etc process have to offer us. Advantages and disadvantaged of each of them. Then we discussed our issues which we have presently and things my team is good at.

We all agreed that we need something which will let us keep our goodness and will fix our short comings . We designed our own process and my team is loving the process around their need vs. making them process slaves.

I know, I will upset few scrum gurus but my team is happy. To me this is bring agility to process.

Thoughts?
Manisha

Wednesday, October 1, 2014

Confluence: How to make a page available without signup

I wanted to make a page available to all the employees on confluence without making it publicly available on internet. 

I did not want to add hundreds of account on confluence too. So read little bit and added anonymous user to my space and gave that user a view access. Hoping problem would be solved. After a while realized that I made it available for entire world. 

The started reading more about it and realized that there is a signup option where you can let user access the page without creating the account for them and can also restrict the usage to specific domain only. Look at below screen shot for exact location.


I wanted to write it so don't forget in future :).
Manisha