Raza Jahangir
Raza Jahangir

Raza Jahangir


Photo by Yasin Yusuf on Unsplash


Raza Jahangir's photo
Raza Jahangir
·May 14, 2022·

3 min read

Have you heard about the Dunning-Kruger effect? It is a cognitive bias by which people with limited knowledge or competency in a given domain overestimate their own knowledge and competency.

I was a victim of this bias when I started. I greatly overestimated myself and made some mistakes in my career that if I knew better at that time I wouldn’t do. I am writing these articles to share those mistakes with you so you don’t commit them.


It is tempting to learn the latest frameworks in the communities. Learning the framework promises freelance projects or a full-time job. I understand that money matters and everyone needs it but you have to draw a line between money and education at this point and make a choice.

You have two choices:

  1. Be an Average Engineer
  2. Be an Expert Engineer

Choice # 1:

Either a backend framework or a frontend one, they make development easier and less time taking. The problem however is that engineers who start off with frameworks rarely gain a deeper understanding of programming concepts.

Having lousy concepts makes them stick to one particular framework for a long time because transition towards newer frameworks seems daunting due to the lack of a deeper understanding of programming concepts. In this era where every company is using a different framework or a completely different stack. It is impossible to stick to one stack or a framework throughout your career.

If short, being an average engineer can get you a job in a small company or some freelance projects quickly while you are still in the university but compromising on learning the basics can make the entire career painful for you.

Choice # 2:

  1. Object-oriented programming
  2. How programming languages work
  3. Data structures and algorithms
  4. Systems design
  5. Servers
  6. Networking
  7. Operating systems

These are some topics required to build a solid foundation and widen the scope of domains the engineer can work on. Learning these topics well would enable you to switch quickly and easily from one tech stack to another. You wouldn’t feel stuck at any point in your career due to limited understanding and skill of any domain, related to the software industry.

Having such deep knowledge would also give you confidence, and topics to talk about with the engineers of various experience levels which is required when you go for an interview in big tech companies or while discussing the freelance projects with the clients.

Which choice will give you more money in the long run? The obvious answer is that the second choice is more likely to take you on the path toward riches. For e.g. Those who had better programming concepts are quickly learning and adapting to Web 3.0 and getting the highest salaries in the industry while others are afraid to jump ship due to the learning curve.

Make a choice for yourself. :)

Thanks for reading.

Share this