-1

I am wondering, how "real" work day (7-8 hours) relates to "engineer hours" term used in estimation of the time necessary for completion of some task. I think that estimated effort in EH (if correctly estimated) cannot be simply translated into work days by dividing with 8, and that effective work day of a programmer is shorter than the time he spends in the building in which he works. This can lead to big errors in estimates when estimating small chunks of tasks (i.e. what is scope of one iteration in SCRUM) and when there are no best/worst case estimates, but planning is done based on individual task estimates done by programmers. When programmers need to estimate time necessary to do some individual tasks, they usually estimate the time from the moment they start working on it to the moment they complete it. Needless to say, it is insane to expect that someone will do 4 tasks of 2 hours each in one day.

I would like to know what are best practices in successful companies for relating effective time vs. time spent "at work" and are there some books or researches which estimate what is average time programmer spend working (focused on the tasks at hand), not doing other activities which are not included into estimate, like reading/writing mails (except ones included in estimate, if it is support task or similar), brainstorming, meeting, drinking coffee, estimating tasks and updating status in bug/task tracking tool.

If there are no books or researches, any links to articles about this issue by respected members of community will be of help also as I couldn't find any, these keywords are too generic.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Goran Obradovic
  • 8,951
  • 9
  • 50
  • 79
  • 1
    I'm not sure about this, but you might have better luck posting this at http://programmers.stackexchange.com/ – RustyTheBoyRobot Oct 05 '11 at 19:12
  • Yeah, I was thinking about that, but there are all theoreticians there, I wanted answer from experienced professional. – Goran Obradovic Oct 05 '11 at 19:26
  • 1
    I'm voting to close this question as off-topic because it is not about programming. – Vadim Kotov Oct 23 '17 at 08:37
  • @VadimKotov we are on StackOverflow, not on https://softwareengineering.stackexchange.com/ Please check https://stackoverflow.com/help/on-topic, this is under "a practical, answerable problem that is unique to software development" – Goran Obradovic Oct 23 '17 at 11:52
  • @GoranObradovic I think this belongs to Software Engineering SE, because your problem is not "answerable" in terms of Stack Overflow (like debugging some code, etc). These types of questions tend to gather opinions, that are not necessarily can help you, it is not as objective as an example of code that helps to solve programming issue. Please take a look a [this answer](https://meta.stackoverflow.com/questions/343829/is-stack-overflow-an-appropriate-website-to-ask-about-project-management-issues/343841#343841) – Vadim Kotov Oct 23 '17 at 12:03
  • @GoranObradovic Also, you were asking for books/articles/researches/best practices, so your question can be considered off-topic ("Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam" from the link you provided) – Vadim Kotov Oct 23 '17 at 12:04
  • My question was answered in satisfactory way. It is purely professional/practical issue encountered at some point of my career, not theoretical thing that I needed help with in college. It gave me answer that I was looking for, and helped me improve my practical skills and advance my career. This is exactly the purpose I was using this site for. And there were no spam answers. Anyway, SO is community driven, maybe community changed in these 5 years so much that they will actually vote for that now :) – Goran Obradovic Oct 23 '17 at 12:35

3 Answers3

3

There are two things that we do when we program:

  • Things which we've done that are similar to what's gone before, and
  • new things that we've never done before.

When we're repeating similar things, estimating - whether in points of relative effort / complexity or in hours - is usually fairly straightforward. Even when estimating in points, these can easily be correlated back to hours after a sprint or two, once the team has got up to speed.

The problem most teams face is that they're often doing new stuff. This is because:

  • doing a project where it's all been done before is pointless (see "Waltzing with Bears")
  • if it's all been done before, there's probably Open Source or off-the-shelf products which will do it for you, so learning how to use those may be new
  • developers hate doing the same thing over and over again, and would rather learn something new by automating it or producing a reusable library.

Thus, a lot of what we do on software projects tends to be new. The usual same-old same-old frequently ends up being given to junior developers, for whom it's new.

