I find that I'm having a great deal of trouble staying alert 8 hours per day. I've heard of people who've negotiated work contracts of just 4 hours/day, arguing that they won't be able to do much more in eight hours.

I am often overwhelmed with drowsiness, boredom, distraction. Some days, I seem to blaze through eight hours in a furious explosion of productivity; other days, I hardly get anything done at all. Most days, it's somewhere in between, and I feel bad for wasting a lot of time because I can't muster the concentration to be my best throughout much of the day.

I'd like to hear your experiences (tell me I'm not alone!), and, if found, your solutions to this dilemma.

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

4

Define "productive"...
–
user1249Mar 9 '11 at 12:05

90

Define "productive"? Come on! I think it's pretty clear what that means in this context: To have the mind focussed on the problems I'm paid to work on.
–
fzwoMar 9 '11 at 12:26

8

Getting interesting projects is definitely a good idea, but for those who work for companies that decide on what projects to work and have to bring home food to a family, this isn't really an option, unfortunately.
–
BobMar 9 '11 at 14:26

50

I'm fully productive all 8 hours of my work day. That is why I am not currently browsing stackexchange.
–
AlainMar 9 '11 at 15:56

11

Often I manage to solve problems when I'm at home. I should get paid overtime for that!
–
gablinMar 9 '11 at 20:25

30 Answers
30

Are you describing a feeling of: 1) I don't really want to be working on this? or 2) I'm stuck?

I don't want to work on this

Some people do better with deadlines. Peel off a reasonable chunk of the task and set a deadline. Sharing deadlines with others can help keep you accountable.

One of my favorite tricks is to start each day with a sheet of paper and make three columns: Must (do today - meetings, calls, etc), Should (work on - looming deadilne) Want (to work on). Under each column divvy up the tasks you have on your mind. From these lists pick three items that you can reasonably accomplish today that will move your pile forward. Knock those three out and everything beyond that is a bonus, ie "I was overproductive today". It takes a little practice to break down the tasks into the right amount, but it's effective.

Breaks are ok, but get a timer (I use an electronic kitchen timer). This can also be used to "Trick" yourself into moving forward as well. Some of mine: "I'll spend the next eight minutes trying to get this test to pass." "I'll spend the next ten minutes adjusting this layout". Or if that feels too short, you can always timebox your tasks.

I'm stuck

Share your pain with others. Just describing the problem often leads to a solution.

Exploratory testing is a great technique for poking at a system you don't understand but have to change.

Take a walk. Distractions are part of the process. Just don't make them your only solution to every problem.

@Steve. I was careful not to say something like 'never reveal your goals' because of the factors you mention. I just wanted to present that link because I found it interesting and have found myself considering it when making goals/deadlines.
–
acmsharMar 9 '11 at 19:37

1

Sharing a problem is not the same as sharing a goal. As programmers we all know that talking to someone can often help clarify the idea and get a resolution. It is very different to tell people you've got this brilliant programming idea, have everyone tell you it's brilliant and then feel like doing nothing.
–
QuaternionMar 10 '11 at 7:56

1

@Quaternion I agree. Steve recommended sharing both the goal (deadline in part 1) and the problem (in part 2).
–
acmsharMar 10 '11 at 14:44

2

Pomodoro could be used as a way to implement your third point...
–
Coyote21May 31 '12 at 13:47

If we define "productivity" as the measure of physically output usable, functioning code, then this is on average ~3 hr/ day top, more like ~2h/day on average.
And don't feel bad if you can't write code all day - most of the work happens in your head.

Granted, this might be an issue with managers caught into the "Why isn't Sam typing" mindset.

When I get in my 'zone,' A) I'm very productive and B) it's frustratingly easy that I get distracted and leave this zone. Nobody seems to get this aspect, so ultimately I get around 3 hours of actual concentrated work done in a day. The rest of the time involves attending meetings or posting here. :D
–
NeilMar 9 '11 at 13:48

1

@rmx I find that interesting because typically I seem to be more productive in the afternoon and evening. I even go to bed early and try to get up early, and this still is the case. I sure wish I could be more productive in the morning.
–
BobMar 9 '11 at 14:27

Sure, I come into the office, putter around, check my email every ten seconds, read the web, even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just doesn't happen.

These bouts of unproductiveness usually last for a day or two. But there have been times in my career as a developer when I went for weeks at a time without being able to get anything done. As they say, I'm not in flow. I'm not in the zone. I'm not anywhere.

