I’ve met a fair amount of ADHD computer programmers over the years. A lot of them were fairly successful in their chosen career, but they all had some combination of the same issues all people with attention deficits face – distractibility, trouble focusing, disorganization and so on.
The successful ones I’ve met have had good ways of working around their challenges. Strategies, specific apps, and systems that make up for these problems and allow them to get their job done better. Below I’ve put together a bunch that have helped me a TON over the years. Check’em out.
Use visual tools.
If I look at a big dump of text output – for example, from an application server’s log – the words literally blend together and it takes all my brain power to read what’s on them. And it’s insanely slow to read.
Whenever possible, I use GUI-based tools instead of the command line. Graphical interfaces are way more visually streamlined with much more visual differentiation – for some people like me, this is much much easier to read.
In addition, they’re often easier to learn as well. GUI applications often have tooltips and in-app help that is readily available.
Some of the tools I use:
- for source control (Git, Mercurial, etc) – I use SourceTree.
- for diffing or merging files – I use DiffMerge.
- for coding – I use Sublime Text.
Embrace mistakes, deal with them using Git
If you’ve got ADHD or LD, you’re gonna mess up. A lot. Train yourself to accept it as par for the course, and you’ll get less frustrated and recover quicker. (Read Learned Optimism – big help.)
In order to deal with frequent mistakes, learn to use Git (or whatever source control system you use) more effectively. There are things literally built into Git for preventing and correcting mistakes – take full advantage of them.
Here are Git techniques I find specifically helpful for ADHD coders:
git reset– for when you write messy code you don’t want to keep
git stash– for when you write messy code you want to keep, but you don’t want people to see
git checkout -b– always start work in a new branch. If it sucks, destroy it and create a new one. Never push unless you’re ok with people seeing it.
git rebase -i– Commit often, to save your work. When the work is good, but your commits are ugly, do an interactive rebase to clean up the mess.
(Note: All of these can be done in SourceTree, and any other good GUI client.)
This is stuff that can help any developer. And all developers should know it. For ADHD developers it’s a necessity – it’ll help you avoid a lot of those “oh shit!” moments when you push code that will freak out other developers. Or the other ones where you accidentally lose important work.
Document things digitally
ADHD people forget stuff. Programmers are no exception.
I’m pretty candid with coworkers about the fact that “if I don’t have a digital copy, I won’t remember.” This is a good expectation to set with people, and not an unreasonable one whether you’ve got ADHD or not. After an important conversation, ask someone to shoot you a quick one-sentence email. As soon as it gets to your inbox, put it in Evernote.
Keep yourself on track
ADHD people often go off-task; we start doing something, and keep forgetting what the hell we were doing.
For years I used an Evernote note (or an OS X sticky note) with the words “WHAT AM I WORKING ON RIGHT NOW?” and the current task.
Let’s say my current task was “Email proposal to Dave.” Every time I caught myself looking at Facebook or forgot what I was supposed to be doing, I tabbed back to that sticky note and remembered I had to finish that email to Dave. You’d better believe that proposal got done, and Dave got it.
You can use a full on task list as well; for some people this is too much information at once – if you list 20 tasks on there, overwhelm can set in and you can feel like you’re getting nothing at all done.
I recommend a technique used by a lot of top-performing successful people like Tim Ferriss: every day write down your 3 most important tasks. Chances are you’ll get a lot more than 3 tasks done; but focusing on only 3 makes sure the top stuff gets done, AND doesn’t overwhelm you as much.
This way even on your worst days, you can feel proud of the work you’ve done since the leftover stuff isn’t as critical.
Set Timers & Reminders
People with ADHD don’t always have a perfect sense of how much time has passed, or how close to a deadline we are. Accept this and use technology to make up for it.
In the past I experimented with setting a 15 minute timer on my iPhone over and over every time I started a task. That way every 15 minutes, I’d be forced to remember what I was working on (or check my sticky note) and re-focus on it.
This also helped my sense of time taken on tasks get a lot better. Eventually I’d see that tasks I had thought would take one alarm (15 mins) might actually take three (45 mins). Next time I’d estimate 4 (1 hour), and get it done early.
The next few tips are about preventing 4 different types of distraction: visual, audio, social and self.
Prevent visual distraction
With anyone, but even more so with people with attentional problems, visual clutter affects your ability to pay attention. A messy desk will mess up your attention. Clean it up, and keep it clean.
It doesn’t mean it needs to be perfect. If it’s a royal mess, just move everything into drawers so that it “looks” clean at least. Organize the drawers later.
Clean up your computer’s digital desktop too. You don’t need 1,000 icons on the desktop! Throw all that crap into Dropbox folders (or even regular folders).
Motion is also very distracting. I’ve worked in half-height cubicles where people were walking by all the time and it drove me nuts. If this is your situation, ask to move your desk to face a wall, window, or lower-traffic area and you’ll see an improvement.
Prevent audio distraction
Sound distracts me like crazy. I bet it happens to you too.
Get noise cancelling headphones. Immediately. And use some binaural sound, or similar non-vocal sound. I’ve had huge results with it, and to this day it helps me get into a meditative state while I work. I just banged out this entire article while listening to tibetan meditation and an old binaural track for 2 hours. Nosili is awesome too, and free.
Prevent social distraction
Depending on your job role and the culture at the company you work for, it may be acceptable companywide that people distract you whenever they need you. This can be a big problem if you’re natively distractible.
It’s best to seek work at places that believe in the importance of attention when coding, or in general. 37Signals (aka Basecamp) have talked about this in their books. Attention is a valuable resource…this applies to ADHD people more than anyone.
But it’s not always so easy to just pick where you work. Here are other things you can try:
- Adopt a “headphones rule.”
Ask that people send you an email if you’ve got your headphones on (but make sure there are times when you’re not).
- Negotiate “remote work” days with your employer.
Let them know that you can churn out the most and best code when you’re away from the office. (For extra points, see if you can get them to read the book Remote.) If you can do work completely remotely, even better.
- Schedule “distraction-free” time.
If parts of your job require you to be available for people, so be it. But you’ve gotta get coding done regardless, or you wouldn’t be reading this.Work with your employer to set specific times when you should be a people person, and when you shouldn’t. Once again, remind them that distractions are the bane of good technology, and it’s in their best interest to do this – most likely for the whole team as well.
Prevent digital distraction.
Even if we manage to control all these other distractions effectively – visual, noise, and people – we’re perfectly capable of getting pulled away by the sea of distraction known as the Internet.
A talented developer I know told me he was looking up something work-related the other day, and somehow ended up reading up on helicopter escapes from jail. He doesn’t even have ADHD. This is our world.
For an ADHD person this can be a multi-hour distraction. I’m pretty good at this nowadays. If you’re not, I highly recommend getting apps that will block the Facebook news feed, or block a list of websites for a period of time.
When in doubt, move around.
The last tip I have for now is simple: get your body moving.
Not just in general (though you should be doing that too – daily cardio exercise is good for the ADHD brain.
But I mean specifically, when your mind is wandering a lot, or you’re stuck on a problem for too long – go do jumping jacks in the bathroom, or take a quick walk. However you do it, try to get your heart rate up for a brief minute. I find that a short burst of activity can be enough to get my brain in gear when it’s slowing down – or get me over the hill of whatever technical problem I’m stuck on.
What are your thoughts on this? Leave a reply.