Do you know what you think you know?

You might be learning the wrong way...

The technology landscape is changing very fast. New tools, frameworks, and libraries are being developed every time. Much credit to relentless engineers working tirelessly to ensure that the world gets better through impactful technological innovations. Consequently, the need to be an intentional learner becomes more important and can never be overemphasized. To stay up to date and understand each technological trend, and the benefits it has brought, we need to keep learning and applying every time.

Although in this article, I'll be citing instances from the computer, and Software Engineering field. But, I believe the concepts here can be applied by many other professionals, not just programmers and engineers.

Why have I written this article?

I recently joined a software engineering mentorship program. We've been onboarded on the first call. Afterward, you would have expected the usual "getting hands dirty thing".

Far from it, the mentor started by teaching us how to learn as Software Engineers. One would have thought it was baseless and gone ahead to say. Am I in kindergarten? When the session finally started, I realized I'd been doing things the wrong way.

Going forward in the article, I'll be sharing some of the important lessons I've learned in the course of this session. And I believe it will assist you in your journey to becoming a competent Software engineer and professional. Meanwhile, everyone's opinion is appreciated. The diversity of people's beliefs and ideas made the world interesting. Being open to learning is one of the ways to get the most out of it. That said, I'll appreciate your thoughtfulness.

Quick question?

How do you approach learning a new language, framework or library?

I would like you to note your answer and then evaluate your methods at the end of the article. Below are some of the tips for learning effectively:

  1. Understanding the core concepts:

The curiosity to pick up a tool and become proficient with it is not uncommon. That makes us result in "How to tutorials" without trying to have an intricate understanding of it. Questions like "How to upload a file?", "How to "build a CRUD app in Nodejs?", and many other similar queries are favorite questions. I also do that a lot. But we should think about it. As a Frontend Dev, have you ever asked yourself why libraries like ReactJS and VueJs make use of Virtual DOM as opposed to the REAL DOM?

The ability to dig deep into the inner workings of these tools is in most cases what separates a software engineer from a developer. Now you know what you are doing wrong.

Now, what can I do?

For every technology you pick up, you should read extensively on the technologies without caring about the syntax. The syntax will most likely be the easiest part once you have a good knowledge of how each of its pieces of technology fit in together. Consequently, you'll be able to write better code. Node JS is non-blocking. You can end up blocking it unknowingly. To learn NodeJS, a concept like threading, Event Bus, Event Emitters, Event Loop and many others are very essential.

Note: You started learning the moment you started reading about the technology not when you wrote your first syntax. Therefore you should focus less on the syntax at first and enjoy learning the basics.

  1. Understand why the tool exists:

I could have combined this point with the first but this too is very essential and I feel it deserves to have its paragraph. Without knowing why a tool exists in the first place, you might end up applying it wrongly or for the wrong problems. To avoid this, you should always ask yourself a lot of questions. Asking a couple of questions brings clarity. You'll be well prepared for the ups and downs of the tool. Also, you'll know its underlying capabilities

  1. Everything is just a tool:

It is self limiting to be fixated on a specific language, tool or framework. What if the tool you know is not adequate for the type of problem you had set out to solve. Imagine trying to work on a project and the most efficient type of database for that use-case is a NoSQL. Will you use the tool you knew or explore the best one for the job? It takes flexibility to be able work with the right tool as opposed to the tool you know. You should consider the requirements, and select the right right tool, language and framework based on carefully thought criteria.

Going forward, you should ask you yourself if you know what you said you know. Keep learning and I'll see you in the next article. I'll leave you with my favorite quote.

Nobody Learns without getting it wrong...