DEV Community

loading...

Discussion on: Ask the engineering manager: career development paths in tech companies from junior, through senior, to staff

Collapse
gergelyorosz profile image
Gergely Orosz Ask Me Anything

Hi Will! I'm writing a book pretty much on this! It's a broad subject and I won't be able to fit all my thoughts in a reply here. But here goes.

First, distinguish between professional growth and promotions. Getting promoted is a different process altogether and here are is my advice on how to get promoted as a developer.

Taking a step back from a promotion, here's what I expect from an intermediate developer:

  • Competence with coding. You can turn an idea and write solid, good, quality code, with (unit) tests included. You know your tools well: the debugger, you refactor with ease - and are unafraid to do so - and have mastered one or more programming languages.
  • Unblocking yourself. When you come across a problem - it could be on coding, on specification or other areas - you find a way to remove this blocker. This might mean coming up with workarounds, or it might just mean finding the right person to tell them "I need your help to do XYZ". And not stopping until someone helps you resolve it.
  • Getting reasonably complex projects done. You're able to break it into smaller pieces, make progress and get it done.
  • Curiosity to learn. You know there's plenty to learn and you do so. You pick up interesting projects, try out different technologies and approaches. You have written "Hello World" or done simple applications in multiple languages, even if just an exploration.

For seniors, I additionally expect:

  • Pragmatism and choosing the appropriate tradeoffs, much of which comes from "been there, done that, burnt myself" experience. Should we build a prototype or a production-ready MVP? Do we manual test or write integration tests? Do we add versioning to the API from day one or leave that for later? And so on. Seniors make reasonable choices that they can explain the "why", in the context of the project.
  • Good stakeholder communiciatiton. Seniors can be the point of contact for larger projects - and collaborate well with business stakeholders.
  • Mentoring/coaching of less experience developers. They grow more junior devs by pairing, doing good code reviews, giving gentle and constructive feedback and delegating well - and letting people figure things out, but being there to support them.
  • Familiarity with other stacks than your own. If you're a backend developer, you have some idea of client-side challenges and have an understanding of the things developers on that end need to worry about. Same thing when you're on the client side: e.g. if you're a web engineer, you have an understanding of APIs, how data storage works at a high-level and e.g. caching approaches between the backend and the client-side. You don't need to be super hands-on, but you also are not ignorant of areas you work with. This enables you to work better with other teams around you and make pragmatic decisions on e.g. what stack to move parts of the business logic to.

Also, don't forget that mid-level and senior will mean something else at each company. If you're lucky, your company might have a career ladder with competencies. Regardless, understand how the promotion process works at your company.

And if you're interested in more detailed advice, sign up to get notified when my book on growing, as a developer will be available - an announcement will be coming soon!