Don’t Waste Time On Boring Programming Lessons

I found a powerful technique that dramatically increased my ability to learn new programming concepts.

I used to struggle due to my ADHD. It saw it as a curse. Things are either captivating or intolerably boring to me, and many introductory technical books and articles fall into the “boring” bucket. Reading them is like listening to someone reading insightless slides out loud. In a monotone voice. For three hours. Which is also an accurate description of some courses I tried to take. Precise and dry makes a great reference manual but a poor learning incentive.

Fortunately, there are incredible teachers out there who are willing to set the bar much higher than that. They turn cold facts into fascinating stories, much like a friend sharing an exciting adventure so vividly that you can see what they saw and feel what they felt. Once I decided to only learn from them, I immediately went from struggling to having a wonderful time.


Kalid Azad from is one such teacher. He cares to make you care. This is perhaps best illustrated by the very first words of Angles, degrees, and radians:

It’s an obvious fact that circles should have 360 degrees. Right? Wrong. Most of us have no idea why there’s 360 degrees in a circle.

– Kalid Azad

I remember how it has blown my mind. I wanted answers, so I read the entire piece right away. At the end of it, I found myself sighting in awe as if I was gasping for air, drowning in a torrent of insights that was just unleashed upon me.

Kalid understands that engagement and intuition are essential, not optional. In his own words: “In math class, we often start with the last, most complex idea. It’s no wonder we’re confused — we’re showing DNA and expecting students to see the cat.”

Fortunately, there are more teachers like Kalid out there.

David Malan

One of them is David Malan, who teaches the Harvard CS50 course. Being an incredible showman, he turns the lectures into an action movie that’s chock-full of insights. Within the first 10 minutes, you learn about the binary system by watching a few light bulbs; on week one, you write your first line of code, and by the end of the course, you build your own software project. If I was breaking into programming today, that’s where I would start. I would also embrace programming games like Blockly, Grid Garden, or CSS Diner where learning takes the form of solving mazes, growing carrots, and arranging dinner plates.


My first contact with CS was a guessing game I used to play with my dad. I would pick a number between 1 and 100, he would take a guess, and I would say “too high” or “too low”. He always guessed my number in 7 steps or less. As a kid, it drove me crazy. I was determined to find a number so good that he would need to ask at least 8 questions, but he always won. This memory came fresh to me when I was reading brilliantly illustrated Grokking Algorithms by Adit Bhargava. It covers an algorithm called binary search using the same game I played with my dad. It also explains why he always won.

Adit also helped me grasp many concepts from functional programming. It’s a branch of CS that I always wanted to learn. Still, understanding even the fundamental concepts seemed out of reach: Many authors explained them like Monad is just a monoid in a category of endofunctors. Uhm yeah… I understood one word: “just”. To me, it was the equivalent of a spiritual guru saying, “You want the secret knowledge? Sit here and meditate for 30 years as I did.”

Luckily, Adit’s Monads in Pictures masterfully explain the concept of a Monad using captivating writing and beautiful illustrations. The lecture was such a gift of insight that it inspired me to explore the landscape more. That’s how I found Scott Wlaschin from F# for Fun and Profit with his humorous overview of functional programming and approachable programming tutorials. When I was ready and eager to learn a more rigorous theoretical basis, Bartosz Milewski’s Category theory for programmers helped me with illustrations of little piggies and fireworks. In your face, guru!

Data science

A good teacher can take you past the gatekeeping in virtually any discipline. Take data science. I once took a Stanford course about Natural Language Understanding. I feared it would be filled with math formulas, derivations, and incomprehensible language. It wasn’t. We discussed how humans use language, how misunderstandings happen, and what computers can learn from that. The formulas were a mere background. The focus was on solving real-world problems like deciding whether a sentence is positive or negative or finding a relationship between terms like Elon Musk and SpaceX (founder).


What I thought was a curse turned out to be a gift that keeps on giving. My ADHD keeps pushing me towards the best teachers out there. The ones who care enough to awaken my curiosity and make me sigh in awe. They free me from the tyranny of the boring and help me have a joyous and fulfilled life.

One thought on “Don’t Waste Time On Boring Programming Lessons

Leave a Reply

%d bloggers like this: