Do I Have What it Takes to be a Senior Engineer?
Ravi Wu @ravilwwu
If having a pair of balls and several years of working experience are the only things you need in order to be a senior engineer — rather than a thorough review of past software design suggestions, code review results, or even coding performance and work ethic — then it’s unsurprising that the requirements seem unconvincing.
This tweet really resonated with me. Being a senior engineer is never just about how many years of working experience you have or how well you code. With that said, it’s hard to come up with a concrete definition for the title “senior engineer.” My supervisor asked me this question once, but I couldn’t come up with a comprehensive answer on the spot. After interviewing a handful of applicants for senior engineer positions, I realized they were all lacking something, one way or another.
So, let me take this chance to talk about the sorts of characteristics and abilities an ideal senior engineer should have. I observed these qualities from my brilliant coworkers and friends from different communities. They are all senior engineers (though not necessarily in title) that I respect a lot. I will also provide examples of impostors I’ve seen in the past, so people wouldn't mistake them for what real senior engineers should be.
Understands technical tools deeply
This is probably the most common way people judge a senior engineer. Do they know the tools of the trade well, or have a deep understanding of coding language and frameworks? Have they internalized certain coding techniques to the point where they practically feel like second nature? A senior engineer who can answer yes to all of the above will be able to see the big picture during development, and help his or her team to achieve its goals more efficiently.
Counterexample: Sometimes, we may prioritize working efficiency over technical abilities: if someone can finish the work fast, he or she must qualify as a good senior engineer. We must keep in mind, even if they’re efficient, if they’re lacking other more important abilities, they will surely spell disaster for the team.
Writes readable code that is easy to maintain
Someone with this ability will write tests and refactor their own code on a regular basis. They are finicky about their coding style, or how they name their variables and methods, and would not go for a shortcut that is difficult for others to understand. Such a senior engineer is very disciplined — while getting your code reviewed by him or her may be quite painful, you’ll definitely learn a great deal. Usually engineers who are able to reach this stage have been victimized by someone else’s code, and swear that their own code would never do the same to others.
Counterexample: Some engineers put too much emphasis on the rules given by tools or standards. Those rules may cause the team to lose time and efficiency.
Chooses the right technology
Senior engineers usually have a common strength — they’re able to make precise judgments based on their experiences. With that said, a senior engineer would never force his or her preferences on the team when choosing a technology for the project. The team would discuss the options and pick the most suitable one for the project after careful consideration together.
Counterexample: Sometimes experienced developers prefer outdated technologies they're used to, even if it's hard to maintain. When a project that uses a new technology runs into trouble, they would relish it, rather than give helpful guidance.
Analyzes and designs software architecture well
In order to have this ability, these engineers must have gone through lots of practical experiences and have thorough understandings of the theory. A skilled senior engineer is able to give a holistic analysis of the requirements and design good software architecture on a higher level and lower level implementation. He or she should also be able to find the right balance between program efficiency and readability. Qualified senior engineers should know enough about different technologies to find the right tool and avoid catastrophes in the planning stage.
Counterexample: Some engineers are good at reciting textbooks word for word, but don't have any idea how to apply them in reality, which is why their designs don’t make sense. This is a common problem for engineers who emphasize theory over practice.
Being able to use clear and simple diagrams to explain the principles of a technology is a must-have for senior engineers. Usually, if you can explain something with simple, hand-drawn diagrams, it means you know enough about the technology. From the diagrams, you can also tell how well a senior engineer is able to organize his or her thoughts. A well-organized diagram gives a holistic view at a glance. This all depends on how well the engineer knows his or her stuff.
Counterexample: Some engineers will draw arbitrary circles or squares, and then start talking without adding anything helpful to the figures as they talk. Others may be able to draw diagrams they can’t really explain. These are all evidences that they can't really communicate graphically.
Able to see the big picture
Can they take everything into consideration when discussing a new function or making changes to an old one? This ability also depends on how well a senior engineer remembers things, since it mostly comes from years of learning the hard way or knowing the system inside-out. Senior engineers will take a bird’s-eye view of the project and think about the pros and cons before offering their opinion to the decision makers. It also gives other engineers something to follow.
Counterexample: Some engineers worry too much and suggest unnecessary solutions to problems that don't exist. Sometimes these people babble nonsense because they want to seem important.
Introduces better workflows to the team
Senior engineers know from barrel theory that their own efficiency is not the same as the team’s. That’s why they’ll try to improve the team’s efficiency by using better workflow or technologies, such as automated deployment. They’ll also try to educate the team on the benefits of a good workflow through code review or training courses.
Counterexample: Some engineers will adopt new technologies without considering how well the team will adapt to it. The team might end up wasting valuable time on solving the new problems brought on by the new technology. Team morale often takes a hit too in the process.
Confident in accomplishing difficult tasks
And we don't mean arrogance. Senior engineers will feel confident in the face of challenges when they’ve reached a certain level of expertise in various technical skills. They can plan the foundations of a project from different perspectives. They also give good recommendations and produce great results, from developing the framework to coding, and everything else in between. His or her colleagues will appreciate the senior engineer's attitude after taking the battlefield with them a few times. With a true senior engineer on the team, there’s no such thing as a difficult problem.
Counterexample: Some engineers will mistake proficiency in a tool as their “special” ability and become cocky. If you were to take the tool away from them, they’ll most likely have a hard time finding alternative solutions and might even get defensive.
Seeks continuous self-improvement
Outside of work, senior engineers find their own time to learn new things and tirelessly improve their skills. They readily accept new ideas without doing it blindly. Since they already have a solid foundation, they can learn new things quickly. They’ll set up a plan to learn things that are relevant to their interest or work. This allows them to avoid stretching themselves too thin.
Counterexample: Some engineers have their own way of doing things and believe they can get things done without having to learn anything new. Unfortunately, accumulating terrible experiences of being wrong doesn’t make them better senior engineers if they can’t find better ways to do it.
When a project is in the development or maintenance phase, sometimes accidents happen and catch inexperienced engineers off guard. Good senior engineers know that freaking out won’t solve the problem, so they usually take the mishaps in stride. They’ll be able to find a better solution by thinking outside of the box and seeing the issue as a whole.
Counterexample: Some engineers will act like it's none of their business when sh*t hits the fan. This happens the most when company punishes people for making mistakes.
Shares knowledge and provides feedback
Senior engineers know that being a technical expert is not enough; they will work on their rhetorical and writing skills by recording down what they know. By sharing their own experience and providing helpful feedback, they can help others avoid making the same mistakes. You’ll most likely find them sharing about their working experiences at book clubs or seminars.
Counterexample: Some engineers like to share what they read in books rather than from their own experiences. While this knowledge may be valuable, it might be too abstract for reality.
During discussions, senior engineers will not refrain from talking about what they know. They’re also very respectful towards their colleagues —he or she won’t get into defensive arguments. Senior engineers are humble; they do not argue about things they don't understand. Instead, if the time allows, they’ll ask questions and research on their own before entering the next discussion. Coworkers love to have technical discussions with senior engineers. It's not always because senior engineers know more, but because talking geek is fun with them.
Counterexample: Some engineers with strong abilities will force themselves on others. Even if they’re correct on something, their attitude will destroy the team’s chemistry in the long run.
Whether it's a major issue on the line or an error made in development, senior engineers are quick to admit their wrongs. They are also unafraid of taking on responsibilities. They understand that admitting mistakes is not shameful; instead, it's a chance for growth. That’s why they’d go back and review their mistakes after the problem has been solved. That’s not to say that senior engineers take all the blame; the point is to allow the team to see the issues and solve them as soon as possible. Senior engineers like this often provide good insights at the review meetings because they can catch issues that might have been ignored.
Counterexample: Some engineers would rather point fingers than take the fall. They might avoid blame by saying it's not part of their job, or just cowardly throw a junior coworker under the bus.
That’s not all
By no means did I cover all the abilities or characteristics senior engineers may have. I think you too can look at the smart colleagues in your own office, and see why you respect them. Of course, it’s not like every senior engineer must check every item off the list. I often ask myself what I still lack as well.
In reality, abilities and personal characteristics go together. Technical skills can be learned through training, but mental qualities don’t come easy. Good senior engineers are always looking for opportunities to improve their technical abilities and mental abilities on the job.
This post was translated to English by Codementor’s content team. Here's the original Chinese post by Jace, a senior web developer at KKBox.