As a founder building MVPs and iterating products quickly the priority is almost always on how fast you can get things done. Often that means you are repurposing old code, copying from StackOverflow answers, reading blog posts and adopting the approaches there, or more recently using LLMs to generate code as well. Once we put the MVP in the hands of users and started getting feedback, code clean up would occur. The inevitable performance issues would be addressed and some code would be refactored. When things were a little more settled I'd spend time understanding the code base a lot better and learning on how to do things better. This approach has served me quite well and I had never really questioned how I was doing things. The trade offs were always clear to me and I always felt like I was churning things out as fast as possible.
Over the last few months I decided to be intentional about my learning and have spent time trying to understand under the hood how web applications work. Despite building so many applications end to end I realised just how much I didn't know. I found simple solutions to problems I had spent a lot of time on in the past. When I started building out the Ira Project I decided to do things a bit differently. I decided that I'd spend just a few minutes understanding in detail how the code I was writing worked and what work all the libraries I was using were doing. What I've found interestingly is that though I'm spending time learning the speed of execution has actually increased rather than decreased.
I had not realised just how much time I spend debugging and fixing issues that I was running into. With a better understanding it was a lot easier to work through these issue and the time spent learning more than paid itself back. Interestingly enough the learning was much faster as well despite how little time investment was going into it. The power of [[Praxis]] really shined.
Now it's easy to take this too far and spend too long learning and not spend enough time executing. I've adopted a couple of principles to ensure I have a healthy balance.
1. Don't write code you don't understand. It can be tempting to just copy those three lines of CSS that magically gets everything to work but the time and effort it takes to make a small change in the future significantly outweighs the cost of learning.
2. Don't go into rabbit holes. One of the time sinks when learning is getting into rabbit holes. One link takes you to another and suddenly you've spent the last three hours reading. Once you have a reasonable degree of understanding save the links that interest you for later.
I'm quite excited for the long term benefits of this approach as well and will definitely try to update this essay on how it has or has not helped!