Which Path Should You Choose?
Software development is a broad field that encompasses a wide range of job titles and roles.
Software jobs require different skills and are better suited for different types of people. Someone may enjoy one type of job, but really dislike another one.. even if they may seem to be similar positions at first glance.
I’ll go through a few examples and some of the skills you’ll want to have for each one. This is not a full list, but includes some of the ones I’ve had the most experience with.
- Software Developer: This is a general term that can refer to a wide range of roles, but typically involves writing code to create and maintain software applications. For this, you’re going to be expected to know at least one programming language and be able to demonstrate some experience with creating projects. This one breaks down into a few different possibilities that we’ll cover next.
- Full Stack Developer: A full stack developer is a software developer who has experience and expertise in both the front-end (client-side - usually a web browser) and back-end (server-side) of software development. This term has risen in popularity in recent years and is probably OVER used when people advertise their skill set. In my opinion, it takes years of experience with both front-end and back-end development to consider yourself ‘full stack’. That said, it does create a role for devs who enjoy both front and back end development and who like to be able to create the full application including the database.
- Front-End Developer: A front-end developer is responsible for creating the user interface (UI) and user experience (UX) of a website or application. Skills for this role include languages such as HTML, CSS, and JavaScript. More modern day requirements include reactive frameworks like React, VueJS, and many more new ones that are introduced all the time. Keeping up with all of this can be daunting since the rate of change is very rapid for front-end systems and web browser applications.
- Back-End Developer: A back-end developer is responsible for the server-side of software development. They typically use languages such as Python, Java, c#, go, rust, or NodeJS to develop and maintain the servers, databases, and APIs. Experience creating REST APIs that connect to a database would be a big requirement for this position.
- Mobile Developer: A mobile developer creates software for mobile devices such as smartphones and tablets. They typically use languages such as Swift for iOS development and Java or Kotlin for Android development. This is also a rapidly changing space and keeping up with device changes and available code libraries would be an added skill.
- Game Developer: A game developer creates video games for a variety of platforms such as PC, console, and mobile. They typically use game engines such as Unity or Unreal Engine, as well as programming languages such as C++ or C#. There are many other smaller game engines available, but most games use one of these engines. Luckily, most of the hard work is handled by the game engine and although there is lots of math involved in game dev, the engines usually abstract that away and make it easier to do common tasks.
- DevOps Engineer: A DevOps Engineer is responsible for the infrastructure and operations of a software project. They typically use technologies like Git, Docker, Kubernetes, and cloud services (AWS, Azure, Google Cloud) to manage and deploy software. While programming skills are very useful for DevOps, often they are not required beyond some basic scripting with Python or NodeJs or shell scripts. This is also a rapidly evolving area and many DevOps groups are moving into Platform Engineering and creating internal applications to serve developers and testers as an internal customer.
- QA Engineer: A QA Engineer is responsible for testing software and creating automated tests that can run as part of a CI/CD process flow. Skills for QA include JavaScript, testing plan software, and testing frameworks like selenium and playwright among many others. Attention to detail and a curious nature are also good skills to have for QA. Finding a new bug that the devs missed can be a fun experience for the right person and lead to overall confidence for the whole team.
There are many other roles and job titles in the software development field like Security Expert, Data Analyst, Project and Product Managers and many of the roles can overlap. Also, many software developers have a combination of skills, so the job titles are not always clear cut.