Someone I know wanted to talk because they were very confused. They had the problem of being somewhat successful with their side project, and now were getting overwhelmed by the million different directions they could drive things towards.
Should they develop more cool features?
Should they double down and make the existing features even better?
What about fixing some bugs? Maybe improve logging and metrics?
We discussed a bit, and ended up with some tenets to prioritise this work. While they were specific to this person’s case, I think they can be generalized enough.
- First comes security. If your system has security issues, you should be up at night. Your user data, transaction, security depends on that. The fastest way to erode trust and lose customers is to have a big gaping security hole you didn’t fix because you were “delivering features.”
- Second comes availability. The more general rule here is, make sure don’t fuck over your existing customers before acquiring new customers. Service down is bad. Service often down is worse. Not having a clue when your service is down is worst.
- Then, come features. Which features? Well, if you’ve got a simple project, with a simple (or one-person) team, what I’d do is the following:
- take all the possible features you can come up with
- estimate how beneficial they’ll be, based on your knowledge, customer impact, whatever your competition is doing, I don’t know
- estimate how hard, long and complex it will be to implement them
- deliver first stuff that’s valuable and easy to do,
- then stuff that’s valuable and hard to do,
- then stop and assess if there’s any security, availability, or new feature to assess
- otherwise do the low value, low cost ones, maybe
- never even think about doing the low value, high cost ones
There. I hope this helps putting some order in your side projects.