I consider myself a skilled programmer, but for the past few years my ability to sit down and finish a project has been waning. HN, do you have any advice?
- Buy a moleskine and start writing stories or drawing, or even spend a few minutes learning a musical instrument, the left side takes care of the logic, programming and math, but if you spend too much time ignoring the right side your will start lacking on concentration. I spent about $19k on psychologist to realize that =)
- Once you get your left brain back start breaking your big and boring task into small pieces of fun and use the pomodoro technique - http://www.pomodorotechnique.com/
I think the secret is to start learning something completely new. I just started Judo and I find the exercise combined with a comply different type of thinking has helped me concentrate in other areas. Once you are good enough at coding it starts to become difficult to separate thinking about the problem from just daydreaming. However, because I am learning something completely new I can almost feel my brain making connections which helps me concentrate and remember what that feels like.
I program, draw, write music. They're all quite similar for me. Each requires logic and intuition.
The left/right brain thing is a simplistic pop-science myth. (Sorry about your $19K. Perhaps someone with a medical degree, such as a psychiatrist or neurologist, would have been more helpful about the mechanics of the brain).
It may still be helpful to do non-coder things to break the monotony. But you'll be using your whole brain doing it.
It's funny: several months ago I decided to make 2009 the year of my return to the command line. I did it "for the lulz", and it ended up being my greatest productivity hack ever.
I moved personal and work email to Mutt and uninstalled my Gmail notifiers; I moved IM to bitlbee on irssi; I moved RSS to Newsbeuter; and I moved Twitter to ttytter. I keep all of this running in a screen on my remote shell.
And this was certainly not the intent of my project when I started it, but I can't even begin to tell you what a difference it's made for my productivity. I usually leave my screen on an empty shell prompt, so even if I see my terminal I've got no idea what's going on in those other terms unless I actively go looking for them.
Granted, I have the luxury of working at a small startup (< 20ppl) and I can maintain some aloofness with regard to IM (because if a colleague really needs something from me I've probably not more than 20ft away), but as far as this other stuff goes, do you really need to know what's happening on Twitter in realtime? Is there ever really an email so important that it can't wait until you've finished your current thought?
The most effective thing for me has been social pressure. If I'm working with people who are depending on me to get my work done, I'm more likely to get it done on time. If my coworkers can see my computer screen, then I'll definitely get it done on time, because I'll feel too ashamed to procrastinate. This system falls apart if my coworkers openly procrastinate as well.
It is extremely difficult for me to complete projects on my own these days. Luckily, it's relatively easy to find someone to work with on most things that are worth doing.
Break up tasks into the smallest parts that you can. Once you start finishing a few of these, you'll notice significant forward progress.
Release to the public often, and write notes that highlight your changes. That's important, because it forces you to think in terms of those notes; if there's nothing "release worthy" happening, it would be hard to write anything.
Every now and then, allow yourself to do tasks that aren't strictly related to forward progress. Fix some code formatting you've been meaning to do; write a document; try something new. The mixup helps to keep things from becoming boring.
Don't be afraid to literally walk away. If I talk a walk for an hour, I can often do as much work in my head as I would at the keyboard, but it helps me focus (and it's healthier).
You have to be honest about the best way to motivate yourself. In the speech "You and your Research," Richard Hamming[1] talks about how he uses his ego against himself. When he went on sabbatical to write a book, he told everyone he was going to finish by the time he got back. He wouldn't dare suffer the embarrassment of failing to finish!
Me? I respond well to A. small, well-defined tasks and B. limits. I get A. by breaking tasks up into tiny modules, and by using Git to make lots of small feature branches. I also write TODO lists with lots of 30-minute jobs.
I get B. by using LeechBlock[2] to restrict access to websites for periods of 1 hour. When I combine A. and B., I usually can find something that'll put me working long enough to get into the zone.
Wow, so many possible causes for poor concentration! I like this thread as an exagesis.
What works for me is I think also the lowest hanging fruit: a combination of working on things I care about, and actively bringing my wayward bad habits under control.
A reset requires a change of scene. It's likely that you don't like what you do now. That's the root of the problem. Chop it down. Go find something else to do.
Once you pick something, do it all the time. It's analogous to shocking your system with a new diet. Everytime in the past that you procrastinated, you gave strength to these demons. Now it's time to starve them completely for a while.
But seriously, log off for a while. Stop Twittering, stop IMing, stop reading your RSS feeds. If you're regularly employed, then take a vacation and go to the mountains. If not, go there and stay there. Come back once the spontaneous urge to do so goes away. While you're there, read a book. Not a computer book, and not a junk novel. Pick a text that requires mental engagement but not hands-on experimentation. A history book with citations in it, or a heavy philosophical tract, is a good choice.
Thanks for mentioning reading fiction. I used to read quite a bit of fiction, especially science fiction. More recently, I've set that aside in the name of spending my reading time on things that are "useful".
But I have found, reading fiction is useful, as it activates your imagination in ways that nonfiction simply does not. I still don't read a lot of fiction, but I endeavor to get in some, and I think it helps...
I usually take off a few weeks, leave my laptop & phone, pack a backpack, and find a remote beach or mountains :) Even if i have to take a paycut, I do this every three to four months. One way this helps me relax and rejuvenate, on the other hand I'm forced to finish the projects I take, so no one needs me during this period of time off.
I guess there's two kinds of attention here: short-term (I can't concentrate enough to do an hour's good work) and longer-term (a few weeks into a project I get bored and do something else).
For short-term, some people love the Pomodoro technique but I found it too restricting. For me, I just have to find something interesting enough (or find a way to make something interesting enough).
For longer term projects, there are two rules:
* Do it every day, or every weekday. You can find the time, just keep to a schedule. I've made a website (www.relayapp.com) and two iPhone apps during my train/bus commute over the past 18 months. It's tough at the start but you get into it.
* Break everything into small chunks. I have a list of unit tests to write in a text file and I can always do something in 30 minutes. If not, I spend my time thinking of small tasks I can do next time. Making it easy to make some progress is what keeps you going.
A note about the second rule: "Break everything into small chunks". This in itself can be a very demotivating task if you do not realize that you don't have to decide on all the chunks in advance. From GTD I learned that you only have to decide what the next chunk will be for a particular project, not all of them.
I like to have a few (maybe 5-10) chunks ready so I can pick up my laptop and start working any time, and not have to decide what to do next. This helps when I'm low on energy - I just pick something easy from my list and I can still make progress.
But you're completely right: planning everything in detail at the start would be suicide (at least for me).
There are several things that break concentration:
1. Distractions. I'm a super-minimalist and I don't like to see even one extra bar or button on my screen. I've gone to the extent of removing the tab bar from my browser so I can't see which tabs are open (I use Conkeror). And I obviously turn off Twitter/ IM/ email while working.
2. Too many choices. Every second you spend doing one thing, you're losing out time to do something else. Deciding in advance what you're going to do for the next few hours helps.
3. Lack of recreation. Once a week or so, I spend several hours on photography and drawing. I've become a lot less restless/ fidgety over time.
4. Emotional clutter. You might want to maintain a daily diary that you spend 15 mins a day updating just before going to bed. It helps clear your mind.
I've always found deadlines are a great way to get things done. My biggest problem is that projects tend to seem never ending, which is a huge turnoff for me.
You can try self-imposed deadlines, but those rarely work for me. I prefer real deadlines- promise to show it off at a conference or meeting, or something similar.
Why do you have trouble finishing these products? What makes you lose the focus?
Sometimes, attention problems can be corrected by taking better care of yourself. Personally, I've found my attention problems come more from ultimately not caring than from some weakness of character. It's easy to think up ideas that could be successful, but are they really for you?
For example, I've come to discover that I get motivated when solving really tough niche problems that no one else has dealt with effectively. But I couldn't care less about serving general lusers, like writing Facebook apps. I could maybe think of a cool idea for a Facebook app, and it might even be a killer one, but ultimately, I don't feel anything about serving Facebook users, harvesting their data and habits, etc.
Is it possible you're tackling the wrong projects?
Good point, but to play devil's advocate: if you ramen-retire after a few years building apps for the unwashed masses, you can work on whatever you like until you die or the money runs out. IMO, a few years of total independence are worth a few years of non-exciting stuff. Just don't get comfortable and wake up one day as a 20 year lifer at Inane MegaCo.
Don't make your projects big monolithic tasks, make them consist of a series of fun, small iterations (like Agile development). You'll have a better time, and it'll be easier to stay motivated - especially if you're making your project open source and can do minor releases along the way.
That's a workaround, not a cure. I'm all in favor of eliminating the need for concentration and self-discipline wherever possible, but doing so won't give you more of it.
The problem is that the workplace is filled with constant interruptions. Either a coworker needs to talk to you about something, you need to get up to go talk to someone, or you end up interrupting yourself when you should focus on working by checking email, browsing to a website, or any million other things.
To improve your attention span, you need to work at removing as many of these restrictions as you can. Since you can't control the external distractions - coworkers, meetings, etc., that means you have to focus on the ones under your control. So for start, pay attention to what you're doing at any given time as you work and try to reduce the number of times you interrupt yourself.
Yes but you're missing the rest of my reply: There is no try, only do.
That means, you gain a longer attention span by making yourself have a longer attention span. It's a struggle. It's supposed to be a struggle. If it had a quick and easy fix you wouldn't be needing our advice in the first place. You're probably a master of quick and easy fixes -- that's what people with short attention spans collect.
Encouraging the world to adapt to you by giving you short, easy quips about what you need to do is not helping anything -- it's just making it worse. You'll pick up the several dozen little shiny quotes and think about them for a few minutes and tomorrow be on to something else.
You want a long attention span? Go do something that requires a long attention span. I mean do it -- don't talk about it, don't blog about it -- just shut the hell up and go do it. When you are done, you will have a longer attention span.
Please forgive me if I sound coarse: this post reminded me of an alcoholic in a bar drinking to his sobriety. It just doesn't add up (at least to me)
Get into a habit that you only do while doing "serious work". For me, it was listening to music, on headphones. When I start doing "serious work" I put the headphones on. When I'm distracted, I take the headphones off. Repeat.
Now, a few years later, I can get into Serious Work Mode, just by putting on the headphones, without listening to music. I've accidentally Pavlov Conditioned myself. It's great.
I've found myself at the same place, and though I'm still working on it, I've found the following to be useful:
Don't force yourself to work on something unless you want to, assuming no time constraints. If you force yourself, you're going to do less and hate life. It's an easy way to lose your focus.
If you're feeling particularly unproductive, work on a project you can complete in an hour or two. That'll help you gain the momentum that's crucial to getting things done.
Solve a problem at the beginning of the day. Project Euler is my personal pick for such problems, but anything that works the mind is a good choice. This doesn't even have to be code related, just something to get your mind in gear early on.
Don't overuse stimulants like caffeine. As much as I love such drugs, their overuse is easily able to harm your focus.
In general, try to analyze what works and doesn't work for you. Hope you can find something to help you out. Good luck.
My experience is that difficulty concentrating is rarely the problem itself. It's usually a symptom of a problem. Rather than trying out tricks, your best bet is to tackle the problem head-on.
First thing I would recommend is that if concentrating is a serious problem for you, you should see a doctor. Since this is something that's just come up in the last few years, it's likely not something like ADHD. However, this can be caused by a number of psychological ailments (anxiety, depression, etc) and physical ailments (diabetes, hypothyroidism, etc).
That said, it's important to note that distraction is often a learned behavior. Do something to break the habit. Try programming in new places, don't use the computer you program on for personal browsing, etc.
I'm horrible at this as well. But I think I found a good way. I have a timer on my blackberry that I set for 15 mins. It vibrates on the 5 min and 1 min and end marks.
I focus exclusively on a task for 15 mins. Then at the end I reset it again, or move on to the next project.
For me it's 45-60 minutes, but longer pauses afterwards (15-30 minutes). I only started doing this recently, but so far with good results.
The other thing that helps me since a long time is having a todo-list in which the top-task really always describes exactly what I'm working at now. Even if that task is only "figure out what to do next".
I've realized that the times when I manage to force myself to implement just one more feature for the day, refactor one more API, etc. are the most productive. So, I try to keep that in mind when my focus is waning and I want to skip off to HN or Hulu, and things get done.
One word of advice for retaining your current attention span: do NOT, under any circumstances, start playing any of the Tony Hawk games. The ability to instantly reset the level when a mistake is made destroyed my attention span when Tony Hawk 2 came out years ago. It took me a month to realize this and get back to a normal level (exaggerating, of course).
Start by working on it for only 15 minutes per day. Set a timer and when you reach 15 minutes you have to stop no matter how much you want to continue. It will help you look forward to it for the next day.
After a few weeks you can increase the time you allot per day. But if you ever find yourself getting bored or not looking forward to it, then cut back. It will take some practice to find the right spot.
To me, the ability to sit down and finish a project is inversely proportional to the amount of urgency that I attribute to its completion. I recognize tension that I feel when trying to finish a project is really something that I'm making up; I know that programming is easy and I'm at least passable at it. It follows that I can finish the project.
Therefore, all I need to do is find a way to reset my mental state to something neutral/non-tense. For me, science fiction, fantasy, and poetry are all suitable to distract me from the task at hand and dissipate the tension, allowing me to work.
Seriously, for better or for worse I took Ritalin from age 6 until age 18, then stopped for about 5 years. Afterwards I started working with a doctor to try and find a ritalin replacement that didn't include the daily emotional roller coaster that came with Ritalin.
After 7 or 8 meds I found that Provigil (Modafinil) is flipping awesome. It has no side effects, and is milder but more consistent than Ritalin. I don't get hyper-focused like with ritalin, which is great because it doesn't make me get hyper-focused on the wrong task. I can easily coax my brain back on task when distracted now.