I’ve been building software for a long time. During that time a lot has changed but not always for the better.
This is a writeup of my thoughts on what great software looks like. I use this document as my own guide to building software.
Good software should do one thing and do it well. Having a narrow focus is something we teach to startup founders during their early stages.
Over time products grow, adding more and more features. This doesn’t mean that the core functionality gets worse, but it can result in the experience feeling bloated and at worst you end up paying for features you don’t need.
I strongly believe that if you have something that solves a problem then you should make it accessible to the people that need it. Depending on who you are and where you are, pricing can be a huge barrier to entry.
We’re now at a point where building and managing software doesn’t cost a lot. AI is replacing expensive employees. Infrastructure costs are cheaper than ever, free in most cases. Hopefully more people will realise this and we can dispel the myth that cheap software is low quality.
Going forward I hope that we see more one-time purchases, or at least software cheap enough that paying yearly is a no-brainer and much wider adoption of purchasing power parity.
As we see the software market become more saturated, user experience is going to be a key differentiator. Tools that are responsive, real-time and fun to use will be the ones that stand out. Sync engines such as Electric and Convex are going to become a must have for new products.
Agentic AI will perform most of the heavy lifting and we’ll find new ways to interface with software. Complex forms will be replaced with natural language and voice interactions will become more common.
Power user features such as keyboard navigation will remain important and increase our individual productivity.
Building software is going to be easier and more fun than ever. We’ve seen a huge improvements in tooling that are allowing us to write less code while still shipping more robust features.
As the code itself becomes more consise our AI copilots will make fewer mistakes and be able to take on more responsibility.
Cross-platform mobile development has always felt like a bit of a hack to me that involves way too many compromises.
Going forward I’m moving away from cross-platform frameworks and focusing entirely on building for the web. This doesn’t mean that tools won’t be portable, but instead that portability will be facilitated by mobile-first design, progressive web apps and lightweight wrappers such as Capacitor.