What is a Senior Engineer?
(Last modified: )·☕️️ 6 mins read
What are the skills of a Senior Engineer?
You might be asking yourself "What does it take to go from Junior to Senior?" as you might be transitioning yourself between these two roles. In this post I will ramble about what are the main topics you should focus on.
Let's start with some "hard-skills." In my opinion, you cannot be a Senior knowing the basics of certain topics. Senior (or more knowledgeable people, in general) have had the time and put the effort to deep dive in a few or many topics. That goes for the so-called "hard skills." Many people talk about I, T, and M shaped individuals. Regarding the technical mastery needed for Frontend or Web Development, in my opinion, this is the basics. You need to know quite a bit about many technical topics. But to me, the most important skills of a Senior Engineer are not the technical topics. In my opinion, the "soft skills" are even more important to dive deep – I consider them to be the real Engineering Best Practices.
That being said, some skills in one company or industry might be more important than in others, but in general:
Communication & Problem-Solving
- Master the ability to break down complex problems in simple problems. This is not just a skill useful for the job, but also in life. It is the foundational skill that will unblock other skills like time management, prioritisation, and decision-making, communication, etc.
- You should know how to explain complex technical problems to non-technical people.
Code Quality & Maintenance
Be mindful that you will spend more time reading code than writing it during your career.
- Know how to debug the code. Debugging skills are so powerful. Sometimes it requires more patience than skills. You might not understand code you did not write but knowing how to debug it gives you the understanding you are missing.
- Write readable code. Easy-to-read code is so important. This one is also related to patience. I'm sure you have heard the saying "First you make it work, then you make it right".
- Learn the importance of decoupling modules. Writing independent modules make your code easier to test, to change, and to delete. Read more about how to make your code "deletable".
- You should know the basics of testing and practice testing frequently.
Continuous Learning
Growth comes from learning from others:
- Read books (or watch videos, read articles, etc.) by people smarter than you about what they are learning. Ask your fellow senior/staff engineers for recommendations.
- According to the "learning pyramid", the best way to learn is to teach. So, try to teach what you learn to someone else. It will help you solidify your understanding and help you learn better. This is also a good strategy to escape the "tutorial hell" that many developers fall into during their early career. Since we all do not learn the same way, maybe you find that you learn better by writing a blog post about what you are learning than presenting it in a meeting or a conference talk, but what is important is that you are taking an "active sharing role" in your learning process.
Collaboration
Finally, remember that software development is very rarely a 1-person job:
- Invest time learning how to work as a team member. Coding is a social practice. Read about pair programming and try practising it with someone else. It will make you a better engineer and a better team member.
- In a remote team, learn how to communicate effectively with your colleagues. Use tools like Slack, Teams, Zoom, Microsoft Teams, etc. to stay connected with your team and make your work visible to your colleagues.
- Being mindful about the impact of your work on your colleagues is also something that I try to keep in the back of my mind. You're already conscious of your own work, on the impact it has on users, on your life, etc. But as you progress in your career, you start having a broader vision of the impact of your work. Working on a medium/big company gives you lots of opportunities to help others and to be helped by others. More importantly, never create knowledge silos. Share what you know and make information available to others. But be mindful also about how you say things: are you being inclusive with your actions? Do you consider other people's perspectives? Do you consider other people's feelings?
One of the best ways to learn from others is to ask. When you ask, try to do it to understand the other person's perspective, not to judge them or to impose your own perspective. This links to something I always try to keep in mind: Egoless communication. Keep your ego out of the way and focus on the problem and the solution while trying to include others.
This is a short list that came out from the top of my head. Some of these points require time to develop, but all of them are worth the effort.
I find those to be the most important skills of a Senior Engineer, transversally applied to all areas of the job. Some companies or products might have different priorities, but in general, these are the skills that will make you a better Senior Engineer all around your career.