Careers - Level Up
The software engineer career ladder is pretty much the same in all tech firms:
- Junior Software Engineer (though "junior" is usually not used in the titles)
- Software Engineer:
- Senior Software Engineer / Manager:
- Staff Software Engineer / Senior Manager
- Principle Software Engineer / Director
Becoming a Software Engineer
The computer science courses you learned in schools and the technical interview questions you mastered may be quite different from the actual work. As a junior engineer, just follow the instructions of your mentor or manager, there are a lot to learn.
You will become a qualified Software Engineer when you can consistently and independently delivery high quality work.
Towards "Senior" / Tech Lead
You will reach a point where you stop just implementing someone else's idea or spec, you start to spend more time exploring new directions, scoping new projects, and making larger impacts. Then you will be a "Senior" software engineer, whatever the title is.
Besides hardening your technical skills, these soft skills will become more and more important: communication, collaboration, problem solving, empathy, handle responsibility and failure, curiosity and keep learning. "Tech is not easy, but people are always harder"
IC or Manager
At some point (usually after you are raised to Senior, and successfully led a project or two) you need to make a decision, whether to stay as an individual contributor or to be a people manager.
If you enjoy technical challenges and do not want to "manage" people, most companies have this IC ladder for you.
Very senior IC can be called "Architect", but that normally means "didn't code anything in the past 10+ years." And some companies have "Fellows", for people who made very high impact and at VP's pay grade.
But inevitably, as you become more senior, you will spend less time coding, but more time working with other team members or other teams discussing longer terms and bigger pictures.
If you enjoy having 8 to 10 meetings per day, doing 1:1s every week, and performance review /calibration every quarter or half, or you simply hate coding, then you should be a people manager.
The career path is clearer than IC's, from first line manager to second line, then director, VP Engineering, until CTO or CIO. What's the job of CTO? Here's a good quote:
(@jimbojsb:) CTO’s Prayer: God, grant me engineers to build the things I can’t buy, budget to buy the things I can’t build, and the wisdom to know the difference
Titles could be meaningless
Some companies (like Microsoft) have so many levels, so that you can feel your career progression every one year or two; some companies (like Oracle) have titles so bloated that almost everybody is a "principle"; on the other hand some companies (like Facebook) hide the levels and call everybody "Software Engineer" ("all engineers are created equal"?)