48
votes

Not fatigue as in 'I need sleep' but fatigue as in 'I just can't be bothered anymore' which usually sets in when you hit roadblocks in whatever project you're working on, generally the closer you get to deadlines.

It can be in work projects or personal projects, but it's something I keep hitting more and more lately. I'll get an idea, get into working on it, have a few really good days and make progress, then just some niggly things will trip me up, I can't get things working the way you want, I've hit limitations in the framework, I've got problems I can't find documentation for, etc. and it just gets too frustrating.

Or am I alone in this?

7
  • 4
    Is your progress measurable in your projects even when you hit roadblocks? If not, consider making it measurable. The visibilty of steady progress is the best keep-going I know of.
    – user1249
    Jan 16, 2011 at 15:10
  • 7
    This reminds me of Mort (Terry Pratchett) - the bit where Mort is clearing the dung in the stables. "Let's see, he thought, I've done nearly a quarter, let's call it a third, so when I've done that corner by the hayrack it'll be more than half, call it five-eighths, which means three more wheelbarrow loads... It doesn't prove anything much except that the awesome splendour of the universe is much easier to deal with if you think of it as a series of small chunks."
    – user8709
    Jan 16, 2011 at 18:49
  • @Steve314: +1 Pratchett rocks.
    – Orbling
    Jan 16, 2011 at 18:53
  • Try Catfish effect.
    – rwong
    Jan 16, 2011 at 22:15
  • @rwong: Most of my projects are solo projects (or very small teams). It does sound like an interesting idea, though. Jan 17, 2011 at 1:54

7 Answers 7

42
votes

Procrastination

What you describe is probably procrastination. It's a very common phenomenom. Click on the link and read about the Temporal Motivation Theory.

To beat procrastination, I do lists. When I feel I'm procrastinating, I open the list and force me to work on the first item. After few minutes, I get into the zone or the flow as described by the psychologist Mihály Csíkszentmihályi.

You should recognize you in this image:

alt text

9
  • 2
    +1 for forcing yourself. I have found the same to be true with me; just starting is the hardest part.
    – Michael K
    Jan 16, 2011 at 19:05
  • 2
    Do you not find as the years go on that all projects descend on the vertical axis. There tends to be movement on the horizontal too.
    – Orbling
    Jan 16, 2011 at 19:32
  • I have procrastinated whole day today instead of coding my open source project. Dammit.
    – gruszczy
    Jan 16, 2011 at 21:41
  • 1
    +1 for nailing this issue.
    – Conor
    Jan 17, 2011 at 9:40
  • 2
    I find that if the list has only unpleasant tasks at the top then it can be next to impossible to force oneself to do it... Feb 16, 2011 at 13:37
10
votes

What works for me is to step away from the problem that is posing the barrier. This may mean as others have suggested working on another part of the code base. It may mean going for a run. I have found that beating one's head against a barrier only strengthens the barrier. Changing your focus to something unrelated will allow your subconscious to noodle the problem. I have been surprise many times by finding the solution while in the shower etc.

2
  • 4
    Showers are definitely good places for bug fixing.
    – Orbling
    Jan 16, 2011 at 18:54
  • That's a really good point about only strengthening the barrier. I think that's what I need to do, break down projects into disparate parts so when my brain has had enough of one, switch to another, use different part of brain. Jan 17, 2011 at 0:16
8
votes

A programmer has to have a drive bigger than the Green Lantern's. It's that little itch we have when something isn't working we try to dig deeper and find out why, whether that be by asking questions or reading a book.

What you can do to stop that fatigue is step away from the problem for a bit and work on another aspect of the task your were given.

For me, the programming tasks that make me relax like a child is working on GUI. It's dead easy and allows me to shut off the brain. It also gives my brain the placebo effect that I'm accomplishing something.

