A Software Engineer's Career Path

Software engineering is a very fulfilling career choice, and consistently features among the highest paying jobs in the market. A job in the IT industry is so  popular that there are people who switch from entirely different career paths to start from scratch as a developer, just because it caught their interest and happens to have a nice average salary. Whether you are a student contemplating about your majors, or an experienced employee thinking to jump the ship in your career, you are not making a wrong choice.
A Software Engineer's Career Path
Photo by Samuel Zeller on Unsplash

I'll refer to software engineers using different terminologies - developers, programmers, engineers, etc. which are essentially the same thing, but might offend some nitpicky folks. They are not always the same, but I'll discuss all the subtle differences between engineers and developers in another article. Briefly, a software engineer is someone who has completed a Bachelors or Masters in Technology and/or knows not only programming in a language but how the whole software ecosystem is engineered - from the loading of OS to adding the latest javascript framework on top of tens of others. Since most of the times it isn't possible for one engineer to completely know all this stuff, there are specializations within software engineering roles as well. We have application engineers, embedded systems engineers and so on. This creates confusion as developers do the same thing, but are looked at differently.
The word engineer comes off as a bit too heavy (coveted?) a term to bestow upon regular programmers by those who seek prestige in their degrees. Don't worry if you don't have an engineering degree, most companies do not differentiate between a developer and an engineer, given that you have the skills and/or the experience. If you look at job boards, there as many positions for engineers as there are for developers, with no difference in their roles and responsibilities. You'll even find occasional development engineers there!

How to Grow Your Software Engineering Career?

Your software engineering career, contrary to what you might believe, requires the growth of not only you, but others as well. These others essentially include your team.
Think about it. If you are part of a team that has high impact on your company's business, and has led to great successes, how will it compare with when you are part of a team that brought your company down? Though these two options are on the extreme ends, generally when you are interviewed, people are more interested in the business value you provided and how well you worked in a team.
Team, team, team! Yes, it is important to learn how to work in a team, even though you may not like it. Reason? Your appraisals highly depend on the performance evaluation by your boss and peers. If you don't have a positive image as a team worker, you will be very hurt when it's time for the bonus checks to roll in.
Not all teams are bad, though. Especially in software engineering, if you are not comfortable working with people, you have the flexibility to define what kind of culture you want to work in and what kind of work you prefer. There are plenty of jobs in the market, pick one which best fits you. While interviewing, ask about the company culture, what team you will be assigned to, what interesting ideas is that team working on. Research your team before you join in.

A good suggestion would be to choose a team that solves bigger challenges - something that you have not worked on previously that excites you, so that there is enough scope for your learning. This way, you not only build your knowledge and skills, you also stay happy at your job!

On the topic of happiness at your job, it is very important to learn how to strike a balance between your work and personal life. While some people throw themselves into their jobs which is not healthy, others become too laid back when they get a job. Don't be one of them. While it is not desirable to spend more than 40 hours a week on your day job, it is important that you utilize those 40 hours effectively. Don't be complacent, if you want to grow your career, you need to take concerted efforts to map your own career path so you can achieve them quickly and efficiently. After all, it is important that you have a satisfaction in your career, and it is best to be responsible for your own choices than play the blame game with destiny.

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.

A Software Engineer's Career Path
Photo by Štefan Štefančík on Unsplash

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 
A Software Engineer's Career Path
Photo by Rob Mulally on Unsplash

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. 

What Are My Other Options?

Maybe you dislike coding. Maybe you want to try something else for a while, or maybe you just like wearing many hats. There are a variety of different things you can do - it's not all writing code. There's so much more to software development that when you explore all the roles matching your skills, you'll never again worry about being unemployed.  
If you are a good writer, you can help with writing documentation, styling guides, technical papers and white papers for organisations. 
For those of you interested in quality assurance in software, and are not averse to writing test cases, software testing a whole new field waiting for you. 
Interested in research? Academia may be your ideal choice of life. Or if you would rather have more money, you can apply for research positions in software companies as well. Google, Facebook, Microsoft (R&D) etc. are examples of companies which have exclusive research and development departments. You'll mostly find PhDs and erstwhile professors working towards fulfilling research in these companies. 

Research... Sounds Interesting. What does a Software Engineer's Career in Academia Look Like?

Life in academia is very different to a corporate life. While those in corporate think a professor's job is quite laid back and relaxed, those already in academia will warn you of the mounts of responsibilities shouldered on you, and the pressure of publishing constantly. 
Though you should know that switching between these two sides is fairly common- many professors accept high technical or research positions in software companies, while may software engineers transition to academia after getting some corporate experience.
Opinions aside, one fact is that you'll have to devote a lot of time for your academic career. You must have a PhD, which in itself takes a minimum of five to size years, and then you start as an associate, and slowly move onto the tenure track. Oh the coveted tenure! Permanent job as a professor meaning you'll probably never be unemployed. Doesn't that sound great? 
If you love research, you may find this to be the most satisfying jobs in the world. While the pay is not as great compared to the "Big N" companies, getting a lab to yourself, while nurturing young and bright students is guaranteed to appease the researcher in you.

Some of you may be thinking that none of the above options rest easy with you. You want the money, but you want complete control of your time as well. You love new ideas and innovation, but the academia is too slow and uptight for you. You know where this discussion is headed. 
I'm talking about another possibility which we haven't discussed so far - becoming a techpreneur. You know the tech, and your outlook towards your career is more suited to entrepreneurship. One major advantage a techpreneur has over an entrepreneur is that they know and understand their product deeply. They are aware of common issues in developing products built on software, and they know how to effectively communicate with their developers. 

There is no dearth of doors of opportunities open to you. You can be a management guru, a hotshot programmer or an avid researcher. The point is, you need to identify which doors lead you to a fulfilling career. Identify not only your technical skills but your aspirations in life as well. Often our aspirations are molded by our personalities. Do you love to inspire people with your knowledge, or do you create wonders when left alone with a computer? Ask yourself these questions - how do you want to retire? What is the one thing you want to accomplish from your career? How do you prefer to balance your career and personal life? Try to identify your innate abilities and use them to your best advantage, it will be easier for you compared to others to succeed early in your career. I hope this article has been helpful to you. Wishing you all the best for your journey ahead!
Share on Google Plus
Love what you read? Share this article among your friends and comment your thoughts below. We'd love to hear from you! If you'd like to read more such articles, follow The Daily Programmer on Twitter @programmerdaily and receive fresh, well-researched content delivered to your feed.
    Blogger Comment
    Facebook Comment


Post a Comment