Principal Software Engineer

Principal Software Engineer

Remote/Telecommute JobREMOTE / Toronto, Ontario, Canada  - Permanent
This job allows you to work remotely 

Job Description

The Principal Software Engineer will be a major contributor to the organization, leading the technical direction and implementation of complex software projects, and will collaborate with cross-functional teams to design, develop, and deploy high-quality software solutions that meet business objectives.

Duties & Responsibilities:

- Collaborate with Architects and Senior Leadership to define system architecture, making thoughtful and merchant focused decisions on technology stack, scalability, and performance optimization.
- Lead the technical design and implementation of software sprints, providing guidance to the engineering team on best practices, design patterns, and coding standards.
- Conduct thorough code reviews to ensure code quality, maintainability, scalability and adherence to coding standards.
- Mentor junior engineers, providing guidance on technical skills development, problem-solving techniques, new tools and best practices.
- Monitor service operations, performance, reliability and costs, and provide ownership and solutions to drive best in class scalability.
- Work closely with product managers, designers, and other stakeholders to understand requirements, prioritize tasks, and deliver high-quality solutions on time.
- Deeply understand the needs of our merchants and proactively identify solutions that address their pain points.
- Stay up-to-date with the latest technologies and trends in software development, evaluating new tools and frameworks that can enhance productivity and improve software quality.
- Investigate and resolve complex technical issues, providing guidance to the team on debugging techniques and problem-solving strategies.
- Create and maintain technical documentation, including system architecture diagrams, design documents, and API specifications.
- Collaborate with QA engineers to define test strategies, automate testing processes, and ensure software quality through comprehensive testing.
- Identify areas for process improvement and drive initiatives to streamline development workflows, increase efficiency, and enhance overall software quality.

Must Have Skills:

Required Experience:

Expert in...
- Node JS as well as at least one strongly typed language (C# a plus, but not required)
- Highly maintainable functional code patterns
- Data architecture at scale (Postgres + SQL Server a plus), and a practical understanding of how to do data re-architecture and migration on live application states
- Horizontal and vertical auto scaling practices

Strong practical knowledge...
- on how to build services to scale on demand using queues
- of at least one Cloud platform, and how to build highly scalable systems on that cloud (AWS preferred)
- of Infrastructure Architecture, and comfortability with at least one Infrastructure as Code tool (terraform preferred)

As well as...
- Practical experience writing unit tests, and working with a modern CI/CD pipeline
- Solid understanding of design patterns, architectural best practices (SOLID, DDD, Microservices, Messaging, and etc.)
- Exceptional verbal and written communication skills
- A Continuous learner who keeps up to date on current technologies, methodologies and tools
- Highly analytical, loves looking for solutions to complex scenarios!


Starting: ASAP

Similar jobs in Toronto: