One of the most common questions I am asked is, "How do I become an X?" where X can be a "Frontend Developer," "Backend Developer," "DevOps Engineer," and so on. When people ask me this question, what they are mainly asking about is a set of technical skills that they need to acquire. Technical skills are important, but they are not the only thing that makes a good engineer. In this article, I will talk about the things that make a good Junior engineer and set you up for success in your career.
TLDR; The most important traits that you need to have in order to step up in your career are: having an open mindset, being humble, learning from your mistakes, working on the challenging problems and having an opportunity mindset rather than a complaining one.
From my perspective, soft skills are vital for a junior engineer to be efficient, even more so than technical skills. They are more abstract and challenging to define and learn. They require extensive practice to develop, and unlike technical skills, there's no simulation or test environment for it. Every encounter you have with another person shapes their perception of you.
If you are a junior developer, here are some of the tips in no particular order:
- Prioritize developing the right mindset first, and focus on learning the technical skills as you go.
- Keep in mind that your colleagues will know you are a junior and set their expectations accordingly. This provides you with room to ask questions and not know everything.
- Avoid being defensive and take criticism constructively.
- Keep in mind: No Hello!
- Be curious and aware of your limitations, and be brave enough to try things on your own and ask for help when needed.
- Ask questions when you don't understand something, but try to distinguish between specific questions related to your lack of knowledge and those that contribute to the discussion.
- Learn how to find information on your own, rather than relying on others to spoon-feed you.
- Find and read the documentation, even if it is not always up to date.
- Document any missing tribal knowledge and share it with new hires.
- Try to figure things out on your own before asking for help, but don't be stubborn about it.
- Talk to your manager or senior colleagues about a rule of thumb for how long to spend trying to figure something out on your own before asking for help.
- Learn git if you haven't already, at least the basics of creating a feature branch and opening a PR.
- Understand the software development lifecycle at your company, and map out how code goes from a developer's machine to production.
- Volunteer for projects, especially those that others don't want to do.
- Pay attention to seemingly insignificant details and offer fresh perspectives on systems and processes.
- Realize that things are often the way they are for a reason, and reserve judgement until you have a comprehensive understanding.
- Remember that your colleagues take pride in their work, and be careful not to criticize their work too harshly.
- As you level up your technical skills, focus on driving impactful projects and making meaningful achievements.
- Know how to ask for help! Describe what you are trying to do, how are you doing it, why are you trying to achieve by doing it, what went wrong, what did you expected to happen instead and what you have tried to do to make it work as you expected! Be concise on your first few sentences, so that people can judge quickly if they can help you or not, but provide extensive details of your digging to find the root cause.
- Read the error messages, someone spent a lot of time writing error handling and trying to give you useful information
- As a junior, it is better to freely admit you don't know something than to guess.
- Remember that even the greybeard staff engineer is human and can make mistakes.
- Never test in production unless you have no choice.
- Learn from your mistakes, but also from your wins. Wisdom comes from self-reflection.
- Give your full attention when spoken to, people will love you for it. Additionally, listen for understanding, not just to respond. It's obvious when someone is just waiting for their turn to talk. Take a quick note if you have to, or even ask the person to hold their thought for a few seconds so you can give them your full attention without losing your own though.
- If you hear words or terms you don't know, look them up or ask what they mean.
The above list is not exhaustive, but it is a good starting point. If you are a junior engineer, I hope this article helps you on your journey. If you are a senior engineer, I hope this article helps you understand what your juniors are going through. If you are a hiring manager, I hope you find this article useful when interviewing junior engineers.