There are so many Software Engineer interview preparation posts and courses available in the internet/social media platforms for freshers. Almost all of them deal with how to to crack the interview process (Problem Solving, Data Structures, Algorithms, Machine Coding, System Design & Architecture) and get your dream job.
But what lies beyond? What does it take to do well at your job as a Software Engineer? These are some of the points that I believe can help you become a better Software Engineer.
This is rule #1. Do not be an asshole. Be nice to your team mates, be nice to fellow employees, and be nice to the people you work with. Toxic “10x” engineers destroy teams in the long run. Building great software is a team effort, and is seldom accomplished alone.
The more you grow and gain experience, the more important it is for you to NOT be an unpleasant person to work with. Be kind to your fellow team members, be empathetic, and help out when someone reaches out to you without condescending or belittling them.
One of the primary skills that you need to pick up on the job is how to communicate well with others. Based on your scope and responsibilities, you will have to deal with a wide spectrum of stakeholders ranging from fellow engineers in your team to external product stakeholders. Learning to express your thoughts clearly in mails or in meetings will help get the point across.
Understand the bigger picture
The day to day work of a software engineer, does not involve solving disparate input/output problems, the likes of which you would have prepared on various competitive programming platforms. While it hones a specific necessary skillset, it is not sufficient.
Whenever you are solving a problem, always try to understand the intent behind solving it, and what impact it has on your consumers and stakeholders. Most of the fresh engineers try to immediately jump to solving the problem to the spec. Sometimes we have to resist the itch to immediately get into problem solving mode, but rather take a step back and see the bigger picture.
Automate/Make things better
The underlying overarching principle in building software is automation. Look out for opportunities and identify processes where you think you or your systems are spending time doing repetitive tasks. Figuring out ways to automate these tasks and then sharing these with the team will boost your productivity, and enable you to focus on things that are more important. Always try to leave things better than you find them.
Contribute beyond your team
If you have some free time in your hands after sufficiently tending to your team, look for opportunities to contribute at an organisational level. Pick up projects that help give you perspective beyond your team. Working with diverse set of stakeholders and verticals is a wealth of experience in itself. Try to branch out as much as possible and experiment and do things that catch your eye.
Don’t look for instant gratification
One thing that fresh out of college hires have is a massive prejudice about what teams/work is fancy and what is boring. Patience. It is quite natural to want to be a part of the team that does the best work. However, you would soon realise that all the teams have interesting problems to solve, and the avenues to learn are everywhere. You can contribute to making things better in any team, and each team has it’s own learning curve. Be patient and try to get learnings from all sorts of experiences.
This list is by no means exhaustive. These are the lessons I learnt that I found worth sharing. Let me know if there is something that helped you become a better Software Engineer!