This article takes the aspects discussed in Are you a tech lead? and tries to define what it means to be a senior Software Engineer.
Senior Software Engineer is someone with experience, a team player and takes ownership over their work.
Lets put each of those items under the microscope to understand them better.
Team Player
Respect
- uses the language of “We”
- does not put their colleagues down
- is aware of a colleagues sensitivities
- is a good listener
- be open to when an opinion differs from theirs
- uses the feedback received to better themselves
Trust
- seeks feedback from team members
- teaches the team a particular skill they own
- is not afraid to speak up when it matters
Partnership
- provides constructive, truthful and helpful feedback to team members
- helps the team to handle their tasks
- shares knowledge about technologies and new findings
- reviews the work of a team member to help them better themselves
- is capable of not letting negativity hinder the team’s productivity
- completes tasks in a way that will allow smooth and almost effortless transition to the follow up tasks
Takes Ownership
- will do as they say they will and follow through when they give their word
- ability to identify and resolve bottlenecks to help team work effectively and efficiently
Experience
- has solid knowledge of principals and architectures
- is continuously looking to improve themselves
- has experience that can be shared
- puts code quality first
- is not afraid to explore uncharted territories
- is a quick learner when it comes to team’s methodologies, procedures & technologies
- ability to see the big picture and the part the team plays in it
- can find balance between what’s best for the team and what’s best for the business