Discover how Sytex uses Cursor, the AI-powered development tool, to streamline workflows, accelerate feature creation, and deliver exceptional results. Explore our success story!
Sytex is a Django monolith. It’s a codebase of over one and a half million lines. The first lines were written back when service architectures were just starting to gain attention. We’ve decided that Sytex will remain a monolith (for now), and here’s our reasoning.
Across all aspects of Sytex, we understand that there are right tools for the right time. For instance, we relied on our relational database for text queries until the benefits of a search database became clear.
As a startup aiming for growth, we have to stay alert to the right time to iterate. Everything below pertains to Sytex’s current state, and we’ll likely revisit and possibly change it in the future.
Even though we’ve been operating for several years, have prominent clients, and good traction, we still consider ourselves pre-PMF. Therefore, our main focus is iterating the product until we find what our customers truly want. Our efforts are directed there, and we’ve noticed that when we divert effort to evaluating new technologies, we lose focus. We perform better using “boring” technologies that we know inside out. This way, we can allocate all our discomfort budget and drive to challenge ourselves into advancing the product. We explore new technologies only when the product demands it or when scale requires it.
When we’re 100 engineers, the monolith will probably get in our way, and it will be necessary to dismantle it. We keep that in mind and strive to maintain testable, modular code. But right now, we find that the advantages of maintaining a monolithic architecture outweigh its disadvantages. We understand that every tech decision involves trade-offs, and we try to evaluate which features benefit or harm us at every step. We remain vigilant to iterate when the time comes.
We have this clarity now after exploring alternatives and realizing that what we thought would accelerate us would actually slow us down. We’re curious and like to experiment. Each experiment teaches us something new. Some lessons permeate our codebase, improving our practices. Others show us that a particular path isn’t the right one (for now).