What is this term Senior Engineer? Does it carry a lot of weight? Responsibility? Sense of achievement? Accountability? Answers may vary. But we can all agree that it's the person who has been with the organization for long, has great technical skills and domain expertise. But it's not enough. Over the years I learned so many things that can qualify you as a Senior Engineer, not just a namesake title.
Good engineer should always be inquisitive. They should ask questions even if they sound like dumb questions because there is good possibility it will never get asked if gone unanswered. You should also think about edge-cases or lessons learned from past experience.
If you don't agree with something or doesn't seem right, feel free to raise the issue and clearly explain your concerns. Even better, feel free to discuss with teammates if you've any suggestions towards improving the workflow or making the process better
This is my favorite and probably my weak point. Being a senior engineer means you should always be excited about new features or eager to go outside your comfort zone. When it comes to take on challenging tasks or big projects, it's the way to prove your capability and potential.
Being proactive also means you shouldn't be hesitant to raise any issues, and willingness to work on it or build team around it. Examples could be potential performance improvement, memory leaks, improved software architecture, including unit tests, and refactoring codebase to make it more robust and maintainable in long term
Be the Mentor
One of the characteristics of a senior engineer is they have a long history of being mentors for junior developers. It's important to understand that just having lots of good knowledge is not enough. You must also know how to distribute and teach other people. That way you can develop and grow new hires, junior developers and help grow the size and quality of team.
As a senior person, you might know a lot of things and by being a good mentor and teacher, you're making sure they get transferred to rest of the team. As a mentor, you can create documentation or presentations for new hires, review their merge requests and arrange informal Lunch and Learn sessions. As a senior member of the team, it's your responsibility to help develop future mentors and continue the tradition of mentorship
I never understood as to why people do not assume accountability as they climb the corporate ladder. If an issue comes up, study carefully and if it belongs to your team cooperate with investigation team what and how you can help them solve the problem. Just because it's been a while or the person (from your team) who wrote the feature isn't available is not an excuse to shy away from responsibility. If you've been informed late, ask questions, get clarifications and think about how you can start transferring that ticket and investigating issue in collaboration with other engineers.
Sometimes I don't understand if people just play dumb to avoid being accountable and having to work on it. It's easy to say, "Hey! I don't know anything about it. Get way!" and let other person work on it - Even though it was owned by your team. As a senior engineer, you should take a proactive approach or even if it's not owned by your team, coordinate with other project managers how it can be properly routed to the correct owner
Act as a Communication Bridge
It's not a new thing to have a communication barrier between developers and product managers. If you're lucky, your product manager may come from technical background, which makes thing much easier when it comes to requirements translations. Often times product managers and developers have hard time communicating their ideas, preferences, and priorities.
As a senior engineer who knows most of the moving parts of system knows how to apply translations in order to make sure both PMs and engineers are good on their demands and promises. For example, engineer may be looking for maintainable and scalable codebase, decent architecture, test coverage, consistency, optimal performance, and need to avoid hacks/one-off cases or client side heavy computation. As for product managers, they might be looking for fancy features in next release, requirements, emphasis on customer engagement and revenue, and meeting deadlines to publish periodic releases.
As a senior engineer, you should be able to form a link between these requests and help them understand and develop symbiotic relationship.
How many times you got frustrated because there was very little or absolutely no communication from other end? As a senior engineer, you've to make sure you're communicating well with your team. Communication forms an integral part of team whether you're remote or on-site. If not done properly, you might be blocking other developers, or PMs may not get updates on timely manner. If you discuss and reach to the conclusion during private chat, make sure to let other know in group channels. If communicating something with your team, it does not hurt to put other stakeholders in cc if they've anything to contribute.
And it's not just about project communication - If you're WFH, make sure to give your updates. WFH is not an excuse to delay or completely forget about active communication. If taking a day off or going on a long vacation, make sure to send an early email as well as gentle reminder couple of days before you take off. If using Slack, add appropriate emojis if you're WFH or are on a vacation. Even better, rather than just saying
🌴On Vacation, you'd rather say 🌴- On vacation, be back 11/23 etc. That way people can definitely know not only you're on vacation but when you'll be back. If you're responsible for big projects with imminent deadlines, make sure to delegate responsibilities before going on a vacation so that you can easily avoid checking mobile phone without losing peace of mind.
Ability to share two-way feedback
As a senior leader, you will involve in providing feedback to other engineers. Sharing nice feedback is easy, but how do you share criticism and improvement areas? Let people who why do you think it can be improved and what actions they can take to make things better. While doing so, you want to be respectful and inspiring to the receiver. We don't share critical feedback to make other person to look bad, but to let them know there is scope for improvement and to guide and work with them to achieve goals and team's expectations from them.
Besides giving feedback, you should also know how to welcome complimentary as well as critical feedback.Just because you've reached senior level position doesn't mean you're perfect. Feedback doesn't have to come just from people above your level. I have learnt so many things from interns and junior developers. Do not let you ego get in between receiving the feedback and working on it. Every person has something important to share as a feedback and it's important to listen to them. And if it makes sense, incorporate it into your daily routine.
This is all I am going to write for today. I had few more things to add. But since post has already grown too big, I have added only major points. Will update this post as I come up with more characteristics of a Senior Engineer