author-image

Andrew James Okpainmo

March 29, 2025

Mastering Self-Learning, Will Make You An Awesome(Fearless) Software Engineer

post banner Image Credit: ©Vicky Design via Canva.com

SELF-LEARNING has been one of the most rewarding super-powers that I've had so far in my journey as a software engineer.

This art, coupled with a sincere passion for computer science and software engineering, have greatly led to my impressive growth and progress over the past years.

I know first-hand, the power of simply being able to teach yourself stuff.

It brings a different level of confidence - knowing that you've mastered the art of teaching yourself anything no matter how hard or complex.

a screenshot of my software engineering learnings directory over the years Image: a screenshot showing a software engineering learnings/adventures directory that I built over the years(zoom in to see detail).

It's also quite satisfying, to know that the deeper you go - into mastering the art of self learning and teaching yourself stuff, the easier it gets, and the more you'll begin to feel confident at teaching yourself challenging concepts(programming languages, frameworks, libraries, and more) - IN RECORD TIME.

This article, is a goldmine containing several lessons that I've learnt while grinding every bit I could, thus far in my software engineering adventure. I'm confident that I'll make quite some difference to anyone reading this piece.

Below are very detailed steps to help you become better in the art of self-learning - especially if you're a software engineer.

Part 1: Self Confidence.

Self learning starts with confidence.

To grow into an efficient self-leaner, you need to build a confidence in your ability to start and successfully accomplish learning adventures all by your self. It's about confidence at this point - build yours.

Probably consider listening to some motivational speeches or content 😊.

However you do it, you just have to build that belief and confidence in your ability to stay consistent on a learning journey until you accomplish you goals.

self-learning is not an art for the weak - it'll require mastery of virtues like discipline, consistency, endurance and a passion that nothing can beat down.

Some professional/engineering courses can take as long as Months to effectively go from start to finish. You'll certainly need those virtues.

In case you don't seem to have those qualities yet, there's no need to go hard on yourself just. Simply give your self some time, to(intentionally) work on developing those traits. It is all of those put together, that will make up into the confidence that you'll have in your abilities to effectively self-learn.

Part 2: Finding The Right Resources.

The next and probably the most challenging item on the list, is the ability to find the right resources, with which to learn whatever it is you're aspiring to master.

Believe me, this is one of the hardest nuts to crack when it comes to self learning. I am convinced that this ability grows over time, but then, you'll need to keep at it, to get better.

Be intentional about this. Track the progress of how good you're becoming in this regard. Thoughtfully look inwards from time to time, and appraise how well a past resource you picked to learn a concept helped you to learn that concept.

Keep at this appraisal as you progress, keep making adjustments and trying out different ways to find resources for self-learning.

You might also want to consider asking others(seniors and peers) for guidance on resources to learn with.

Just in case you're a junior-professional reading this, and wondering if you should only use paid courses over the free ones available on platforms like Youtube,

Here's my recommendation: simply make use of which ever you can afford! Many(probably even most times) It actually doesn't matter.

Honestly, there are some free resources on Youtube that beat the quality of some paid resources that you'll find on other platforms. It all boils down to you!

Part 3: My(Core) Self Learning Formula.

Below is the CORE self-learning formula I apply when learning new tech stuff/concepts by myself.

Ensure to follow carefully, and practice rigorously. Avoid convenience. Learn to go as hard as possible!!!

There are actually 3 core mind-sets to adopt.

1. The mission is 'to do it once and learn the concept'.

You see, most of the things we do as software engineers are repetitive.

You simply need to thoroughly learn the concept just once - while also applying the other 2 mindsets/principles that will be listed below.

This is the first thing to get into your head. It in fact summarizes the goal of every self-learning adventure.

2. Be thorough - take notes!!!

While learning, you have to take notes. This is very crucial. You can do so by hand - preferably by typing(write with a pen If you wish).

I take notes with Markdown files - that way, I can add images and read the Markdown content in preview mode.

You should take screenshots(e.g. of relevant parts/screens of a video course) and save relevant links. Do everything you can - the goal is to CLEARLY AND NEATLY DOCUMENT THE PROCESS.

Below are some images that show how thoroughly and patiently I approach taking notes while learning a new technology.

P.S: You might need to zoom in to see the images clearly.

The screenshots were from my notes while learning three different programming languages - Python, Rust and Solidity. Links to all the related courses I used while learning, will be shared at the end of this article.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning Python and Django.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning Python and Django.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning Python and Django.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning Python and Django.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning the Rust programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning the Rust programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning the Rust programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning the Rust programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning the Rust programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning/reviewing the Solidity programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning/reviewing the Solidity programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning/reviewing the Solidity programming language.

