Intro
When I first started my software engineering career back at the University, I thought that “learning” multiple languages and technologies would make me a better developer.
I jumped from “learning” some C++, some Python, some Ruby, and some Swift.
Then I had an eye-opening tech interview which I almost failed.
I realized that’s not the case.
🎯 Main Takeaways
- The problem with spreading yourself into many languages.
- Benefits of mastering one language.
- Expertise is found in Depth, not Breadth.
The tech interview I almost failed
Around 5 years ago I went to a technical interview at my previous company. In my CV, I mentioned I’m skilled in different languages and technologies.
An example of my CV with the many skills I’ve mentioned.
During the interview, I was asked many questions about the skills I said I was capable of.
They asked me deep questions like: “How does Node.js work?”, “What’s the difference between Docker and Virtual Machines?”, “How does the Active Record ORM work in RubyOnRails?”, etc.
I almost failed it. I asked for feedback after the interview since I knew I was done here, but I wanted to learn and improve. I wrote 2-3 pages in my notebook.
Hopefully, they gave me a second chance with a coding assignment which I did well and got the job.
Moral of the story:
1. Switching from one tech stack to another made me a “user” of the technology rather than a competent software engineer who knows its tools well.
and
2. Include only the languages and tools you know, not everything you’ve touched in your CV.
The problem with spreading yourself into many languages
By jumping from “learning” one programming language to another, I learned only the basics of each.
I kept relearning simple concepts like loops and conditionals in four different syntaxes.
I wasn’t going deeper to enhance my knowledge like learning about memory management, even loop, error handling, async/await programming, etc.
I was just skimming the surface.
An example of surface-level concepts and deeper concepts in JavaScript.
Benefits of mastering one language
1. Deep Expertise - you gain a solid understanding, making you more effective.
Expertise is found in Depth, not Breadth.
Companies pay more for people who can solve hard questions, not for “code monkeys”.
And hard questions are solved with expertise.
2. Becoming the go-to person
Being an expert in a certain technology makes you a valuable team player.
You become the go-to person in your team for this technology by possessing knowledge or skills very few others do.
To do that you should go deep into a topic and become an expert.
3. Easier to learn new technologies
Strong foundations and understanding of one language make it easier and simpler to pick up and learn a new language.
Conclusion
Focusing on one programming language and/or tech stack transformed my career over time.
It allowed me to become a competent and impactful software engineer, not just someone who writes code.
I encourage you to do the same.
Choose a language, commit to mastering it, and see how your career will unfold.
Thank me later.
⭐ TL;DR
- Avoid spreading yourself into learning many languages.
- Expertise is found in Depth, not Breadth. Optimize for that.
- Being an expert in a certain technology, makes you a valuable team player.
- Embrace the T-Shaped Model - deep expertise in one area and a broad understanding of others.
- Committing to mastering a language or tech stack can lead to significant growth and success in your career.
