Skip to main content

About Estimation

Recycling an article I wrote in French in 2010.

Following endless estimation sessions in the project I am working on, I have come to ask myself some questions about this practice.

Why do we estimate? I think an estimation session should have two purposes.
  • To share a common understanding of upcoming stories.
  • To estimate upcoming work in order to plan the next steps and monitor the evolution of the project.
Who should attend the estimation session? Anyone who can clarify upcoming stories and anyone who will carry these stories to completion.

To improve your estimation session, you can try the following: divide the estimation session into two stages.
  1. Understanding upcoming stories.
  2. Estimating the work to be done.
Understanding upcoming stories through discussion among project participants is the highlight of an estimation session. The shared vision emerging from these exchanges will facilitate future communications.

Estimating should be more relevant and should be done faster once the stories are well understood. To further facilitate the process, I like to do the following:
  1. Print the titles of the stories to estimate on cards.
  2. Order and group these cards on a table depending on their evaluated complexities.
  3. Associate each groups with an estimate.
And do not forget that an estimate is "An approximate calculation or judgment of the value, number, quantity, or extent of something".

Recommended reading: http://martinfowler.com/bliki/PurposeOfEstimation.html

Comments

Popular posts from this blog

IntelliJ IDEA not starting: Initial heap size set to a larger value than the maximum heap size

IntelliJ IDEA didn't want to start this morning. Got the following error when trying to start it from a shell: Error occurred during initialization of VM Initial heap size set to a larger value than the maximum heap size What happened is that IntelliJ IDEA loaded the JVM Options from the new custom vmoptions file in the config directory. On Windows: %APPDATA%\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.vmoptions On macOs: ~/Library/Application Support/JetBrains/IntelliJIdea2020.1/idea.vmoptions This file was not updated properly when I updated IntellIJ IDEA. It contained: -Xms4g -Xmx2048m Fixed the issue by editing this file: -Xms4g -Xmx4g Source: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360004701620-idea-vmoptions-not-used-by-default  

Pair Programming good practices from my experience

Get the best hardware you can .  Saving on hardware is stupid . One big screen is better than two . It is easier to look at the same thing .  Always talk out loud what you think . Your pair cannot read your mind . Switch roles frequently . At least every 25 minutes . It helps the pair stay focused. Take breaks . A day of pair programming can be exhausting! Use Test Driven Development . It helps you keep track of what your doing. It can improve the quality of your code. But do not forget the goal which is code that works, not test coverage . Recommended readings: http://www.extremeprogramming.org/rules/pair.html http://guide.agilealliance.org/guide/pairing.html http://www.wikihow.com/Pair-Program http://blog.xebia.com/2010/05/09/practical-styles-of-pair-programming

How to mavenify a Play 2 application

This article is for developers who want to develop web-apps with Play 2 Framework but are required to integrate these new web-apps in an existing build process based on Maven . Lucky you, someone already started a project to do this: play2-maven-plugin . Unfortunately, this Maven plugin does not support hot reloading yet, which makes the development process painful. To make it short, you still need SBT to enjoy Play 2 hot reloading feature... but you do not want to have to maintain both Maven and SBT configurations. The trick is to configure SBT from Maven pom files with sbt-pom-reader . This is how you need to configure your play2-maven project: <my-maven-project>/ pom.xml <- Your maven build build.sbt <- the sbt Play 2 configuration project/ build.properties <- the sbt version specification build.scala <- the sbt build definition plugins.sbt <- the sbt plugin configuration ...