Story points = Complexity points / relative size
One of the ideas many people seem to struggle with in Agile projects is that of Story Points.
In an agile project, the time to implement a story (a feature), is deliberately estimated in a weird unit called story points, rather than in number of hours / days.
The most important thing to remember is that story points do NOT equal units of time. Initially you will naturally find yourself trying to convert story points to days, or estimating in days or hours, and then trying to convert that to story points.
RESIST this temptation! There is a method behind the madness.
- Research has shown that people are better at estimating relative sizes (A - C is twice as far as A - B, Basket X is about 1/3 the weight of Basket Y) than coming up with absolute estimates (A to B is 15km, Basket X is 7.5kg)
- Days are a very subjective unit of measure. Depending on other commitments, your ideal days are very different from mine.
- Estimating relative size is much quicker; and you need less information to get started (you don’t actually have to know how long anything will actually take, just the relative comparisons between different stories)
With a new project its impossible to know how quickly features will be produced. There are just too many variables - learning of the domain & toolset, agreement within the team, stabilizing of work patterns.
What you do is complete a couple of iterations, and then measure how many story points you delivered on average. This then becomes your velocity, which you can use to derive an estimated completion range based on the story points.
Note that with this technique your story points are still valid; as they are just measures of relative size/complexity. The only time you really need to re-estimate story points is when you got the relative size of a story wrong - perhaps it turns out to be much easier to send emails than you thought, or much harder to draw graphs.
June 25, 2008 No Comments
Draconian parking fines, by Camden Council
The quest to make our world a little greener is a worthy challenge, putting one in opposition with seemingly everyone in our modern society.
Case in point - I attended the Geek Kyoto conference in Camden a few weeks back, and rather than drive home on the Friday and then back into London on the Saterday (a round trip of 80 miles), I elected to spend the night in a London hotel. Finding parking overnight was, shall we say, trying, and wildly expensive.
Eventually I found a parking, for which you had to pay between 08:30 & 13:30, and paid the required £10 (!) to park for the first 2 hours. I carefully place the parking reciept on my dashboard, confident of being a law abiding citizen (Observe the clear sign across the road)
When I returned to move the car in 2 hours (maximum parking 2 hours), I was shocked to see that I had been ticketed a whopping £120 for my citizenly efforts. The bay I was in is sign posted as a residents only bay. How ASBOish of me; how could I have missed the residents only sign - its clearly displayed behind a tree! (Look, just above the silver car parked behind me)
Egad - I managed to pay £10 for the pivilege of being fined £120. So much for attempting to reduce my CO2 footprint by driving less!
I’m appealing; lets see what the Camden Council have to say…
June 2, 2008 No Comments
2 Canal Cottages, Tring
Our new house!
June 1, 2008 No Comments
MvcHelper code
Helper code for ASP.NET MVC projects
May 27, 2008 No Comments
Inventions I wish I’d thought of
May 10, 2008 No Comments
Adding a prompt option to Html.Select in ASP.NET MVC
Digging around the source code to the ASP.NET MVC Source Refresh, I discovered a useful extension to the Html.Select helper method.
Say you want a select dropdown with a NULL case, which instructs the user to make a selection.
Eg: You want your first option to be: ==Select==
To do so, call Html.Select with a htmlAttribute of prompt=”==Select==”
Like:
<%=Html.Select((”Quote.ClientId”), ViewData.Clients, “Name”,”Id”, ViewData.Quote.ClientId,0,false,new {prompt=”==Select==”})%>
May 5, 2008 No Comments
alt.vs.team.system
Some thoughts on alternatives to the Visual Studio Team System for building webapps:
- Requirement gathering
- I like Axure (axure.com) for HTML prototyping ideas, and Visio is okay for architecture diagrams
- Code editing
- VS Pro + Resharper is pretty good. One of the best “step though debuggers” I’ve used
- Source control
- Subversion + TortoiseSVN. Any played with Git? Is there a good Git GUI tool?
- Continuous Integration
- Jetbrains TeamCity
- Issue tracking / project website
- I quite like Trac - wiki, milestones, good SVN integration. Have to maintain Python app though.
- O/R mapper
- NHibernate? DataSets? LINQtoSQL? What do you use?
- TDD / BDD
- ASP.NET MVC looks like its going in the right direction; but still early days
- nUnit / mbUnit / VS built-in? Is there anything that comes close to rSpec in the Rails world for elegance?
- Mocking frameworks? Moq has a nice syntax - most of the others seem overly complex (record/replay?!)
- TestRunner? www.gallio.org looks like a good start, but still early days
- Functional testing? Selenium? WatiN?
- Continuous Integration server? Is there anything prettier than CruiseControl?
- Load testing?
- Logging
- Log4Net>
- Monitoring
- Current favourite is Webperform
- Support email handing
- SupportSuite from QualityUnit has a nice Gmail style interface + KB
May 4, 2008 No Comments
CI for Ruby
http://cerberus.rubyforge.org/
A CU build reports plugin
http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-go…
RCov - test covereage reports
http://eigenclass.org/hiki.rb?rcov
November 13, 2007 No Comments
Trac & Nginx on Ubuntu Feisty
Install trac
apt-get install trac python-mysqldb
Update ClearSilver
https://bugs.launchpad.net/ubuntu/+source/clearsilver/+bug/114930
apt-get install python-dev
wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
tar xvzf clearsilver-0.10.5.tar.gz
cd clearsilver-0.10.5/
./configure –disable-wdb –disable-compression –disable-perl –with-python=$(which python)
make
cd python
cp -i neo_cgi.so /usr/lib/python2.5/site-packages/neo_cgi.so
Trac Environments Directory
You’ll need a directory for Trac’s environments to live that should be writable by the default tracd user:
sudo mkdir /var/lib/trac
sudo chgrp users /var/lib/trac
Create a MySQL DB
Create a new database (trac) and user with full rights to that DB (trac). Make sure the database character set is latin1_bin (UTF8 will cause key length problems; throwing “Specified key was too long; max key length is 1000 bytes” errors during trac setup)
Your connection string will be:
mysql://trac:trac@hostname:port/databasename
Configure Trac
trac-admin /var/lib/trac initenv
Follow the instructions.
Correct locale errors
If you get locale errors:
apt-get install localeconf
localedef -i en_US -c -f UTF-8 en_US.UTF-8
Themes
http://trac-hacks.org/wiki/TracMentalaxisTheme
Plugins
http://trac-hacks.org
November 12, 2007 No Comments
Easy Rails app backup to S3 via Rake - code, SVN + DB
Adam Green has written a brilliant Rake task to backup your Rails App code, SVN + DB
Here is the original announcement: http://www.rubyinside.com/advent2006/15-s3rake.html
There is an updated version at: http://www.slingshothosting.com/support/backups
Watch out for the upcoming rubyforge.org project.
Thanks Adam!
November 3, 2007 No Comments































