305

I currently have an internship and I've been assigned to a single project and that project alone. While I'm usually several weeks ahead of schedule and put a lot of thought and detail into my work, I sometimes feel like I can't put my head towards the work. On occasion I'll browse the internet for random interesting topics to unwind myself so I can get back to work a few hours later.

While I know that you're supposed to always work at work, I often feel as if it is almost unbearable to actively work for 8 hours a day non-stop. On other occasions, I'll get inspired and work for several days in a row making great progress, but on other days it'll be slow.

My manager seems to be impressed with how fast I seem to be working so far and how much detail I put into my work. The same goes for my colleagues. Still, I feel that this is a bad excuse for me to work the way I do.

So, to what degree is it considered "normal" to not being fully focused on your work? Or is it not considered normal at all? Am I just being lazy and inefficient?

Edit: I realize this might be too broad of a question. So I'll try to add the following to narrow it down to: What could be the best approach for me to get more efficient?

  • 90
    If you're writing code, working full 8 hours a day without unwinding time is completly and utterly utopic. Reasonable project estimates factor this in. – Magisch Apr 20 '16 at 7:07
  • 64
    "On occasional I'll browse the internet for random interesting topics to unwind myself so I can get back to work a few hours later." - Normally when you unwind you take a break for several minutes (5-15), but not hours. If you're not doing this maybe you're burning yourself out. – Brandin Apr 20 '16 at 7:49
  • 191
    If programmers could work non stop for 8 hours, SE network would have almost no answers ;) – PTwr Apr 20 '16 at 12:57
  • 11
    "I'm usually several weeks ahead of schedule": You are an extraordinary person and should ask for a pay raise. Do not change anything about your typical work day: You are doing the right thing. – Peter - Reinstate Monica Apr 21 '16 at 13:18
  • 21
    many breaks are needed in programming, especially when writing switch statements. – Hagen von Eitzen Apr 23 '16 at 11:38

13 Answers 13

216

In an 8 hour shift, at minimum you should take two 15 minute breaks, and a 30-60 lunch break. The 15 minute breaks are on the clock, the longer lunch break is not.

Additionally, you mention in one of your comments that your job involves writing code. Programming requires mental breaks to be effective. Programming is very cerebral; it's not a job where you can mindlessly follow a rote pattern. You need to rest your mind from time to time -- especially when you switch from one major task to another. I find that if I walk away from a difficult problem for a few minutes, when I come back, I am often able to attack it in new / better ways that I wouldn't have thought of if I just stared at the screen waiting for inspiration to come.

Here's what I like to do. In addition to unwinding on my 1 hour lunch break, I allow myself 15-ish minutes per day to read the news. I don't have a set time; just whenever I feel I need a break. I scan google news, and pick two or three headlines that interest me most. After finishing those articles, that's around 15 minutes. Additionally I allow myself another 15-ish minute break to get water, use restroom, goof off online, play a game on my phone, whatever. The second break is not at my desk. Additionally if, throughout the day I need to refill my water bottle, or make a brief pit stop to the restroom, or even just stand up for 5 mins and stretch my legs at my desk, I don't worry about it.

Writing code is mentally taxing work that most people don't know how to do, or even how to learn to do, and it has a big impact on the business. Generally managers will be understanding of occasional breaks. One programming shop where I worked, the entire staff would take a daily break where they would share snacks and read / talk about the newspaper (back when newspapers were a thing). You're young, and an intern, so I understand that you need to make a good impression. So, obviously, don't abuse it. But if you take a few reasonable / 10-15 minute breaks a day, and a lunch break, it should be fine.

  • 75
    "I find that if I walk away from a difficult problem for a few minutes". A lot of my breaktroughs have happen on the toilet as well! ;) – Jeroen Apr 22 '16 at 10:57
  • 20
    xkcd.com/303 – Raystafarian Apr 22 '16 at 18:54
  • 10
    I think even better than reading news is to stand up from the computer and go for walk, or play, or talk with collegues. For example we have darts in the ofice, its good thing to do during break. I mean do something physical, and not with computer. At the same time resting the eyes. – Will_create_nick_later Apr 23 '16 at 11:50
  • 3
    The one bad thing about giving up smoking, is I no longer realise the answer to a problem just as I set fire to a cigarette. – Jon Hanna Apr 24 '16 at 22:28
  • 2
    +1, My best breakthroughs happen when I think through a problem when I'm sleep – MDMoore313 Oct 19 '16 at 18:28
