top | item 21716306

Ask HN: With ADHD, how did you become an effective software developer?

75 points| brailsafe | 6 years ago | reply

I started a new job a month ago, and was hesitant to do so, because I'm yet to overcome certain patterns, that may be affected by a recent realization of having attention deficit. I'm a frontend developer, but feel little real intensity in the job, little stimulation, and haven't been that productive at picking up the codebase. This is also in an office for the first time in years, after being somewhat effective in a remote position. I'd also be interested about other people who struggled to tune their skills for productivity.

60 comments

order
[+] adhddev|6 years ago|reply
Backstory: I'm a senior engineer at one of the world's top 10 tech companies. I've had ADHD (and some kind of light Asperger's) my entire life, to the point where I couldn't concentrate on anything the first 12 years or so of my academic career _except_ for certain subjects that really interested me, like math.

Some things that works well for _me_:

1) Good noise-cancelling headphones. I'm extremely sensitive to noise in the office.

2) Repetitive, monotone music. My productivity rises by 2-5x if I listen to hours and hours of repetitive techno sets. It's like I'm micro-dosing on LSD or something and the code is just flying out of my fingers.

3) Not getting disturbed when the headphones are on. Communicate with your team that headphones on = use Slack for communication, because you are in The Flow State

4) https://selfcontrolapp.com/ to help prevent procrastination

5) Martial Arts with sparring. Could be anything like MMA, BJJ, Muay Thai, kick boxing, boxing, wrestling, some types of Karate etc. Helped me a lot. Not only the obvious (getting ripped/in shape, confidence boost, positive effects on the brain from exercising) and blowing off some excess ADHD energy, but as an introverted nerd you learn how to keep stable eye contact and you stop being irrationally afraid of conflicts. It has made me much calmer as a person, and I don't have any burst of rage anymore. Cannot stress enough how much this has helped my career and at softening the symptoms of both ADHD and Asperger's.

6) Healthy sleeping patterns & diet. Without this, I can fall asleep in meetings (and have done it numerous times).

7) If you work at a company where you have the ability to skip meetings you deem are unnecessary - use it! The less bored you are, the more likely you are to be able to focus and not procrastinate, I think.

8) I like getting out of the office during lunch, just to get some air/sunlight/short change of environment. Feels like I'm less bored when I get back to my desk.

9) If I'm taking on a bit too big of a task, I try to break it down into subtasks because otherwise I get bored and start to procrastinate. I need very clearly defined units of work to work efficiently.

[+] gtirloni|6 years ago|reply
> I need very clearly defined units of work to work efficiently

This 1000x. I try to keep a pool of those kind of tasks when I can't concentrate on my main task so I still feel like I'm making some progress. It's helped a lot.

[+] brailsafe|6 years ago|reply
Took me a while to respond, but thanks for the list. I've purchased myself a set of 3m X5A earmuffs and started using the self control app which is incredible. Been experimenting with binaural beats, which are pretty nice overall. Feels like I go into a bit of a different zone.

Regarding the noise, I was surprised by how much of a problem it was, because I love working out of coffee shops. I hope I find a way to work around it. I just wish I didn't have to have an elaborate way to escape noise just to work.

5) I don't do martial arts, but I'm a skateboarder and have been progressing through mountain hiking hopefully to mountaineering and climbing and hitting the gym 3 or more times a week. It's always been something I do, but if I get too into work or something and forget to do any of it, I do get restless and my focus deteriorates even more. Also a great way to meet people.

How did you get your sleep shit together?

[+] itronitron|6 years ago|reply
Thanks for sharing this, it seems like good advice for most people.
[+] Ruxbin1986|6 years ago|reply
Is there a specific podcast, radio or band that you listen to?
[+] m0ther|6 years ago|reply
Get a prescription for Ritalin. Headphones and Spotify. Volunteer for EVERY nightmare project to keep you engaged.

Learn HTML5 canvas. Learn SVG. Learn to make components in whatever framework you're on and get really good at it. Get into webgl. Make yourself the special projects guy. Go deep where others won't.

Hyperfocus is your super power; research it, figure out what puts you in hyperfocus, and what keeps you there. Listed above are some of the things that do it for me (that exist in the overlap between your job and mine).

[+] seanwilson|6 years ago|reply
> figure out what puts you in hyperfocus

Can you explain how you figure this out? Any examples?

I don't have ADHD but I do notice some projects give me intense hyperfocus. Generally it's when it's some MVP or problem I start working on where it feels like I've happened upon an unexplored and potentially great idea - this includes there being lots of design issue to think about where there's lots of fruitful avenues to explore and prototype. My hyperfocus tends to end when I've explored the design space enough that I now have to step back and make tough tradeoffs.

That's the most I've tried to make sense of it. I know it's very common for people to get super enthusiastic when starting projects and then they lose steam when the fun stuff is out of the way so I don't read much into it.

[+] brailsafe|6 years ago|reply
Thanks for the suggestions. I do have myself a prescription for extended release Ritalin (Concerta) and I think it does provide me some benefit in low doses. If only I hadn't lost the prescription paper twice.

Volunteering for nightmare projects is also a good idea. I'm coincidentally working on Canvas as I'm writing this, which is a relatively novel and challenging topic. You're right in saying it's the hard stuff that keeps you focussed.

[+] x2f10|6 years ago|reply
> Volunteer for EVERY nightmare project to keep you engaged.

How does this help with engagement? Problem solving?

[+] burntoutfire|6 years ago|reply
> Get a prescription for Ritalin.

Is there a study of effects of long-term, habitual usage of Ritalin?

[+] m0ther|6 years ago|reply
I have to respectfully disagree with the user that suggested calming music (although it may be great advice for your case, it's terrible for mine).

I also disagree with advice that you should not be medicated. Ritalin provides a 200% productivity bump for me, allowing me to decide what I want to focus on, instead of my natural "most interesting thing wins". The organizational and focus adaptations you made to survive before you were medicated become extra advantages once you are medicated and don't require them.

I have a rule never to visit entertainment or social websites at work. Hackernews is the furthest I'll allow myself to stray in that direction. Entertainment sites will feed your distraction and we want that to starve.

This is the list I am listening to currently: https://open.spotify.com/playlist/7wwb18SxFVP9XYqxL09dDw?si=...

I look for music that will keep my heart rate high and isn't created to evoke an emotional response. My aim is to be voracious in the office when it comes to completing tasks. I average 5 times the daily throughput of my coworkers. When I run out of new tasks, I set myself on building alternate versions of existing code to see if I can improve on core metrics or malleability until new work arrives. The best version goes to production. I never stop moving.

I am a software architect and lead dev, I field on average 4 "gotcha" technical questions an hour, while working on the high risk tasks within the application. ADHD (if yours is like mine) provides you the ability to context switch with much less of an issue than others (even when medicated). It also allows you to more rapidly switch between a micro and macro perspective than others; although this is a skill you'll have to train in. Also train in communicating well. Err on the side of over-communication if you're going to work on tasks you weren't assigned when you run out of work; with practice, this will keep you from stepping on other's toes.

I grew up playing multiplayer twitch arena FPS and FPSZ games (quake, tribes) and competitive fighting games (street fighter). Fast paced strategy, adaptation, execution precision, and rapid skill improvement are my comfort zone. You can approach professional programming the same way. You improve by doing; so do a lot and you'll improve rapidly.

I wind down in the evenings reading documentation and decompiling/poring over the code of programmers I admire and researching why they did what they did.

I have worked with a lot of programmers I can see ADHD symptoms in who try to mask them and fit in with the norm. They slow themselves down. I say you were born an outlier; make it work for you. Speed up until you're not distracted anymore. Push and refine what makes you special. Automate busywork (busywork is your worst enemy; but automating it is fun). Our industry is as ADHD friendly as it gets; your work time can be play time. Just make sure you never give a coworker an opportunity to say you are reckless (or God forbid, and opportunity to prove it).

[+] heh|6 years ago|reply
I have ADHD (diagnosed from childhood, retested multiple times since). I do DevOps/SRE type stuff. Used to do dev as work, and found it didn't work well with my condition. moved to sysadmin, and then DevOps/SRE type roles and it is much better for me. I have Ritalin, by prescription. It helps with the precision, boring, routine stuff. I do not take it when I need to grok a whole system in my head, or do creative problem solving.

As others have recommended, repetitive music helps. The prodigy, Infected Mushroom, cowgirl, combichrist, etc are all on my work playlists.

I found keto really helped a lot for me to get sustained focus, YMMV.

If you do get flow, ride it.

[+] yabadabadoes|6 years ago|reply
Based on being an occasional technical mentor to a friend with ADHD, I might suggest:

I would experiment with plenty of exercise during the work week to try to find a mellow yet energetic state.

I would look for ways to do something you find fascinating as a way to engage with the work. As an example, experiments with debuggers can give you a different way to engage with code.

Don't be afraid to go back and forth between more and less code centric jobs. You may have a significant advantage context switching for presales engineering and roles that deal with more unexpected runtime problems, etc.

[+] brailsafe|6 years ago|reply
Great suggestions. I do get plenty of exercise during the week, but not usually BEFORE work. Others have suggested that it has a similar effect to medication, and if I can get my morning in order, then maybe that would help. The engagement is I think the core thing that's really hard to get. I've floated in and out of University for a number of years as I've been fired or have become bored with the work I've been doing. It always provides a renewed sense wonder that is hard to come by I find. Likewise, I've always been in programming centric jobs from day 1 until 2017 when I couldn't find work and took up a moving job. It was incredible. I could hustle and work my ass off all day, then sit down and program during the evening. Likewise, working as a barista at Starbucks last year was refreshing. My first experience in customer service/food service showed me that I'm great at speaking to people and handling cash, but AWFUL at remembering things. As in, 3 months in I still wasn't sure how many pumps of syrup went into X.
[+] afarrell|6 years ago|reply
> You may have a significant advantage context switching for presales engineering and roles that deal with more unexpected runtime problems, etc.

I would think the opposite: with lower working memory, context switching will be more painful and impose greater performance problems.

[+] probinso|6 years ago|reply
1. Find strategies to limit your field of vision like wearing a hat with a brim. Also limiting your feels of audio, noise isolating phones linked to white noise is a strong strategy. For White noise I use the YouTube live stream from the aloha cabled observatory

2. Allow yourself to work in different locations, don't get married to a single desk

3. Spend the last hour of every day wrapping up your work and documenting a personal list for tomorrow

4. Do not allow yourself to stay late just because a problem isn't solved. It's better to learn to wrap a project up, than solve it. ADHD can a habit of taking every evening from you when on a focus high

4. Pick up a course online that is relevant to work and follow it

5. I found my ability to focus significantly better with single technology tickets. I would encourage changing technologies and projects often, but the fewer technologies supporting any individual ticket the easier this has been on my brain.

6. Take a walk after every meal

7. You can find difficulty in different tasks. Becoming very good at ticket triage and documenting process is valuable and a lot of developers are bad at it.

8. Using a time tracker can be helpful, assuming it is low enough profile. I use hamster with its accompanying gnome plugin. Unfortunately I have never seen an offline solution as simple as this

[+] PopeDotNinja|6 years ago|reply
I'll throw in a good pair of noise canceling headphones.
[+] bfieidhbrjr|6 years ago|reply
Slightly off topic but YSK that exercise, the elimination diet and QEEG neurofeedback are all statistically significant non pharmaceutical treatments. You can find it all in google scholar and pubmed.

Also YSK that ADHD presentation is near identical to sleep apnea and mild autism spectrum. Even if you get a ADHD diagnosis remain skeptical and have the other two checked out with a sleep study and a autism specialist.

[+] bpanon|6 years ago|reply
Is there anything that can be done to help autism?
[+] improv32|6 years ago|reply
Besides the obvious answer of medication, which I've personally found very helpful, I think physical movement is the biggest thing for me for staying engaged. I just can't focus on things while sitting still which is obviously really rough as a programmer. I find that as soon as I have the urge to spin my wheels checking HN or tinkering with my emacs config or some other comfortable distraction I get up and take a walk, preferebly outside, in a way that makes my brain notice it's in a different space, then visualize myself working as I return to my desk.
[+] fredgrott|6 years ago|reply
I have ADD:

1. Went for decades without knowing..not fun. 2. Structure, Structure, Structure will bring back huge focus spans to the point where you wake up from deep sleep and write code solutions...the first time it happens you will be shocked! 3. If not meds of if even meds make sure to re-adjust to more healthy diet...ie high tyrosine foods as tyrosine is what is the building block to dopamine which well lack . ANd actually lower doses of caffeine combined with high vitamin b works out better. Not sure why yet. 4. Exercise daily..no not 5 minutes a good healthy hour or so...I do sit-ups, small weights and jogging. 5. Be aware of your addictions and limit them

Oh yeah, the benefits...would you believe it makes you a better UI designer as you know what structures to get a user to focus on doing something? At least for me it did and I even did a deep dive in cognitive science research because of it.

Side note: Its genetic, my mom has it and my youngest sister has it as does my nephew

[+] luxuryballs|6 years ago|reply
I don’t recommend drugs because it really sucks after you build a career around it and then feel like you need to be on drugs just to keep your job but you can’t switch careers because you would take too much of a pay hit, you really feel trapped, especially if you have dependents, and you know that it is having a negative impact on your health, which is also not good if you have dependents because you want to live a long time.

I know this is more of a warning of what NOT to do that’s not really answering your question but take it from me, once you are no longer a 20-something things catch up with you big time.

[+] rajlego|6 years ago|reply
A lot of people here have been talking about headphones/blocking out noise. To that end I HIGHLY suggest buying some good earmuffs (I use the X5A) and inside those using earbuds. It’ll look ridiculous (though there are smaller sizes) but for 30$ for earmuffs and 20$ earbuds you’ll have extremely effective noise cancelling if the earbuds are on low (the earmuffs don’t block well certain types of sounds but low noise from earbuds takes care of that).
[+] brailsafe|6 years ago|reply
I've been meaning to do this all week. Do you have a specific pair in mind that works? I tend to prefer dead silence if I'm already energetic, because the adjacent noises of my coworkers slurping or coughing or chewing with their mouth open make angry. (yes misophonia)
[+] eanthy|6 years ago|reply
Every single developer I know has some degree of ADHD. I personally don't have it as bad but I know a colleague who literally can't shut up and stop moving and bothering us all the time. Honestly If the person is not aware of their condition I don't think you can do anything about it besides try to isolate and ignore them somehow.
[+] johnisgood|6 years ago|reply
Where is this place where they isolate and ignore coworkers? I would like to go there! When I was younger I always dreamed of a sysadmin-like job where I can do my own thing in the background without anyone bothering me! :D Now it seems like you need to be a social butterfly to become a software engineer or a sysadmin...
[+] Antoninus|6 years ago|reply
I’ve never been diagnosed but I had trouble focusing on anything that wasn’t sports or any activity that was highly stimulating.

Your goal should be getting into a ‘flow’ state. Like many commenters before me, headphones, spotify and in a place without distractions. Start by reading a piece of code, go through it step by step until it makes sense. Keep doing this until you’re ready to work. Now you want to define a task, continue working until you lose your ‘flow’ state. Take a break, stand up and stretch. Now go back your work station and repeat that process. After 3 weeks of building this muscle you should see significant results.

Best of luck.

[+] serpix|6 years ago|reply
If only there weren't interruptions all the time this would work. No problem getting into flow state but keep getting interrupted out of it.
[+] zamalek|6 years ago|reply
I am diagnosed ADHD.

I find that music keeps the distractible parts of my mind sufficiently busy for me to deeply concentrate on a single task. I am hopeless without headphones.

I continuously twitch my one leg, a coping mechanism I picked up when I was very young.

Finding a new job that stimulates you might help, or carving out a piece of freshness (invent/identify a problem and solve it) in your existing job - that will force you to learn the codebase as you improve it for your pet project.

[+] PragmaticPulp|6 years ago|reply
Focus is a learned skill for everyone. A common myth among ADHD people is that deep focus and extended concentration come naturally to normal people. Truth is that spending 8 hours per day focused on deep work is not automatically easy for anyone. Everyone has to work on building that skill. ADHD people just need to work a little harder.

Some tips:

1) Structure your environment to enable sustained attention. Be aggressive about turning off push notifications, unsubscribing from e-mail lists, leaving Slack channels that aren't relevant to your work, not accumulating a lot of browser tabs, and sitting somewhere out of reach of distractions.

2) Balance attention with activity breaks. Pomodoro timer apps are great for this. Start with 10 minute work intervals if you have to, but build discipline around respecting the timer. Stretch the work interval to 15 minutes once you've mastered 10. Then push to 20, 25, and 30 as you build up your focus. Treat it like going to the gym to get fit. Don't beat yourself up if you have to reduce your work intervals on tough weeks.

3) Be deliberate about time waster websites. Reddit, Twitter, Facebook, Instagram, and HN are okay in moderation, but you have to realize that each time you check these websites impulsively, you're worsening your focus abilities. They can't be your automatic mental escape when focus feels difficult. In the fitness analogy, these are like junk food. Okay as an occasional snack, but they'll take a toll if they make up too much of your screen time. Set aside time before work, at lunch, and after work for checking up on social media. Block them on your work computer.

4) Physical exercise. It's cliche, but it works. It doesn't have to be difficult. Taking a 10 minute walk around the building 2 or 3 times a day does wonders for organizing your thoughts and getting away from screens for a while.

5) Find supportive ADHD resources, avoid reinforcing resources. It's easy to find "woe is me" ADHD communities on Reddit and social media where people vent about their ADHD problems. Venting and empathizing with others feels good, but it reinforces all of the wrong behaviors. You need to focus your energy on resources that help you improve. Good resources include working with a therapist (check your company's insurance, probably cheaper than you think) and spending time around people who have high organizational skills.

6) Be accountable to other people. With ADHD, it's tempting to hide your progress and blend into the background. Avoid that temptation. Send weekly updates to your manager about your progress, without fail. Knowing that you need to show your progress every Friday provides some healthy pressure to focus and perform. Going back to the fitness analogy, consider this like being accountable to a gym partner. Accountability is good for you.

7) Eat healthier. This doesn't have to be difficult or expensive. Buy a bag of baby carrots and snack on that at your desk. Drink water, eliminate soda. Minimize sugars. It feels cliche, but it really does help.

8) Build your identity around being a software developer. Don't accidentally build an identity around being an ADHD person. Don't let your issues define you. The diagnosis is only helpful as a way to help you improve yourself. Don't let it become a crutch or an excuse for underperformance.

[+] Ruxbin1986|6 years ago|reply
Agreed entirely. ADHD is real and should be taken seriously. I've been tested positive by a non-quack in the 90s and again as an adult a few years ago.

Building off of this especially the accountability section - when those with ADHD fail (and those with other mental disorders) - is often perceived by others as poor priorities, lack of maturity, etc. It's critical that it not be seen as such and those help the individual stay on task - through positive reinforcement, task management, organization, etc. - NOT shame.

[+] eithed|6 years ago|reply
Headphones + calm music

Close mail + slack; open it at lunch break (ymmv depending on what kind of office you work at)

Prepare a list of things you'll do and stick to it - oh, this change could benefit from this change and this one here. NO! Do what is required in the task. If you're going to clean the code up do it afterwards

[+] lightgreen|6 years ago|reply
I work from lunch to late hours (when these’s nobody in the office). Often work from the meeting room when it’s available, and sometimes work from home.
[+] stuntkite|6 years ago|reply
Schedule is critical for me but I do the oposite of you as much as I can. Try to get showered, ready, and sitting in my chair by 5-6AM. Then I spend about 30 minutes writing in a bullet journal what I plan to do today, reviewing the previous days notes. I always start the page the same way with the date, time I'm sitting down, day of the week, and how I'm feeling. Then I open my IDE and get to it.

I like the morning because no one is around ever. Slack is quiet, my phone likely wont ring. It's the highest probability that I'll get uninterrupted flow state. Then after lunch when people start asking questions I switch to a more social mode and it works. I tend to not be able to recover from moving into a social mode and going back to technical work.

[+] rllyboredonline|6 years ago|reply
Repetitive music, or listening to the same song over and over (it has to be a good one). Speed/Caffeine also seem to help.
[+] codingslave|6 years ago|reply
Just take a bunch of stimulants and study leetcode, then go work at microsoft or google. They both have tons of easy boring work at a slow pace with good pay. Theres really no other option
[+] anoncake|6 years ago|reply
> They both have tons of easy boring work at a slow pace.

What the hell made you recommend this to someone with ADHD?