There is a category of companies I call “Supermarket software houses”. They claim to provide all sorts of solutions. They build iOS and Android apps natively or with React Native, or Flutter. They build back-end applications with Django, Rails, Laravel or Go. They build front-end applications with Vue, React, Svelte or HTMX. Last, they organise stylesheets with Tailwind, SASS, LESS or PostCSS. Ah, I forgot that they also deploy in Kubernetes, ECS, ACI or CloudRun, using Terraform or Pulumi over GitHub Actions, ArgoCD, Jenkins or Circle CI (!).
That’s why I call them supermarkets; they never say no. This does not come for free though. It comes in exchange for a super low bar that might not even get the basics right. A supermarket only offers commodities and then competes for price, variety and distribution. If you want to provide a unique offering, you simply cannot be a supermarket. You have to pick your axe and sharpen it.
LOGIC is no supermarket. We are specific with our work; we build full stack web applications. We have also picked our axe from the get go; 90% of it is Python with Django and Postgres for the back end and TailwindCSS for the front-end. Our web apps are packaged with Docker and deployed with GitHub Actions. In the rare occasion of advanced front-ends or static websites, we pick Vue and Nuxt respectively. This way we constantly practice working with the same tools, and also build an internal culture around them. We all talk the same “slang” in the company and work to find common ways to approach problems. Consistency is the key that enables us to deliver excellent work, efficiently and timely.
The rest 10% of the time work with a different axe it is either just for fun because we want to experiment, or out of necessity. For example, last year we opened a couple of Pull Requests in the Docker CLI repository in Go, to extend it with the Swarm functionality we needed (#4528, #4529). Another example is when we need to distribute an application through the mobile app stores, which cannot be done with pure web technologies, so we wrap it in a simple Flutter container.
We cannot and do not intend to please everyone. We want to delight the ones we can work with.