131

Sometimes I just can't get anything done.

Sure, I come into the office, putter around, check my email every ten seconds, read the web, even do a few brainless tasks like paying the American Express bill. But getting back into the flow of writing code just doesn't happen.

These bouts of unproductiveness usually last for a day or two. But there have been times in my career as a developer when I went for weeks at a time without being able to get anything done. As they say, I'm not in flow. I'm not in the zone. I'm not anywhere.

This is an excerpt from a blog post by Joel Spolsky, a minor icon in the software engineering world. He is quite succesful; he's had a pretty diverse career, founded a successful software company, and his blogs are inspiration to many. He also co-created a website you might have heard of, called Stack Overflow ;)

And he seems to struggle with the exact issue you describe. And so do I, from time to time. Maybe it's normal for programmers. Or maybe for highly creative professions in general; I can imagine writers having similar problems.

There is probably a lot more written on the subject of programmer productivity. Read some of it. You might find helpful tips, or recognize the same thing in others. The most important thing is probably to try your best, but don't be too hard on yourself. Guilt is unlikely to help :)

  • 28
    It's a bit scary how much this describes my problem. On the days/house where I cant get any coding done, I tend to force myself to do the smaller more brainless tasks that still contribute to my project. Which is probably how I manage to get "some" more hours at work. Looks like I've got some reading to do :D – Migz Apr 20 '16 at 13:47
  • 7
    @Migz It also helps to have your work organized - if you've got a list of tasks that need to be done, it's much easier to start doing them. In many cases, you might be unable to enter "the flow" because you can't think of where and how to start - use your best hours to prepare those plans, and you'll often be able to pickup on the tasks even when in the "non-flow" mood. Even if that doesn't help, you usually have a few tasks that are relatively mindless jobs, the equivalent of sorting pencils. Or you can work on making yourself understand your work/business better, which is an investment. – Luaan Apr 21 '16 at 8:43
  • 3
    Maybe it's normal for humans. – David Conrad Apr 22 '16 at 2:37
  • 8
    @jpmc26: Not to detract anything from Joel, I don't think the masses will recognize his name as readily as Bill Gates or Linus Torvalds. – Juha Untinen Apr 22 '16 at 11:19
  • +1 for not deifying Joel, he's cool and all but he's just like everyone else. – MDMoore313 Oct 19 '16 at 18:30
60

Taking an occasional break is quite normal. Working fully concentrated for 8 hours straight without blinking your eyes seems next to impossible.

For instance, in my country, it's commonly accepted that a smoker can go have a smoke twice day during the office hours. Others, such as yourself might browse the internet a bit if they need to clear their head.

However, you state that your break can be 'a couple hours', which is not normal. At the same time, you also state that the manager is happy with your work. This would suggest you are not being assigned enough work to keep you busy. Either there simply isn't enough work to go around, which I find can be incredibly frustrating, or you outperform your colleagues quite badly.

IMO not having enough work can make a day very boring, and severely hurt your motivation. I would suggest talking to a manager to get enough work to keep you busy. If this means you will be accomplishing a lot more than your colleagues, it will count in your advantage in the next round of promotions or salary raises.

If there simply isn't enough work, you might want to make good use of this 'extra time'. Maybe learn a new skill on the internet, do some extra unplanned improvements, or search for another job that will use your talents more fully.

However, if you don't want to change the situation, if you are happy this way, and your manager is happy with you... well, carry on.

  • 4
    Make sure that it's a skill applicable to the job, though. – jcm Apr 20 '16 at 11:31
  • 30
    I find Stack Overflow is actually really good for 'slacking' because it's also providing me a way of developing my programming skills. (Which are job relevant). YMMV. – Sobrique Apr 20 '16 at 12:36
  • 2
    @Sobrique I couldn't agree more. And regarding smoking... in Germany the (declining number of) smokers just go out a couple of times a day. The devs that I have seen did that between twice a day to every half-hour. While there is no law that says you are entitled to do that, most of the time companies don't mind, because happy employees do better work, and smokers who are not allowed to to smoke tend to get unhappy pretty quickly. Usually no-one will mind if a non-smoker joins them and you talk shop while outside getting fresh air. – simbabque Apr 20 '16 at 18:33
  • 7
    Programming is not a typical job. Much of what you say doesn't apply, in my opinion. – horse hair Apr 21 '16 at 7:28
  • 1
    And the new-smoko... the coffee break =] My colleagues and I will go two-three times per day. – Tim Malone Apr 21 '16 at 13:46
