Created: 2022-05-06 22:07
In order to validate ideas and get into a flow of productivity that allows to achieve goals it is necessary to remove as much friction from the process as possible.
Reading, writing, thinking, ideation, prototyping, iteration, and so on. The whole process must be streamlined.
From zero to prototype
One of the goals for successful side projects is to embrace the prototype, which is the key to validation of ideas.
The sole focus of a prototype should be to get a proof of concept of the idea working. Any time spent choosing tools, configuring environments, figuring out new ecosystems is a waste.
Project templates and sandboxes (like Codesandbox) are great to avoid setting projects from scratch.
Once the prototype is ready, the next step is deployment. Managed solutions make things much easier here. Fly.io and Vercel are my favorites. The only problem with managed solutions is pricing tends to quickly ramp up when scaling, but we are talking prototypes here so scaling should rarely be the concern.
Another important factor that contributes to the speed that we can build prototypes is the tools we choose (language, framework, and libraries). While it is fun to try a new language on every other side project, when the goal is to validate and idea as quickly as possible you should stick to the tools you’ve mastered. Master your tools
Iterate fast
Once there’s a working prototype, and the idea has been validated, comes the time to iterate, a process that might lead to an actual product1.
Although it might seems counter intuitive I do recommend to choose statically typed languages, preferably the purely functional ones, for building prototypes. Not only they make iteration and refactoring easy (and possible), statically typed languages help a lot to model problems in the right way. Faster with types
Once again, sticking to the tools we’ve mastered pays its dividends as well as building automation around the “ops” side of things like CI/CD, health checks, etc. That way we spend less time maintaining and more time building. It also helps when going back to a project after time has passed.
Footnotes
-
By product I mean any project that is complex enough to not be considered a prototype anymore. ↩