Why I'm Not Shipping New Features This Year
Shipping new features for users and watching them gobble it up is the greatest Joy of being a coder. I quit my day job to bootstrap a SaaS to maximize this Joy in my life. I didn't expect Joy to wane and wither away by year 7. While it's been supplanted by other positive developments like more customers and increasing revenues, which makes the situation tolerable, I miss Joy in it's most raw form.
Where is my time going instead?
In no particular order...
Fighting antibot measures
To move faster in the early days, I chose to depend on third party websites for core functionality instead of implementing it in-house. This is backfiring now. I particularly notice this in the area of webscraping. I originally designed my architecture under the assumption that webscraping will be mostly reliable and the most I'd have to deal with would be network blips and markup changes. I was right until 2025. With the proliferation of AI, the sites I depend on have started to invest heavily into their antibot measures, moved content behind login walls, and in general made scraping them a nontrivial engineering undertaking. My attempts to circumvent these measures haven't worked reliably enough to stake the future on them. So I've been gradually eliminating my dependence on scraping.
Fighting spam
Growth and a strong brand in our niche has put a target on our backs. Last year we shut off social media comments. It has helped our mental health considerably. Recently, users have been complaining to us about receiving unsolicited email spam. Even though we don't share their email with anyone, most of our customers have a public presence. And due to the nature of our product, it's easy to discover who uses our service. So scammers pose as our representative and send our customers AI slop. Some customers have even reported receiving emails which try to mimic our email template. All this is flattering, but also very annoying to deal with.
Customer support
Even though it's hard to prove, I strongly believe that stellar customer support has been a big reason for our growth. According to Helpscout, we responded to ~1500 support tickets in Jan 2026. And by we, I mean me and my part-time lieutenant who joined me in year 1 and has stuck with me till now. When he takes a few days off, it's a death sentence to my personal life.
Content curation
The amount of time I spend curating user generated content is directly proportional to user growth. 10-15 hours a week goes into this, and it's unfortunately not easy to hire for because it requires niche domain knowledge.
Fixing performance bottlenecks
Some endpoints have become bottlenecks during peak traffic times, slowing the site down, and occasionally causing timeouts. Making these endpoints more performant is a nontrivial undertaking (changing datastores). I've been making bandaid fixes for as long as I can remember.
Handling edge cases
Scenarios which used to be uncommon have become more common in terms of raw volume. Where 1 user would suffer before, 10 users suffer now. All the while our customer support team has remained the same size. Most of these edge cases can be addressed in code, but due to being spread thin, my fixes have been hacky and temporary.
Managing tech debt
Bandaid fixes and hacky workarounds have a hidden cost in the form of tech debt. Building with tech debt is like running on sand. Everything takes longer than it should. It's also not fun to pursue Joy in such a code base.
Fixing regressions
To move faster in the early days, I didn't write any integration or unit tests. I relied on manual testing, observability, and user complaints. As my code base has grown, I'm feeling the pain of not having a test suite. When I ship something new, I have to deal with possible regressions, eating into my week.
A certain level of mental space is required to pour love into a new feature. And I've been struggling to find that mental space for several weeks now. That's why I've decided to not ship any new features in 2026 and instead focus on the addressing the above. My goals are:
- Eliminate dependence on scraping third party sites
- Implement a system of detecting suspicious user activity and banning spam accounts
- Hire and train another customer support rep to spread the load and increase redundancy
- Improve docs and internal tools to make customer support more efficient
- Hire and train someone to take over content curation
- Fix performance bottlenecks
- Handle edge cases better
- Cleanup the code base, bandaid fixes, hacks
- Invest in integration tests and CI
I hope to bring Joy back in 2027.