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.

I have noticed a behavior in myself that I call "stopping point syndrome"... it means I cannot stop working until I reach a "stopping point" (or I become exhausted). In other words, if I am in the zone working on getting a feature completed, I won't stop until I get it done. If it's a bug I'm working on, this effect is even more pronounced... I won't stop until it's fixed, or at the very least, understood. Even though I work from a laptop and have VPN and could easily go home and pick up on the work later that evening, that fact does not help me leave work... it's like I'm afraid I will die before I find the bug.

I have a very hard time explaining this to family members who can't figure out why I never come home from work at the same time and sometimes come home at 11 pm. Even managers have been mystified by this, and I've noticed that most of my colleagues have no trouble working the same hours every day.

Does anyone else have this problem? Should I be worried about this and/or try to change it? If so how?

share|improve this question
3  
You work with the wrong kind of colleagues. –  sbi Dec 10 '10 at 20:45
11  
not if they have a family to take care. –  eiefai Dec 10 '10 at 21:07
13  
Working till 10-11 PM is stupid, even if you can. Moderate wine intake is good for you. Why don't you learn to enjoy life? –  Job Dec 11 '10 at 14:37
1  
You cannot leap the grand canyon in two shorter jumps. It makes good sense to land on a stable point, whatever length of time it takes, mindful of the constraints of practical healthy living. –  DarenW Dec 13 '10 at 16:40
1  
@Job: What's wrong with also enjoying work? –  configurator Jul 7 '11 at 20:14
show 3 more comments

19 Answers

Yes, I have this too. Well actually as I have got older its less pronounced.

I also noticed that at the end of the day, and when tired, I make more mistakes. On arrival back to work the next day the solution becomes obvious and I have to rewrite a load of code. However, it takes a fraction of the time as it was the day before.

share|improve this answer
add comment

I think this is normal behaviour, same here, and the best way to handle it is NOT to start a new working point if it doesn't look like you can complete until your planned departure. You surely have enough busywork to do to fill those 50 minutes, don't you?

share|improve this answer
show 1 more comment

Happens to me all the time. You'll be in the zone coding away and notice the clock... time to go home, but then you tell yourself, "well, as soon as I get X done". Then the next thing that happens is... "well, as soon as I get X + Y done".

To fight this, I put a note in the code that says "START HERE" and I leave myself a post-it of what I was working on and whatever key was important to getting it done.

The bottom line is that the programmer in me LOVES when this happens, but it's important to balance this and not let it get out of hand, escpecially if you have a family.

share|improve this answer
3  
+1 because this is almost exactly what I do. Post-It note and all. Even when I'm in the zone, I still drag myself out because family is the top priority. –  Gary Rowe Dec 12 '10 at 22:17
show 1 more comment

It's definitely a very efficient way to work if your life revolves around work.

I've been through a time where I had the same problem. I worked all the time and wouldn't stop until I came to a point where everything was tied up and I could sit down next time with a completely clean slate. Unfortunately, if not controlled, it can cut into time with family, friends, and other hobbies.