48

I cannot count the times where I have been stuck for hours on a problem that was solved five minutes after cruising the net or BSing with a coworker. I would recommend discretion, however, as Sobrique pointed out below, sometimes coworkers can judge you.

That said, what matters most is that you get the job done. If you have a good manager, that's what matters. You may even approach him or her by saying "would you mind if I took a walk, I need to clear my head".

There is a concept called "sharpening the saw", that goes all the way back to lumberjacks. If the saw was dull, hard work didn't matter. So stopping work to sharpen the saw made for more efficient work and better results.

In this case, your mind is the saw, and by stepping back, taking breaks and breaking up the work, you are making yourself sharp and better able to get the job done

  • 1
    In an ideal world, this would be true. Few employers are so tolerant. (And those that are - you probably have colleagues who are judging you too). I would call this a dangerous thing to suggest as a result - I have no problem with the ethics of 'if you get the job done, that's all that matters' - but I don't think it's safe to assume this is the case in ... practically any employer. – Sobrique Apr 20 '16 at 12:37
  • 2
    Sometimes i'd feel like House MD's staff of diagnosticists: go the loops attempting in vain to solve something (code-related) then an eureka moment and everything unwraps in 5 minutes. But without the hour or so of previous thought and trial / error, it'd be hard to reach that one solution. – Mindwin Apr 20 '16 at 14:51
  • @Mindwin that's the nature of the biz, I believe – Richard Says Reinstate Monica Apr 20 '16 at 17:31
  • 2
    There's a statement attributed to Abe Lincoln to the effect that if he was given eight hours to fell a tree he would spend seven of them sharpening the axe. – user207421 Apr 21 '16 at 1:29
12

If your manager is impressed with the speed of your work then I wouldn't worry.

If you still feel inefficient, then I would say instead of just reading whatever on the internet, read things that are relevant to the kind of work you do. That way, the long breaks you are taking are really just professional development time.

  • 3
    Even spending time making a prototype of something you think is cool for the company would work. This is how some of the best features get made. – David Starkey Apr 20 '16 at 20:35
10

It's nearly impossible to stay focused during 8 hours and it's also not beneficial for your health. On top of that, you'll likely be more inefficient if you don't take any breaks. However, keep in mind that taking a break and then get back to work "a few hours later" is usually beyond the limits of a normal work break.

A technique you can try to increase your efficiency, which is your main question, is the Pomodoro Technique (https://en.wikipedia.org/wiki/Pomodoro_Technique).

  • 3
    "It's impossible to stay focused during 8 hours ..." Except when it's not. It doesn't happen often, but there are times when eight or ten or more hours just sort of disappear while you're so deep in the groove that you don't even realize it's a groove. It's not about heads-down, crunch time, or forcing anything; it's just a perfect storm of creativity, competence and confidence, and you will mourn its passing after it leaves you. – Stan Rogers Apr 22 '16 at 22:30
8

As many people rightly say, you aren't expected to work for 8 hours in 8 hours. However, few of the answers answer your main question that you stated after the edit:

What could be the best approach for me to get more efficient?

If you are taking hours-long breaks browsing the Internet, as you say, this goes beyond guilt over the occasional brainlag or too many smoke breaks.

I would guess that there is one main reason why you are having a hard time focusing:

I'm usually several weeks ahead of schedule

Sure, the whole project isn't done, but the part expected of you is done, and so is the next part and the next part. Not having anything immediately significant to work on, with the parts you're supposed to be working on already done ahead of time, will reduce your ability to focus - if what you're doing isn't significant right now, that may prevent you from caring much about working on it right now.

Your manager has decided that you should, as an intern, work on one project. This does not seem to be enough project to fill your time. It also does not seem interesting enough to occupy your attention for most of a work day.

Either:

A) Ask to move the deadline up.

I don't know if you have a paid internship, or how that pay is structured if it exists, and obviously if you do move the deadline up you run the risk of putting yourself out of work sooner if you finish the only task they want to give you sooner. If you want the deadlines to be sooner, you should also ask if you (and your manager) could plan for another project if you want work after the project is over.

-or-

B) Ask for a second project to work on that is substantively different from your current project and that you could definitely use for gaining experience.

