DEV Community

M. Saad Ullah
M. Saad Ullah

Posted on

"The Practicing Mind": How I Learn New Things As A Developer

Today, my grandma dropped some wisdom on me: "As a software engineer, you need to learn new things almost every day."

Even grandma knows it. So, I won't bore you with that reminder—it's basically encoded in our DNA at this point.

But grandma, here's the thing: that's not enough.

You also need to be fast and efficient now at learning new things considering the insane speed at which tech is evolving. And, we also should be enjoying the process or else we'll just burn the FUGG out.

And lucky for me (and now you), I discovered just that by reading a book last year called "The Practicing Mind" by Thomas M. Sterner.

Since then, it has changed everything about how I learn new things.

In the book, Mr. Thomas the great said this eye-opener:

Our recognition of the value of possessing many diverse skills is expanding. Ironically, though, we miss the point that the ability to develop any skill as swiftly as possible, with the least amount of effort, and even to experience inner peace and joy in the process, is in fact a skill itself, and one that requires constant practice to become an effortless part of who we are.

It's actually ironic how we miss this quite obvious point, isn't it?

Therefore, my lovely hard working fellow devs, I'll share with you how I am developing this skill of learning new things as fast and efficiently as possible while (most importantly) enjoying the process and how it's been paying off lately. Then, you can decide if it's something that you wanna give a shot to.

But first, a little background so you know where I'm coming from.

I was in hell

I started learning to code back around 2018.

Guess when I got my first coding job? November of 2020!

Almost 3 FUGGING LONG YEARS.

Why, you ask? Because I was stuck in a special kind of purgatory reserved for promising developers like you and me: THE TUTORIAL HELL.

Trust me, this is the last place you wanna be in as a software developer.

I was in a spiral of youtube videos, tech books, and courses promising me that their course is the only course I'll ever need. But, for some reason my mind went blank every time when looking at a empty file.

I just wasn't learning anything really. I just knew a little bit of JavaScript, a little bit of Node.js, some React.

No deep understanding of anything really.

Obviously, my knowledge gaps were quite evident which led to a lot of frustration. Eventually, I just gave up and only learn new things that were in my comfort zone. Nothing outside the box.

I used to think that if one day JavaScript goes away, I'll probably have to leave this industry 😂

One thing I want to make clear - I have nothing against tutorials. I still do watch tutorials. I think they are really good but ONLY if you watch it with a different mindset which we will explore later in this article.

Now you must be bored of my rant and probably want to how I managed to stay relevant and how I learn things now.

I managed to learn a few things (without deep understanding) while working a regular job like many software engineers normally do. But... it was only after reading "The Practicing Mind" did I understand what it means to actually and truly master something.

What is it? How do I apply it? Let's understand. But first, we need to understand the difference between learning and practicing.

Learning VS Practicing

You might be thinking that I've eaten some dog shit and probably gone mad because I'm comparing learning with practicing.

Alongside this gross thought, you might also be thinking that outcome is same for both: by practicing we're learning and by learning we're, well, learning. And you're right...

Except, there's a subtle difference between the two that changes everything how we learn.

Luckily, Mr. Thomas solved this little mystery for us.

According to him, the words learning and practicing are similar but not the same. The word practice implies the presence of awareness and will. The word learning does not.

When we practice something, we are involved in the deliberate repetition of a process with an intention of reaching a specific goal.

The words deliberate and intention are the key here as they define the difference between actively practicing something and passively learning it.

When we're learning something, it's passive or automatic process which happens naturally when we acquire knowledge or skill but without a clear focus. It's byproduct of experience.

Let's break it down and understand this concept with a simple example first and then we'll see how I apply the concept in learning new things as an engineer.

The Practicing Mind in action

Let's say you want to learn to play piano. Here's the difference between learning vs practicing it:

Learning:
You might watch videos of someone playing a song. You understand how the song is played and might even try to mimic it by pressing the right keys. This is passive learning—you're gaining knowledge by experiencing but not deeply engaging with the skill. This approach also lacks focus and direction. You'll learn and understand a few basic things and that's it.

Practicing:
When you sit down at the piano and deliberately work on a specific part of a song, you're practicing. For example:

You're focusing on the technique. You spend 15 minutes playing just the left-hand part of a difficult section, paying attention to finger placement and timing.

You repeat a tricky measure multiple times, correcting mistakes and focusing on every note. You play the piece slowly to ensure accuracy and gradually increase the speed. This mindful, deliberate effort helps you internalize the skill.