4
  • So basically, stay immersed in the project, but in busywork? And yeah that's the worst feeling - when you've put all this time into something, and still feel like you haven't accomplished anything. Jan 16, 2011 at 14:23
  • 3
    @Karpie You are still accomplishing something. Doing some of the 'busywork' allows you to keep working on something that needs to be done, but it just isn't something that requires your brain to be firing on all cylinders.
    – user7007
    Jan 16, 2011 at 14:40
  • I dunno - GUI work always seems to be running in plae to me. Getting it to work correctly and be useable is fun and challenging, but getting it to look nice is very difficult for me.
    – Michael K
    Jan 16, 2011 at 19:00
  • When I step away for a while like this, about 50% of the time I never come back... :/ Feb 16, 2011 at 13:38
6
votes

I have a tendency to fall in to this area, almost all the time.

Starting a project is easy, everything is new, things to research and find out, prototypes to build, all fun. But as the challenge fades, so my interest wanes. Getting the production versions of software build, ironing out ridiculous little bugs that exist due to obscure issues with some platform you have to use.

It's enough to bore you to death.

I've never found anything overly helpful with this, I just work or play with something completely different (stackoverflow is good for this), until I get bored with the other things and start to feel guilty. Then get a little of the boring work done. Productivity reduces to about 20%, but such is the burden of dull coding.

There is one solution, team programming, very hard to stand still when others are directly involved.

4
  • 1
    +1, team building works great. Unfortunately, it's very difficult to get other people interested in your own personal projects. Jan 16, 2011 at 20:07
  • @dan_waterworth: True, though it has been a very great number of years since I have programmed for my own sake. 60-80 hour weeks, with precious little holiday for years rather removes the desire.
    – Orbling
    Jan 16, 2011 at 20:58
  • 2
    +1 for honesty: "...until I get bored with the other things and start to feel guilty... Productivity reduces to about 20%..."
    – Kavka
    Dec 2, 2011 at 18:53
  • Can you give more specifics in team programming?
    – Esqarrouth
    Jul 27, 2016 at 21:37
6
votes

Pair Programming

I find pair programming really helps in these cases. Find someone you pair well with and attack the problems, there's nothing better than another opinion or a sounding board to get through the road blocks. Once you start making progress again the enthusiasm tends to come back by itself.

Unfortunately this is frowned upon in our company, so I tend to only do this when I can really feel the problems effecting my productivity.

1
  • +1, as that was the only thing I suggested in my answer, though called it team programming, as more than two is good. ;-)
    – Orbling
    Jan 16, 2011 at 20:59
3
votes

Learn a new language. There's nothing like learning a new language to spark your interest. I'd suggest Haskell.

5
  • 1
    +1 For new language, +1 for Haskell. The vote maths appears to make 1 + 1 = 1 however.
    – Orbling
    Jan 16, 2011 at 19:01
  • 1
    @Orbling, it's because 1 | 1 = 1 Jan 16, 2011 at 19:11
  • I think 1 & 1 = 1 would be closer to my intention. ;-)
    – Orbling
    Jan 16, 2011 at 19:31
  • 1
    @Orbling, how about P(vote) = S((1 + 1)/t), where S(x) is the sigmoid function? (You can choose the temperature of the system). Jan 16, 2011 at 20:25
  • That's what I tried with my latest project, I tried learning Ruby and Rails! That was the part about the documentation not being all there, heh... Jan 17, 2011 at 0:17
2
votes

I start hitting other areas for an hour or to. I use Eclipse at work, and Eclipse lets you put a // TODO: in your code and then collates them all in a window for you. If I see something I want to change or fix while I'm working on something else, I put a TODO in so I don't break my momentum. When I get stuck for too long, (more than an hour or two) I'll start working through the list. It provides a change of scenery and most of the time the changes are pretty simple, which helps me relax. Often the answer will pop out, while still letting me feel that I'm accomplishing something.

Note: I love refactoring and making a peice of code better and better. Your mileage may vary.

1
  • 1
    +1 This is something I always do, particularly helpful in ensuring the smooth flow of code. Of course, if following the usual coding doctrines, full pseudo code up front is a good idea, slowly to be worked away in to real code.
    – Orbling
    Jan 16, 2011 at 21:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.