Want to know what is the single most important key to rapid career growth? Networking. Whether you want to stay at one organisation or switch every two years, you need to create a network of people who know you, trust your abilities and believe in you.
For upward mobility within a single organisation, it is important that the leaders know you personally. Demonstrate your leadership abilities by taking ownership of the work you do, becoming the go-to person for a particular piece of the software architecture or technology stack. Show your abilities whenever you get a chance.
For mobility between companies, you need people who refer you, and those who offer good recommendations for you. The stronger their influence, the more weight their referrals and recommendations will have on your potential interviewers.
What Does a Software Engineering Career Look Like in The Big Four Companies?
For those who don't know, the Big N companies are mainly software giants such as Google, Amazon, Facebook, Apple. They are known for attracting top talent from across the world, largely due to their current dominance in the salary markets. Even if you feel you won't be doing any groundbreaking work in these companies, the salary alone will make you excited to work there. And not everyone working in Google is fixing bugs in ad servers, there are teams who are actually creating amazing things. Google recently created a new way for image recognition which performs better than CNNs. As I said before, research the team you'll be working with before joining a company.
So how exactly does a software engineer grow in these companies? Let's start with experience level 0 - you are a fresh graduate, and you have no experience, aside from your summer internships. You'll probably start as Associate Developer/Engineer, or Software Engineer/Developer -1 (SE-1) or simply Software Engineer. Your work will be relatively easy, and you'll have someone supervising you - your manager, buddy or senior engineer. You will not have much independent work to do, unless you are in small-medium sized company. You can be more relaxed, and utilize your free time to develop your skills and think about the next five years.
After around 2 years, you'll probably be promoted to Software/Development Engineer - 2 or simply Software Engineer. Don't worry about the different titles, they all have the same weight directly directly interpreted from the number of years of experience. You now have to learn accountability for your work. You'll be expected to at least understand the architecture of all the humongous code, and know the various layers of the tech stack. You should be comfortable with databases, client side and server side technologies your organisation is using, how various modules are communicating with each other. You are no longer looked as an inexperienced college grad, so what you say and what you code has some weight now. If you're certain about getting into management roles, although it is still too early to decide, try mentoring some of your juniors! It has multiple benefits. It shows you are serious about the growth of your team, and you are capable of taking on leadership roles.
The next step is usually a senior role, and is not easy to come by. It may take anywhere between 3 to 10 years to land a senior position. What should you do to speed this up? Some people have found success in switching between multiple companies in a short span of time. Switch for a higher position or a much higher salary, this way you can skip ahead to more senior development roles.
When you are already a senior developer, you know how to code well. You can write applications that do not fail, complete with test cases and documentation. People depend on you and seek your expertise regularly. Now what? You can only grow your skills so much. What's after senior? A senior senior post? Yup, there is such a post, which takes even more years to achieve. You can expect more than 5 years at the minimum to get promoted to those "senior senior" titles. They again have different names - staff engineer, senior staff engineer, and so on. But it's not just a title now. While no one doubted your skills at the previous level, and even though they'll probably still be the same, you'll be more respected now. You have considerable experience at the previous position where you were already a good programmer. Now people expect you to not only code well, but to code well while being blindfolded.
Eventually you'll hit a wall if you think that simply coding your way to the top is how it is done. But in organisations, there are already enough positions for people who code. To rise above that, you need to be different at each step. You need to demonstrate that you have skills that justify your promotion over other programmers.
Leaderships skills are the most sought after from experienced engineers. In a software company, a manager who knows about technology is always better and more valuable than a manager who only knows about management. Even in architect positions, which are more associated with technical roles, you'll need to lead engineers. The higher up the ladder you go, the lesser you'll need to code.
Coming back to our discussion on staff engineer positions, a staff position will be more scrutinized by your managers and leaders, because it is what you do now that will define which of the two famous diverging roads you'll take - technical excellence route, or the road to executive leadership.
If you choose the technical route, you are opening yourself up to architect roles or principal engineer positions. You'll go on to become a principal architect, or a distinguished engineer, or even further up to becoming a Fellow.
However, if you are more interested in leadership roles, and see yourself as a director, president or CEO of the company, the management track is right for you. When you have reached those positions in your software engineering career, you'll probably don't need this article to guide you any further :P
What About Career Growth In Startups?
So moving on, enough talk about big corporate giants, let's discuss startups. When compared to corporate giants, the word startups has a fresh, new and exciting feel to it.
Known for rapid growth, the startup industry is also a huge magnet for young talent.
Startups promise plenty of learning in short amount of time. Working at a startup is like being part of an ongoing hackathon.
You are time-bound, and develop a lot of skills in short time. Your work has direct impact. You develop not only your technical abilities but your interpersonal and communication skills as well.
You learn from your mistakes and receive a lot of real world experience. You have more ownership towards the work you do, and have more responsibilities.
Career growth in startups tend to be erratic. Since most startups have short life spans, your career chart may rise drastically and hit a plateau when the startup is acquired or loses steam.