It’s 2023 already, you’ve been a responsible individual and created a new year’s resolution. One of the items in your resolution is a career change to become a software engineer. So how do you start?
Becoming a software engineer is 2023, is no different than in 2022, or 2021. But for some unexplainable reason—new year is considered to be a good reset point when we decide to pursue new endeavors or set goals. It doesn’t matter if you are fresh out of school, or looking for a career change after many years in a particular industry—becoming a software engineer is a great way to up your skills as well as pursue a new career.
Let this be your guide on how to make your first steps towards your desired change. I’m not going to teach you programming, or telling you what path to pursue among the many. Instead, I just want to give you my personal recommendations on what to focus on during your learning.
Ain’t programming dead?
Haven’t the demand for programmers declined rapidly? Aren’t the AI going to replace programmers?
No, and no. The end of 2022 was rough on the industry, with massive layoffs in many companies. But developers are still needed. As our world becomes more and more dependent on software, the need for good software engineers will persist. And as for AI, I’ve blogged earlier why I don’t think ChatGPT will replace developers any time soon.
Now that we’ve cleared out those two misconceptions, let’s discuss all the possible paths you can take, in no particular order.
The gamer
So you want to be a game developer? This is a very popular and demanding path. Many newcomers to this profession want to build games. In fact, the first serious things I’ve built when I was learning C in school—are games. Conway’s game of life and snake, to be exact.
Game development is a very broad umbrella term. It covers many disciplines such as: audio programming, graphics programming, physics programming, AI, game logic scripting, etc. Each of these disciplines can be their own career path. I’d say that graphics, AI, and game logic are the most interesting, but you might have interest for other things.
However, if you really want to become a game developer, I would suggest you focus on building games. Many beginning game developers are getting caught in the low level stuff. How to build a game engine, how to draw triangles, etc. And while this is fun, it does not bring you closer to actually building games. The ability to finish and ship a product is more important than building a game engine, which chances are you won’t be doing in your first years of this career path anyway.
The easiest, and fastest way to build games today—is to use a ready engine such as Unity. You will be able to utilize the amazing building blocks provided to you by Unity, while focusing on building your game. Development in Unity is done mainly in C#, which is a good overall programming language to learn. Unity can be used to build desktop and mobile games, and many AAA titles are built with Unity (I’m not an avid gamer, but Pillars of Eternity is one that comes to mind).
However, even though Unity abstracts a lot of the basics of graphics, audio, physics, and AI concepts—you will still need to know and understand them. And most of them are based on math and algorithms. Ray casting, path finding, vectors, quaternions. All these words will need to become your best friends. Also keep in mind that the game development industry is known to be a tough path. Crunching is real, and according to international game developers’ association survey, done in 2019, 41% of respondents indicated that their job involved crunch time, with 38% indicated working between 50 and 59 extra hours per week 1.
The mobile developer
Smartphone took over the world. It became the main device through which we consume media. Even my blog was visited primarily (51%) via mobile device, in the past 12 months. And so becoming a mobile developer, could be a viable career path to choose.
In order to get into mobile development, you need to decide what platform you want to start with: Apple iOS or Google Android. While emulation software exists, it’s always better to test on a live device, and so my recommendation would be to go with the one you already own. Keep in mind that with Apple it’s a bit more problematic as you need access to macOS in order to develop for the iPhone.
As for languages, the choice is very limited. If you plan to develop iOS applications (or any applications for the Apple ecosystem, for that matter), your two choices are Objective-C and Swift. Objective-C is old and somewhat outdated. Swift is a way nicer language, according to Apple it’s faster than Objective-C, and on top of that it can be used with SwiftUI, which is a modern way to declare user interfaces. For Android, on the other hand, Java and Kotlin are your only options. Java is much more verbose than Kotlin, and I, personally, prefer Kotlin. Both of them are good languages to know, as they can be used in many industries.
However, as smartphones become more and more important, and companies are looking to save cost on developers, another viable option could be—write once, run everywhere approach. In this approach, you develop one code base which is then compiled to run on both iOS and Android. The two main frameworks for that are React Native developed by Facebook, and Flutter developed by Google. React Native uses JavaScript, an insanely popular language (more on that later), while Flutter uses Dart—a somewhat niche language developed by Google.
Flutter should be more performant than React Native, but Dart is not that popular. So it’s up to you to do the research on what technology is demanded in your area. Keep in mind that you will probably compete with the cool kids (read about them in the next section) who are doing web development. Having a mobile application is a must for a successful product, but many companies will cheap out on proper mobile developers, and instead will repurpose a good frontend engineer, who knows JavaScript, to do a semi-native development using React Native.
The cool kid
The most popular path to choose in 2023—is no doubt web development. If smartphones became our main devices of choice, then the web became our main operating system. I bet most computers today run mainly Chrome or any other browser, and all our interactions are done through the web. The browser can run video conferencing, graphic design, and even gaming. There are two main careers you can take there. Frontend development, and backend development.
Frontend development focuses mainly on what we see. When you go to YouTube and interact with the video, you are interacting with the works of a frontend engineer. For years, frontend was relatively simple. But recently it got a lot more challenging, at least as challenging as backend, if not more challenging. The most popular and recommended way to get into frontend development—is the holy trifecta of HTML, CSS, and JavaScript.
Once you know how to build a web page using HTML, how to style it using CSS, and how to make it interactive using JavaScript, the next step would be to pick up a JavaScript framework. React is by far the most popular JavaScript frontend framework. Others are Vue and Svelte, so I recommend you to check if they are more popular in your region, and maybe pick one of them instead.
It is also possible to become a backend developer. Backend developers are the ones responsible for feeding the data to and from the frontend. In the example of YouTube, backend development might include things like storing the videos, processing them, streaming them into the browser, authenticating users, etc. The most popular framework for building backend applications is NodeJS, which is written in JavaScript. So if you want to be a backend developer, I suggest you learn JavaScript and then pick up NodeJS. To further improve your employability, you should definitely know how to work with Databases such as PostgreSQL and or Mongo.
However, it is possible to write backend in other languages such as Ruby, Python, or PHP. If you do decide to chose one of those, I’d recommend you go with Python as it is a more versatile language that can be used in different fields like Machine Learning or Data Analytics. If you plan to work primarily with WordPress, then PHP is the obvious choice. Ruby is still used in some companies, but it’s slowly phasing out, and finding Ruby developers becomes harder and harder. This can be an opportunity for you, if your city or country has demand for Ruby developers. And according to the latest StackOverflow developer survey, Ruby is one of the top paying languages. 2
Web development is by far the most popular route as of today. It has the biggest market, and plenty of learning materials. On the other side, it creates a strong competition as everyone is trying to become a web developer. And you always need to be one step ahead of everyone else in order to raise your chances of success.
Everything else
The above careers paths are not the only ones you can take. You can decide to go the route of data analytics or machine learning, where Python is dominating. If you like servers and infrastructure, you can choose the path of a DevOps engineer, where languages like Shell scripting, Ruby, and Python as well as tools like Chef, Ansible, Terraform, Docker, and Kubernetes are the most demanded.
Desktop application development, while slowly dying, is still needed for some industries. There, like with mobile development, a lot of the decision depends on the operating system you are planning to develop for. For macOS, as with iOS development, Swift is the de facto standard. For Windows, you can use C# or C++. For Linux, it’s primarily C++. And as with mobile, you can also do cross-platform development with Java/Kotlin, C++ and a framework like Qt, Flutter and Dart, or Electron and JavaScript.
Aside from all that, system development is a viable career path as well. The world runs on operating systems and networking equipment, and someone has to write drivers for those. More over, the market for Internet-of-Things (IoT in short) is rapidly growing, with devices like smart home appliances, or embedded systems that run on a SoC like Raspberry Pi. As it’s the closest you can get to hardware, and performance matters a lot, development in this area is done mainly in C and recently Rust. If you do decide to go that route, keep in mind that you need to understand how hardware works and be prepared to work with manual memory management, as well as understand how to write and debug low level code.
Beyond the basics
A bit more than twenty years ago, the world was switching from Windows 95 to Windows XP, and the internet was growing in popularity. At that time, a career in software engineering wasn’t something as common as today. I bet that today it’s one of the most popular choices for a career. Our increased dependency on technology created the increased demand for software engineers. The more people take this career path, the harder it will be to get there. And the only way to increase your chances—is to be curious.
A specific language or framework might help you land your first job, but vast knowledge in how computers work—will help you to build a career. Software engineering is fun. It’s well paid. But it’s not easy. And it will be harder each year, as more people decide to choose this path. If you do it to escape your soul sucking career, without any passion or desire to learn and stay curious—you will eventually find your self in the same soul sucking career you wanted to escape from. However, if you like to solve problems, passionate about learning and exploring new topics—welcome aboard! And enjoy your stay there!
Happy 2023!