A Guide to Software Engineering Career Paths (for Entry-Level Developers)

In the world of Computer Science and Information Technology, there are many different disciplines and roles that someone can assume.

We asked Anand Safi, Engineering Manager at tech startup Mark43, to help us understand what tracks exist for entry-level roles.

He broke the opportunities down into three major tracks: web development, data, and support roles.

In this interview, we cover:

  • An overview of the startup tech industry
  • Frontend and backend primary responsibilities
  • Data-centric roles and the differences between each
  • How QA and software support can propel your career

The conversation below has been edited for length and content.

BTW, are you interested in finding a new role on a startup tech team? Send us your resume.

Can you tell us about your background and some key highlights from your career?

After earning my Master’s in Computer Science, I worked at eBay, which is a large enterprise company. After eBay, I moved into the technology startup space, where I’ve been for the last eight years. That’s where I found my niche of working at 50-500 people companies. It’s not too scrappy with people scrambling to figure out every single detail, but it’s also not too corporate.

My first startup experience was with a company in NYC back in 2014. Currently, I work at a company called Mark 43 which is a public safety SaaS company. We recently announced our Series E, so we are in hyper-growth mode.

Having been in the startup space for the last eight years, I’ve seen growth in areas like pivoting, course-correcting, the lean MVP mindset, and the 80/20. These may seem like buzzwords but they are very real in our day-to-day.

———

Development Tracks for Technologists

———

We can break it up into three subcategories for entry-level roles.

First, we have web development (we’ll skip mobile development for now, because that is more specialized). Second, we have data roles. This category includes data analysts, scientists, and engineers. Then, there are roles that are based on critical thinking or troubleshooting. These are on the support and ops side and might include positions like software support analyst, QA engineer, or technical support engineer.

Web Development


Frontend Developers

A common entry point, on the web development side, is becoming a frontend developer. This role leverages the three common core elements — HTML, CSS, and JavaScript. Even though there are many new frameworks and libraries each week, they need to be solid on these three because many things are actually still based on JavaScript on the front-end. Developers can use these three elements to design and implement web pages and often build user-facing experiences using a combination of them.

They will also be working on improving existing web pages, which can mean leaning heavily on CSS. They might be working on major revamps, so they need to learn how to change existing modules. Lastly, they’ll also need to make sure to optimize web pages for performance and scalability. You might think that only senior engineers deal with performance optimization or scalability, but it is becoming crucial for web development. If you need to have an ultra-responsive website to engage users, then it needs to be a fundamental element from the start. It becomes important to look at what you’re writing and see how much time it takes to run. These are all high-level considerations that go into a frontend developer’s role.

Backend Developers

On the backend side, developers work closely with the frontend team. The CSS for every web page comes from a centrally hosted place, ideally, or cloud infrastructure. So, the API communication protocols or the methods that interface with the frontend, in passing data back and forth, are really important.

Developers might also be building a rule-based system. For example, a Facebook backend developer might have to make sure that if a user hits a like button, the system responds to that based on a set rule. That behavior will be coded on the front-end, but there needs to be a rules-based system that responds to certain user events and interactions.

On top of this, the backend developer’s server is still a middle layer in comparison to the ultimate database where all the data is stored. They need to do two things.

First, they need to acknowledge the frontend in terms of user actions. Then they need to label these actions and then reach out to the database and either store or grab some data for the front-end. If a user clicks on view photo, the front-end will make a request to the backend. Hopefully, the backend will have the logic in place to retrieve the photo from the database, get the user’s key, retrieve the image, and pass it back to the frontend.

Full-Stack Developers

Nowadays, full-stack developers are common, which is a combination of backend and frontend. It is becoming more popular because we have identified ways to code entire systems end-to-end using a single language at the core.

