This is the 100\(^{th}\) article! 🎉 So I decided to go with a subject about the software development’s career path.

You may wonder at some point how to evolve and get promotions while still maintaining your technology edge. While it may not exist in all company’s, I will refer to this career ladder as the technical path. 🌈

Technical path

By that I mean, the path where you’ll stay the closer to the technology, where, as a software developer means you might still be writing code later on in your career. This path is usually called the IC tracks.

IC tracks

IC stands for Individual Contributor, and usually denotes the career path that is not about managing people. Like manager → director → VP. But you still get to mentor, coach, lead people in the IC track as you go up the ladder.

The managerial path deals with hiring and firing people, promotions like mid and yearly reviews. Some people may consider that as administrative tasks, others as an infinite stream of annoying meetings. The IC track do increase the amount of meetings you may be involved in as you walk through it. For example, to align with architecture, share ideas and meet with other engineers/tech people.

Disclaimer

Role and title does not necessarily match, meaning you can be in a position where the industry/usual meaning of your title doesn’t match what you actually do in this role. (You could do more, less or different stuff). That’s why you see the years of experience is more of a range from the shorter time to longer time you may refer yourself in my attempt to abstract the position.

There are no clear definition for those title, so it’s an interpretation with some shallow points to give you a quick grasp of each role according to me. For the years of experience 🚩 it really depends on the company, your luck and your skill.

Luck 🍀 is a big factor, but it’s also something you can influence by keeping a good network, risk venturing into new opportunities, and be at the right time in the right place. So keep at it, you’ll get what you desire.

Criteria

The criteria for each level / role may differ depending on the company. But usually you can break them down into these 4 categories. So make sure you work on those, but also that this work you do gets noticed by the right people.

1. Technical excellency 💯

Technical excellency is often correlated with some git related KPI (key Performance Index), as well as the impact you may have on projects based on your contributions. For example writing quality code, using up to date technology, knowledge and application of the best coding patterns for the situation, your troubleshooting skills to fix bugs, and so on.

As you go for the top of the ladder, expertise may be evaluated from your external contributions or via public talks. To give a sense of acknowledgement outside the company.

2. Domain knowledge 📚

This is a bit different from the technical excellency, the domain knowledge refers to information (business and technical) from within the company.

Knowing the strength and weakness of the company from a technical standpoint to a more business related view is key to become more efficient in your job. Often knowing the right person in the right team may make your project go from rough to smooth.

This kind of job includes aligning team together, contributing to multi-team projects, writing documentation on architecture or features. This is usually evaluated based on your interaction with all the different teams.

3. Leadership 🏆

Leadership in this case comes down from the two previous ones. This is linked to all the coaching activities, mentorship, taking the lead on technological and non-technological conversation.

Having an edge on the technology makes you key into providing advices on where the product should go, how it will evolve as well as a better understanding on where we at regarding the development process. This means that your participation in task refinement, planning as well as helping executives and business people understand the technical side of things, will be taken into account.

4. Operational Exigence ⚙️

This one may not apply to everyone, and may be based on your domain and technical knowledge. Basically, it’s weather or not you care for the system, the product, the quality and all. It is more like a driver for the other 3 criteria, where you think about the customer, find edge case, prioritise your work to solve customer impacting issues fast and first.

Nobody likes to work extra hours or during the weekend because of an outage, when something breaks in the system. Taking each new problem arising with a good attitude to prevent future problem could be also considered as an operational exigence.

Levels

Associate 👩‍🎓

  • Starting at no experience.

Usually when you have just graduated, or as an entry level job. There’s no real expectation, some dynamism, an ability to learn and possibly some soft skill to match with the team.

You are expected to be a sponge 🧽 assimilating as much knowledge as you can, so you can quickly get independent on tasks within your domain.

Developer 🙆‍♀️

  • From 1 to 5 years depending on the company.

Can also be called mid as mid level, since developer can be used as an amalgam to define the profession. When you have experience in your role, or have previous experience in development which makes you between a beginner and expert.

You are expected to have some good knowledge of the code and algorithm so that you can be autonomous and most tasks. With guidance from more experienced people can even tackle some higher complexity tasks and designs.

Senior 👩‍💻

  • From 2 to 15+ years of experience.

This can be a dead end title in company that does not have an “IC” career path. So you may find yourself doing more than what I may describe here. If that’s the case, then you might be doing some work that other company would label as Staff+ roles, as some kind of “senior” senior that is hopefully reflected on your compensation.

Basically Senior developer are expected to be fully autonomous on a project. Ability to get started from scratch, architecture new features, integrate and obviously have some devOps knowledge (ci/cd, deployment, operation). As well as providing a good reference for “good code”. There’s also a whole new spectrum of “social” responsibilities, including some coaching, mentoring as well as being a reference point at the team level.

Staff + 🎩

  • From 5+ years of experience and so on.

Staff+ roles are not necessarily for everyone, it usually starts as tech lead or architect, it might not be a straightforward path. As your impact grow from your (individual) contributions, you’ll have more space to make decisions.

You will be meeting frequently with higher management and business people, lead technical discussion, help prioritize and define the tasks to seize opportunities and improve delivery. You may stay in touch with the codebase (performing in terms of quality like a senior developer) unlocking team or act as a reference to enforce good practices. You will have to play a decisive role writing architecture documents. There’s also a big part in training, coaching, mentoring team, reviewing PRs to make sure the quality level stays high.

With that in mind, there can’t be an infinite number of staff+ within a company, so if you want to make the cut you’ll need a sponsor that will introduce you to the good people making the decisions at an organizational level. Staff+ includes title such as Senior Staff, Principal or Distinguished which does not differ that much in responsibilities but more in terms of scope, experience or seniority. Find out more at staffeng which has testimony of staff+ engineers.

Conclusion

You don’t necessarily need a “level” or a specific role and title to reflect the quality of your work. As long as you keep doing what you like in a place where your contributions are valued then you should be alright.

As I have often been told, you’ll always find less qualified people yet at higher positions than you in any given company which can be sometime infuriating when they make bad decisions that comes with big impacts. But, if your work is appreciated, and you can promote your way out of the frustrating qualification gap then you should aim for it. Whatever helps you achieve a piece of mind. 🧘‍♂️

A refusal or promotion denial while it may hurt can be the best stepping stone to learn from one’s past to evolve and get what you deserve and more. Sometimes, however after reflecting on yourself, if you feel that the underlying issue is with the company, nothing stops you from exploring out. If you find a more fulfilling position where they find you excelling, then that’s their loss for not putting you in the best conditions to succeed.