Thank you. Joel's article (and some of the great comments over there) really put my mind at ease: If somebody as successful and insightful as him is having the same problem, maybe I'm not "broken" after all. His honesty was very refreshing, and for the first time in my life I actually grok why it is important to feel part of a group. I guess I had just never had so much doubt in myself. Still, this problem being ubiquitous doesn't mean we should accept it without putting up a fight.
–
fzwoMar 9 '11 at 17:55

At those times, an alarm on my phone goes off! Understanding how time slips by is important! Getting a sense of what 3 hours is like, and how it can be used it invaluable.

At each interval, I stretch, eat, move around, and then begin A NEW TASK. Sometimes I'll use 2, 3 hour chunks for 1 task if I'm "feeling it"

I have tons of different tasks I need to do to feel balanced. By doing a chunk of each task, by the end of the day/week, I don't feel the guilt of not doing something really important WHILE working on something else really important. (I know you know what I'm talking about.) Thinking about another task, while working on something kills productivity!

Diet/exercise: We are just APES! We expect WAY too much from ourselves. The only way it works is to respect the mechanics of the body too. Well, I'm excited to say, 3 hour intervals is PERFECT for a high-energy, high-metabolism diet! Do more research before starting, but basically, by eating a SMALL amount of food, every 3 hours, your body keeps burning fuel instead of going to shock and trying to survive on a poor diet schedule.

And a final, I must be crazy, but it works for me idea:
I created an exercise bike with a terminal in front of it! I can walk over to it (in the other room with a nice view) and ride the stationary bike WHILE continuing to work! That's right! I'm getting my workout in without having to stop working!!! The local network allows me to pick up where I was without skipping a beat. It's awesome. Imagine if, in the middle of your day, when you're slumping, that instead, you could get your heart pumping. My gawd, after 30 minutes, I'm ready to take it all on again! (Sometimes I have to take a shower afterward, but that has served me well as a great time to think my tasks through)

You sound self-employed. Congratulations on being able to pull off such a rigorous schedule, and thank you for your answer! I can see a few trends emerging from your and many other answers: Chunk time and tasks, eat healthily, do not stare at the screen ALL the time, move your body. And try to be enthusiastic about your work.
–
fzwoMar 9 '11 at 20:00

2

@grib - Don't forget to breath, eat and blink! :)... and poop. Srly, sometimes we get caught up in the grind we even forget to do that. I like your 3-hr breakdown (+rep for that). I've been doing a 4-hr breakdown which has helped me tremendously,but I think I'll try the 3-hr breakdown and see how it goes.
–
luis.espinalMar 10 '11 at 16:56

I think it depends entirely on what you're doing during that day. If I'm doing something interesting, exciting and engaging, 8 hours will fly by; but if I'm just drudging through legacy code to find an obscure bug, time crawls.

At any rate, I think there is a lot you can do to keep yourself productive throughout the day.

First, take regular breaks. Working for several hours straight WILL dampen productivity compared with taking a 5-minute break every hour or so, whether it's making a cup of tea or coffee, having a chat with a co-worker, having a walk around the office, going outside for a cigarette, or even a quick break to look at news websites or social websites.

It also helps to vary your tasks (when possible). Doing the same thing for several days with no variation leads to boredom and drudgery. Working on one thing in the morning and then a different thing in the afternoon helps keep concentration levels high, but the practicality of that depends entirely on your work environment.

+1 for sleep. If I get consistent sleep I can focus for 8 hours. If I don't, I get easily distracted and bored. I think sleep is the single most under-rated factor in productivity.
–
NemiMar 12 '11 at 15:40

