Software Engineer (Senior)
Purpose of the role
Software Engineers (Senior) retain a focus on understanding, building, and maintaining Redgate's products & systems as part of a collaborative, cross-functional team, but they take on a greater role in leading their team and supporting less experienced team mates.
About the role
A senior software engineer at Redgate has many dimensions. It is not just about having a strong set of technical skills, or about time served, you must be doing more than just being a good engineer, you must become a force multiplier. That means not just doing your own work well but enabling others to learn from your skills and experience so they can then deliver more value, more rapidly, and more consistently.
A senior engineer will be consistently doing / exhibiting most of the points below.
Skills
Leadership
- Deputizes for Tech Lead or LSE in either individual meetings or for longer periods of time during holidays or sabbaticals.
- Outcome focused, helping the team get to the objective rather than getting stuck on the small day to day things.
- Shows great, positive collaboration to achieve the desired outcome.
- Able to grow other members of the team through leading and delegation.
- Able to develop and champion simple and maintainable code across Redgate.
- Actively contributes to Level Up activities.
Mentorship
- Actively seeks to be a role model by communicating and acting appropriately within and outside of the team and wider engineering.
- Proactively supports the development of others on the team.
- Shares experience with others, this could be just in conversation, via community events or by contributing to Architectural Decisions.
Role-Specific
- Has both breadth and depth of experience with several technologies used at Redgate. Knows when to use which ones.
- Has the experience to learn and quickly get productive with new technology.
- Can design and implement clean, simple architectures and identify where architecture can be improved.
- Able to identify, communicate, investigate and solve issues, drawing on own experience and that of others.
- Able to investigate improvements to technology and tools, and plan implementations.
- Able to independently navigate within a large, undocumented, codebase.
- Has breadth and depth of knowledge in a specific domain that is relevant to Redgate's products & systems.
- Understands advanced language concepts (garbage collection, concurrency, performance optimization, etc.).
- Able to create and apply a test strategy and plan to a piece of work.
- Applies principles when designing new code. Discover, document, and enforce naturally occurring patterns in the codebase.
Communication
- Shares information and opinions with others adapting style and level of information to the audience.
- Explains complex technical issues to non-technical people in a way that can be understood.
- Communicates with stakeholders outside of the immediate team.
Emotional Intelligence
- Recognizes the feelings of others and adapts approach accordingly.
- Able to draw out opinions of others to help make decisions.
- Encourages others in the team to display growth mindset, and leads by example.
Delivery
- Able to plan significant pieces of work – including clarifying requirements, facilitating meetings, breaking tasks down.
- Able to lead on significant pieces of work - including reporting on progress, checking progress with other team members.
- Can be relied upon to complete what they start. Gets things done.
- Contributes to technical processes such as the Tech Radar and Architecture Decisions.
Business Knowledge
- Able to understand goals across engineering, and asks questions / challenges goals.
- Uses the context of company goals to inform their work.
- Able to collaborate with the product designer to perform and sometimes lead customer research.