45

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?

9
  • 4
    You work with the wrong kind of colleagues.
    – sbi
    Dec 10, 2010 at 20:45
  • 12
    not if they have a family to take care.
    – eiefai
    Dec 10, 2010 at 21:07
  • 14
    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, 2010 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, 2010 at 16:40
  • 2
    @Job: Not everyone starts at 9AM. Jul 7, 2011 at 21:23

19 Answers 19

38
+500

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.

2
  • 4
    +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
    Dec 12, 2010 at 22:17
  • 2
    Totally what I do too. Drop a comment in your code and then uncomment it so it wont compile (if your language is a compiled one). Also, it really helps me to do something REAL with my hands sometimes,..occasionally there's nothing better for the constitution than some manual labour. Aug 22, 2013 at 18:35
10

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?

1
  • +1, I do this specifically to avoid letting work eclipse my own time..
    – Izkata
    Feb 12, 2012 at 21:41
10

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.

2
  • I have found this also, which allows me to more easily let things go as I know I will likely approach it more effectively after a good night of sleep.
    – Nemi
    Dec 10, 2010 at 16:46
  • This is absolutely true. The thing that keeps you working through the brain fog is a fear that you won't be able to return.
    – benzado
    Jul 7, 2011 at 15:09
9

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

2
  • 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, 2010 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). Dec 13, 2010 at 13:56
8

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.

4
  • 1
    But what about the fear that I will die and the bug will never get fixed?
    – JoelFan
    Dec 13, 2010 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, 2010 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?" Dec 13, 2010 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. Dec 13, 2010 at 17:18
5

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.

4

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.
2
  • 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. Dec 10, 2010 at 17:41
  • I'm promoting using it to your advantage by finding ways to improve the way you work while you work, so you can go home earlier. I'm very against working late, which absolutely causes burnout. Working regular 40 hours/week shouldn't make you burn out, though. If it does, I think that indicates a bigger problem. Thanks for the feedback, though.
    – Ryan Hayes
    Dec 10, 2010 at 18:18
3

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.

6
  • 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, 2010 at 19:31
  • 1
    @Orbling: I completely agree. I never said it was unjustified fear.
    – John
    Dec 10, 2010 at 20:40
  • @John Aye, I was agreeing with your point, I would upvote you, but I'm on Suffrage for the day.
    – Orbling
    Dec 10, 2010 at 20:42
  • @Orbling: Well, please come back tomorrow! :-)
    – John
    Dec 10, 2010 at 20:43
  • @John: Done. :-)
    – Orbling
    Dec 11, 2010 at 0:56
3

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.

2

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.

2

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.

2

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.

2

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.

1

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.

1
  • I find this works, except for debugging when it is proving to be a stubborn bug.
    – Orbling
    Dec 12, 2010 at 22:29
1

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.

1

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.

1

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?

0

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.

0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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