Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
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
5  
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
show 1 more comment

7 Answers

up vote 32 down vote accepted

Procrastination

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

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

share|improve this answer
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
1  
+1 for the excellent Challenge vs Skill visualization –  wweicker Jan 16 '11 at 19:19
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
1  
+1 for nailing this issue. –  Conor Jan 17 '11 at 9:40
1  
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... –  romkyns Feb 16 '11 at 13:37
show 4 more comments

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.

share|improve this answer
3  
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
add comment

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.

share|improve this answer
    
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
2  
@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. –  Glenn Nelson 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... :/ –  romkyns Feb 16 '11 at 13:38
add comment

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.

share|improve this answer
    
+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
add comment

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

share|improve this answer
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
add comment

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.

share|improve this answer
    
+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
1  
+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
add comment

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.

share|improve this answer
    
+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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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