I'm currently taking stock of my own weaknesses as a developer and one of the areas I've constantly had trouble with (that I think has hurt me professionally) is in estimating how long it will take me to complete a task.<p>I've never quite been sure how to overcome this and would love to hear from some developers on how they've tackled this problem in themselves and from managers on what you really expect from your devs in this area.<p>I know this is a multi-faceted issue; for me personally I think there's a few things at play:<p>- I can be easily distracted, which I tend not to account for in my estimates (which assume that fascinating time-holes like HN and Stack Overflow don't exist!). I know I need to work on this.<p>- When I think about it, despite being a dev for many years now, I don't really have a trove of historical data to evaluate my own performance against.<p>- I still have this mental roadblock that estimating often just feels like 'guessing' and I'm just really uncomfortable doing it. It feels more like trying to set myself a deadline and then compress the work into it, rather than actually determining how long the work will take.<p>- I feel pressured to give best-case estimates, especially when we're doing them in a Scrum where more senior devs disagree.<p>I really want to be a developer that can be trusted and relied upon and I think that my under-estimating is one thing that hurts me with regards to this.<p>So, fellow HN'ers, how have you tackled this?
+1 to smaller tasks. You gotta break it down.<p>I've also stopped estimating. When the tasks are kinda vague and open the estimates are just wrong.<p>I've been trying to follow patterns in the Toyota Production System and those from Personal Kanban (books). If I do happen to estimate (oh, that's like 2 days) its less of a deal, I'm just blocked till done.<p>Try to keep the team either full (3wip) with 1 blocker. That's what a moving pipe looks like to me.
In scrum you are traditionally not meant to give time based estimates(it doesn't work). You use story points. Humans are bad at time estimates, everyone is.<p>Using story points, you measure how complex a story is, rather than time. A small spelling change, vs massive re-architecture. You do things in general abstract terms, rather than hard deadline, where you get fired if you don't meet it.<p>A added advantage of story points is that is abstract, it doesn't care if you 6 hours out. So you don't feel pressured to lower it.<p>You then look at previous sprints and see how many large/small tasks you can complete in a sprint.<p>A lot companies try to use time estimates to increase productivity, and get developers commit to releasing by a certain date. It doesn't work, it leads to rushed buggy code.<p>Its sounds like company is one that doesn't really understand agile/scrum, and is trying to use estimates as a whip to get you to work faster.<p>Companies need to stop using time estimates as a whip, and focus more on methods that are actually generally accurate, and provide useful information for planning.
Split work into small enough tasks that they are all max 1 day if at all possible, meaning that everybody on the team knows what should be done and can just "go-go-go". Much easier to estimate.<p>Always remind yourself and your team about any work ouside the core functionality being implemented. Database migrations, deployment costs, documentation needs, unit- and functional tests (both updates and new), technical debt that needs to be fixed now, and if there are other risks like hitting resource limits or missing performance targets.<p>Keep track of actual outcome vs estimate. What was the main reason it took longer? Best done if working close to co-workers on tasks, making progress or lack of it associated with the team and not individuals, where it could easily become a blame game.<p>Be aware of how much distractions you have from doing actual development. Meetings, urgent bug fixes or help with other problems in production, customer contact, supporting sales, etc.
I wrote up last month how I became good at estimating time.<p><a href="http://rachelandrew.co.uk/archives/2014/06/20/how-to-become-good-at-estimating-time/" rel="nofollow">http://rachelandrew.co.uk/archives/2014/06/20/how-to-become-...</a><p>TL:DR you need to start tracking your time and noting when your estimates were incorrect. Fairly quickly you get to a point where you can see the places you tend to make a poor estimate and adjust them.