Search code examples
estimationtime-management

How much of your work day is spent coding?


I've been thinking about software estimation lately, and I have a bunch of questions around time spent coding. I'm curious to hear from people who have had at least a couple years of experience developing software.

When you have to estimate the amount of time you'll spend working on something, how many hours of the day do you spend coding? What occupies the other non-coding hours?

Do you find you spend more or less hours than your teammates coding? Do you feel like you're getting more or less work done than they are?

What are your work conditions like? Private office, shared office, team room? Coding alone or as a pair? How has your working condition changed the amount of time you spend coding each day? If you can work from home, does that help or hurt your productivity?

What development methodology do you use? Waterfall? Agile? Has changing from one methodology to another had an impact on your coding hours per day?

Most importantly: Are you happy with your productivity? If not, what single change would you make that would have the most impact on it?


Solution

  • I'm a corporate developer, the kind Joel Spolsky called "depressed" in a couple of the StackOverflow podcasts. Because my company is not a software company it has little business reason to implement many of the measures software experts recommend companies engage for developer productivity.

    We don't get private offices and dual 30 inch monitors. Our source control system is Microsoft Visual Source Safe. Enough said. On the other hand, I get to do a lot of things that fill out my day and add some variety to my job. I get involved in business analysis, project management, development, production support, international implementations, training support, team planning, and process improvement.

    I'd say I get 85% of my day to code, when I can focus and I have a major programming task. But more often I get about 50% of my day for coding. If production support (non coding-related) is heavy I may only get 15% of my day to code.

    Most of the companies I've worked for were not actively engaged in evaluating agile processes or test-driven development, but they didn't do a good job of waterfall either; most of their developers worked like cut-and-paste cowboys with impugnity.

    On occasion I do work from home and with kids, it's horrible. I'm more productive at work.

    My productivity is good, but could be better if the interruption factor and cost of mental context switching was removed. Production support and project management overhead both create those types of interruptions. But both are necessary parts of the job, so I don't think I can get rid of them. What I would like to consider is a restructuring of the team so that people on projects could focus on projects while the others could block the interruptions by being dedicated to support. And then swapping when the project is over.

    Unfortunately, no one wants to do support, so the other productivity improvement measure I'd wish for would be one of the following:

    • Better testing tools/methodologies to speed up unit testing
    • Better business analysis tools/skills to improve the quality of new development and limit its contributions to the production support load