first off it is entirely normal to be super productive some days and get nothing done other days. Everyone gets distracted by things, both work related (that company brief on the new HR web site that it's mandatory to go to) and non work related (programmers.stackexchange)

secondly your perception of how productive you are is probably skewed. If you spend a week debugging a difficult bug, the first four days will probably feel like you are getting nowhere as you explore various blind alleys. the last day will feel super productive as things click into place and you achieve your goal. But it is important to recognise that all that work eliminating possibilities that weren't the problem was productive even if it disn'e give you that nice achievement buzz.

First a comment: if you're measuring productivity as "hands on kb, writing code" then I think you've got the wrong metric. As developers a lot of what we do is understanding the actual problem. This can take a lot of time. The better the understanding you have up front, the more likely you will be to write the right code the first time. That means sending emails, talking to coworkers, whiteboarding etc. I think 3 hours of actual code per day would be great.

Some other things to consider:

Diet: Personally, I find that I work like crap if I've had a large meal, particularly one that is high in carbs (Chinese or Thai food, with lots of rice, are the worst). This is highly subjective though, I think your DNA has a lot to do with it. Some people subsist just fine on rice. Others prefer lean protein and vegetables. Personally, I find high carb/fat meals to be terrible for productivity. A cheeseburger and fries will sink me for the afternoon. You might consider reading "The Blood Type Diet". I find sugars to be ultimately detrimental to my concentration -- good in the short term (hour) bad in the long term (rest of the day).

Distractions: Is your phone making some beep every ten minutes? Turn it off while you work. What are you listening to while you work? I have read -- no link handy -- that you will perform better at a task if you are listening to people talking about a similar task. So listening to podcasts may help. I really like the Herding Code Podcast.

Brain: My hypothesis is that computers, phones, email etc. are very good at cultivating a monkey mind: easily distracted, focus constantly shifting, tense and reactive. The counter to this is meditation. Meditation will help you learn how to look at the things that are asking for your attention and say "no, not now" in a very automatic way. I've recently picked up "Zen and the Brain"; it's a dense book about what meditation does to your brain: "causal connections can be found between Zen practices and the physiology of the brain, and James H. Austin lays them out one by one, drawing from his own Zen experiences and the latest in neurological research." It's a daunting book.

This largely depends upon what you are doing and the environment you are doing it it. At one point, years ago, I was working on an assembly line and I would be able to say that I was able to be productive the entire day. Now as a "knowledge worker" I find that even though I might measure my truly productive time as when I'm sitting working on a project (e.g. designing databases, researching a problem, or writing code) that I might only have on average four productive hours a day with the rest of the time consumed by meetings and other administrative overhead.

Under a deadline I am able to focus on a task for extended periods of time (i.e. the class all-nighter) but these are not sustainable and as I've gotten older I've found that they tend to leave me much more exhausted than when I was younger and I end up needing more recharge time afterward.

The biggest problem I've found though is not so much staying on task as it is getting on task to begin with, even more so when you are staring at a large problem that hasn't been started yet! As such, one trick that I've found is that if you have a smaller task (i.e. 30 minutes to an hour to complete) that you can take care of, the sense of accomplishment you get from that can help you set the pace for working on the larger problem. Painters and other artists often talk about the intimation of a blank canvas and in many ways software development is no different, sitting there staring at an empty file can be quite intimidating.

I won't comment on the things that others have touched on already, but I also think a lot of what constitutes your idea of productive depends on your environment.

I started working from home in January, so this has become a big issue for me. One thing I constantly try to remind myself of is the amount of time I used to spend being interrupted in the office :
- being dragged away to help people with trivial problems unrelated to my work
- being knocked out of my flow by people monologuing at thier desk
- answering the phone/taking messages for people
- general office bureaucracy
- plus several others (of which I'm sure many of you are all too aware)

Working from home, I find that I have a much stricter idea of what a productive day is, compared with when I worked in an office full time (probably feeling the need to prove myself to those that imagine that the remote workforce spend all day lying in bed..). For this reason, I really beat myself up on days when I don't achieve much. However, when I think about it, I am letting my environment alter my standards - I'm positive that I have been, if anything, MORE productive since I started working from home. It is just that I feel a greater responsibilty to be productive in the face of the freedom that has been afforded to me.

I usually get my best work done in the ~4 hours of my morning, then find that I get much less done the rest of the day after lunch. I got very worried that I waste too much time at work though, and that I'm too easily distracted, so I started looking into it more.

I found that common tips like eating breakfast, sleeping well, and listening to music helped a little, but it wasn't very reliable and I still tended to lose focus very easily. I finally got a suspicion and spoke with my doctor, concerned that I might have ADHD. I've been taking Adderall for a while now, and found that it really helped me a lot. It's hard to describe, but its like it makes competing distractions quieter, so I can choose which thing to focus on and it makes it easier for me to slip into "the zone" so many programmers talk about: a wonderful distraction-immune state of pure productivity.

So if I just take my medicine, I can get about 4 or so productive hours: a strong morning and a decent few hours in the afternoon. If I do like I'm supposed to, eat well and sleep enough, that gets me up to about 5-6 good hours, and if I'm just having a good day (say I have a very clear problem to work through) then I can be productive the whole 7-8 hours of actual working time.

Anyway, I'm not saying its for everyone, nor am I suggesting it as a catch-all solution to productivity problems. But for some people, read up on the signs of ADHD, talk with a doctor and maybe that can help. I know I went for years thinking I was just lazy or undisciplined and that's why I couldn't focus on school work or work until I decided that just maybe it shouldn't be nearly physically painful to focus on what I should be doing and sought help.

I have been really productive for 8 hours a day, but that has only been for short periods. I seen lots of references that indicate that if your normal day is longer than 8 hours you won't get any productivity gains.

Besides the productive time, there is usually a long list of things that need to happen which will not be that productive:

I had a critical project to work on that I felt invested in. (It really helps focus.)

The people around me knew I had a critical project, and didn't interrupt me.

I was able to interrupt anyone (including the senior partner) to get answers I needed.

When I took a break the coffee pot was always full.

Code I was developing decomposed nicely into small highly cohesive units.

Code structure allowed me to quickly get back in the flow after a break.

The project I was working on was well defined, and I was very familiar with it.

I have rarely found myself in such a situation. Today's cube farms generate high volumes of interruptions. (An IM system that queues messages may help if people get into the swing of it.) You will rarely be able to get instant answers from everyone when you need them.

A few things you should try.

Plan you day and work on the most important things first.

Be as productive as you can, but take short breaks between tasks.

Don't be afraid to get answers when you need them.

Take sometime to search out answers before interrupting others. (Try to catch them during one of their breaks.)

I can code productively about 4-6 hours per day (I prefer 4 hours). I can do other kinds of work with the rest of the time. I think about my projects when I'm out walking or running. I do some of my best work away from the computer.

In addition to all the good information here, I also find it helpful to ask the question, "What am I avoiding?" if i feel like I've been less productive. Often, there will be some roadblock. It's kind of a 'SCRUM' mentality, if you look at it that way.

Once you know what you're avoiding, managing your attitude toward it becomes easier.

There are lots of things you can do when you're distracted, drowsy or bored. For example, read tech blogs, read technical books. If you're masochistic, you can read business emails while you're not feeling 100% productive. Or you can just think about the design/architecture of your product, or the latest bug you heard from a user.

I have two types of days. 1) Days I know I am not going to get much done. 2) Days that I use the Pomodoro Technique. With type 1), I can expect to get 2 - 3 hours of real work done. With type 2) I get at least 6 hours. I usually know first thing in the morning which type of day I am having. I have modified the Pomodoro Technique so I will stick with it, and I am not as rigid as the documentation seems to want me to be.

