4 Learning Techniques for Programmers With ADHD / Learning Disabilities

Mike Cavaliere
3 min readMar 31, 2019

--

I’ve been taking on learning something complex lately, which can be a challenge for those with ADHD or learning disabilities (like myself, and at least some of my readers). So I’ll share some methodologies that consistently work very well for me.

For those interested programmers among you, I’ve been learning reactive programming, specifically using RxJS and redux-observable. RxJS is a technology that lets you manage asynchronous events in your web and mobile applications exceptionally well, but there’s a steep learning curve, and the tech is pretty tough to wrap your head around at first.

Relevant challenges:

• Learning something conceptually complex.
• There’s no one perfect guide to it; you have to learn from different places
• Often the examples given aren’t broken down perfectly; each example requires you to know something else in order to read it.

Here are some methods I use to work around this. I find them useful both inside and outside of the software domain.

Deconstruct complex concepts
When learning something like this, breaking the material down is crucial. Like Tim Ferriss talks about (in books like The Four Hour Chef, or on his blog), deconstructing the thing you’re trying to learn will save you plenty of time, and help reduce the almost inevitable frustration of absorbing something complex and unconventional.

To do this, collect the simplest, most atomic examples you can (i.e., the ones that teach you one simple thing and don’t require other information).

Divide and conquer
When trying to absorb a concept or technique that requires you to learn a few other things beforehand, make notes of the things that you don’t know. It’s like reading a paragraph with a lot of words you’ve never seen before; write down each term you don’t know, look them up individually and come back to the paragraph. Learn the pieces, and you can learn the whole.

I see this a lot in RxJS examples on the official documentation, or on learnrxjs.com a great site, with great examples. But on the page for combineLatest(), the simplest example requires an understanding of timer(), and the advanced ones require knowledge of fromEvent(), mapTo(), startWith() and so on. Learning (and practicing with) each individually will make understanding the combineLatest() example a lot more doable.

Experiment, experiment, experiment
Different people learn differently. We learn different things at different speeds and learn best in different ways.

Some are great at absorbing information by reading it, some by hearing it, and some by using their hands. There’s some dispute in the scientific community on the exactness of these types of learning styles, but it’s hard to dispute that doing things in different ways can help you learn better.

I, for example, grasp software concepts a LOT better when I read the concept then do a simple example. Then another, and another, until I get it AND retain it. Try existing examples, and come up with your own. Or even better, reverse engineer existing examples…

Reverse engineering: redo it your way
After you type out a programming example, you’ll see the concept in action as the author intended it. This will teach you something, but you won’t get the concept fully by copying it verbatim. It’s like using tracing paper: it can help your drawing skills, but to take them further you have to do something more challenging than tracing.

What I will often do is take the example, copy it exactly, then alter one small thing at a time to see what it does. Maybe it breaks, maybe it gives you a different output. Change it back, then change something else. Gradually you’ll see patterns emerge and learn lessons from them. Then I’ll go back and reread the original example, and with time things will start to make more sense.

--

--