About role:
This role is the second-in-command within the engineering team. The tech lead splits their time across coding, managing, planning, and stakeholder work - meaning for large parts of any given day, this person is the most senior engineer actively working in the codebase. They make implementation decisions independently and keep the team unblocked during working hours when the tech lead is unavailable.
Key responsibilities:
1. Lead end-to-end delivery of features across the Learning Portal and supporting services - scoping, building, and shipping requiring just minimal direction on implementation
2. Propose technical approaches and write design docs for non-trivial work, bringing forward recommendations by aligning with the team and team lead
3. Give thorough, constructive code reviews on peers' PRs
4. Participate in planning with realistic estimates and surfaced risks
5. Flag tech debt, performance risks, and architectural concerns early. Not expected to decide the fix for everything, but expected to spot problems before they escalate
6. Ensure test coverage where it matters (not just for coverage metrics)
7. Keep documentation current for all systems they own so the team never depends on their availability to understand their work
8. Considers the student experience as part of technical decision-making - not above engineering standards, but alongside them
9. Follow and reinforce InnerSource principles: clear docs, async-first collaboration, modular design
10. Keep the team unblocked during working hours. When the tech lead is in meetings or unavailable, theyʼre the person others turn to
Core competencies:
- Designing clean boundaries between server & client, good use of both framework capabilities (Next) and conventional web design principles
- Data modeling decisions Supabase/Postgres schema design, etc.)
- Consistent abstractions (hooks, API patterns, etc.) that the team can follow
- Knowing when not to abstract - avoiding premature DRY
- Observability - logging, error tracking, understanding what to monitor
- Auth flows (Supabase Auth, RBAC, middleware-based protection)
- Input validation at system boundaries
- Writing PRs that reviewers can actually follow
- Breaking large changes into reviewable, deployable + meaningful increments
- Knowing when to spike/prototype vs. plan thoroughly
- Shipping over perfection - but knowing where to draw the line
- Good sense of prioritisation when it comes to planning out issues
- Making build-vs-buy decisions (e.g., using Supabase instead of rolling custom auth)
Ideal candidate attributes:
- Knows when to trade off scope, quality, and speed appropriately for the situation. Doesn't over-engineer when the team needs to move fast, and doesn't cut corners when reliability matters. Makes pragmatic calls without needing to escalate every decision
- Takes features from start to finish without needing to be chased. If something's at risk, raises it early
- Structured issues, thoughtful reviews, clear documentation, and Linear workflow. Communicates clearly enough that async work doesn't create bottlenecks
- Consistently delivers on commitments. The team can count on your work being done, reviewed, and shipped without surprises. Focused on outputs and outcomes, not inputs and hours
- Figures things out with incomplete information. Doesn't wait for perfect specs or detailed instructions to make progress
If you are a skilled Senior Software Engineer looking for a new opportunity with a growing company, we would love to hear from you. Apply now.