Take the 2-minute tour ×
Personal Productivity Stack Exchange is a question and answer site for people wanting to improve their personal productivity. It's 100% free, no registration required.

I work as a developer for some years now. Mainly the issue why it's antisocial work is because you need to spend much time programming. I've been always the kind of developer who likes to cut off from any sources of distraction and spend several hours on project because in this way i (as i hope) do it faster.

There are also other kinds of developers, more social that can chat, read, watch movies while development and they are ok with this and don't hesitate to be interrupted in their work in any time and come back to the project without any problem.

For me any distraction is source of frustration because i need to spend substantial time to load my mind with all info about the project and to concentrate back on the tasks.

I always thought it's better to do this that way because project is completed faster. But it makes some things difficult: it's hard to chat with someone who needs to have some important info: because you are a bit frustrated when you know you loose your Zen. And sometimes its more important to chat with someone than to loose Zen.

Well.. mostly in any other kind of work the ability to be "multitask" is very important. But as a developer and as a person it's also very important to stay social. And i see now that the problem of concentration makes it difficult to make the right chose: the cost of maintaining concentration is just sometimes so damn high!

So is it only me that i have so little concentration skills so any interruption is for me a big deal? Maybe it's just i have so bad memory so that i dont remember all issues of a project so long? Or maybe i develop the project in a fashion that requires me to store so much info on my mind only to be able to start working with code?

Or should i just accept that being more social will make me finish project slower and in the fashion that i personally consider non 100% productive? And it's just normal thing and i should just accept it and start to live like any other person who has many works and don't assume that programming is in any case other than any other work and i just do fuzz about the whole concentration thing?

This is question for mid-pro developers. I think you was having the same dillema in your life. I would be glad if you could help me take the right road here because it's just driving me and i suppose people i work with crazy for years.

share|improve this question

9 Answers 9

I have the same problem. In my former job at a big company there were quit places you could go to so work undisturbed. I used them a lot. But not all day everyday so I could also get the social part. Now I work in an office where that is not possible, so I can only use my headphones. Sometimes working early or late also creates some quiet time.

share|improve this answer
    
Good answer about time shifting, Here's a +1! –  Joshua Drake Apr 6 '12 at 18:48

Check out the answers to a related question on [programmers.se]: How do you maintain focus during short interupttions.

You could also take a look at Human Task Switches Considered Harmful.

Generally I go with the Leave something small undone approach.

share|improve this answer

I think it's a good idea to at least keep a separation between concentration-time and social-time, and make it clear to your coworkers when you shouldn't be interrupted (this is sometimes obvious, for instance if you have headphones on). You may want all your "sitting down at your desk" time to be concentration-time - you can make up for that by talking to your coworkers during coffee breaks or over lunch. Or you may decide to be more flexible, and be open to chatting at your desk on some days, but put on your headphones and concentrate on other days, depending on your task-list or your mood. Either way, I think it's extremely important that your coworkers realize that sometimes you're trying to concentrate - many tasks are very difficult to get done otherwise.

My method for that: when someone interrupts me, I usually raise my hand and say something like "just give me twenty seconds so I can finish this sentence / write down what I was doing / etc". Then if I can finish my current task in under a minute, I do that, otherwise I just write myself a TODO comment clarifying what I need to finish when I get back, so that I don't forget. This has several useful results:
1) I get to finish what I was doing or at least write myself a note about it
2) my coworker realizes that I was doing something that required concentration and interruptions make my work more difficult (this is not obvious to some people unless you make it obvious!)
3) my coworker learns that they'll have to wait at least a little before they have my attention, so they won't bother me with questions they could deal with themselves in twenty seconds.

share|improve this answer

Hm, I think there is no right or wrong. It depends on how you want to work. I am also struggling with some people and customers interrupting my work a few times per hour.

In most cases, (being brain afk) I ask them friendly to come back later while I am working at something interesting. Since I stand up every 2 hours in order to get a fresh cup of coffee or water, they then have the chance to talk to me. I also do much small talk during my little breaks which helps me to stay social. In most cases my colleagues understand that I do not want to be disturbed.

share|improve this answer

I find that the more senior you get, the less possible it is to have uninterrupted time, so you need to start thinking more about how to get back on track quickly and less on how to avoid interruptions. Tech leads, PMs etc. all have to deal with interruptions. If you show you can't deal with them, then they won't consider you for promotion to those types of positions.

For instance in my current position, I need to spend time talking to the PM (located in a another state and timezone), QA (located halfway across the world and thus only available for about an hour a day), the client (who justifiably won't take "no I can't talk right now" for an answer - they are paying my salary after all) and junior devs who are stuck right now and need to get unstuck and deployments to production (which must happen immediately most of the time), immediate action items from our project managment system (I do a lot of the production support for data that often include a good deal of ad-hoc sql querying to find out what is happening and why) that I get in emails (and often have to filter through 100's of non-immdediate emails to find) and code reviews for peers that need to be done fairly quickly so they can move on to something else. Consequently my day is filled with disruptions and I would not be able to get anything done unless I could get back on track quickly.

So what do I do? First and most important is I take notes - I have a to-do list in priority order and I cross items off as I do them, so I know exactly which part of the project I'm working on is the one I left off on. Just running through the list is usually enough to get my mind back in gear. I also tend to mark the line of code I'm on with a breakpoint when I get disrupted so I can easily find it again. I take the break point off when I get to the right place.

Next I do not try to do two things at once. If I'm in a meeting, I pay attention to the meeting and don't try to contnue working inteh background, etc. If I'm waiting for something to run, I wait for it or do something non-work related (like Stack Overflow), so I don't get confused as to what I am working on by having 12 things half finished but only one at a time. This also makes it easier for me to retain the details of what I am working on because I'm not trying to juggle too many at once. I find I get things done much faster too.

Emails are the biggest interruption but because I have to respond to urgent production problems immediately I cannot check my email only at set times. So I have it throw up a little envelope when a new email comes in and then I immediately look to see if it is something I have to deal with or not. Usually that means I'm only looking for a couple of seconds (the majority are non-urgent), so I don't lose my train of thought. When I find an urgent one, I take a couple of seconds to note down anything I need to be aware of when I get back to the task, hit the breakpoint key so I can find my place in the code and move to the other task. I know this violates my "don't do two things at once" rule, but in my current position, it is inescapable.

When people come to my desk and I am deep in the bowels of something, I may hold up my hand to ask them to wait a minute and then write down where I'm at or finish my sentence (if I'm writing an email) or line of code.

I also try to make sure the interruptions I have are work-related. I do not answer my personal phone at work, I do not send or read text messages from friends or family and I don't read my friends' updates on Facebook. All of that can wait until after hours.

Does all this work? Well I get stuff done much faster than many of my co-workers who think they can't be interrupted. I often get asked to fix the stuff they can't figure out too. I do the more difficult tasks, I help alot of other people when they are stuck, the client loves me, QA says they aren't too worried about a tight QA deadline if I did the coding (boy wasn't that a nice compliment) and I just got a huge payraise. Yeah I guess it does work.

share|improve this answer

Some quick tips:

Headphones (don't even have to be playing music, just so people might thing twice about interupting - or at least interupting someone else).

Working from home. If you can, then do. Or if home isn't a great place work from a local library or coffee shop. There are days when I'd work up a tree if the tree had wifi.

If that's not possible then maybe at least shift your hours. I once worked in a university in another country. I lived very close to the univeristy so it was quite possible to get into the office for 7am and have three hours (university remember) uninterupted work time before anyone else came into the office. I'd have a couple of hours doing collaborative stuff, eat a quick lunch at my desk and be out of the door at 2pm (often meeting the PhD students coming in). I got my work done without interuption, worked with the people who I needed to work with on my terms and had a big chunk of the day to play out. If you can arrange your life this way I highly recommend it.

share|improve this answer
    
+1 for 7am start. –  Matthew Lock Apr 12 '12 at 0:51

The best thing that works for me is 'scheduled' interruptions. Unless it's a very urgent bug, the QA knows only to bug me at :05 every other hour. Works best because you know you get uninterrupted time AND the QA thinks twice before bugging me with unimportant issues or issues he can actually solve himself with a tiny extra effort.

You can work out any schedule you like. Once people know when you are available they will respect your 'quiet time'.

share|improve this answer

The Pomodoro Technique is well-suited to handle interruptions. These include internal interruptions (where you want to do something off-task) and external (people coming to you).

When you are in the middle of a pomodoro (a 25 min work cycle) you have to decide whether you can delay the interruption or not. If you can delay the interruption, you can ask them "Can I get back to you at x time?". If you can't delay the interruption, you then decide whether you have to sacrifice your pomodoro (start it over) or not. If it's a quick response, then you don't have to sacrifice your pomodoro. If you do, this would be the time to log any time (if you do that) and jot some quick notes as to what your next action is. That way, when you get back from your interruption you know what to do next. Having pseudocode ready or a design doc will help refresh your memory as well.

You can also have blocks of time where you designate that you are busy and can't be interrupted. Pretend that you are in a meeting and can't be disturbed. The morning is a good time so you are free to answer questions and help out later.

share|improve this answer

You will have to be social as your experience grows, so there is no way in which it can be avoided.

The problem seems to be the loading part. You probably seem to load a lot of stuff incrementally to your mental notepad and when someone stops you, that notepad is lost. Then you start over again filling your mental notepad.

In this scenario, don't let the brain take the load, document code, make some notes on a real notepad, so that you have checkpoints about the stuff you are doing.Make the loading process as quick as possible.

Some time noting down a class diagram or code flow not only makes it clear, but may also help you in getting more time as you can then pass on these notes to others.

share|improve this answer

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.