Full Stack Developer
Full stack developer on the product development team. Turn product needs into reliable features across the interface, application services and data layer.
We are looking for a full stack developer who can turn product needs into reliable features. You will work across the user interface, application services and data layer, with support from product, design, engineering and QA colleagues. We value sound fundamentals, curiosity and ownership more than experience with one particular framework. You should be comfortable in at least one frontend and one backend ecosystem and ready to learn the tools a problem requires.
What you will do
- Clarify requirements with product and design, then break a feature into practical delivery steps.
- Build accessible, responsive interfaces and dependable application services and APIs.
- Design and change data models, queries and integrations with attention to correctness and performance.
- Write meaningful tests, review code, investigate defects and support safe releases.
- Consider security, authorization, privacy and failure cases while designing a feature.
- Explain technical trade-offs, document decisions and collaborate closely with QA and other engineers.
What you should bring
Skills and experience
- 5+ years of hands-on experience delivering application features across frontend and backend code, including work you can explain from requirements through release.
- A solid grasp of programming fundamentals, data structures, asynchronous behavior and debugging.
- Ability to design and consume APIs, handle authentication and authorization, and work with a database.
- Understanding of web fundamentals such as HTML, CSS, browser behavior, accessibility and responsive design.
- Experience with version control, code review, automated tests and a delivery or CI process.
- Ability to reason about reliability, security and performance, and to verify assumptions with evidence.
- Practical judgment when using AI coding tools: review generated code, test it and understand it before relying on it.
How you work
- Ownership: you see work through from the first question to production and the days after, own your mistakes and fix what breaks without being asked.
- Dependability: you are on time for calls and pairing sessions, meet the dates you commit to and flag a risk as soon as you see it.
- Quick learning: you get productive in an unfamiliar codebase, language or domain by reading the code and docs and asking focused questions.
- Clear communication: your status updates, pull request descriptions and trade-off explanations are short and easy for non-engineers to follow.
- Pragmatism: you pick the simplest approach that solves the problem and know when to stop polishing.
- Helping others: you make the people around you better through careful code review, pairing and sharing what you learn.
Tech stack
This role works in Ruby on Rails and TypeScript/JavaScript, and you should have shipped features in both and be comfortable releasing them to production.
- Ruby on Rails: Active Record, migrations, background jobs, Hotwire (Turbo and Stimulus) and Minitest or RSpec.
- TypeScript/JavaScript: the type system, async code with Promises and
async/await, and the DOM and browser APIs. - Deployment: Docker and Kamal to Linux servers on AWS or Azure, with CI in GitHub Actions.
Helpful experience
- Observability with tools such as Sentry, New Relic or Grafana: error tracking, logs, metrics and alerts.
- Infrastructure as code with Terraform, and system design choices around caching, queues and database performance.
- Improving a product after release using feature flags, analytics such as Google Analytics, user feedback and production signals.
Working with AI
AI agents write a growing share of our first drafts. The engineering work is in setting them up well, checking what they produce and owning the result. In practice:
- Giving an agent such as Claude Code or Codex the context it needs (
AGENTS.md, a written plan, acceptance tests) and having it implement against that. - Running several agents in parallel on separate branches or worktrees, each on a scoped task, and reviewing each diff before it merges.
- Connecting agents to real tools through MCP, such as the browser, logs, database and issue tracker, so they can check their own work instead of guessing.
- Investigating production issues with AI from stack traces and logs, then confirming the cause with evidence before shipping a fix.
You remain responsible for correctness, security, maintainability and protection of confidential information. Knowing when an agent is confidently wrong matters more to us than how fast it produces code.
Our hiring process
Expect a conversation about work you have owned, a short live exercise to see how you reason and debug, and a practical task where AI use is permitted. We will tell you the tool rules before each stage and discuss your decisions and verification steps afterward.
How to apply
Apply through the channel where you found this opening. Share your résumé and a brief description of a product feature or quality improvement you personally owned. We welcome links to public work when available, but public code is not required.