Here are some tips that helped me focus my habit into something a little more manageable:

  • Check in early and often. Make smaller changes so that a stopping point is closer!
  • Use GTD. Working in tasks forces you to break down your work into smaller chunks, so you have more stopping points.
  • Use and stick to your calendar. Pen (don't pencil) in events or sleep or food or whatever into your schedule and stick to it. Set up reminders ahead of time so you can be aware that you need to get to a stopping point soon.
share|improve this answer
1  
I think it is possibly the worst kind of way to work. Not efficient at all, rather the cause of burn outs, stupid mistakes and stress. –  Martin Wickman Dec 10 '10 at 17:41
show 1 more comment

It's natural, but I think it should be fought. Typically, I'll push on long past the point where I'm generating high-quality code, and I end up spending a lot of time in the morning fixing things that looked good when I was too tired to think straight.

I can usually tell when I'm getting irrational about it, but it helps to have someone around to slap you if you fail to heed the warning signs.

share|improve this answer
add comment

Indeed I recognize this. I can obsess over a problem all night until I just have to give up, exhausted and frustrated. Brain Fog.

The funny thing is that I usually manage to solve the problem right away when I get back to work in the morning. I guess that's because my brain works much better after a good sleep.

What I have learned from all this is that there is no point in working all nighters since the brain is many times more effective when it is well rested and energized. At least for me, but I suspect this is the same for everyone.

Also see sustainable pace and death march.

share|improve this answer
show 2 more comments

programming, especially debugging, consumes a lot of short-term memory. stopping before you're done wipes out the cache, and wastes a lot of time getting back to where you were.

so this is natural, efficient, and is not something to be "fought against" - though it should be planned for.

one thing that helps is to take notes while you're working, and when you stop make a note of the next thing to be done

share|improve this answer
3  
Totally agree, wiping the cache is inefficient, stopping is a last and costly resort. My main reason for stopping is "last train syndrome". –  Orbling Dec 12 '10 at 22:26
1  
While task switching is bad for your work, one must weigh it against your brain gradually shutting down during the evening and nothing useful gets done. If you want to work late, at least take some serious breaks (which includes food). –  Martin Wickman Dec 13 '10 at 13:56
add comment

You need to keep this under control. It seems to me that you are currently unable to break your work into manageable pieces or are unable to estimate how long something will take. So you work until it's done. Perhaps you are being too competitive or are afraid you might not get your work done on time.

This is a vicious circle and will not help you in the long run. It could lead to exhaustion, burnout, ...

So practice breaking your work up into smaller manageable achievable tasks. Try to estimate how long each task will take. No task should take longer than a couple of hours. Give yourself plenty of time to get this right. Give yourself time for breaks. And give yourself time to enjoy, learn, appreciate and experience other aspects of life, rather than programming.

share|improve this answer
show 1 more comment

I have a stopping point - it's at about 1:30am. I can stay awake past then, but there's no way I will get any work of any sort done. And I'll be worth nothing the next day unless I sleep in.

So, I've learned to stop working after 11 and go to bed. That way I am fresh the next day and can work steadily through the week.

share|improve this answer
add comment

I had this problem until I got dogs (two). I have to be home by a certain time or clean up urine, might not be what your are looking for but it works as a strong motivator. I also agree I almost always find the solution to be obvious in the morning.

share|improve this answer
add comment

I think it happens to all programmers at times. I think it is caused by fear. Fear that the next day you will completely forget what you are doing now. Then you would have to spend a lot of time going over stuff you've already gone over to find out what you left half-done. This is very inefficient. In my experience, most programmers hate inefficiency.

To combat this, take notes of where you are and what you're doing for the next day, then bribe yourself with something not at work to get yourself moving.

share|improve this answer
2  
With many programmers that I have seen that fear is justified, as they do forget and yes, that means a catch-up. Inefficiency is anathema to programmers. :-) –  Orbling Dec 10 '10 at 19:31
1  
@Orbling: I completely agree. I never said it was unjustified fear. –  John Dec 10 '10 at 20:40
show 4 more comments

I think it's the programmer's nature. Sometimes you may have to leave early before you start work on a new problem. With all the extra time you've put in, no need to feel guilty. Then you have to be careful not to think about it too much. Be prepared to tackle it first thing the next morning.

share|improve this answer
add comment

It's great that you enjoy your work. But it's also very sad how so many people here seem to lead lives that revolve around work.

share|improve this answer
add comment

Nah, you're not alone. I have the same problem. You might want to check out the answers in the similar question I asked a while ago: What to do when the programming activity becomes a problem?

share|improve this answer
add comment

I'm surprised this hasn't been mentioned yet.

If you need to stop, then stop cold turkey, mid-line, in the middle of something easy and obvious. Your IDE will probably put some red and yellow lines everywhere saying there's an error, this is okay. Maybe make a short /* comment */ about the item you worked on prior to that line.

