Learning to program with ADHD

Sun, 14 Jan 2018 17:38:01 -0500

So a few days ago @HowtoADHD made a tweet about the best jobs for people with ADHD, and I elaborated on why Software developing is great for people like us.

Now someone asked what's a good advice on how to learn to program when you have ADHD. When I saw the tweet I got excited and was very happy to give the advice, but I realized that there was no way to put it into one tweet (yes even with the new tweet length). So I promised to make a separate post about it and here I am.

So to give proper advice I want to give a little bit of background on how I learnt programming. If you're not interested in my story you can skip this part, just scroll down.

My story

It all began when I decided to not study civil engineer (after 3 years, yeah...) and I decided to look for what I really enjoyed in life.
To be honest those were really hard times for me, I was going through a lot, but I had good people next to me that supported me.
I spent 6 months just looking for what I liked and finally came to the conclusion that I wanted to learn programming (I already knew the basics from highschool but in reality it was almost nothing). So I took it upon myself to learn what I needed, and boy was it a mess, I had no idea what to learn or how.

I had no idea where to start and knowing me, I knew I would just get overwhelmed and quit.
I started learning python by myself, but I could not get through with it alone. I decided I needed to go to college, I wasn't too excited about it, but I knew that if I didn't have the proper structure to learn I wouldn't be able to succeed.

I talked it over with my family and my girlfriend at the time and they supported me completely, so I started my new adventure in computer science, and the learning structure helped me a lot.
Then... not so much. After I learnt the basics of computer science, honestly, school became boring. It was more interesting to learn on my own. I knew enough to defend myself and I knew what I wanted to learn and in what order now, so things started becoming more natural to me.

And after that point school wasn't THAT interesting, but it doesn't mean it was useless. In the end I do wish I had known about so many online resources like Udacity and such, or talked to someone that went through a similar experience as I did to help me compile a list of material (in a specific order) to learn on my own. Regardless school was a good substitute for that to be honest and I don't regret it.

Actual Advice

Now, the most important actual advice I can give is, find structure. Let's be honest, if you have ADHD like me, you know we SUCK at prioritizing things correctly half the time and we will jump from thing to thing if we don't have a previous structure to guide us. I know that if you don't know anything about computer science things can be very overwhelming; but fear not, I have the solution.

It's quite simple, I'll take what school gave me and give you a list of topics you should research in order to learn, yay. Now following the order or not is up to you, and you can do this in many different ways. My list/advice is just that, advice, it'll help you find some structure in your learning and that's what matters.

All you have to do is stick to it, or stick to your alternative method, the point is stick to wtv you plan. (it's so hard I know there's so many cool things out there)

Now we'll start with the basics:

Alright, let's move on to the most important things you can learn about programming Data structures and algorithms:

Alright we're all set in terms of information for now right?, well it's time for your first project. Whatever it is you want to make, do it, it's fine, but keep it simple and follow a tutorial.

Notice how im being a little bit more free in what you learn and how to obtain the resources? It's because you're getting to the point where you are almost ready to be set free, you have the basics down and you are following along tutorials to make projects from scratch.

Next you need to learn git, if you learnt it earlier good, if not, stop everything you are doing and go learn git right now. There are a lot of tutorials available, just go do it.

Now the last scary part, do whatever you just did above, but from actual scratch, make a new web app, make a new game, even if it's silly, do it from scratch, do it yourself. Don't worry, google and stack overflow will guide you a lot anyways.

Wow we're almost done with this well structured but very free-like (we people with ADHD love our freedom) learning list. You are ready to make applications, but I believe you should learn how things work at a lower level, so at this point I recommend you learn a little bit about OS and compilers.

Ironically for my OS class I made a video that teaches what you need to learn to make your own kernel (very basic it's meant to be to learn the concepts and understand it a little bit better not for you to be able to actually make your own Operating System):
https://youtu.be/fRuBtt6WC1U Hope it's useful.

And last but not least, Compilers, I do not have a lot of resources for this to be honest so I'm going to let you figure that one out for yourself.

What other advice can you give me?

Well the truth is that as someone with ADHD there are bad days and good days, some days you can't concentrate on learning anything new and some days you can't stop learning. Accept it, it's just the way we work.
We have an advantage here, Computer Science is all about improving and learning constantly and we are by our very nature very curious people. Once you get over the first hurdle you'll realize that if you truly enjoy programming you won't stop wanting to learn new things and that will always give you an edge over the rest.

The last thing I want to say is, have fun, look for things you are passionate about and do them. It'll be great, make projects and do things. I cannot stress this enough DO THINGS, I know I know, we suck at finishing things, but believe me even if you have incomplete projects on github, it's way better than nothing, just make sure you work on improving yourself.

Finally shutout to @HowtoADHD for giving us so many resources to make ADHD work in our favor instead of against us.