When I started building side projects, I mostly followed the traditional MVC (Model-View-Controller) architecture. It seemed like the right way to structure my projects, and it was what I learned via ruby on rails and to a certain extent Django. But something always felt off. I felt like I was spending too much time setting up the architecture and not enough time building the actual product. This is funny because frameworks like Rails and Django are supposed to make development faster, but I always felt like I was fighting the framework instead of leveraging it. At some point, it became painful to build projects this way, and I lost the motivation to work on side projects.
With frameworks like rails and django, I always felt constrained to build the project in a certain way. I had to follow the conventions of the framework, and if I wanted to do something differently, I had to fight the framework. This was frustrating because I wanted to experiment and try new things, but the framework was always in my way. Why do I have to write so many controllers even for a simple project with three screens max? Why do I have to learn so many abstractions (stimulus, actioncable, frames, streams), just to avoid writing vanilla javascript, even if it is probably easier for small scale projects? Something was off. I wanted to rediscover the joy of building things, and I felt like the traditional MVC architecture was holding me back.
Indie hacking is hard. You have to wear many hats, and you have to be able to move fast. You have to be able to experiment and iterate quickly. You have to be able to build a product and get it in front of users as fast as possible. You have to be able to pivot and change direction when things are not working. You have to be able to build a product that people want. You have to be able to build a product that people are willing to pay for. And my experience is that, the only way to do that is to ship fast. It is even more true now that indie hacking is popular (in a sense) and thus more competitive. You have to be able to stand out from the crowd, and the only way to do that is to ship fast and see what works. To ship fast and continue to do so despite frequent failures, you need to find some kind of joy in the process of building things. You need to be able to experiment and try new things without being constrained by the architecture of your project. I find that the traditional MVC architecture is not well suited for this kind of work. At least not for me. This might be different for a professional developer turned indie hacker, but I am not a professional developer. I am a self-taught developer who wants to build things and see what works. I do not have time to learn all the abstractions of a framework just to build a simple project.
So starting today, I am abandoning the idea that I have to follow MVC or any other pattern for that matter. I am going to build projects the way I want to build them. I am going to experiment and try new things. I won't indulge in premature optimization, worry about things that do not matter if I don't have 10000 users. My new philosophy is to keep it simple and efficient. Let's see where that will lead me, and expect more AI projects from me in the future.