Coding and ADHD should be best friends
Tags: discuss, programmers, productivity, learning
Published: 2023-09-30 23:13:58

Hello Brains,

this post would be a bit unusual, but as you may already know October is dedicated to raising awareness about ADHD. I'm not a doctor or licensed ADHD therapist, so I don't want to go into details about the disorder itself. If you are interested in the topic, the channel [How To ADHD](https://www.youtube.com/watch?v=jhcn1_qsYmg) was very useful for me. The reason why I write this post is, in my experience, ADHD or ADHD symptoms' are overrepresented in IT community compared to lots of other areas. So I believe my story slash view should help someone to survive a neurotypical world or help others to understand colleagues with challenges.

> Disclaimer: This post is based on my limited knowledge of the topic and my personal experiences. The individual experiences should be different because we are all different persons. Self-diagnosis should be risky, please ask for professional help!

ADHD is not a mental issue. The wire paths are different in the brain, risc vs. arm. It is really hard to find the border who has the disorder because neurotypical folks also should have ADHD symptoms. Masking ADHD also helps people to look normal. Because of these, and many other reasons, it is hard to diagnose it. I was 43 when I executed `sed "s/had childhood ADHD symptoms/have adult ADHD/g"` on my brain. It was a few months ago, so I think it is never too late to change :D

Because it is different, it doesn't mean BAD immediately. It means it needs a different environment to shine. Find the company that wants your profession and not your time. Prepare a working environment that fits your needs. Join motivated teams who have the same interests and are supporting you. Teams who don't fear introducing new technologies and fail sometimes. Do not repeat yourself. And never be afraid to change, if something doesn't work anymore. This is the main message, the rest of the article is my personal brain drain, you should skip it :).

My story in really short. When I was young, ADHD wasn't a thing common. My parents didn't know much about it. My father was very helpless, so he used what he learned: abuse. Lots of people with neurodiverse disorders mask their difficulties to somehow join the normals. Not me. I was an anarchist punk from the age of 4, so I landed on the edge of society. After high school, I spent a few years as a Hare Krishna monk (the best choice of my life), but later in "real life" I felt back again and my life became a loop of BMX & drugs & rock & roll from Sunday to Sunday. Except for riding my bike and dancing on psytrance, I didn't care too much. I didn't care about that, they didn't care about me. Then I started to learn programming and I found a way how I can use my abilities to create something that is valuable for the community.
???
Magic

> If you are interested in my journey at IT space, please feel free to follow: https://dev.to/mhmxs/my-journey-at-it-space-2p9a

The main characteristics of ADHD are:

- Working memory challenges
- Lack of motivation
- Attention difficulties
- Relation of time and prioritizing tasks
- Emotional and behavioral impulsivity

---
Working memory challenges

Let's start with the easy one. ADHD brain has fewer RAM slots, but the clock speed is higher. It is what it is. There are technics to improve, but properly fixing looks like a hard goal. This difficulty affects two areas. Remembering ongoing thoughts and context switches. In normal mode, there are random context switches. There are many of them. They are cheap, but the result is very unpredictable. Programming in this state is tricky if not impossible. I have to put my brain in focus mode. In this mode context switches are heavy, CPU intensive tasks, and there is no free slot for time sensation (or anything else including self awareness). A strict daily work routine, fewer threads, fewer interruptions, and less worry about what else I should do, are the keys for me. Everything is in my calendar, so I can see the slots for focus modes. I check emails and messages periodically and take action immediately (delete, answer, postpone) on every item, so my email box is a to-do list for me. For me listening to music or watching TV series (sounds weird) helps fill some of the memory slots constantly, so I have to manage fewer slots during coding and it decreases unpredictable interruptions. And finally, let's write about strict daily work-related routines. For me, this is one of the simplest parts. Programming is my hobby, I love to do it, so I just sit down in the morning and enjoy it.

How do memory challenges become our friends?
Because of the higher clock speed. Once people with ADHD switch to focus mode they are able to try more combinations of possibilities somehow. They should think differently, let's say "out of the box".
  

---
Lack of motivation

The motivation issue relates to Dopamine paths. It should be challenging to be motivated for the mid or long-term. I try to live on the cutting edge. Always try new technologies or development toolsets, even if we don't use them in the team. I usually go back to these technologies, once they become well known, and do some presentation or a post about them. I put myself into a spiral of reading, learning, trying, and sharing. The benefit of always moving forward is, I'm usually 2-3 years ahead of the mainstream, so I have always time to learn new and fun things. Another motivation factor for me is called open source community-driven development. Crafting closed-source propriety software doesn't trigger my Dopamine path at all. Zero (Love or hate, 0 or 1). Being open and sharing knowledge are the top constant motivation factors for me. My professional life is an open book.
One other technique for increasing motivation is to split epic into tickets, tickets into tasks, tasks into work items, and if needed, work items into functions or atomic expressions. I have to see the end of what I'm doing, otherwise, it gets out of my scope.

Why programming is ADHD-friendly?
It instantly triggers a feedback loop, which is the key to keeping up motivation. Change the program, execute the program, analyze the result, and repeat. The space of programming is wide, there is always something to learn, but on the other hand, there isn't a more simple thing than zero or one. Connecting people who have the same interest, and sharing with them, are also part of the feedback loop.

---
Attention difficulties

When we are speaking about attention disorder, people usually associate this expression with a lack of focus. But this is not the case. People with attention disorders are really good at focusing on something. But they are good at forgetting things too. It all depends on how many interruptions come between you saying your name and I actually hear it. Do you remember the memory clock speed above? My advice here is, to know yourself. Know the path to focusing mode and out of it. Use timers, turn off notifications, and work on what you are interested in. There are brain-resting techniques, do whatever works for you. Be smart to use your smartphone. But I kindly ask you to never shame on yourself if it won't happen. That's life. It is not your fault.

Is it a bug or a feature?
It is a feature! Absolutely! Because hyper-focusing is a superpower in programming. Just find a way to cool down your brain after the hard load; relax, dance, or watch TV shows. Be harmonic!

---
Relation of time and prioritizing tasks

These two are related and really hard to explain how time is different, mostly because this effect should vary per person. The official name of the symptom is "Time blindness". Imagine a world where time is not linear. Imagine how this mess of time is changing by time itself. R U there? OK, please tell me the distance between two points in time at the moment. Pretty challenging, because it may change during your observation ;). For me, the situation is not that chaotic, but without my maniac compliance requirement of being on time, I would be late from everywhere. I always underestimate the time of the trip, and there is no room for mistakes, traffic jams, or any delay. The cherry on the cake is, that without a proper sense of time, it is hard to prioritize tasks. There are four categories of tasks:
- not important, not urgent
- important, not urgent
- not important, urgent
- important, urgent

