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?

closed as off-topic by yannis Aug 24 '17 at 20:49

  • This question does not appear to be about software engineering within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

locked by yannis Aug 24 '17 at 20:49

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. See the help center for guidance on writing a good question.

Read more about locked posts here.

  • 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 '11 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." – Steve314 Jan 16 '11 at 18:49
  • @Steve314: +1 Pratchett rocks. – Orbling Jan 16 '11 at 18:53
  • Try Catfish effect. – rwong Jan 16 '11 at 22:15
  • @rwong: Most of my projects are solo projects (or very small teams). It does sound like an interesting idea, though. – sevenseacat Jan 17 '11 at 1:54
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

  • 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 '11 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 '11 at 19:32
  • I have procrastinated whole day today instead of coding my open source project. Dammit. – gruszczy Jan 16 '11 at 21:41
  • 1
    +1 for nailing this issue. – Conor Jan 17 '11 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... – Roman Starkov Feb 16 '11 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.

  • 4
    Showers are definitely good places for bug fixing. – Orbling Jan 16 '11 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. – sevenseacat Jan 17 '11 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.

  • 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. – sevenseacat Jan 16 '11 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 '11 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 '11 at 19:00
  • When I step away for a while like this, about 50% of the time I never come back... :/ – Roman Starkov Feb 16 '11 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.

  • 1
    +1, team building works great. Unfortunately, it's very difficult to get other people interested in your own personal projects. – dan_waterworth Jan 16 '11 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 '11 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 '11 at 18:53
  • Can you give more specifics in team programming? – Esqarrouth Jul 27 '16 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, 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 '11 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.

  • 1
    +1 For new language, +1 for Haskell. The vote maths appears to make 1 + 1 = 1 however. – Orbling Jan 16 '11 at 19:01
  • 1
    @Orbling, it's because 1 | 1 = 1 – dan_waterworth Jan 16 '11 at 19:11
  • I think 1 & 1 = 1 would be closer to my intention. ;-) – Orbling Jan 16 '11 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). – dan_waterworth Jan 16 '11 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... – sevenseacat Jan 17 '11 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 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 '11 at 21:01

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