I'm applying for jobs now and am concerned that I don't know enough languages. I have a few years of work experience as a Data Engineer, so my bread and butter is Python and SQL. I'd like to get an entry-level role as a software engineer, but am concerned that I don't have the right languages. From what I can see, Java and C/C++/C# are the main languages asked for in job apps. Do I need to do a side project using these languages so I can add them to my resume? Or should I only apply to Data Engineer roles?
I agree you don't need to learn a new programming language for what you're trying to do.
In general, I like learning programming paradigms. For example: if you are familiar with Java, learning C# won't really change how you see programming. Learning Haskell will because it forces a functional view of the world vs Java's object-oriented. I have never used Haskell at work, but it did introduce me to property-based testing via QuickCheck. Python has a property-based testing library and that was once useful for a work project.
Can you give more details about what kind of projects/work interest you the most as a software engineer? From there, we can work backwards to see whether you need to get more experience with other programming languages.
Also, what does your timeline look like for switching jobs?
If the timeline is longer, you can try to switch teams internally and work on a project where you can build up experience with those languages. If you need to switch jobs immediately, you can look for jobs where the requirement is Python but the work is adjacent to what you want to work on. Then, you can eventually switch teams and work on projects that are more relevant to your interests.
Given your timeline, current experience, and desire to join a larger tech company, I would avoid trying to learn another programming language. I would instead study for general algorithms and data structure interview questions since these are the questions they will ask at larger tech companies.
Once you are in, you can start to dabble in other technologies and really hone in on what you want to do for the next few years.
While there are a lot of jobs for Java and the 3 "C languages", I actually feel Python and JavaScript have been very hot recently. Java, C, and C++ are also pretty verbose languages and aren't great for interviews, which we talk about more in our video on optimal interview languages. On the other hand, Python is a great programming language, and there are lot of companies that use Django/Flask (e.g. a big part of Instagram's back-end is in Django).
Zooming out, I recommend just not worrying too much here and optimizing for problems that don't exist yet. Apply to jobs that are Python heavy alongside Data Engineer positions and see what you get. If you get good leads, then just follow up on those and forget about these 4 other languages. If you don't, then you can think about picking up these languages and what kind of side projects you can do to master them.
Thanks Alex and Charlie.
I'm going for a more generalist-SWE role, but I guess backend would be preferrable to front-end since I do also have backend experience and data is related to backend.
My timeline is pretty soon, i.e. I'm sending out apps now and hope to have offers in ~3 months.
I only really have experience with backend and data. The other areas of development would be front-end, mobile (android/ios), infra/dev-ops, ML, and data science? I haven't touched any of those others, except for a bit of data science and ML, and maybe I'm interested in them, but without dedicating time and a side-project to them, I can't know, can I?
Right now I'm focused on the compensation and company prestige aspects of finding my job referenced by Alex here, and less on the technical space: https://www.jointaro.com/lesson/0WEmTNZOMIh8xAdfO3JH/how-to-choose-a-good-company-team-as-a-software-engineer-1012022/