Our Two Principles
1. Abstraction is powerful
Abstracting away unecessary variables allows you to move faster. Abstraction is at the core of computing, and we should always be asking ourselves what can be abstracted. How can we stand on the shoulders of our previous work and see further?
2. Abstraction is compromise
Abstractions only work for specific use cases, which is why a good abstraction is less like a blackbox and more like a ladder. There are times when you have to go down the ladder of abstraction, which frameworks and platforms often do not allow. We need to be intellectually honest with ourselves, acknowledging that our abstraction won't work for every use case. If you can abstract away details, you absolutely should. However, you should easily be able to peel back the abstraction as needed.
What you're building should be only as difficult as the domain it's in.
If you're building a dating app, you should focus on how users match and how they talk to each other-- you shouldn't need a deep expertise in infrastructure.
Note This is an early product. We're still figuring out the abstraction layer, so a lot of the traversals aren't fully built out yet. We don't build anything without discussing how going under the hood would work, and will eventually support full customization. For now, if there's a limit, do reach out and we'll help with your specific use case, even if that means handing your entire server instance over to you.