Hello there! I am a Software Engineer with 13 years of experience. Last year I felt the need to do something with my career to not die as a Senior Software Engineer. Although staying in such a position is fine for most people. So I started doing presentations and sharing the knowledge, but without any concrete plan. This year I want to approach the problem differently.
The main image by Arek Socha from Pixabay.
So, what to do next?
Before creating any plan or roadmap, you have to take a helicopter view of where you are and what can be done. Well, I sat down, searched the internet and I found a lot of things there, but nothing structured. Allow me to structure it then by presenting a diagram:
During the investigation I have discovered five possible paths, let’s iterate over each of them.
Seniority path
This is what I would call the default path. You do what you are used to doing which leads to more experience and knowledge. As you gain more and more experience you are no longer working with one team, but with a number of teams, or maybe across the entire organisation. That means technical excellence and good human (aka soft) skills.
Some organizations have already prepared the “career ladders” for that, so you will find titles like staff engineer, principal engineer etc.
Management path
This is quite a game-changer. Stepping into this path usually means less and less coding and more and more meetings (kudos to my manager if you are reading this! 😁). Instead of thinking about how to make your code shine, now you have to think about how to make the team shine. Do you know the saying “the good manager eats lunch as last”? This is very true if you want to be a good manager. Make sure that your team has all it needs and also take care of them and their growth.
You can start this by being a team leader/engineering manager. I believe the last step on this ladder is becoming a CTO.
Product path
This one is also a game-changer as you will stop coding. Instead, you will become a link between the engineering team and the business. That means also a lot of meetings and thinking about the clients and their needs. This position will require much more product skills and human skills. However, your technical background can be a great benefit here.
You can transition to this path by applying for a product manager position, but with your great technical background, I think you can apply for a technical product manager (like working with APIs etc).
Teaching path
This one is quite interesting as you will be still coding a lot. Besides that, you will need to start sharing your knowledge, by doing workshops, brown bag sessions, pair programming, mob programming, attending conferences, meet-ups, doing online courses etc. The sky is the limit here. You can even become a regular teacher in the school, last year I met an awesome folk who is teaching kids (high five Paweł if you are reading this!).
What are the skills required here? Well, besides the knowledge and experience you already have, it is just a matter of starting to share it! But, as you know, it is not so easy. I have found out that to share something I have to structure my knowledge and perfect it, I do not want to share something that I wouldn’t be proud of. Although I think with more and more teaching skills it will be easier and faster.
Example job positions that you can look for are developer advocate, (agile) technical coach, software engineer mentor, regular teacher etc.
Independence path
Instead of earning a monthly stable salary, you will transition to the place where you earn money for your services. Usually, this kind of position requires starting your own consulting business. To do so, you have to have established a network of connections and build your brand, so the people can trust you.
This is the most complex position as it requires skills from multiple categories. As you are the company, you will need to know how to market yourself, how to sell your services/products, how to create your personal brand, how to establish good relationships with your customers and how to find your future customers. Besides that, you also need to do an awesome work.
In this path, I have identified the following positions: freelancer, consultant, and advisor.
Summary
Being a senior software engineer is just fine, you can definitely stay where you are, earn good money and be happy about it.
However, if you are like me and you would like to move forward, you have a couple of options. Of course, not everything is written in stone, there might be other possibilities.
I think the path for me is the teaching path. Besides having technical skills I found myself quite good at human skills and explaining things. Besides, by preparing to teach something I am also learning a lot.
Sources
- My own knowledge and experience 🙂
- Different LinkedIn profiles
- Technical Agile Coaching with the Samman method book by Emily Bache
- https://www.reddit.com/r/ExperiencedDevs/comments/wedfv0/what_if_anything_comes_after_a_senior_developer/
- https://www.codecademy.com/resources/blog/what-is-developer-advocate-job-responsibilities/
- https://www.indeed.com/career-advice/finding-a-job/what-does-staff-engineer-do
- https://talmatic.com/blog/offshore-team/principal-software-engineer-vs-architect-how-to-differ-them/
Great content. For me of course, the teaching path was the best, however, it is more freelance with “I’m still programming” than I’m a teacher only!
The issue is, that workshops, paid trainings sessions and all that stuff is not something that you can do all the time…