Friday, May 31, 2013

Agile Manifesto: value individuals over process.


Manifesto for Agile Software Development starts with a very interesting notion that for better ways of developing software it is important to value
Individuals and interactions over processes and tools.

Seems simple enough: people should always be more important than tools, if the industry hopes to harness the benefits of individuals’ knowledge, creativity, and commitment.  

However, Agile methodology is largely about process. SCRUM, a popular Agile framework, requires very tight adherence to its many processes and ceremonies.  Other agile approaches are also about process – iterative process, light-weight process, but a process nevertheless.   No Agile book recommends letting the individuals interact freely, with no structure or process to guide them.   

The idea of valuing the individuals over the process means that a process is necessary – but the actual process used is continuously tailored to the individuals involved. The value of the process is determined by how well it serves the goal of successfully delivering value to the client, and the needs of the Agile team. Any measure intrinsic to the process itself is largely irrelevant.

Individuals and interactions emerge the process, just like the team emerges the product – bit by bit, feature by feature, continuously improving the understanding of what works, and what fits the particular project and the group.    


Sunday, May 19, 2013

Optimize for value, not busyness or resource utilization

AgileDotNet@Houston 2013
Recently, in several different project conversations, there surfaced an amazing argument.   The exchange went something like this:

-          We need to do X, Y and Z, since these are most valuable, risky and fundamental things for the project.   Once we complete X, Y and Z, we’ll be able to make other important decisions and move on to the following priorities.  
-          But doing X, Y and Z only requires XX people. Our team is XZ people.  We need to pick something else, to make sure everyone is busy. 

There is value in doing the best known and most important pieces now, and there is value in postponing decisions until the last responsible moment.  There is no value in making more people busy. 

Entry-level microeconomics courses offer this example: more chefs in the kitchen allows for more pies cooked, but only up to a point.  After that, adding people actually reduces productivity.

X axis: number of people on the team
Y axis: overall productivity of the team, number of widgets per time period

The concern is overall productivity of the team, measured in value delivered to the customer.  Number of people and working hours is only important if it is too high. People-hours metric is completely irrelevant when it is lower than certain allowed maximum.

If X, Y and Z are the most and only valuable items to work on right now, that is what the team should work on, and nothing else.  People, whose skills are not needed at this point in the project, can go home, learn some new skills, provide peer review to others, work on setting up infrastructure, etc.. The important part is to optimize for the project value, and not for resource utilization.