The following is an excerpt from Omni Labs CTO Tyler Tarsi's personal blog on building a culture of engineering excellence.
Over the past 3 years, I've journeyed from being an individual contributor to leading an engineering team as CTO of Omni Labs. Back when we were just two scrappy developers, we’d manually SSH into our single validator, fiddle with systemd
commands, and cross our fingers for smooth network upgrades. Monitoring was non-existent. Fast forward to today, and we’re running a distributed system of distributed systems in production at scale: Omni Mainnet.
This guide distills our key learnings about building high-performance engineering teams. It weaves together insights from various sources—all unified by an obsession with rapid feedback loops, fast iteration, and user obsession. We’ve drawn from:
I'm sharing our playbook in hopes that others might find value in our experiences. This is a living document that continues to evolve with our team, but the core principles have brought us a long way.
We fundamentally believe that crypto is good for the world, and our mandate is to create a world class developer experience. Read our Vision, Mission, Values, and Operating Principles. Every word in that document is there for a reason. If you’re pushing towards those objectives, you’re probably on the right track.
In fact, if you’re doing that, but breaking the “rules” in this guidebook, you’re almost certainly still on the right track. Remember that any guidebook (including this one) is just that - a guide. What matters most is delivering value and improving your product. Context is that which is scarce; and every situation requires its own judgment calls.
There are A-Players, B-Players, and C-Players. There is only room at Omni for A-Players. A-Players are obsessive, hungry, not afraid to make mistakes, learn from mistakes, coachable, don’t make excuses, believe in Omni and in crypto, and want to have an impact. B-Players are new or junior people that need to be trained into an A-Player. C-Players are just average employees. They don’t suck, they just exist and do a job, and aren’t really interested in having an impact on the world or becoming great at what they do. C-Players are not a good fit for a high performing team and should be transitioned to another company.
High-performing teams need A-Players. This doesn't mean everyone starts as an A-Player, but it means everyone has the drive and potential to become one.
We don't do traditional "promotions" - instead, we focus on expanding ownership and impact. Make yourself invaluable by taking ownership of crucial areas and delivering results. We need more leaders in the company to grow to the scale that we want, people who make decisions, move things forward, take risk.
If you want to be a leader in some dimension – tell me or someone who is currently responsible for that thing that you want to step up. You probably aren’t ready for that today. But if you tell me that’s what you want to do, then I will tell you the areas you need to get better to become the DRI (Directly Responsible Individual) for that thing. I will give you a list of all the things you need to do to be able to own that thing here. We have high expectations, it’s not going to be easy. If you are ambitious and want to own something the only bottleneck is how quickly you can respond to feedback, learn, and prepare yourself for it. It may take a year, it make take 2 weeks.
In return for becoming so valuable to this company we hope to provide you with frontier challenges, inspiring teammates, insane personal growth, and of course financial reward.
"Kerplunk" is our way of establishing clear ownership and accountability. Just as a coin makes a distinct sound when it drops into a vending machine, we use "kerplunk" to indicate when someone takes ownership of a task or acknowledges a request.
If you kerplunk (acknowledge ownership of something), it becomes your responsibility to complete it. Others shouldn't need to check in on your progress - this builds a high-trust environment where everyone knows things will get done once they're kerplunked.
This is the order of types of messages I like to receive from least to most:
Read this thread from @punk6529.
As was brilliantly explained in the thread, if you find yourself wanting to go ask someone to make a decision for you, or asking someone for help in general – before raising the issue, ask yourself:
The hierarchy of communication efficiency:
TL;DR: Just make the decision yourself OR Make a recommendation AND communicate it in one, compact, organized shot.
We don’t have a strict definition of done, instead we rely on A-players to take full ownership and ship high quality production quality software.
Remember, a task is not done when the PR is merged. You have to ensure it is thoroughly tested and actively monitored. Most bugs are due to a lack of testing, the impact of most production issues are mitigated by monitoring. #qualityoverquantity
Use slack threads. Always.
Top-level messages should be concise topic statements. Here are some taken from our slack channels today:
All discussion happens in threads below these topic messages with relevant notes, links, and pull requests in the comments. This approach has several benefits:
Additional Slack practices:
We follow trunk-based development practices, which research from DORA has shown to be a key driver of high-performing engineering teams. In trunk-based dev, developers frequently integrate their changes into a shared trunk, usually the main branch.
Key principles:
Why this matters:
At any given production meeting for Tesla and SpaceX, Elon Musk is known for invoking “the algorithm”. It was responsible for solving the “production hell” surges in factories and has become part of every one of his companies. There are 5 commandments:
The algorithm was sometimes accompanied by a few corollaries:
While code reviews are crucial for maintaining code quality, their real power lies in knowledge sharing. They're one of the best ways to learn about different parts of the system and different approaches to problem-solving.
For reviewers:
For authors:
The public nature of our Slack threads isn't just for transparency - it's a learning tool. When you see someone asking a question about the codebase, you learn. When you see someone proposing a solution, you learn. When you see someone critiquing a proposed solution, you learn.
Key practices:
A team where nobody asks questions is either perfect (impossible) or not learning (dangerous).
For significant technical decisions, we follow a lightweight but effective process:
This approach front-loads discussion into async channels, making sync meetings short and focused. It also creates a clear record of why decisions were made, which is invaluable as the team grows.
With limited capacity, ruthless prioritization is essential. This often means important things get pruned - that's okay. Being focused means saying no to good ideas to say yes to great ones.
We like to frame conversations with:
This question should be asked frequently in engineering discussions. It helps avoid ambiguity in understanding why we're doing something and removes ego and personal preferences from discussions. Sometimes as engineers we get into the weeds very quickly, but if we can identify the problem we're solving, we often recognize that some tasks can be deprioritized to focus on higher-impact work.
If the result of this question is realizing that we can toss work out, that’s fantastic result. Move onto the next thing.
When anything goes wrong we default to having a blameless post mortem unless we have good reasons not to. The DRI of whatever component went wrong should create a doc (template here) heading into the post mortem meeting that summarizes the issue and kicks off the discussion. Post mortems are a great learning opportunity for the wider team – to understand how different components of the system fit together, to learn how we address issues with better monitoring, etc. When things go wrong, it’s a good opportunity to learn how to improve. We should always turn post mortems into concrete action items and issues – don’t let the improvements just float into the abyss.
A crucial aspect of maintaining a high-performing system is having high-quality alerts. The principle is simple: if we get an alert, it must be important. If we get an alert that's not important, we shouldn't be getting it at all.
Key principles for alert hygiene:
In tandem with the Elon algorithm, always opt for simplicity. Use fewer tools. Do less so that you have more time to do higher leverage things. Simple solutions require less mental overhead.
Having consistent patterns in a codebase has proven effective for teams long-term. In your first few months, focus on recognizing and reusing existing patterns. This creates consistency and reduces cognitive load for the entire team.
Our team’s culture is built for high performers and having an impact – based on learnings over years in our own careers and over decades of learnings from tech companies historically. The practices in this guide illustrate principles that we care about:
Let’s build a great product together.
Thanks for reading! This is a snapshot in time – what really matters is that our culture is constantly evolving and solving problems. If any of these principles resonate, feel free to adopt or adapt them for your own team, and shoot me a DM if they lead to an A-ha moment.
If this culture speaks to you—and you want to help us build the future of crypto—reach out on X. We’re hiring driven individuals who thrive on personal growth, iterating often, and delivering impact for users.