Starting A Side Project Over
About six months ago I spent an entire weekend thinking about, and then starting to code a side project. It felt amazing to take an idea I was thinking about and take it to the next step. However, the high I got from diving head first into a new side project was short lived. I was unsatisfied with the quality of my code, and was unclear about the business aspects of the idea. Instead of continuing to work on the side project, I instead spent time leveling up by doing things like watching a ton of video tutorials.
From the outside, it may seem like I abandoned yet another idea, and yet another side project. However, the opposite is actually the case. In the 6 months since I last worked on this side project I've been able to become a much better developer, and have also had more time to think through the business strategy of the idea. I'm at a point where I now have both the motivation and the skill set to see if I can actually get this side project to MVP territory.
So this past weekend, I decided to just start building again. I scrapped all my old code and notes and spent all day Saturday and Sunday building a new beautiful, fully tested API. I'd say I'm about a third done with the API - which is quite good for one weekend's work.
I'm going with an API-first approach for a few reasons. First, building the API first allows me to fully grasp the data modeling at a very fast pace, without having to spend time tediously perfecting the front end. Second, I want to build the front end app in React - which has become my new learning obsession. My brother, who codes in React for his company, recommended I couple a React front end app with a external API. Since I know how to build an API, it seemed like the logical choice to begin here, and then build the React front end app later.
In my job, we build even the smallest feature end-to-end, and release everything incrementally. The benefit to this approach is that you avoid overbuilding the wrong thing before you get user feedback. However, it can get frustrating in a sense because you only work on small chunks, and don't get to see the big picture all the time. My decision to build out all the logic first for this side project is exactly the opposite of the 'lean' approach that I use at work. I must admit though, it is extremely fun. By thinking about everything at once, I was able to gain a lot of insight into the interaction between all the components of the application. I think in the end I have a really well designed data structure (so far) that I may not have come up with if I did everything bit by bit.