What are some general tips for a software engineer who’s new to the industry?

Here are some things I wish I had known when starting out:

1. Take ownership

I have always been fascinated by the career growth of engineers around me. Most new engineers, fresh out of college, start out with roughly the same set of functional skills which helps them get them through the interview process. But after joining the company, some engineers seem to grow really quickly and others don’t. In my experience, what separates them is the kind of expectations they set for themselves. This is best illustrated with an example.

Let’s say, one fine day, your manager walks up to an engineer on your team and says:

Hey, can you look into why some new users who signed up did not receive the welcome email?

The ask is very clear. Here are two possible scenarios on what happens next depending on who is assigned the task (you have engineers X and Y on your team):

  1. Engineer X investigates the issue, realizes that it is due to another team, report backs with the findings and asks for next steps.
  2. Engineer Y investigates the issue, realizes it is due to another team, finds out more from them, comes up with a plan to fix the issue and then fixes the issue. Also, follows-up with the team asking them for ways to prevent this in future. Finally, communicates all the steps taken back to the manager.

So, which of these two engineers would you want on your team? A better question is which engineer would you rather be – X or Y?

It is pretty clear that most of us would prefer to be engineer Y since he/she took more ownership over the issue and made life easier for everyone around them. As an engineer, you can decide where your role begins and ends. So, one shouldn’t feel constrained by what the people around you tell you to do/expect you to do. Career growth happens when you start operating at a level higher than your current level. The way to do that is by taking more ownership and not worrying about boundaries/expectations set by the people around you.

2. Leverage your strengths, manage your weaknesses

Most people worry about their performance reviews. They are always worried what feedback they will receive under “areas of improvement”. This might just be a human tendency to obsess over imperfections and take the positives for granted. This could also be a consequence of how we measure success in our education system. So, for someone used to getting straight As, getting a B feels like a failure and they would naturally worry about the B instead of focusing on all classes that they did really well in.

But things work really differently in the real world. If you have chosen to be a software engineer, then you are probably terrible at a hundred other professions and it doesn’t really matter. So, taking the same approach to growing your own career can be really valuable. It is easy to get intimidated by the great engineers around you who seem to be really good at things that don’t come naturally to you. But identifying your own strengths and finding opportunities to leverage them is the way to be successful.

For instance, there was an engineer who had a knack for working with people. So, he ended up leading lot of cross-team projects, getting the best out of people and was able to have a lot of impact that way. As a contrast to that, there was another engineer who was technically very strong but wasn’t great with people. But he still had similar impact because he could design and build complex systems that very few people could do. (Good companies should be able to leverage the strengths of both these engineers and create a culture where they can co-exist)

The most important thing to remember is that not all weaknesses need to be fixed/can be fixed. You can put in the effort to address them if you think it is holding you back in some respect and necessary for your success. But you can also make smart career choices to avoid areas where you are weak and still succeed by doubling-down on your strengths. I have seen engineers do both successfully.

3. Spend time with people better than you

“You are the average of the five people you spend the most time with.” – Jim Rohn

The above quote is fairly accurate in my experience since it captures the single biggest learning mechanism available to us i.e. learning from the people around us. So it is really important to surround yourself with good role models. Some of it is in your control. For instance, you cannot choose which people end up on your team but you can always choose to move to a team that has great people.

I was really lucky to work with a great engineer in my first job. I used to enjoy coming to work every day knowing that I would get to learn something from him. In hindsight, working with him helped me define my own standards of what “good” and “great” looks like. (If you are only used to playing college football, you will never know what the standards are for the NFL) So, working with great people helps you set high standards for yourself. On the flip side, if you are the best engineer on your team, you should change your team since there isn’t much opportunity for growth.

Here is a strategy that I use to optimize for working with great people. When I join a company, I maintain a running list of all the people that I respect/want to work with. Then I try to find opportunities, both formal and informal, to interact with them. There have been cases where I have learnt a lot just by being in meetings with some of them. Some of them may even agree to be your mentors in areas where you want to grow/where you need help with. I would strongly recommend this as a very effective approach to grow in your career.


In general, being more self-aware and taking more initiative can help new software engineers grow quickly in their career. There are no fixed paths for success and the sooner engineers realize that, the quicker they can shape their own career paths. Good luck!

Leave a Reply