Life is short, be proud of your work.
1. I'd contribute to small companies
AWS is probably the right choice because of it's 5 9s of availability on its core services. I've been on the other side and I trust that when something goes wrong, someone is aware and actively working to fix it before I even knew about it.
...Also, I want to support a diverse cloud market so instead of making the right choice, I'd probably go with startups like fly.io, tigris, clerk, and lemonsqueezy... not that I've thought about this or anything.
2. Not use SQL
SQL makes modeling a small domain easier, but wow does it cause problems. I remember being at a company where engineers had to plan to wake up at midnight to upgrade various dbs to meet quarterly objectives. I don't want to ever have to wake up to upgrade a db.
At another company, all we did was debug indexing all day. Our schema was so awful that a single user could lock the whole 16k/month db for 20 minutes. And it wasn't an edge case, this is just something that happened about once a week when someone decided to update their filters.
It's well known that AWS avoids using SQL internally. I was exposed to the magic of this and I don't know why I'd ever go back. It was so much easier to predict performance because there weren't any noisey neighbors or weird query plans.
But, I admit, I don't have a good columnar store replacement in mind, so I might use Neon. They manage the upgrades and I can trust myself never to add a join keyword to my queries... Probably 😉.
3. Only deliver software over the internet
Delivering updates to native applications is painful. I've had to do it for both desktop and mobile and I don't want to deal with it any more. When a customer uses my product, they will always get the freshest version, no exceptions. This means a web interface and possibly a PWA if it's really necessary.
Unless I make a game.
4. Make the UI render without CSS
It makes accessibility easier and cuts down on the amount of bytes sent over the wire. Then after everything is in the right place, I might style the UI so it looks at all presentable.
How would I render a graph? No idea 🤷♀️
5. Have a fully static website and an API on day one
I worked in a dotnet framework app where the controllers rendered HTML. It caused a lot of security issues because there was often no meaningful distinction between what the client "was" and what the server "was." In a vacuum I'd expect it to be the opposite, but I learned then that separating the frontend makes things easier in the long run.
It's a stupid decision because even if it's more maintainable, it's more to maintain. Just should just use Ruby on Rails or something.
6. Use a monorepo
Monorepos make it easy to couple things that shouldn't be coupled, but as a solo dev, why would I want to make multiple commits to get out one feature?
7. Just use Taskfiles for cicd
CI/CD doesn't have the same return on investment for companies with less than 2 software teams. I've configured pipelines and stuff as a solo dev, but they always end up requiring too much maintenance. I've learned the hard way that I don't have time, so making the deploy repeatable is much more important to me than making it automatic.
Then there's the fact that makefiles are awful. There's not even enough of a standard syntax to be able to make a good autoformater (or there wasn't when I looked).
I switched to taskfiles and everything about repeatable actions got better.
Top comments (0)