The Principal Software Engineer is responsible for leading resources and providing technical and implementation leadership of software development for digital products. This role leads the planning, design, and implementation of technical solutions. This resource will mentor team members and understand the strengths and weaknesses of the engineers on the team, as well as foster technical growth, experimentation, and innovation. The Principal Software Engineer will partner with the business to help a scrum team achieve a balance between the frequent delivery of business features, compliance requirements, and excellence in engineering practices such as SOLID architecture, test-driven development, deployment automation and observability.
Must-Have Requirements:
- Leadership experience - must have worked in a leadership role before
- .NET Experience
- React
- AWS
- Kubernetes
- DevOps understanding - CI/CD, deployment pipelines, etc
Essential Functions:
Code – Lead by example and write high quality code and provide technical example and guidance to the rest of the scrum team. The primary contribution to the team is through code.
Design – Synthesize Architectural solutions by leveraging accepted architectural patterns and practices to drive the creation of software designs. Create project level technical designs using the appropriate software stack, patterns, technologies and libraries.
Collaborate and Clarify – Partner with the business, Business Analysts, Product Owners, and other stakeholders on decisions regarding prioritization, execution, work allocation, sprint planning, goal setting. Help to clarify the technical concerns of stakeholders including the business and the development team.
Lead - Serve as a team leader with responsibilities that include coaching and mentoring developers. Develop a rapport with the developers and understand the strengths and weaknesses of each team member.
Context - Have a comprehensive technical view of the applications owned by the team and how they fit into the broader context of the software system. Use this perspective to provide technical direction in terms of frameworks, practices, and code quality.
Technical Growth - Keep current on new technologies as they pertain to their product. Attend conferences, follower bloggers and meet regularly with other tech leads and architects.
Onboarding and Team Growth – Helps develop and maintain onboarding processes and assists in onboarding new hires.
Ownership of Quality Outcome – Have a strong sense of software craftsmanship. Own the applications, work to ensure quality through use of tooling such as security analysers, static code analysis, unit test threshold monitoring and others. Review code changes made by developers and provide feedback based on best practices.