a screenshot of my software engineering learnings directory over the years Image: a screenshot from my notes while learning/reviewing the Solidity programming language.

  • Effective self learning is not about rushing through a course just to get a certificate that confirms you finished watching some videos or reading some articles.
  • Proper self-learning is not learning to forget!!!

When it comes to EFFECTIVE self-learning, you absolutely have to be brutally honest with yourself. It involves all the proper steps you'll need, to learn concepts, master them, and be able to apply them(to deliver software solutions) when ever the need arises - IRRESPECTIVE OF HOW LONG AGO YOU TOOK THE COURSE. This is where thorough and proper note-taking becomes very vital. Whatever you've forgotten, when it's time to apply what you've learnt(on the job), your notes will simply become your VERY STRUCTURED life-saving SECOND-BRAIN.

3. Practice along with course/tutorial tutors, and build a standard but simple project along the way.

This final point is arguably the most important of all three principles in my self-learning formula!

Like I love to say;

There’s absolutely no better way to learn and grow as a software engineer than to ‘learn by doing’. To make the best of any course or learning adventure, you simply have no choice, but practice along, and to also spin up a project and build.

For a software-related course, create a new(Github or alternative platform) repository, spin up a project, and build something awesome.

The project should be a simple one, but it should basically be one that will help you practice all the key/relevant real world applications of the concept, tool, or programming language you're learning.

Using backend engineering as an example, such a project would be simple, but should basically be one that will have all the features of a standard(pretty much complete) back-end system - features like user authentication, file uploads, and more.

Self learning without practicing and building(especially as it relates to software engineering), might just end-up being - nothing, but a beautiful waste of time.

Wrapping Up On This.

As earlier stated in this article, it is no doubt, that many of the things we do as software engineers are repetitive. This understanding is what greatly inspires my 'generalist approach to software engineering'.

That's actually what I mean by being 'fearless'.

I'm very confident in my ability to learn ANYTHING (even the hardest programming languages), and do senior-level stuff within just 1 - 3 months of DEDICATED HARD WORK.

The drill is simple: Learn the concept(s) and document the process while practicing along, and ensuring to build a very simple/basic but standard project. Practice all the real world applications of the concept or tools you're learning, and when the time comes to apply those concepts on the job, you'll be already good to go.

Always remember to take good and thorough notes. You'll need it later, as your SECOND BRAIN - helping you easily recall things or concepts you might have forgotten - in a WELL STRUCTURE WAY that works perfectly with you.

While many folks will argue that this has to do with IQ, I truly believe that it has more to do with having the right mindset.

Start by believing in yourself.

*A love and passion for programming and computer science will also help a lot.

Follow the steps - taking baby steps from where you currently are, enjoy the process, and you'll soon be as fearless as can be.

It means a lot that I'm able to share all of these systems that took me years to master - in a single article. I trust you to make the best use of all you've learnt.

And as promised, below are links, to three of the courses, referenced in some of the screenshots that were shared in this article.

  1. Learn Solidity in 20 Minutes! - A simple but phenomenal tutorial that takes you though a lot on the Solidity Programming language in just 20 mins. P.S: It'll sounds stupid, until you check it out for yourself.
  1. Python Full Course for Beginners - One good-ole Python-tutorial package by Mosh Hamedani. Was simply awesome enough to get me started with Python and the Django framework.
  1. Rust Essential Training(By Barron Stone on LinkedIn Learning) - An awesome course that teaches fundamentals of the Rust programming language in a way that's effective and beautiful. A great piece that I highly recommend to help you get started with Rust.

If you're a person who is interested in getting started with backend engineering, or if you're already a backend engineer who intends to explore backend engineering with a different programming language, this Zed Labs blog article will be perfect, to help you effectively apply the principles learnt in this article to your backend development journey.

Hire the Zed Labs Team - Let's bring your software and design projects to life.

Client/Project slots are still available for this month. Come hire us to build and deliver your software or design projects.

We'll be excited to hop on a call and get on the way to bringing your software or design project to life.

Conclusion.

That will do for this title. I hope you had a great time reading.

The Zed Labs blog is new and starting out strong. We hope to make it a go-to platform where top-level engineers come to read, learn and get inspired.

Do well to bookmark it, and stroll over to read new and exciting stories, plus top-notch mid-to-senior level engineering content in your free time.

If you loved this post or any other Zed Labs blog post, and would love to send an appreciation, simply use this link to buy us some cups of coffee 🤓.

Thanks a lot for reading.

Cheers!

About The Author

Andrew James Okpainmo is a fullstack software engineer who is passionate about building and scaling awesome products and startups. He currently works as a freelance software engineer (with expertise in fullstack software development, cloud engineering, and DevOps), while leading the team at Zed Labs.