Do you have too many big balls?

Managing a software development team can be a difficult task when everything is moving along exactly as expected. When you add in the paradigm shift of Agile Software Development with Scrum , management doesn’t always have the same insights into what makes up an efficient use of a development team’s time. For the rest of this post, lets assume that we are working with a 2 week sprint, with the first day half-used for sprint planning, and the last day half used for the sprint retrospective.

It seems that the whole world thinks about time in a strictly linear perspective, aka, I did task x from 10:00AM until 11:00AM. While this may work when you are recording events that have occurred in the past, it often does not tell the real story when you are forecasting how much time a particular task or story will take.

When in a sprint planning session, some managers or scrum masters insist on adding stories or tasks to a sprint until they reach this “magical” amount of story points that the velocity of the team has indicated should be a realistic amount of work for a sprint. Unfortunately, when simply taking the top x tasks off the top of the list of items that are ready to work, failing to take into account the composition of the types and difficulty of those tasks can adversely impact the amount of story points that can be completed in a sprint.

Instead of thinking of time as linear, for the purpose of sprint planning, it is helpful to think of time as being a three-dimensional column. A single sprint would be represented by a standard 1 gallon water pitcher, and the stories or tasks to be addressed during the sprint can be represented by balls of various diameters based on the story points assigned each story. Lets assume that the average velocity for the team is 120 story points, and we are using the Fibonnacci sequence (1,2,3,5,8,13,21) as the valid story points for any story in a sprint, and the story point for a story is proportional to the size of the ball representing the story. Now, during sprint planning, the idea is to get as many story points complete during the sprint as possible, which would mean we could either take on 120 of the 1 point stories, 6 of the 21 point stories, or some combination of all sized story points.

The thing to remember about assigning story points to stories is that they are an approximation of the relative amount of effort required to complete a task.

If you were to simply add up the number of points you would see that any combination would be equally as desirable as your sum comes up close to the total desired number of story points. However, when you think of a sprint as a pitcher, and stories as balls, it becomes obvious fairly quickly that you will never be able to fill all of the space between the spheres. However, by mixing the sizes of the balls, similar to the way tightly-packed clay soil mixes various particle sizes, you can squeeze out the empty space in the sprint, ultimately allowing the team to complete more story points than their velocity might suggest.

The thing to remember about assigning story points to stories is that they are an approximation of the relative amount of effort required to complete a task. As a result, the larger the number of story points required to complete a task, the more uncertainty there is in the estimate of the effort required. Thus, when developers run across stories that they are unsure about how to resolve, they should be estimated with a higher number of story points than a similarly scoped story that has less uncertainty. Many times larger stories are assigned 21 points and added into sprints without realizing that that will be a corresponding drop in overall velocity for the sprint due to the added complexity of the high story point story.

In previous positions, management would pressure the development team into including 3 or 4 of the 21 point stories into a single 120 story point sprint, expecting everything to be completed at the end of those two weeks. Unfortunately they did not heed the advice of the team, and were completely shocked when the team did not complete all of the story points for the sprint.

The first issue is that in Agile Development, management does not dictate exactly what stories are to be addressed during a given sprint. It should only provide the priority of the tasks, and the development team should resolve stories as times allows in the sprint based upon the priority.

Not to belabor the point, but with these large-effort stories, many times the man-hours to story-point ratio is much higher than it would be for a story with fewer story points simply due to the complexity inherent in the higher point task. An ideal sprint would be loaded with stories of all different story points, with at most 1 or 2 high story point stories per sprint.

comments powered by Disqus

Related Posts

AddThis Can Cause Your Site To Not Load

Over the last few days, I have run across quite a few websites that seem to never finish loading. After waiting for 20 seconds or more, I give up, realizing that whatever content was on the site wasn’t worth it anymore for me to stare at a blank white browser until it loaded however much longer. Unfortunately for those websites, they are losing traffic that they will never get back.

Read More

The Easiest Way to Create A Solution That Works

The easiest way to create a solution that works…is to do it right the first time. Yes, this is a bit of a cop-out, but it turns out to be an important factor to keep in mind when you are tempted to come up with a quick and dirty solution for a problem that does not follow established best practices and is likely to have code quality issues later. I have run across many sections of code that I or other developers have written in the past that we thought were “good enough” at the time it was written, yet, I was revisiting the code because we discovered a bug in it.

Read More

Write Software for People, Not Computers

Throughout a normal day, I end up reading a lot of information about current issues in technology, and today is no different. There was a debate raging about whether or not high-level math was required for programmers that was sparked by this article by Sarah Mei Programming is not math . While it is an interesting topic, and, surprisingly, I mostly agree with Sarah on this issue, that is not the most important portion of her post.

Read More