As a Team Lead at Exchange Solutions, you are the senior hands-on engineer on your team, delivering a product area of our platform. You set the technical standard in the code your team produces, and you are accountable for whether that code works in production across every client deployment. You own how the work is built, the quality of what ships, and the technical growth of the engineers beside you.
Everyone in technology is a member of the technical staff first. No title in this organization excuses you from being an independent contributor. As a Team Lead you are a working engineer who also carries the technical direction of a team.
You are expected to be one of the strongest AI-enabled engineers in the organization and to raise the engineers around you to that level. Adoption is not a side activity in this role, it is how the work gets done.
Primary Responsibilities
- Write production code. This is a hands-on role and the codebase is where most of your time goes.
- Produce the design for work in your area with the other software developers, the data developers, and the Architecture team, and make the tradeoffs explicit before the build starts.
- Break work down into AI-sized problems. A well-formed unit of work is small enough that an engineer working with AI tooling can complete and verify it in a day or two rather than most of a sprint, carries enough context to start without a follow-up conversation, and can be tested independently of everything else in flight. Where the work resists being cut that small, say why.
- Own the code review practice for your area. As one of a small number of named code owners you are one of the few who can approve a merge, and you set the criteria that review holds to. Delegate review authority as engineers earn it.
- Make commitments and keep them. When one is at risk, say so the day you know.
- Get your area to a state where it is always releasable, then keep it there. Tests, quality gates, and pipeline health are part of the work, not a phase after it. Where the area is not there yet, closing that gap is part of the job rather than a project you are waiting to be given. The standard we are moving to is that a change is not done until it is safe to release for every client on the platform.
- Reduce complexity deliberately. Use available improvement capacity for this rather than waiting to be asked.
- Lead incidents in your area. Drive the investigation, write the follow-up honestly, and close the actions that come out of it.
- Use AI as a default tool and teach it. Apply code assistants, agents, test generation, code search, and impact analysis to real work, review generated code with the same rigour as human-written code, and make the rest of the team better at it.
- Treat AI spend as money you are accountable for. Tokens, seats, and agent runs are a real operating cost. Choose the appropriate model for the task rather than the largest one available, keep your team inside budget, and say so early when the budget, and not the tooling, has become the constraint.
- Minimize work in progress. Unfinished work is the most expensive thing on the board: it ages, it hides defects, and it blocks other people. Finish before starting, drive open items down rather than holding them steady, and make blockers visible the day they appear.
- Run technical screens and code-reading exercises to the published screening standard, and score candidates on evidence rather than impression.
- Answer technical questions from Product, Technical Solutions Architecture, QA, and IT Operations directly, without routing everything through your Manager.
- Participate in the on-call rotation for the services your team owns.
- Mentor engineers. Pair, review, and give direct feedback in the moment. Give your Manager and Director an accurate, unvarnished read on where each engineer stands technically.
- Actively participate in people management processes, including talent acquisition, talent management and career development.
- As a role model leader, contribute to the overall operations and culture of the company, fostering our core values and policies.
Capability Requirements – Education, Skills & Experience
You get it. You understand what our clients are trying to achieve, what their customers experience, and how this company makes money, and you carry that into your technical decisions. You think like a user of what you build, not only like the engineer building it. A high sense of agency, ownership of outcomes rather than tasks, and the judgement to challenge a requirement before the code is written.
- Post-secondary degree in Computer Science, Computer Engineering, or a related field, or an equivalent combination of education and relevant experience.
- 5+ years building and operating production software, including time as the senior technical voice on a team, formally or informally.
- Demonstrated leadership capabilities with experience mentoring and developing others, providing technical direction, and influencing positive outcomes through coaching.
- Strong TypeScript and Node.js, plus a second language such as Java. Comfortable in both object oriented and functional styles.
- Experience designing and operating cloud native systems on AWS, including APIs, microservices, event driven patterns, and serverless.
- Datastores: PostgreSQL and DynamoDB. Snowflake for analytical workloads. Familiarity with MongoDB and vector stores such as Pinecone is an asset.
- A track record of refactoring large legacy modules under delivery pressure, incrementally and without regressions.
- Proficiency with Git workflows, short-lived branching, CI/CD (GitHub Actions preferred), and automated testing at unit, integration, and contract levels.
- Working knowledge of observability practices (logs, metrics, traces) and disciplined incident follow-up.
- Current, practical use of AI coding tools on production work, with a clear view of where they help and where they do not.
- Able to explain a technical position to a non-technical audience, and to change that position when the evidence changes.
- Direct in giving and receiving feedback. Willing to say no, and to say when something is not ready.
- Excellent organizational skills, with the ability to manage competing priorities across multiple client deployments.
- Experience working with distributed and offshore teams, with collaboration habits that make limited overlap hours count.
- Loyalty, retail, or payments domain experience and exposure to PCI DSS are assets.
- Infrastructure as Code (Terraform or CloudFormation), containers, and streaming platforms such as Kafka or Kinesis are beneficial.