Normally "important and urgent" are the high-priority tasks, right? What I see here is:
- not important
- important
- not important
- important

I can do super important, non-time-related things in the middle of a rush. I can't explain why I found this moment of time the best to do it, I just fixed the switch in my pajamas 3 minutes before leaving with the kids. For me, the only thing that makes sense is to do.
Regarding to estimation of time, I don't like it at all, whatever name we give it (story point, engineering hours, butterflies). There are too many variables to calculate with, and the result heavily depends on my mood. If you ask impulsive me: it's easy-peasy. If you ask brain resting me: what was the question? If you ask focused me: dots are connected, I mean every dot from design to roll-out. Hard to find the scope or borders of the task on the web of dots.
After this journey in time mess, let's jump to a possible solution. Visualization helps me a lot. Calendar events for almost everything. For me, immediate interruption of creating the event is less attention than fearing that, I forgot something and my life falls apart. It is a side quest to keep my calendar and email box up to date. I'm very relaxed since I can visually represent now and the future. Plus I can ensure at any point of time that I'm doing the right thing at the right place.

---
Emotional and behavioral impulsivity

Everybody is impulsive both emotionally and behavioral on the planet. But the impulsive self is behind firewalls. There are lots of pre and post-filters, rate limiters, priority queues, and package drops based on the environment around the person. ADHD brain in worst case has async post filters only. The only thing I can say here is, if you have serious trouble with this topic, no question, ask for professional help. Other symptoms should be annoying and/or make life hard and/or painful, but mental health is not the game you would like to lose.

Behavioral impulsivity is a deep theme alone, it contains several aspects from uncontrolled actions to immediate buys. The common element of them is, that there is no time to think clearly or wait for a later reward. Time again :D. Starting with the easier one, if the future doesn't properly exist, there is no reason to get something later. The only option to go and buy the third-best item is NOW. Only the third best, because the shop next to you can only deliver the best ones tomorrow. Luckily this issue only costs some money, not like uncontrolled actions. Rebasing 10 times a PR because my hands are faster than my thoughts, is just frustrating. Dropping the right database on the wrong server is not half success you can trust me ;). But it is still money. To hurt someone with words or actions should lead to various professional and personal issues.

What impulsivity is good for?
I use it to close the circle. I became excited very easily about fun tech, I fell in love with projects instantly. I wanna be in. Then I use my impulse to start experiencing. The exp. gives me the first flush of joy. This motivates me to switch to focusing mode. Doing the thing triggers a feedback loop, and the Dopamine train starts rumbling around for hours and hours (yes sometimes I forgot to drink). Csúúú Csúúú!!!

I hope you enjoy the reading, I hope you got closer to yourself or someone around you (If you know at least 50 persons, you have a chance 2 of them are affected more or less). You are awesome alone, without putting you into any box of neurodiversity.

Please feel free to fix mistakes, share your thoughts, or just say hello if you have any relation with this topic. 

Here is my favorite ADHD song, and cheers!

{% youtube Zvqx9DfG9lU %}