Grit is on a mission to crush technical debt. We believe that a big challenge in the next decade will be crumbling digital infrastructure. Our entire modern economy runs on code, but we haven’t developed appropriate tools to ensure software remains reliable over time. Companies know that technical debt threatens the reliability of their services and slows down the pace of innovation, but struggle to find enough engineering talent to fix issues—most software maintenance today is still done manually and delayed as long as possible. We believe there is a better way: we’re building Grit, a query language for automatically maintaining software. Underneath, we use advanced parsing, static analysis, and machine learning to make the magic happen.
Tech stack
ScalaTypeScriptReactGraphQLRust
How engineering
works at Grit
How are the teams structured?
We’re an early stage company, so it’s only six of us right now. It’s a very flat
hierarchy: everyone is empowered to commit anywhere in the monorepo and
engineers mostly build features end-to-end. Of course, people have their areas
of expertise but overall we aim for minimal boundaries.
What tools do engineers use?
Version Control: GitHub
CI/CD: GitHub Actions
Issue Management: GitHub Issues
Monitoring and Error tracking: We run on GCP so use the full Google Cloud
Monitoring suite.
Can developers pick their own tools?
We don’t prescribe what you have on your workstation. If you want to use Linux,
that’s fine; if you want to use Windows, that’s fine too. Most of the team is
using a Mac, but we provide a budget for anyone who wants to buy an M2 Mac or
equivalent.
For our production stack, anyone can suggest a tool with a brief RFC. We’ll
discuss it as a team, then I’ll ultimately make the final call on whether we
adopt it or not.
How does the development process work? What’s the process for working through bugs, features and tech debt?
We keep the process as lightweight as possible, with a single Kanban board that
everyone works from. Our only standing meeting is a weekly demo day where we all
share what we built that week—sometimes a huge new feature, sometimes improving
reliability of a test suite. Our first priority is fixing bugs that impact our
customers, then pushing out new features. We don’t spend much time on cleaning
up technical debt, but instead dogfood our own product to enforce consistency
and clean things up automatically.
How does code get reviewed, merged, and deployed?
When someone opens pull requests, they get a review from anyone else on the team
before it is merged in. Anyone can merge if they have 1 approval and tests pass.
The main branch is deployed straight to production.
What is the QA process?
There’s no formal QA process but we instead rely on dogfooding and automated
tests. We don’t really believe in manual QA - our manual QA is us dogfooding the
product ourselves a lot. Our testing phase is all automated tests with unit
integration tests implemented in the native language test framework. We have
integration tests in all of our core workflows.
What are some recent examples of interesting development challenges solved by internal teams as part of building the product?
We’re constantly solving relatively interesting problems, mostly around program
analysis and machine learning. A fun project we’ve recently been tackling is how
to expand our tool to support additional languages by parsing and rewriting ASTs
from tree-sitter grammars. This involves understanding how to programmatically
transform the AST while preserving correct syntax and intent, while writing code
that interoperates between Scala and Rust.
How does on-call work?
We don’t have formalized on-call yet, but instead an #infra-alerts channel in
Slack. Whoever sees an issue first jumps on it (usually the founders). When the
load becomes higher, we’ll plan to introduce a rotation but this is working fine
for our current stage.
Hiring process at Grit
How does the application process work? What are the stages and what is the timeline?
The process is simple, it usually takes two to three weeks to go from the
initial interview stage to the offer stage. The application process is divided
in following stages:
Initial 30-minute interview to determine overall fit with the company
In-depth interview including problem-solving, where you get a chance to solve
some problems using our product
A trial, paid, project where engineers work on a relevant issue for up to 10
hours.
What is the career progression framework? How are promotions and performance reviews managed?
As an early-stage startup, success is not measured by internal promotions, but
rather by the success of the company as a whole. Everyone in the company holds
significant equity, so the biggest career progression comes from making the
company successful—not trying to “advance” within a small organization.
Of course, I have managed teams at Google and do believe in giving regular
performance feedback. I provide ongoing feedback every month and reassess roles
and responsibilities regularly. Grit should be a place where everyone feels like
they’re doing the best work of their lives
Console is the place developers go to find the best
tools. Each week, our weekly newsletter picks out the most interesting tools and new releases. We keep
track of everything - dev tools, devops, cloud, and APIs - so you don’t have to.
Subscribe to the weekly Console newsletter
An email digest of the best tools and beta releases for developers. Every Thursday. See the latest email.