Do you see the difference?

One is passive way, the other is focused and intentional.

One has no direction, the other has clear direction of where you want to go.

There's one more aspect of practicing something: You correct mistakes without judgement and without worrying about the end result. Learning to play piano well is the natural result of all the parts of the skill being correct. You focus on one part of the skill deeply and then move on to the next until you master all of them.

Now, let's see how I use this concept in learning new tools as a software engineer.

How I learn new things

Throughout my career as a mobile developer, I’ve primarily worked with React Native and Node.js. I’ve occasionally dipped into Java, Swift, Kotlin, and Objective-C to create native modules.

A few months ago, I decided to level up my game by learning native mobile development thoroughly, starting with Swift for iOS. My goal was to elevate my skills and expand my capabilities. Here’s the structured approach I followed:

Step 1: Research with Intention

Research is my first step. But it’s not just aimless browsing—I set a strict 1-hour timer and dive in with intention. I focus on answering one key question:

What 20% of this skill will give me 80% of the results I need? (Pareto Principle)

Since I was already familiar with mobile development, I had a clear idea of what parts to look for: Swift fundamentals, building interfaces with SwiftUI, state management, data modeling, design patterns, and API integration.

My research wasn’t just about gathering information; it was about finding the most impactful concepts and tools to master first. I do this by finding popular courses and looking through the course's content structure or by finding popular books on the topic and looking through the table of contents, etc.

Step 2: Isolate & Prioritize

In the words of The Practicing Mind, I isolated the important parts of iOS development and organized them in a logical learning order.

With a clear roadmap of the essential topics to learn iOS development, I focused on one aspect at a time starting with the foundation: Swift fundamentals.

By focusing on only and only one core aspect at a time, I ensured a solid understanding before moving forward.

Remember: Being a good iOS developer is a natural result of mastering all the key parts of it while staying process-oriented.

Step 3: Rapid Learning

After I chose what topic or aspect of iOS development I was going to learn, I started a 20-40 minute timer and dove right away in quick research or watching a video tutorial with a clear-cut intention:

How do I get started writing code ASAP? What is the 20% of the Swift programming language I need to understand that I will use 80% of the time?

This is the mindset shift I was talking about earlier. Watch video tutorials but with an intention of:

how do I get started engaging with the skill ASAP?

Here's the ugly fact no one wants to hear: You don't learn by watching tutorials; you learn by actively engaging with the skill.

I remember watching a 25 minute crash course on Swift fundamentals enough to understand the syntax such as creating variables, loops, condtions, functions, and what data structures are available.

Then, I quickly opened a online swift playground and created a simple calculator console app to feel comfortable with the syntax in about 30 minutes. When I encountered any error-without judging and getting frustrated-I simply did a google search to understand what it is, why it occurred, how to fix it, fixed it, and repeat. I'm learning. It's part of the process to master the skill. Why get mad on what is required to learn?

In just about 1 hour, I was proficient enough with Swift programming language to move to next aspect.

A side-note: If you're a new programmer, you might take a a while to do this but because i've been coding for a while now it was easy to get grasp on since most of the languages are same. Either way, engaging with skill is the only way to learn deeply whether you're new or not.

Similarly, I started learning to building interfaces with SwiftUI.

  • Researched important topics using the pareto principle.
  • Isolated components and logically sequenced them according to research.
  • A quick tutorial/blog post just enough to get started.
  • Build 10 UI screens of a twitter clone design I found from figma community.

Do you see the clear-cut, intentional, and focused approach?

Had I just watched tutorials, I would've never been able to know where I'm headed with learning native iOS development journey. By being deliberate and intentional, at the end of each learning session I knew exactly what I learned and what's next.

Conclusion

Learning new skills in tech isn’t just a requirement; it’s a never-ending journey. That's why we techies will never get bored ✌️

But without a deliberate, mindful approach, it’s easy to get stuck, burn out, or stay on the surface level of knowledge. My grandma’s advice is golden, but how we learn matters just as much as what we learn.

By shifting from passive learning to deliberate practicing—focusing on small, impactful parts and engaging deeply—we changed how we absorb knowledge. This isn't just about speed; it's about depth and enjoyment. With principles from The Practicing Mind, I’ve found a way to master new tools quickly and stay motivated in the process.

Happy coding, and remember: Mastery isn’t a destination; it’s a life-long practice.

I'm excited to know how do you plan to use this knowledge in your future learning endeavours? Share in the comments.

Top comments (0)