Probably the best approach. Again, ask for something significantly different from the project you are working on. If there's no other project on the horizon, ask for any interesting work at all you could do on the side, improving database indices or whatever. Don't say you haven't been working full time, but explain that you now have enough of a handle on your current project that you would like to pick up a side project to help expand your horizons, and that going forward your current project may not be enough to fill your time. Your manager may ask you to complete your current project sooner (see option A), but hopefully he or she will see the wisdom in your request.

Either approach has the potential to impress your manager if you're gunning for a permanent position with the company when your internship is over. Just make sure you don't talk yourself into working yourself out of a job if you're getting paid.

6

Others have said it, so some of this will be a repeat. I write code myself, and I can tell you there is no way you sit for eight hours a day, writing code taking 2 15s and a lunch and write any quality code for any length of time.

You need frequent mental breaks to let your brain unwind. It's most important to make these breaks when "switching gears" and moving from one task to another.

If you do not take frequent mental breaks you will instead work one eight-hour day in a week, and spend the other four days recovering. Especially after the first few months. You will fight some real internal resistance, and find your self "not caring" because you're just plain burnt out.

On the other side, your can't spend four hours working and the rest of the day surfing Stack Exchange.

I find a good balance around the Pomodoro technique. Now I think the full structure of the Pomodoro technique is silly in the real world. But that doesn't mean that we can't take the lessons learned from the technique and use them. You're going to ditch most of the tracking and planning, and instead focus on a couple of key things. Work 25 minutes, then take a 5 minute complete break (get up and away from the computer). For every four Pomodoros take a longer break of 25 minutes (this is longer than normal, but I find it helps). When you're working, work. 100% work. When your breaking, break 100%. Don't fill your breaks with emails or compiling, and don't Alt + Tab to Stack Exchange during the work time. The one thing you're going to want to track is complete pomodoros. This will give you a measure of productivity. It will also let you know how long certain tasks are taking you. For example, adding feature two will take three pomodoros. You don't want to track one task per pomodoro or anything like that, and you probably don't want to track interruptions. What you're most concerned with is 25 on - 5 off. Make sure you have a "email" pomodoro. You don't want the work to only be coding. You want work to include all your "work", even if that work is pretending to care at the break room conversation.

  • 1
    Oddly enough, and I wouldn't recommend starting, but the habit of smoking/vaping lends itself so well to this pattern you describe. Of course, there are downsides to that as well :) – Conor Apr 20 '16 at 15:14
  • 2
    @Conor As I have asthma, that would be one habit I will never want to have. :) But I think I can use one of my stress-balls to help me take these full breaks. – Migz Apr 20 '16 at 15:24
  • What do you mean by "taking 2 15s"? "taking 2 minutes 15 seconds", "taking 2 times 15 seconds", or something else? – Peter Mortensen Apr 22 '16 at 17:59
  • Sorry it's slang around here for two fifteen min. brakes. As in 2-15s and a 30 or 2-15s and a 60. A very standard break configuration. – coteyr Apr 22 '16 at 18:33
  • @PeterMortensen I think what he meant was two "15s", or two "fifteens" – EvSunWoodard Oct 11 '16 at 17:31
5

As the other answers didn't mention it, I'd like to add, that you could ask your manager for non-urgent tasks that require less brain power/focus. For example, writing documentation.

So when you can focus - you do the programming and when your brain is exhausted/it's a "bad brain day" you work on the lesser taxing tasks.

Also doing a code kata in between is a great way to learn/ train your skills.

  • 6
    Writing documentation is dull, though. You're unlikely to find it easy to motivate yourself to do this! – Lightness Races with Monica Apr 20 '16 at 17:39
  • 1
    @LightnessRacesinOrbit This is the issue I have. Boss suggested I try using downtime to do documentation tasks. These burn me out faster than coding. It hard to be motivated to document your own work, near impossible to be motivated to document other peoples work, then want you to go back and dumb it down to a level where an HR rep will understand and you start searching for lifes alt+f4. – Jacobr365 Apr 20 '16 at 19:13
  • 3
    @Jacobr365: Yep. I much prefer to count documentation as part of the coding task, whereby integrating it into that work is somehow easier than thinking of it as a separate thing. Then downtime is SO, Facebook, lolling about. – Lightness Races with Monica Apr 20 '16 at 23:51
5

From a manager's perspective

Because programming is the sort of a job which is very hard to measure when it comes to timing, companies sometimes do expect you to work extra, but they won't allow anyone working any less than eight hours.

