One of the most important factors to take into consideration when setting deadlines is that, for a programmer, an eight hour work day doesn’t actually mean eight hours of coding.
This is a mistake that a lot of project managers make when setting deadlines for tasks. Even worse, this is a mistake that many programmers make when they estimate future work, thus perpetuating the project managers evil deadline strategy.
If you are just a programmer in a normal team, and depending on chosen technologies and organizational overhead, at least a quarter of your day will be filled with non-code-producing activities. If you are a tech lead, even more of your time will be lost in administrative tasks or programmer assistance.
What non-code producing activities am I talking about? Well just think about it!
* Reading your emails. Sounds like a 5 minute job right? Wrong. It takes one or two minutes on average to read an email. What if you receive 70 emails? 20 are spam. You still have 50 to read. It takes you 100 minutes. You answer 10 of them. You just lost 2 hours of your time.
* Reading issues. I suppose you have an incident tracker. You can loose an hour just by reading incidents, setting priority, thinking about fixes, etc.
* Helping your peers. You can’t say no to a peer that needs your assistance. Especially if you are tech or component lead. Scratch off two more hours.
* Why not have a meeting or two. Necessary. Scratch two more hours.
The list can go on, but I’ll stop here.
The point is this. Next time you set a programmer’s deadline or you ask him for an estimation think about the fact that “an eight hour work day doesn’t mean eight hours of coding”.