Full Job Description
THE OPPORTUNITY:
As a Software Engineer on the Circuit Analysis Tools team, you'll turn complex customer and business problems into reliable software that people value. You'll work closely with Product, engineering, quality and domain experts. Together you'll question assumptions, look at different solutions, and deliver working features in small, testable steps. You care about good design, automated testing and maintainability because they help the team learn faster and change software safely. You'll also be a technical leader on the team, coaching and mentoring other engineers and leading by example. You'll use AI-assisted development heavily, and you'll stay accountable for understanding and checking everything you build. We don't measure success by how much code you write. We measure it by how reliably the team solves important customer problems.
WHAT YOU'LL DO
3 Learn our customers, their workflows and the circuit analysis domain. Work with Product and domain experts to turn customer needs into clear, testable features.
3 Question requirements and look for the real customer need. Choose the simplest solution that works, and check after release that it delivered the intended result.
3 Design well-structured, maintainable software. Apply Clean Architecture, separation of concerns and Domain-Driven Design where they make sense.
3 Design APIs, components and data models that are easy to understand, test and change. Improve technical debt step by step as systems grow.
3 Build effective automated test strategies across unit, component, contract, integration and end-to-end testing. Use TDD and BDD where they help.
3 Own your software in production. That includes monitoring, fixing defects, investigating incidents and learning from how the system behaves in production.
3 Use CI/CD and Infrastructure as Code so deployments and recoveries are repeatable and safe.
3 Prefer small batches and short feedback loops. Find and remove friction, rework and recurring defects in how the team delivers software.
3 Prototype quickly to reduce uncertainty. Bring successful experiments up to production standards.
3 Coach and mentor engineers through code reviews, pair programming and design discussions. Encourage open, constructive technical debate.
3 Use AI tools across design, coding, testing, debugging and refactoring. Review AI-generated work critically before accepting it.
WHAT YOU'LL BRING
3 Post-secondary degree in Computer Science, Software Engineering or a related field; 7-10 years of experience or a combination of both
3 Significant hands-on experience building and maintaining production software systems
3 Strong grasp of software architecture, design principles, APIs, data and distributed systems
3 Proven ability to design maintainable systems using Clean Architecture and Domain-Driven Design principles
3 Hands-on experience with automated testing strategy. TDD, BDD and specification by example are highly desirable.
3 Experience with CI/CD, cloud infrastructure, observability and running production software
3 Strong critical thinking, with the ability to spot underlying problems and weigh trade-offs
3 Curiosity about customers and the business domain, not only the technology
3 A bias toward action, experimentation and incremental delivery
3 Track record of coaching, mentoring and technical leadership
3 A continuous-improvement mindset, and comfort questioning established practices while staying open to being wrong
3 Strong communication and collaboration skills with both technical and non-technical colleagues
WORKING ARRANGEMENT
This is a full-time on-site position based in our Ottawa, Ontario.
Technology knows no bounds, and neither does TechInsights. Bringing together talented humans from different perspectives, backgrounds and abilities is something we take seriously. We're committed to building an inclusive environment that welcomes you to be your authentic self and allows us to push past the boundaries together.