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.

My job is roughly a "9-5"ish type programming job (I'm occasionally there later when I need to finish something), and over the weekend I'm not in the office. When I get back to the office on Monday, I typically have to spend a lot of time getting myself back "into the groove" as well as figuring out where I was when I left, especially if I had to leave in the middle of something. Occasionally I will leave myself some written notes on a pad by my desk, but I find that sometimes (like today) it's insufficient.

What are some creative ways that you use to remind yourself where you left off? I could use any help I could get because I really would like to reduce the lack of productivity that I suffer on Monday mornings.

Thanks!

share|improve this question
2  
@Hila: then what is the point of the weekend? –  studiohack Oct 4 '10 at 21:29
2  
@studiohack It was a joke. –  Hila Oct 5 '10 at 16:58
show 2 more comments

closed as off topic by MichaelT, gnat, Martijn Pieters, Giorgio, MainMa Mar 15 '13 at 19:08

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

17 Answers

up vote 18 down vote accepted

I like to write myself a quick note that roughly states the problem I'm considering or the next thing I have to do. I write it in plain English in my local checkout of the code, wherever I am currently working- not in a comment. When I need to pick things up the next Monday, I update/compile. Since the note to myself will invariably cause a syntax error, I get back to it right away. I find that reading the note and deleting it to fix my "compiler error" gets me right back into the swing of things.

share|improve this answer
show 3 more comments

Using standard personnal productivity techniques, it's pretty straightforward.

Monday morning, I pick the task that is (still) on the top of the list

I personnaly use a combination of GTD and 7 Habits productivity techniques. The collection process is done daily. So I always have an up to date prioritized list of things to do.

Every thing in the list is more important that another thing. This means there is no equally important thing.

Doing another task is pure procrastination ;) (and I do procrastinate sometimes... but the list help me get into work again more quickly)

To avoid too much frustration, I also avoid heavy refactoring or debugging friday afternoon...

share|improve this answer
add comment

I can't remember where I read it, but I find it works quite well. That is to break your code on purpose, or to end on a problem. Coming back to something that needs debugging I find helps get the brain running. Even breaking for lunch I find this to be a useful technique.

Now of course you don't want to break your code on purpose and spend the next 4 hours debugging! So perhaps end the current work phase by adding empty method signatures, so that next time you sit down and run your program you'll have a few compile errors due to empty method blocks.

share|improve this answer
7  
This works very well as a writing trick also. Write the first sentence of the paragraph and then stop. It will be easy to finish the paragraph when you return. Or write "For Example:" and then stop. The next step is so obvious that there is no spin-up time. –  Kate Gregory Oct 4 '10 at 19:00
1  
I never left my compile broken for fear of becoming discouraged and not returning to fix it in a timely manner, but I noticed my brain kept working much later into the night when I did. Inevitably I could not resist picking up right where I left off first thing in the morning. –  pate Oct 4 '10 at 23:57
show 4 more comments

I use Stickies on my desktop as I'm coding, with sticky notes for "todo", "for later", and "to test". It's also a convenient place to jot down notes about what to do when you get back into the office on monday.

share|improve this answer
add comment

I have a readme.txt on the desktop, where at the end of the day I scribble what I'm going to do tomorrow. Such a simple trick, and you don't believe what a huge productivity boost it makes until you try it. I think some of the boost has to do with that when you spend 5 minutes thinking how to proceed before going home, your subconscious will process it overnight, and then you just know what to do.

Good programmers work 24/7, and that doesn't mean not having a life :-)

share|improve this answer
add comment

In order to pick up where you left off, you need to not just document where you left off, but what is next. Make sure you have this before you leave on Friday. It could be a bug. Starting something completely new or adding something to an existing task.

Make sure this is readily available on Monday. I put it on top of my keyboard.

Do Not Open Email or read blogs or RSS Feeds! Unless you are waiting on a specific response to the task you left over on Friday, wait. If the first task can be done in an hour, hold off for an hour. Otherwise, start on your predefined task, with a planned break after 90-120 min. Stretch, get a drink, open email and only respond if something is urgent and then get it done.

share|improve this answer
show 1 more comment

If you're IDE supports it, leave a TODO comment next to where you left off. Or even better, if you can create a custom tag (such as in Visual Studio) you could then use that tag to recall where you were. For example, you could create a new tag named LASTPOINT (or whatever is easiest for you). Then, in the IDE settings, configure so that the IDE picks up that new tag and displays it in the todo list.

By far my favourite method (mentioned by Cosizzle) is to leave breaking code in the area where I'm working on. Next day I know exactly where I left off.

Cheers. Jas.

