There will always be

  • There will always be something to complain about
  • There will always be something you still have to clean up
  • There will always be things on your todo list
  • There will always be things you forget
  • There will always be things you learn
  • There will always be books you still want to read
  • There will always be the hope of things improving in the future

“I’m a software developer, but I’m very bad at estimating a task’s workload. What can I do to improve on that?”

There are a couple of things that you might try, at different points in the process of developing software, or any complex activity come to that:

Task Breakdown

It is possibly (likely even) that you are not breaking your task down into subtasks. Eg if you have to add a new text field to a screen, you might be saying ‘oh, maybe a couple of hours’ to yourself when estimating. However, if you start to break it down you might end up with a list a bit like this:

  1. Modify database to add new field -1h
  2. Modify stored procedure to get new field from DB – 1h
  3. Modify stored procedure to set new field in DB – 1h
  4. Update repository code to retrieve new field from 2 above – 1h
  5. Update repository code to provide new field to 2 above – 1h
  6. Modify business objects to support new field – 2h
  7. Modify view code to display new field from business object – 1h:30
  8. Modify controller to update business object from view code – 1h.

So immediately you can start to see that your couple of hours is looking a bit tight, and you have not even added any tasks for the stuff you need like testing, code reviews, review with the business analyst etc.

And what about all of the stuff that we do as developers that does not contribute to the codebase directly?

  • Updating the task in task management system
  • Creating code branches
  • Merging changes
  • Running remote builds
  • Regression testing

Task Review

When you have a breakdown into sub-tasks like the above, you can start to record a narrative against the sub-tasks to record how long each took, especially stuff that you had not planned to have to do. Eg “table definition is in repository xxxx, took 45 minutes to track it down, 15 minutes to review with tech lead”.

When you have done a few tasks with a decent task breakdown as above you can start to get a feel for how long things take. Eg you might discover that changing a stored procedure takes a couple of hours to do the work but that typically another hour is spent on non-functional stuff like finding it in the source code base, reviewing it to understand how it works, cross-checking tables etc. All of this takes time and should be used to feed back into your estimates next time.

Finally you can take your detailed tasks narrative to see where you are actually spending time and how much. You can then use that to influence your subsequent estimates.

Working with MongoDB and UK postcodes part 1: UK Post Codes

An important part of my next project involves letting people indicate whereabouts they are, but without disclosing detailed location information until later. In the UK, we have Post codes which are alphanumeric codes between five and eight characters long which broadly identify roughly where a building is. They are composed of two parts, the outward code and the inward code separated by a single space.Examples: IV51 9XB or SE22 8BS.

There are about 3000 outward codes, and while many cover a fairly small area especially in cities, others like IV51 cover several hundred square miles. Generally they are good enough for my purpose, and where the outward code isn’t specific enough I will use the first part of the inward code as well.

My plan is to use the postcode information here to identify the centre of each outward code and use that as a proxy for wherever the user is located. From that I can calculate a rough distance to other users. Where two users share an outward code, I can identify that fact and report it to the user doing the search.

Next time: Importing the data into MongoDB.

Bloody Traffic!

I guess writing a blog post about traffic or planning, (or traffic and planning even!), could mark the descent into middle-aged senescence, but the state of planning by North Yorkshire County Council’s roads department is deserving of a blog rant.

Here in Harrogate, they have been responsible for the design of a new road junction, here:

The two lane turn right at Hookstone Rd onto the A61 Northbound is a prime example of a bad and probably dangerous junction. Turning south from Leadhall Lane feels scary even in large car as it is impossible to determine if it is safe to make the turn, so instead you hold back which results in all the traffic leaving Leadhall Lane being blocked. Why NYCC decided to deviate from the usual pattern of having a right-turn lane and a straight-on-or-left lane is not something I can determine. I suspect that the first serious accident at this junction will result in NYCC being on the receiving end of a court case when the defence argues that it is the junction at fault rather than a driver.

In the past couple of weeks I have twice seen people heading north on the A61 stopping because they are confused by the red light that controls the turn-right traffic. Most days there is one car stranded ahead of the stop line in the turn-right lane. Once, there were two, preventing east-west traffic.

The left turn into Leadhall Lane is difficult for the school buses going to Rossett and Asheville – I’ve seen one have to reverse back, blocking both lanes as it attempts the corner. This is lamentably bad and even a few brief consultation with bus companies would have shown how poorly laid out the entire thing is.

Update: Car drivers coming from Hookstone Road are starting to use the turn-left only lane as a straight-ahead lane. Illegal but predicable.


Many changes

In no particular order

* I’m not maintaining a web site on at the moment.
* All the Groove related stuff should be considered to be of historical value only
* I got a new job at the British Library, leading an Agile team that builds the systems that import the digital media (eJournals, eBooks, web archives etc) into the Digital Library System. C#, SQL Server, MSMQ being the chief skills.

Scratch Day at Rossett School

Son #1 and I went to this event a couple of weeks ago.

Shut down or restart?

Just found this report from The Royal Society: Shut down or restart? The way forward for computing in UK schools. Looks relevant.

“The New Latin”

Back to Michael Gove for a bit:

While many teachers detest him, he’s getting a sympathetic press from the IT sector. Joshua Lachkovic says Michael Gove knows computers are critical.

I think the New Latin idea has misfired, and misses the key point: If you can’t program, then you’re forced to rely on those that can.

And finally, thanks, Verity!

Hello world – time for a revolution!

Is there really a revolution in ICT for schools in the offing? Maybe, maybe not. Lets look at some of the evidence.

Given that the new online world is being transformed by creative technology companies like Facebook, Twitter, Google and video games companies, it seems incredible that there is an absence of computer programming in schools.

– Ian Livingstone OBE, Life President of Eidos and one of the UK’s founding fathers of interactive entertainment.

In July 2010, Minister for Culture, Communications and the Creative Industries Ed Vaizey asked Ian Livingstone and Alex Hope (Managing Director and Co-founder of Double Negative Ltd, the UK’s largest film-only VFX company) to review the skills needs of the UK’s video games and visual effects industries and to make practical recommendations for how these needs can be met. They published their report in February 2011.

More recently the media scrum round the launch of the minimal computer called the Raspberry Pi seems to add to the feeling that the there might be a change in the way ICT is taught in our schools.

The launch of this single-board computer has the potential to trigger a renaissance in home programming by children. With a price-point of just £22, it is an affordable way to give the coding bug to a generation that are typically seen as hard to prise from their gadgets, but who often have little or no knowledge of what makes those gadgets tick

Even the government has noticed. In Februray 2012, Michael Gove (love him or loathe him). said

“Imagine the dramatic change which could be possible in just a few years, once we remove the roadblock of the existing ICT curriculum. Instead of children bored out of their minds being taught how to use Word and Excel by bored teachers, we could have 11-year-olds able to write simple 2D computer animations using an MIT tool called Scratch.”

Third times a charm, they say. I say it’s time for a change – less Powerpoint, more programming.


This blog has moved to