Save your work and exit.

When you come back the next day, you'll be like, "oh, right, I was in the middle of X because of Y" and it shouldn't be too hard to slip back into what you were working on.

The last thing I worked on (minor hobby application for personal use), I would do this when I noticed the hours fly by when I was hunting bugs. When it got too late, I would think, "screw this" and save and exit, compilation errors be damned. Then when I'd open it again, I'd be like, "errors? wtf?!1/," which would turn into, "oh yeah, I was trying to test why this method was throwing an exception."

It was surprisingly efficient and I plan on using this technique from now on.

share|improve this answer
1  
But what about the fear that I will die and the bug will never get fixed? –  JoelFan Dec 13 '10 at 1:01
2  
@SpashHit It's a matter of personal discipline, but you shouldn't even think about it: just save and close, done in a split millisecond, and never look back. What will happen is that during your downtime, your subconscious will explore avenues that you want to try the next time you go to your work, and what this "cold turkey" method does is, when you go back to your code, your brain can easily and immediately slip into the exact mindset of where you left off, with the addition of fresh new ideas. –  Corey Dec 13 '10 at 1:39
3  
So what if the bug never gets fixed? The question should be "What if you die and your kids grow up resenting you for always being absent?" –  Christoffer Hammarström Dec 13 '10 at 12:35
1  
@SpashHit - Then you'll be dead and you shouldn't care about the bug. Seriously, you need to get perspective about this. –  Jon Hopkins Dec 13 '10 at 17:18
add comment

I used to have a little application which would reboot my computer on a timer. I'd set it for whenever I was supposed to be done by. My computer took 5 minutes to boot, which was enough of a disruption to my workflow to convince me to go home. I combined this with making sure that my outside-of-work life was as full of activities that I have trouble stopping, and am eager to start, as my work life was. It took some effort to find such activities, but it was worth it.

share|improve this answer
add comment

Yeah, I do it all the time.

Interestingly, the best managers I worked with were always ready to tell me to go home when I overdid it.

share|improve this answer
add comment

It's the nature of programming to work on a longer time cycle compared to what most other people do.

A brick layer can plop another brick on in just a minute, and can stop anytime +/- one minute, and pick up where the work left off. Simple steps, short time cycle. In retail, it's a minute or two per customer. A massage therapist works on a time cycle of an hour or two, and whatever was accomplished in the morning is independent of appointments for the afternoon. A client may run over time, or show up early, but it's reasonable to expect to be done at a certain time give or take 10 or 20 minutes.

To fly a plane solo around the world to set a new world record - that's not a stop and start kind of activity. To land every hour or two for a snack or to frolic on a beach makes the endeavor much less impressive. It's minimum increment of time is the whole trip, whatever number of days.

It's common for a software developer to start a task, build up the mental cache of facts and details, find the bug or see how to add a new feature, and retain that cache of short-term memories until done with the coding. You can't stop on a dime timewise. The natural time increment that you can't break up without loss is probably anywhere from an hour to ten or so, YMMV, and there are several smaller weaker stopping points along the way where some loss of mental cache would be tolerated as well as major stopping points where the task is truly done.

Of course, our bodies tire, and one just must stop before doing more harm than good. The old saying "death is nature's way of telling you to slow down" might apply.

share|improve this answer
add comment

If you have a family, this is a no-brainer.

  • If I leave work at 5pm, the code will be exactly as I left it when I get in tomorrow.

  • If I leave work at 10pm, my son will already be in bed when I get home and I won't have given him a hug or seen him show off any of the things he learnt that day. And my wife will be cranky because she's had to work her ass off all day with no help.

But if you are single and are not overly interested in the 'social scene', then go nuts!

Keep in mind though that the work you do at 9pm will probably be of a lower quality than the work you do at 9am. Don't underestimate the advantage of being well rested and having a clear mind.

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