There are so many programming languages, frameworks & tools. Which ones should I learn? I kept asking this question when I first started working as a software engineer.

I found out this is very much like living in a big city with millions of people. Which streets do you have to learn to be able to move around?

I moved to Athens in 2004, before the widespread use of GPS. Although I did not have a GPS, I quickly managed to move around confidently. Did I have to learn every single street out there? Of course not! All I had was to learn where the different neighborhoods of Athens are on the map (e.g., north, south), the main roads that connect them, and the main characteristics of each area: some were famous for their bars, others for shopping, or for walking by the sea. Depending on my needs, I knew where to go and how to get there.

The same applies to all the programming languages, frameworks & tools. Don’t put too much stress on yourself on mastering every single technology out there! You will likely master the ones you use every day in your work (as I learned every street in my neighborhood).

Explore new technologies, learn their main characteristics, and how they connect to others. For example, think of the different types of databases: Relational and NoSQL (such as document stores & graph stores). What are their main features? When would you choose to use one versus the other?

The next time a new need comes up, you will confidently find your way, using the technologies that best suit this need!