1. Career paths for software engineers
Career paths can vary greatly for software engineers depending on their skills and the industry or company they are in. Also, we see that companies (unfortunately) have their own way of evaluating whether you’re a junior or a senior… Usually, that’s 10 years of experience for an entry-level position and 10,000 years for a senior one…
Generally speaking, your software engineer career path begins on day one as a contributor and over time finds its way to a management position. So let’s go through the various stages of a developer’s career and explain what you can expect. Remember these are just guidelines, at the end of the day, you’ll be the one to define your own path!
0 - 2 years experience
This is the first step towards becoming a fully-fledged software engineer. At this point, you’ll have limited to no experience doing professional software development so expect a sharp learning curve. Most junior devs are straight out of university or boot camp with limited software experience so with a grasp of the fundamentals of development it’s time to start stacking those skills and getting proficient with dev tools.
In a junior role, you’ll get experience working within a development team, while learning new skills and how to contribute to projects. Expect to not only learn technical skills but also how to work within a team and work to project timelines. You’re gonna be working closely with senior engineers — so be open and receptive to feedback because this is where you’ll learn the most!
2-5 years experience
Once you’ve got some experience under your belt, you’ll have the right to call yourself a mid-developer. A mid-level engineer (or developer) is largely self-sufficient and compared with a junior, probably won’t require as much guidance once up to speed with a project. They’ve worked on a few projects in the past and have delivered production code countless times, they may have even caused an outage or two.
As a mid-level engineer, be expected to deliver features from conception to completion while being capable of working in a structured project environment. More experienced mid-level engineers may also help mentor less experienced engineers as well as conduct code reviews.
5+ years experience
A senior engineer is generally regarded as the expert on the team. They have seen a plethora of different projects, and technologies, and have mastered the software lifecycle. You will be responsible for training new engineers, delivering code, and helping with larger initiatives within the project scope. These engineers will also help a technical lead evaluate and execute long-term project goals, as well as find ways to improve the output of team members and insuring product quality for the long term.
Once you hit the level of senior engineer, your career path as a software developer starts to branch. It usually falls into two categories, those who want to pursue a career in management and those who decide to dive deeper into the technical realm. I highly recommend reading/listening to Software Engineering at Google, there is a fantastic chapter there describing how companies tend to treat the roles after senior engineer, which are either more technical, technical plus management mix, or straight management.
5+ years experience
This role is going to vary between organisations. Sometimes it can entail solely technical/project work alongside leading a team, but can also be the first opportunity for management experience. In both instances, a tech lead will work more closely with scoping project roadmaps for their teams and helping manage expectations with business stakeholders. They will be involved in more cross-team collaboration and “visionary” type work for a team. Tech leads are also responsible for making sure that the team they are leading can work fluidly and efficiently by removing any roadblocks they may face.
5+ years experience
In a management role, the amount of time spent on technical work diminishes greatly (sometimes is removed altogether). Management commonly entails developing individual team members in their careers, building a team to help meet the goals of a company, and managing stakeholders on projects. A manager will be responsible for removing team roadblocks and advocating on their behalf to the wider organisation. A large part of a manager’s role is planning for the future of the team and sometimes handling last-minute issues team members may have. This role typically includes more collaboration between teams and organisations within a company.
2 . Types of software engineering jobs
Software engineering is a broad field, there are many specialties within software engineering that people can fall into. Generally speaking, the categories can be broken up as follows. This list is not exhaustive.
- Front End engineer: Frontend engineers typically refer to website user interfaces. They are responsible for how a website looks and how users can interact with it.
- Back End engineer: These types of engineers work on server and server-side technologies. This can be database design, data integration, APIs, etc. This isn’t necessarily exclusive to web applications and can expand to many types of systems.
- Full Stack engineer: To put it simply, combine frontend and backend and you get Full Stack. These types of engineers are expected to work across the entire system and may need to touch many applications and services.
- Mobile developer: Mobile developers build applications for mobile devices. These can be tablets, smartphones, etc. Typically these applications will be on either iOS or Android operating systems. Sometimes these engineers can sub-specialise in either operating system.
- DevOps: DevOps engineers are responsible for less client-facing work and feature-facing work, although they are more about infrastructure, release cycles, and sometimes application health (when systems are running in production).
- Embedded Systems: Embedded systems developers work mostly in low-level systems. Think microwaves, cars, tractors, and other forms of machinery. These types of technologies have unique constraints that other forms may not, things like memory and speed constraints that may not be a concern in larger applications.
- Security: This type of engineer is exactly what it sounds like; people who are responsible for preventing hackers and cyber attacks from harming a system.
- Graphics: Video games and computer graphics are examples of the main areas of focus for graphics engineers. These professionals typically work with 2D/3D graphics, physics, and game mechanics.
RELATED: 7 Most Popular Web Developer Jobs in Europe
3. The day-to-day of a software engineer
There are many different project execution methodologies in software development so let me stick to one of the most common daily routine methodologies, Agile. In this system, a software team will focus on two-week intervals called sprints. Sprints have a dedicated goal, which the team focuses on to reach that goal. This could be working through a backlog of tickets or delivering on a certain feature. Each day starts with a stand-up meeting (15 minutes or less) where team members discuss their current work, their progress, and possible issues they are having. That way others can assist or provide guidance where applicable. A typical software engineer’s meeting schedule tends to stay light so they can focus on the delivery of their feature work.
You’ll work to complete your assignment, possibly reviewing some code, and meet with other team members to help each other reach your sprint goals. Each day can be a new challenge with the work you are assigned, this will usually be hands-on work. The day-to-day is largely self-driven as engineers are expected to be able to figure out a problem they are given or find the correct information they need to solve the problem without much guidance.
4. Software engineering skills
Software engineering, like many other jobs, encompasses a wide range of skills. It seems to me these jobs just keep expanding and the expectations in terms of skills and experience are growing, sometimes I wish it was just about coding…
I’ve broken this section down into two parts; hard skills and soft skills. Hards skills are the skill you’ll use to do the actual technical work, like programming languages, working with tools, etc. Soft skills are the interpersonal skills you’ll need to develop for synergy in the team and organisation. Soft skills are becoming more and more important in development sometimes overshadowing hard skills. You’ll need to get a grasp of both if you plan to move upward in the industry.
Generally speaking, the hard skills will be any technical knowledge you must know to complete your role. Most job listings will have this written out and vary based on the type of role you take i.e. frontend/backend/DevOps etc.
Think about your programs and other online tools as just individual pieces in a toolbelt, similar to that of a carpenter or tradesman. Knowing which tools to use and when to apply them is crucial to helping yourself evaluate and solve any problem that crosses your path.
These types of skills refer more to interpersonal skills and things are not necessarily tied to a degree or specialty. Learning how to effectively ask questions, understand the needs of the product team, and be able to effectively communicate problems you are facing can help you advance quickly within your environment. Almost every engineer will work on a team at some point. Communication within a team is incredibly important to reach your goals.
In addition, being able to use your resources effectively (think back to the carpenter’s tool belt) and managing your time wisely are important. Sometimes larger projects have dependencies that can delay the delivery of a project and be able to handle those dependencies is an important skill. Remember, there’s often a financial element attached to the product and these timelines.
Finally and arguably most importantly, be humble and coachable. I have a strong belief that every single person you interact with can teach you something, regardless of their title, years of experience, or background. Keeping an open and curious mind makes it easier for others to interact with you and makes solving problems fun. This skill is especially important if you are early in your career path.
RELATED: Top Characteristics of a Software Engineer
5. How to become a software engineer
There are many career pathways to becoming a software engineer. You’ll have to learn the foundations like the theory behind internet services, webpages, and software applications. From there, you’ll choose a specialisation—do you want to work on the front end or the back end? Maybe it’s mobile applications or the blockchain. Once you’ve decided that, it’s about learning the skills and technologies associated and growing from there.
This is a very complex subject so I’m not going to go into crazy detail here, there are some other great resources that do a great job creating career paths you can follow. I recommend checking out roadmap.sh for more in-depth info. Here I’ll just briefly explain the typical ways juniors receive foundational experience in the industry.
University programs are usually a 4-year bachelor’s program in either Computer Science/Software Engineering or similar fields. Through these 4 years, you will not only learn the fundamentals of software development, but also take many algorithms courses, software design courses, and possibly even software methodology courses to learn program management techniques. Additionally, you can expect to have logic courses and touch on many different types of software development. Backend, frontend, web apps, mobile, etc.
Bootcamp programs are typically hardcore and fast-paced programs designed to teach someone a specific area of software development fast. These are typically programs that are a few months long but no longer than a year. Expect to work almost full-time (40 hours a week) on these bootcamps. For a web application design Bootcamp, you’ll likely learn a lot about full stack development and get plenty of hands-on experience building applications, leaving you with a small portfolio you can take to your first interviews. Boot camps are ideal for people who don’t have time for a 4-year degree or want to make a hard career switch to software development.
In the modern age where almost everything can be learned on youtube or through a few google searches, self-taught programmers are not abnormal. This is definitely a more challenging approach in comparison to the other options, however not impossible. There are also a plethora of online courses you can take to teach yourself certain software engineering disciplines. Many of these online course systems also include certifications of completion, which you can showcase to help yourself stand out amongst other applicants.
RELATED: How to Become a Software Engineer Without a Degree in 2023
RELATED: Steps to Get a Software Engineer Internship
6. Software engineering salaries
This information comes from Glassdoor, these are averages, and salaries (USD) can vary based on your location and company. The amounts below are considered ‘Total Compensation’ which includes base salary and bonuses.
Engineering Manager: $225,391
Check out our salary calculator to get an estimate of what you can expect to earn in Germany, Austria, and Switzerland based on your skills and experience. You can also read our 2022 Salary Report to get more data on dev salaries in Europe.
RELATED: Highest Paying Tech Companies in Europe
7. Software engineering jobs
In this guide, I’ve outlined what a career path for software engineer looks like on the surface. If you are starting out, you should now have a pretty clear picture of what the future holds for you and hopefully, some insights into where you should focus your efforts.
At some point, you’ll need a job — I know, it’s annoying but it’s all part of life. For some great job opportunities in Germany, Austria, and Switzerland, head over to the WeAreDevelopers career page and see what’s waiting for you. We partner with Europe’s top tech companies to match them with software engineers like you in a way that removes the hassle of traditional job-search.
Thanks for reading ✌️
RELATED: Find a Developer Job: 12 Best Job Sites For Developers