share|improve this answer
1  
For Delphi users, the GExperts extension will add this functionality (use //todo). –  Peter Turner Oct 4 '10 at 19:07
add comment

I program in a VM so I just save the state.

I usually write a little note in the code too, not a comment though - something that won't compile.

share|improve this answer
add comment

If you're using Eclipse, then you have Mylyn available. One of the key points of Mylyn is that you associate resources with a given task. When you're done coding, just deactivate the task. It will save the editors state and restore them once you reactivate the task.

Package explorerCollapsed editor

See the Mylyn user guide for more details.

share|improve this answer
show 2 more comments

I use the following:

#error Finish me.  When I left, I was trying to .....
share|improve this answer
show 1 more comment

We develop inside of VMs at work. When I'm shutting down for the night, if there's a bunch of complicated details I know I'll have to remember to get back up to speed the next day/week, I generally just leave a highly visible comment in the middle of the code.

//FIGURE OUT WHY THIS IS RAISING AN EXCEPTION WHEN THE SECOND ARGUMENT ISN'T AS EXPECTED!!!

Something like that. I'll put details and hints in there, things that will help me remember what was going through my mind when I come back to it. Then I highlight the comment with the cursor, put the VM into suspend mode so it'll come right back to it, and shut down the system. That way, when I start up in the morning, my note-to-self is the first thing I see.

It works really well.

share|improve this answer
add comment

Summary: One of the primary goals of the Mylyn (open source) and Tasktop Pro (supported) products is to reduce overhead for developers as they resume tasks and switch between tasks.

Details: Imagine you are working on a task before you leave on Friday. When you return on Monday you can reactivate that task using Mylyn or Tasktop Pro. Reactivating the task causes several changes to your IDE that make it easier to resume your work. Mylyn or Tasktop Pro updates your IDE by:

  1. Showing only the files related to that task - As you worked on the task on Friday Mylyn or Tasktop Pro was automatically tracking which files you worked with, called the task context. It uses the task context to repopulate all of your views, such as a file explorer or package explorer, with only the files that are relevant to the task. Instead of struggling to remember the relevant files for that task you can begin working immediatly.
  2. Recording notes on the task - For each task there is a task editor. This editor allows you to record information, such as notes, related to your task. When you stop the task on Friday it is natural to make a few notes in the task editor (instead of a random file). When you resume that task on Monday these notes jog your memory on where you left off.

Resources:

  • This 2 minute video provides several good examples of how to use Tasktop to switch between tasks.
  • This task-focused blog entry explains how Mylyn and Tasktop Pro increase your productivity by helping you switch between tasks and resume old tasks.

David Shepherd, Tasktop Technologies
http://www.twitter.com/davidcshepherd

share|improve this answer
add comment

If find it helpful just to put the computer to sleep in a state where it's pretty obvious what you're working on - I usually have loads of tabs open during the day, but try to close everything except what I absolutely need to continue the next day. This is the same for your project solutions, just close all unnecessary files and set breakpoints where you're up to - they're ugly enough to draw attention to the place on the screen for me.

share|improve this answer
1  
+1 I miss the days when Chrome routinely crashed due to the 200+ tabs still open from the previous night, finally allowing me to focus on what's really important :) –  pate Oct 5 '10 at 0:00
add comment

I dont only do this monday morning but whenever i need to figure out whats next.

I find the most simple and quickest change i can possible make. Right now, its making the test tags linkabout, actually before that i need to make it use proper tags first. I might have to modify lots of code to do that and yes this is what i am doing this moment and not a silly example i thought of.

It works pretty well on any occasion.

share|improve this answer
add comment

I use a virtual machine. I can suspend the virtual machine anytime and I will be back to where I left off without needing to save anything, re-open anything, etc. I can toggle between work vs. non-work on the same machine anytime and preserve as much state on the work mode.

share|improve this answer
show 1 more comment

If you are using test-driven or test-first development, the best place to take a break is after writing a failing test. This provides an obvious place to begin working again since you need to make the test pass.

It feels a little awkward at first since you have to decide what should be next before taking a break. You have the feeling that you are leaving the code incomplete. It would only take a little more time to get the test to pass, so why stop there. In my experience, this is exactly why this technique works so well. You are doing the most difficult work on the next step before taking a break. When you come back it is easier to get back into the work since you start with something easy.

share|improve this answer
add comment

Come in early on Monday.

Make it the one day of the week where you come in an hour early.
Then, before the buzz, noise and distractions of the office starts you can spend some quality time getting back into the groove.

I also agree with the others responses about stickies, leaving work in the middle, leaving local broken work, leaving broken tests, etc. All great techniques.

share|improve this answer
add comment

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