What Technologies to Learn as an Aspiring Software Engineer
Recently I’ve been asked by an aspiring software engineer what technologies best to learn. This post is my answer to that question. Bear in mind though that, although I’m a somewhat experienced software engineer, I’m by no means somebody that regularly hires new devs nor do I have a lot of experience at trying to get hired.
Read Job Ads
Find some online job boards that are relevant to the region you desire to work in and check what’s asked for. Looking at job ads is a good way to find out what skills are in demand at the moment. Linkedin is a good start.
Go Deeper in What you Already Know
Maybe you’re an aspiring software engineer because you already have some experience with some tech. If so, it’s probably a good idea to deepen your knowledge there. At least if it was something you liked using.
Use Google Trends
On Google Trends, you can enter a term and will be presented with a nice graph showing you how much that term was searched for over time. So, once you have an idea of what might be an interesting tech, enter it there and see whether it’s:
- Going up
=> getting some buzz, maybe just a temporary thing? Depends on the time scale. - Going down
=> might get out of fashion or is losing it’s early buzz. Depends on the time scale. - Been around for long and still is
=> established, safe bet - Gone up steeply in the past and then down and then about level
=> used to be trendy and is now established, safe bet
Stick to Standards
There are some industry standards where several parties like big corporations have standardized on. To me, the best example for this are the web standards such as ECMA script (you know it as JavaScript), HTML or CSS. Another example is SQL. Sticking to the standards is a good idea because tech that is standardized most likely won’t go anywhere any time soon.
Be a Generalist When you Start Out
My advice is that you should build up some general knowlege and not specialize in just one technology early on. In your first job you might not be expected to know everything already and it will be totally ok if you learn on the job (to be honest that’s what I still do a lot even after twenty years). Doing this, you will automatically become more specialized in what you do there. And you’ll also find out what your preferences and strengths are.
My Totally Subjective List as of December 2020
Web Frontend
- JavaScript
Safe bet You can’t go wrong with that. And it’s fun. And you can use it for the backend too (using Node.js). - CSS
Safe bet If you’re into design and also if not. - HTML
Safe bet I should not even have to mention this, given it’s listed under “Web Frontend” - PWA (Progressive Web Apps)
Pretty safe bet Browsers get more and more capabilities. And it’s not really a separate technology. But still good to know what it is and to have build one if you’re a web frontend dev. - React
Pretty safe bet Doesn’t seem to lose traction. And rightly so. But before learning React, make sure you learn JavaScript. - Svelte
Risky bet One of the alternatives to React that might be coming up. But before learning Svelte, make sure you learn JavaScript.
Backend
- Python
Safe bet I’ve never used it. But it’s been around for long and is still getting more and more popular. And they’re using it for machine learning which is all the rage. - Node.js
Safe bet Programming for Node.js is done in JavaScript. Do I have to say more? - .NET (5)
Pretty safe bet .NET with it’s C# programming language has recently been unified to .NET 5. Can be used on all platforms for the backend and for desktop programs on Windows. Has great docs and learning material provided by Microsoft and is pretty fun to use. - Java
Pretty safe bet I’ve seen it mentioned in quite a lot of job ads recently. And you can use it for Android development too (although I’d use Kotlin for that). And it’s a statically typed language (which JavaScript or Python are not) and might be a good intro to this topic. - SQL
Safe bet SQL is primarily a query language for relational databases. Although other kinds of databases have become popular too, relational databases together with SQL will still be around for long. - Go
Somewhat exotic but a fun and simple programming language you can use to get stuff done. Great to build command line tools too. And if you have experience in something exotic you won’t be one of thousands of developers applying for the same job.
Mobile App Development
- iOS using Swift
Safe bet But you need a Mac. - Android using Kotlin or Java
Safe bet - iOS and Android using Ionic
Pretty safe bet And you can use you HTML, CSS, JavaScript and React (or Svelte) skills.
Various
- Linux shell scripting
Safe bet I really think that’s a great skill to have and I would like to be better at it myself. - Cloud stuff
Pick AWS or Azure. Don’t try to learn them both. And also don’t try to learn one fully (it’s not possible). Start with one topic in either. - Containers aka Docker
You can use a Docker container to do development using environments without having to really install these envrironments which is great for trying things out. Doing so you automatically learn about Docker.
Hire me! Web frontend with JavaScript, TypeScript, React, Svelte, HTML, CSS. Backend with .Net/C#, Node.js, (MS-)SQL. I fill your resource gaps, take on whole projects and create prototypes. Yes, tell me more