Because it's difficult to measure performance, if your manager gets a feeling that you are behind schedule for a project for whatever reason, he may start monitoring you and that's where reading news or playing games for hours or even shorter time like 10 - 15 minutes, but consistently may cause TROUBLE...

From an honest programmer's perspective

Some tasks are so interesting that we don't even get time to look around, while others are so boring and complex that we from time to time take shorter breaks, but these breaks are related to our as work as well, e.g. watching something on Pluralsight or reading about future releases in technology that may help us...

From a not-so-honest programmer's perspective

He may not find any task interesting at all, so he consistently finds interests in other activities that are not work-related.

Summary

If you are at work, your activities should be work-related; now some companies are strict and others are not. So shape yourself based on that.

4

I'd recommend look at this book Pragmatic Thinking and Learning: Refactor Your Wetware

It explains that your brain has two modes of operation. One is a linear mode, which is fairly slow. This is what you are currently concentrating on and actively thinking about. There is also a huge amount of background, asynchronous, processing that goes on.

While you are focusing hard, or trying to focus hard on something, you are slowing down this background processing. If you do something else, you free up the brain to ponder things in a non linear way.

Having a break can help you to complete your tasks.

Personally I would say a high percentage of big problems I solve are while I am not coding and doing something unrelated. Suddenly I would realize that the approach I was taking was not great and a small refactor would make it all so much better.

So don't feel bad if you are not coding, your brain is still working on things. But be mindful that you still have to actually do the work.

3

Unwinding with looking at Internet news at a computer job is not the best idea because you can very easily get sucked into it habitually as a manner of procrastination without this being apparent to either you or coworkers as you are using the same computer all the time. Lots of more complicated programming tasks have elements that take maturing: you cannot solve them well going full tilt at them, but you will not grow on them if you leave them alone altogether.

So I recommend establishing practices for keeping on top of that: at the start of the day, make a list of things you want to focus/work on. Try figuring out how this worked out at the end of the day or week.

Whenever you can, don't work at the computer. Make it a habit to do all your design stuff over pencil and paper. Try figuring out how to make good use of a printer for code analysis and debugging; while you don't want to leave heaps of paper behind, any page where you expect to be scribbling and marking things while absorbing stuff is reasonable to print out. Of course, also plan in the time and resources once you are through with some code passage how to simplify this for the next time you or someone else hits on the same code: write down the findings you are sure of, if necessary reorganize the code for better reception.

Collecting insights on paper is usually much preferable from collecting them in the code since they might just be preliminary (and you later realize what was incorrect).

Working with paper allows your eyes to relax, it gives a different focus, it leaves a tangible feeling for you and your coworkers about what you are working on and when you stop making progress. And it keeps the Internet away when it's most dangerous.

A lot of programming is intensive work you cannot keep up the whole day without getting burnt out eventually, but a lot in a programming job can also be rote work. Organizing your workflow and your tools and materials in a manner where you are on top of delivering both and making the best of your available concentration, skills, experience and presence is an art form in itself.

If you manage that well by figuring out how to stay away from unproductivity traps and distractions while putting your creative energies to use in the amounts and limitations you have at your disposal, you'll be effective even if the skills you manage, all by themselves, may not necessarily be extraordinary.

  • First I wasn't sure about your suggestion to print things out, because of the waste of paper. But I think I will keep it in mind, because I completely agree that staring at the screen some more is a bad relaxation from staring at the screen. Treating your eyes and mind to a different perspective seems to be a good means of balancing out while working. – Sir Jane Apr 25 '16 at 12:01
2

Being ahead is good, sometimes to get the best result two or three re-writes may be required, and you need to sleep on the previous effort. Hopefully this is how you approached your assignments at Uni.

When you are intensively engaged, hours can fly by. You will end up half blind with a bad case of the chalfonts if you don't get up and walk around. (We can discuss this again in 30 years).

I also find it hard to come back from "the bench" if I have been between assignments, it helps to code macros for mind numbingly repetitive tasks.

It's also amazing what can be solved in the pub with your colleagues (although ideally reserved for after work).

Maybe work on developing tools, or documenting harder solutions for future use, there will come a time when Google and SO cannot help you.

Try coming in 2 hours earlier and taking a longer break for lunch, but manage the time. Don't work longer overall hours to "justify" the breaks. If you can help someone else with their problems, all the better. Their time costs as much as yours.

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