Before, the frontend developer might have been done in JavaScript while the backend might have been done in Java, Ruby, or Python. But now, it’s possible with Node.js, or new frameworks like Express, to build entire systems using only JavaScript as the guiding language. It’s become increasingly common for engineers – especially frontend engineers – to pick up one language and do end-to-end development, especially for applications that don’t need much backend logic (like working with routes, storing, or updating databases).

The term Full-Stack Developer can spark some immediate questions, since the role has evolved over time. In this interview, Johnny Ray Austin provides a fresh perspective on how far web development has come during the last 15 years, and lays the groundwork for realistic expectations of developers.

A note on Boot Camps:

I think coding boot camps are primarily focused on frontend or full-stack development. I know Google recently had a free data boot camp on Coursera, and there are a good number of data-centric boot camps that are coming up.

For the backend, I would definitely be surprised if someone came from a coding boot camp and joined as one of the preferred Java engineers. It’s difficult to teach Java, JavaScript, Ruby, or multiple languages in a short period of time. Bootcamps often have to teach a lot of information in 3-6 months, so that’s why HTML, CSS, and JavaScript work well together in terms of building a complete experience. They also offer a tangible outcome, which many people prefer as their entry point. After, they can see if they’re more interested in the dev-ops infrastructure and backend side, or decide to continue on the frontend path.

Data


Data Analyst

This role analyzes existing data flowing through the system. It can also include writing queries, joins, or simply connecting the dots. Analysts might be working with isolated data in different tables and need the intuition to understand what the business question to solve is.

Data Engineer

Data engineers are involved in preparing data. They develop, clean up, and maintain data-related architectures. The data engineer is more commonly involved with ETL data pipelines and ensuring that data is accurate. They need knowledge of SQL, data architecture, pipelining, data visualization, and more.

Data Scientists

Data scientists might be the most sophisticated role because there’s a lot of statistical skill involved. We’re talking about modeling, data mining, and machine learning principles. Scientists most commonly work with SSR or Python data science scripting mechanisms. There might also be Hadoop-based analytics thrown in there.

Data scientists also have to carry out operational models that go beyond traditional data analysis. Since there’s only a finite amount of data, data scientists need to build a smarter system that is able to recognize data or signals in real-time. That’s why statistical modeling is an important piece of the role. Data scientists use it to make their systems smarter in automatic response and dynamic.

There are many master’s programs in data science. I’m actually doing a master’s in data science right now and the coursework is geared around building, modeling, or predictive analytics using R or Python scripting. There’s definitely more specialized learning around data science for master’s programs.

There are two types of entry roles for data science – a junior data scientist or a data science intern. It’s not necessary to be a data analyst first. Data science internships and boot camps are also on the rise. You could do a three-month data science boot camp, but just keep in mind that there’s definitely a higher learning curve needed with the role.

Support and Ops


Quality Assurance (QA)

I actually started my career as a QA, and I am really thankful for that because the creativity in that role helped me go beyond the normal mindset for testing.

If we go back to the example of the Facebook-like button, some questions I might ask as a QA engineer would be — what if I hit the button ten times? Does it update the count or does it crash? What if I hit the like button and then reloaded the page? Would it lose count?

I found QA interesting in that even if you nail down your user personas and workflows, you end up discovering new ways that your users might use the product. That role helped my own developmental journey when I became a frontend engineer because I had experience with the user aspect.

Support Engineers

On the flip side, software support offers firsthand insight into how the end-user is using the system, and how the system is configured. The role is definitely one of the most external technical roles. All the other roles are focused on internal engineering, but support engineers need great interpersonal and communication skills. They might have to explain technical elements to a customer, for example.

Software support is also a very valuable role for switching into other positions. For instance, software is often released in a different way than the expectations of the engineering team. However, since software support roles have firsthand knowledge of how the software is being used, they can leverage that later in their career. Interpersonal skills are also very valuable when going into internal engineering roles because they allow you to communicate, collaborate, and have technical discussions with others.

 

Julia Deng

More Related Insights