There is a lot of good advice here, so I will try to add a few useful thoughts and experiences.

The amount of useful work you can do in a day is unique to you as an individual. Some people have more mental "stamina" than others, just like some people can run marathons and others can barely get to the end of the street. I think therefore, the first thing you need to work out is how much useful work can you do in a day and don't go beyond this for sustained periods. Trying to push yourself well beyond your current limit can be a vicious cycle as over working will make you tired which will lead to errors, which will lead to rework. This can lead to the odd situation of needing to work 12 hours a day just to do what you did in the past in 4 or 6 hours.

If you want to extend your capacity for productive work, I would consider the following:

Never work for more than 50 minutes in each hour, take a break, walk around, do some light stretching or exercise

Be aware that your alertness and ability to concentrate varies throughout the day. Some people are at their best early in the morning, others late in the evening. Everyone feels drowsy in the early afternoon after a heavy lunch. Aim to take on your toughest tasks at the time you are most alert.

Drink plenty of water, being dehydrated leads to fatigue

Do some exercise during your working day it will break up your time at your desk and release endorphins

Enjoy some fun time with your friend and/or colleagues every day playing computer games, table football, table tennis, etc. This relaxation time will help recharge your energy.

I struggle to keep attention focussed on most tasks for more than a couple of hours without a break. I think I probably get about 4 hours done in a 7 hour day. The rest of the time tends to be spent learning though.

I am happy if I get 2 good solid 2 hour chunks of programming in every day. The days that I do more than that I find myself spinning my wheels, wasting time, and introducing bugs to the software. The rest of my time is spent on learning, researching, talking to users, and letting my brain unwind.

