The Career Paths of Software Engineers

Software Engineer has become a prominent career as the day in ages of Intranet and Big Data approaches. Before I decided to change my career to become a software engineer, I did a lot of research about the career, and we are going to deep deep into the career paths of software engineers today.

In my previous blog, we discussed about different ways to become a software engineer, coding boot camp vs. computer science degree vs. self taught programmer, and today we will look into some of the career paths that software engineers can take upon entering their career. There are many paths of software engineers, but I want to categorize them into mainly three categories.

The first category would be software engineer / senior developer. These are like the pre-requisites career for other paths of software engineer. Software developers are the coders that mainly read and write and maintain the code database. Generally most people stay in this path for two years, ( interesting the average tenure of a software developer within a company is about 2–3 years). This type of category comes with many titles such as junior software engineer, senior software developer, staff software engineer, site reliability engineer and etc. There are some smaller companies that do not distinguish between all these roles, for example, there would be junior software engineer, then senior software engineer for a start-up company that doesn’t have many resources / positions.

The second category would be Engineering managers. These type of roles includes but not limited to : Project manager, scrum manager, tech lead, product manager, business analyst and etc. This type of roles are as what the name implies, they manage software engineers. Most of the time, managers came from the roles of being a previous software engineer. They understand how to read and write codes, how to delegate and assign tasks to others. They tend to (or they should) have the management skills such as empathy, people skills, team-based abilities, how to recognize what emotions and work ethics that are software engineers are going through. Also depending on the people and company requirements, managers can split their work between coding and managing people. While software engineers are focused on coding and execution of the codebase, managers are focused on helping software engineers and making sure the deadlines are met, no code blocks and every sprint is properly proceeding as intended, provide expectations and performance reviews to software engineers and help them grow. They are a great way to balance between problem solving and people managing skills.

The third category is considered as Software Designer / Solution Architect. This type of roles are still very technical, they need to understand a lot about coding and how to design a system / product. They don’t necessary need to code, but they need to understand how a system works, what kind of technologies to use for building the system, how they would interact with each other, and how services and components will work with each other. Therefore it requires a deep understanding of coding and how technologies work, and it usually takes years to master before becoming a software architect. Some small companies don’t even have this type of position, because it might be up to the owner / senior engineer to design the system and give out the broad picture of the product / app.

There are definitely more career paths out there for software engineer that doesn’t fall under these three categories. For example, becoming a YouTuber / Streamer about Technical roles and software engineers can be an unique path to software engineer. These people have some experiences in the technical industry, and they are passionate about teaching / giving out tips regarding their experiences. I was watching a YouTuber named Joshua Fluke streaming the other day, he was going over the process of tech interview, and how to avoid terrible tech jobs out there by calling the tech recruiters and trying to find out exactly what they are not telling people before an interview.

We can also choose to switch back and forth between software engineer and project manager, in terms of balancing out our career. It is a good idea to do so since there are always new things to learn, new skills to acquire and different people managing styles. This will drastically add values to our portfolio and widens our career paths. Another way to spice things up a bit is to move across different industries in our software engineer career paths. We don’t have to just work for a FAANG company, there are plenty of companies out there that needs software engineer. Sure the tech skills are still transferable (thank god they are!) but different industries are going to require you to build different products, therefore learning about how these differences in another industry can be very refreshing. It can definitely bring a new perspective to our careers.

Another way to feel career growth is to join different size companies, as we mentioned before, start-up can work very differently than a FAANG company, the company structure, the team development, the codebase maintenance, the system design can vary depending on the size of a company. A start-up tend to have a faster coding speed, because there is always a need to build out a product faster and deliver it to the clients. While on the other hand, things can go slower in a bigger company, many authorizations needs to happen before a single feature can be built out. There will be a lot of codebase maintenance since it is a larger database.

Sometimes it does feel like there are not much growth within the tech industry, and I definitely do not know all the career paths of a software engineer, but I think there are more options out there. Let us explore the career together and feel free to connect with me via LinkedIn and chat with me! Thanks for reading and have a great day!

Striving and achieving to become the best version of myself.