Careers, and software engineering
There is a lot of articles recently on what careers are best for people with ADHD. I have a one line suggestion - do something you're capable of hyperfocussing on.
Suddenly I’m seeing a surfeit of content on careers for people with ADHD. First, there was this pair of posts written by StackOverflow on whether software engineering is a good career for people with ADHD. Then Rach Idowu, whose Substack I read, wrote about “what careers are best for people with ADHD”.
Rach is from a non-technical background, having worked in “procurement (with project management elements), finance, contract management, category management, policy, and negotiations“. She has been learning to code on the side, according to her post, and ends it by saying she is “looking to switch to a technical role, cloud computing or cybersecurity.“.
Now I recall coming across this ADHD and career (or ADHD and software engineering) combo in a couple of other places recently, but I’m unable to remember now, so you’ll have to do without any links.
In any case, with so many people spouting wisdom on what careers are best for people with ADHD, I thought I should put in my few paise (for Gen-Zers and non-Indians, a paisa is a hundredth of a rupee) as well.
My story
I recently wrote about my tryst with coding here, so I won’t repeat much. I learnt to code when I was fifteen, and quickly gained a reputation as a “stud coder” in my school, programming all kinds of simple games and pattern-generating programs (to the extent I could using Turbo C++ on DOS).
I thus started my undergrad in Computer Science in high spirits, but knew about halfway through that I didn’t want to pursue a career in software engineering (this was years before I got diagnosed with ADHD, or even knew about the concept).
I did an MBA, fell back in love with coding with VBA on MS Excel, happened to recognise I’m good at analysing data at the same time “data science” took off, returned to writing code (largely to analyse data) and now massively struggle with Python (I use the cognitively significantly simpler R for most of my work).
I’m a massive sucker for good UX, and am rather technically challenged for someone with a CS degree. I’m good at pattern recognition, think very visually (which is why I’m bigly into visualisation) but like you would expect for someone with ADHD, really lack attention to detail.
Software Engineering
“Software engineering is a boring job. Don’t do it”, our software engineering professor in undergrad had told us. it took me a long time to figure that out. Having done most of my “data science” career as a consultant, I had not been very familiar with the nitty gritties of software engineering.
However, having been with one company for 2 1/2 years now, put some models into production and closely observed what softwae engineers do, I’m finally beginning to appreciate what my professor had said.
As one of the StackOverflow posts says, one reason software engineering might appear attractive for people with ADHD is that there is a lot of creative problem solving, and considerable variety. Quoting,
“Coding can give ADHD brains exactly the kind of stimulation they crave,” writes one full-stack developer. “Not only is coding a creative endeavor that involves constantly learning new things, but also once one problem is solved, there’s always a brand new one to try.”
However, as I had written in an entirely different context a few months back, in a lot of jobs, the level of “peak skill” needed is very different from the level of “average skill” needed.
As a software engineer (or just about anyone who puts code into production), you are writing code that will (hopefully) be used by a lot of people, fairly frequently. With code, as with anything else, there are tonnes of things that can go wrong. Except that, the feature of code is that it is expected to run without human interference. In other words, when something does go wrong, the code itself must handle that situation and bring things back on track.
This means considerable testing. This means anticipating all the ways the thing can go wrong, and figuring out ways in which that can be mitigated. It means paying attention and writing the code in a careful manner so that mistakes are minimised. It also means following processes and standard operating procedures while writing the code and before putting it in production.
All I’m trying to say is that there is a considerable amount of “grunt work” and attention to detail required to become a good software engineer. And you will get rewarded with the variety and challenging problems to solve.
Other professions
My line of work (data analysis) is no different, in a way. I get a massive variety of problems to work on, a lot of my work is in terms of pattern recognition (which I’m good at; and it might have something to do with ADHD), I build a lot of cool models and so on.
On the other hand, I need to be extra careful about the data I use, understand where it comes from, make sure to not make silly arithmetic errors (a month ago, it took me two days to figure I had written a + b instead of a * b somewhere) and constantly worry about people saying my data is wrong. Again, insane attention to detail and process are required.
It is similar elsewhere. I started my career with an internship in finance, and was dismayed at the accuracy required (we would price a derivative using two different models, or two people would independently do it, and the prices had to match exactly). I don’t have much more personal experience but I wouldn’t be wrong to say that in just about any job, there will be a component that involves being careful and following processes and having attention to detail.
So what to do?
Does this mean you cannot work at all? I must admit there are times when I’ve toyed with this idea but I was wrong then. My basic piece of advice is:
Do something you are fundamentally interested in. Given that you have to sometimes grind it out, and pay considerable attention to detail, what you are doing rather be something you are capable of hyperfocussing on.
I admit that might sound “global” (an Indian MBA term for “lots of words to say nothing”), but in terms of what kind of career to pursue, this is all I can offer (of course, you need to consider things like income, work-life balance and other such things). You should basically do something that you are fundamentally interested in because if you are incapable of hyperfocussing on your job, it is going to be incredibly hard to do a good job of it.
Is that all?
I’m sorry if you read through my entire preamble to come with one paragraph on what to do. I have a diverse audience, so that is all I can tell in terms of *what to do*. However, there are other important considerations of the job that you need to keep in mind while deciding on what to do, and which company to work for. This is the real meat of the post.
Accommodations: I have written an entire post on this. You might need some accommodations or adjustments to be able to function well. This might be flexible hours, or remote work, or a cabin, or an adjustment in responsibilities. You need to identify an employer who is willing to offer you this
Frequency of deadlines: Again, your mileage might vary, but I can’t stand either very short or very long deadlines, or pieces of work. I remember struggling in my first internship in finance (though they later asked me to join them full time) because of the extreme intensity - the moment a deal came in, I had to price it in double quick time, while taking care there were no mistakes. That gave little room for downtimes, or switching off, and times when I had to work in a frenzy for long hours continuously. That didn’t work out.
Later on in my career, I worked at a few “great places to work”. These workplaces were accommodative and not pushy, and I had long-term projects to work on there. The issue there was that I had too much optionality - with nobody looking over my shoulder or checking on me, I just drifted and did nothing for months together. Obviously I didn’t do well.
And so the sweet spot is somewhere in the middle for me - pieces of work that take between a week and three months, let’s say. You need to figure this out for yourself, and find something that offers that.Mode of communication: If you are neuro-atypical, the way you prefer to communicate may not match the way people around you communicate. For example, I heavily prefer text messages and email, and call only when absolutely necessary. This preference for communication style is not going to work in all jobs. If I had to be on the phone all day, I would really struggle.
Flexibility: What kind of flexibility you need is entirely up to you, and a function of knowing yourself, but it is important that the workplace is flexible. It could be presence in office, or working hours, or choice in the kind of work you take up - or something else. You need employers who are able to offer you flexibility.
Variety: Again, if you find that one thing you are able to consistently hyperfocus on, and like doing, you can do well. However, typically, you need some amount of variety in your job to keep you stimulated. Else you might get bored, or be unable to focus on your work, and end up not doing well.
I’m 100% sure this list is by no means exhaustive, but this post I think has gone on long enough to be exhausting to you, the reader, so I’ll stop here.
I get that at the beginning of your career, you may not know yourself really well, and so won’t have answers on your preferences, but there is always trial and error. You don’t need to get it right the first time!
I remember making entire lists of every mistake I made and pushed to our QA, staging, or God forbid production. I tried to generalize these mistakes and have a checklist to go through every time I pushed a commit. I had a very condescending boss who thought he was helping us by calling out every mistake in front of the entire team and hoping the shame would motivate us not to make the same mistakes.
Rather, this tapped into the high level of perfectionism ADHDers have and I had such a long process just to push a small amount of code and still being plagued with inattention. I still made consistent and repetitive mistakes despite all the lists, and all the tests, and all the time I took to slow down to address it in future pull requests to avoid the shame.
At one point, my boss asked me how I had made it through the interview and if I had lied about getting a master’s degree in CS. It really made me question if I was in the right field, despite having such a passion for writing code. He threatened to put me on a PIP as he couldn’t manage me any more.
At some point, my therapist recommended I report this boss for workplace bullying. So I compiled all the conversations containing verbal abuse and forwarded it to HR. Once I was under another boss who nurtured my problem solving, gave me the autonomy to solve problems my way, and gave me the space to fail with the net to avoid these mistakes causing major damage, I quickly learned how to apply testing fundamentals that helped me catch mistakes I would inevitably make with ADHD. I ended up making the Engineering challenge, how do I catch myself from writing buggy code. It was always about applying my creativity through dreaming up all the ways a small unit of code could be misused. Though I didn’t know it at the time, applying the principles of modularity and through testing, it made the problems simpler for my ADHD brain to reason about. I went from nearly being on a PIP to getting promoted to senior software engineer and getting the highest possible pay increase each year. I led multiple efforts and even started working again for my old boss. This time he was impressed with my abilities and how far I had come along.
I’m still friends with that toxic boss today. Why? Sometimes it takes someone with neurodivergence to have empathy for someone else with neurodivergence. This boss would treat me so nicely outside of the context of work. They struggled with emotional regulation and struggled explaining their way of seeing the world. This disconnect was some level of autism and substance abuse, and this boss was trying their best with leading people without much of the ability to communicate effectively and with empathy.
I learned so much from this experience and despite it driving some depression, helped me learn so much about myself and what I need to be a functional developer.
Ultimately I agree with you, software engineering is a difficult field for ADHDers to game themselves into being interested in the mundane aspects of the job like testing. The good news is it can be games. In my case I moved to Developer Relations which is constantly context switching and keeps me entertained. However, it also has its own set of drawbacks.
Anyways loved the blog. We share a lot of experience here.