I’ve been a software engineer at Google for 20 months.
But when I started the job, I had NO CLUE what I was doing!
Here are 10 skills every junior engineer needs to learn:
As a software engineer, you get so much autonomy that it can be hard to adjust if you just got out of school. There aren't always clear deadlines, and nobody is there to hold your hand.
Get into the habit of using a calendar and to-do list, ASAP. Otherwise, you could quickly find yourself drowning in work.
Reading Between The Lines
Nobody - not even you - always says exactly what they mean. If you don't pay attention, you could miss subtle hints that other people are upset with you, or considering not working with you anymore.
When reading an email, consider the writer's perspective, as well as any implications the message could have on your team.
When communicating with others, engineers often fall into the trap of thinking everyone else has context on their project. This is a problem, because it's impossible to get the help you need when no one knows what to help you with!
When sending emails or chat messages, always include key background information.
Project Timeline Estimation
If you don't know how to pace yourself, you can't deliver results in a predictable time frame. And if you can't produce predictable results, people won't want to work with you.
When estimating the length of a project, be conservative. If you think that pull request will take you a week, give yourself at least 2 weeks, so you have buffer time. Things happen that are out of our control - stay flexible, and don't overcommit.
If you want to avoid scope creep in your projects, you need to write design docs before starting. At the very least, identify the problem you're trying to solve, and how you'll test your code to make sure it handles edge cases.
When your project involves multiple teams and stakeholders, it's important to start with a design doc, so that everyone involved can review it at a high level. It's much easier to edit a high-level design than it is to refactor hundreds of lines of code.
It's up to you to make your career goals known to your manager. The reality is, unless you switch teams or companies, your relationship with your manager is for the long-term. The only way to achieve your goals is to communicate with your manager, to make sure the work assigned to you aligns with the progress you want to make.
In your regular 1:1's, ask for feedback on your recent work. Ask what you did well, what you can improve on, and what's left for you to reach the next level.
The industry changes constantly. Continued study and learning is the only way to stay competitive.
You don't have to sacrifice your social life to grind Leetcode (please don't), but it's a good idea to keep an eye on which tools and libraries are gaining traction outside the company you work at. You might be able to apply those learnings to your job, and improve your performance.
It's easy to burn yourself out in tech. So take a break when you need one. Whether it's going out to socialize or forming an exercise habit, it's important to do things that don't involve sitting at a computer screen all day.
Fortunately, many tech companies are generous about PTO, so make sure to take days off here and there. Personally, I take 1-2 days off per month, especially if there's a holiday.
How To Read Other People's Code
In a large codebase, you're interacting with code that's been there for years, often in languages you're not familiar with. If you're used to working alone, you might be a bit shocked.
Learn how to quickly find examples of library usage, and get an idea of how code works based on its documentation. Over time, you'll develop the skills to build a mental model of a codebase just by spending a few minutes reading through it.
How To Ask Questions
Without the right information, you can't do your job. But finding that information can be intimidating when you start.
As a junior engineer, learn to find who to ask a question, and what to ask them. Simply asking a coworker the right question can save you hours of poring through the codebase. Sometimes, code is missing documentation or examples, so being comfortable asking for help is vital.
If someone had told me these 10 things 20 months ago, who knows where I’d be? But what I do know, is that YOU will become an amazing software engineer.
I hope you enjoyed this article. If you’re crazy about coding, let’s chat on Discord. Click here to get an invite to my server.