The trouble with new things is that you have no idea how long they're going to take. You've never done them before!

I've seen a number of strategies for handling this, depending on how determined someone is to (force devs to) produce reliable estimates, how much trust you have with stakeholders, etc.

  1. Pad the estimates horribly and then make the work fit them (this is what developers end up doing if PMs / SMs force them to produce reliable estimates, whether the devs realise it or not).

  2. Kanban's "classes of service" allow you to mix some new things with some familiar things. This will tend to allow a less variable flow through the development pipeline, so you can base your estimates on that.

  3. Do everything that's risky first (particularly if you don't know how risky it is!). Gradually the flow will stabilise. On a 9 month project, it took 3 months to start producing any kind of useful estimates, so careful with this one. The upside is that your stakeholders will see you addressing the things which keep them awake at night early, so trust can be high. Your PM / SM will go spare during this time. It's OK.

  4. Accept that the old metaphor of "time spent = work done" is a myth in projects involving high amounts of learning and knowledge work. It might have been appropriate in the days when developers were treated like a factory - churning out the implementation of others' designs - but in the world of Agile and Scrum, it's completely inappropriate. Even Scrum.org have recently removed the necessity for estimation and velocity measurements from their guide. Find other ways to develop trust, manage risk, win budgets and have conversations around the work - since these are the only reasons you need estimates in the first place.

Lunivore
  • 17,277
  • 4
  • 47
  • 92
  • Could the downvoter please add something to explain *why* this is being downvoted? – Lunivore Oct 08 '11 at 06:41
  • I think this is most practical and most useful (to me) answer. Thanks – Goran Obradovic Oct 08 '11 at 15:12
  • 1
    And I come again here, and again I can see how these resources can be useful, and especially time-saving as I am currently participating in project which is chronically suffering from schedule and estimation problems. Thank you again! – Goran Obradovic Oct 23 '17 at 11:56
2

Besides the mythical man month, which is always worth reading, Agile estimating and planning is one of the best books I found on the topic.

Best quote ever:

“There's no sense in being precise when you don't even know what you're talking about.” (John von Neumann)

Also, experimental software engineering attempts to draw statistically relevant conclusions out of experiments in a controlled environment. Very roughly you get to design experiments applying the scientific method, choosing input variables (ie. experience of the programmers, time of the week, language/framework, etc.), and measuring the output.

From wikipedia:

The scientific method suggests a cycle of observations, laws, and theories to advance science. Experimental software engineering applies this method to software.

A good book I remember from a remarkable university class on the topic is “Experimental Software Engineering”. It assumes you have a grasp over statistical distributions and descriptive statistics, but it's a very nice read.

Savino Sguera
  • 3,522
  • 21
  • 20
  • +1 for nice references, do you maybe have some more of a practical facts from a company which successfully handles this issue? Thanks! – Goran Obradovic Oct 07 '11 at 12:05
  • Ie. http://research.microsoft.com/en-us/groups/ese/ there are a bunch of published papers describing their experiments and results. I'm sure there are others around. – Savino Sguera Oct 07 '11 at 12:11
  • Another very nice reference, not sure it's legal but it's out there (I googled it) so Springer, please don't shoot the messenger: http://www.cs.sysu.edu.cn/~zxc/course/graduate/Guide%20to%20Advanced%20Empirical%20Software%20Engineering.pdf – Savino Sguera Oct 07 '11 at 12:12
0

An easy way to get on top of planned vs actual time spent (which in itself is always fluid to a certain degree) is to use an agile management tool. Target process can run with the heavies, but you can get the full system for free if you use less than 6 licenses. I have used it at 4 different clients over the past 5 years with great success each time.

I do not have the exact answer you want (i.e hours * 1.75 = working time), but TargetProcess' continous adjustment of estimates matched up with time spent will very quickly give you the ratio that applies to YOU.

PS- I do not work for them.

callisto
  • 4,921
  • 11
  • 51
  • 92