Here is a way to review where you are truly spending your time compared to where you think you will spend your time. Monday morning sit down and make a list of what you would like to complete during the week. Then put it away and don't look at it until Friday.

Grab a notebook and everytime you start something new during the day write down the time and what you are doing. This should include everything. Check personal email, read personal websites, read tech websites, talk to your cube mate, program on project x, go to lunch, work on new bug Z, talk to user y of new project, etc.

On Friday pull out your initial list and flip through the list of what you did. Compare them and see how productive you actually were. You will probably be surprised and will find things that you can start to change.

I find that the problem is often the projects at work are in direct violation of the latest and greatest improvements in the field. The things that I dream about, knowing they will make life better for all of us.

I don't want to fix this old table layout when I could be using the lessframework. I don't want to re-vamp this bloated, slow XML-RPC when I could change the API to JSON in one hour. I don't want to keep adding features to this site running a custom framework that doesn't even have a proper database abstration when I could port the whole thing over to a real framework in just a couple days. I don't want to make this goofy, unusable, lame jQuery animation I know the client will remove in later revisions after their head is on right.

On days like this I put something in front of me to motivate me. Like a reward.

If I just do this - then I'll let myself spend all the rest of the day writing a proper caching system using membase.

Though, I suppose you must love your work to think spending time on a new API lib or playing with a new database is fun. I know I do. I wish I could build useful, cool stuff all day.

If I'm drowsy it's normally because I haven't had enough sleep cumulatively over the last week. Everyone's sleep needs are different, but if you are sleepy a lot, it's a good sign you could use more sleep at night. Also, going to sleep at the same time every night and waking up at the same time every day helps me stay alert during the day. I've also heard that sleeping most of your hours when it is dark helps and that makes sense logically.

If I'm not productive, it's normally because I haven't set realistic goals that I want to achieve. I've found that David Allen's book Getting Things Done and David Maister's The Trusted Adviser have helped me with that. Learning about trust helps reconcile my goals with those I work with. GTD is an effective way of organizing those goals and keeping track of progress towards them.

Being productive for 8 hours is not that important. Instead of solving a problem with brute force by throwing more hours on it, solve it in a creative and smart way and spend the rest of the day playing fußball.

There are days when i can work 8 - 12 hours knowing what i am doing after 5 or 6 . But there are some day i cannot do anything after sometimes .

i really concentrate when deadlines are there . say there are 4 days to go and you have to get it done and if i know that it could be done in 4 days then it really get me going. if i know that i cannot get me done then it will get me exhausted and lose concentration half of the time.i can also concentrate if some likable feature i have to integrate in the application. so it all depends upon the things at hand for me.

For me it's about what I am doing. If the task is challenging I will work over 12 hours enjoying every minute and I will go home eager to come the next day to continue my work. Unfortunately, sometimes problems in the environment get to my nerve and affect my concentration and lower my productivity. I never get bored unless I am working in something I am not interested in and does not build anything in my career or my experience and in this case I motivate myself that I should get this done ASAP to get back to what I like and what I should be doing.

My last Agile Scrum job used the concept of "ideal hours" for task estimation. Put simply, an "ideal hour" is an hour spent heads-down coding new things that have never existed before in the project. A non-ideal hour is time spent refactoring, debugging, on the phone, in meetings, at lunch, on break, lurking/posting to StackExchange, etc.

The typical expectation was 5 to 6 ideal hours per 8-hour workday. You simply can't expect developers to spend 8 hours a day "plugged in", and even if you do, you'll typically find that you don't get much more in those 2-3 hours than in the normal 5-6. It isn't a laziness thing, it isn't a "stuck" thing, it isn't even a lack of skill or typing speed; the simple fact of the matter is that sh*t happens. Someone will call or IM a dev asking about something from their personal life. Technical debt must be repaid by organizing and refactoring the codebase (which the clients won't see as productive because they're not working toward points, but it's critical to keep the codebase maintainable and extensible, thus keeping the pace of development). And devs need to blow off steam; we're creative knowledge workers, and from time to time the humming, productive team room will break down into a few minutes of hurling paper wads at each other (or, if the goofing off is more encouraged by management, a Nerf gun fight).

Anyway, our team's estimation worked out to about one "point" = about two developer-days (a five-pointer was one two-week developer-iteration), based on 5 hours of heads-down coding per day. So, a five-pointer would be billed to the client at a rate roughly equivalent to 50 developer-hours.