I would underline this consistency. I found that as long as I'm regularly doing even the tiniest of improvements to my side-project, I am very efficient over the span of a few months. When due to other obligations I drop the habit, I start forgetting how parts of the codebase work. It becomes harder to restart the project and the whole thing just seems depressing. Consistency is key!
Also, I would recommend checking out Indie Hackers if you need inspiration :)
If I have a small block of time (1-2 hours), I try to make 2-6 really small commits, so there is always progress.
If I have a larger block (4-6 hours) I try to build out a feature so it just works, just working on things that require that amount of time (leave all the short problems for later).
I found this also affects my decisions about what tools I use and how the software is designed. E.g. using npm libraries for UI components that are "good enough", which I might be tempted to start from scratch in a work environment. I also intentionally built an application that is easy to manage - no user accounts means no database to pay for / migrate / monitor.
I'm using Heroku to outsource monitoring/logging, and Aweber for email. Paid tools can be cheap compared to the time it would take to replace them, and if you don't pay for one of these, your side project turns into building those products as well.
I've personally found the "don't spend money" part to be demotivating. I have several projects running and was paying a low cost designer for a small number of hours per week. This is kind of like having a company without long term commitments. It helps to keep me motivated since I need to keep work ready for him each week. Plus, I've made a personal commitment to pay him regardless. I don't want to waste money or his time so the project naturally keeps some momentum. This may not work for everyone but is like a "go to the gym with a buddy" plan that helps me. YMMV
The other thing I recommend is clock your time and be honest with yourself. It helps you know you actually spent 2 hours working on something and also has a constant action to keep progress going forward. You still need to rest so this has to be part of your clock.
Over the last 6 months I've finally had the chance to a big bulk of my working hours to my main side-project, and it's taking shape very nicely. This is after starting it 3 years ago. Time and concentration are the biggest hurdles to getting anything off the ground.
Then something like http://www.thealccalc.com took me like an hour since it is far less complex.
So ya, just keep at it, google for answers to your questions and just keep learning.
To put it another way, if you had a lot of practice at building CRUD apps, have your IDE set up, know the short cuts, might it take you 40 hours where someone else needs 400?
In that case, time and skill would be fungible. (Or, skill can be thought of as "stored time.")
talent x effort = skill
skill x effort = achievement
So yes, you can achieve more by starting with a higher level of skill, however putting in effort (through deliberate practice) is the best way to increase both your skill and achievement (talent x effort^2).Or maybe you need both and the latter is more my limiting factor at the moment.
For me, I use three other feelings to combat my high standards.
One is fear. In particular, fear that I'm building a bunch of stuff that won't work. It's the same fear that drives me to write automated tests, or at least to manually run something and see that it works. Except here the fear is that it might work for me but not for my audience.
Another is rigor. This part feels very sciencey to me. I'm trying to test the hypotheses that are implicit in the thing I'm making (and that I've hopefully at least tried to make explicit before I start coding). I want to test my hypotheses as early as possible, and when I don't I start to feel like I'm not being rigorous.
The third is joy in results. The early tests are only looking for one step forward. If that's all I'm looking for, it is really exciting to see that. And so I temporarily set aside my concerns about all the things I'm not testing for and celebrate the wins when I get 'em.
When you don't have an hour a day to work on your side project, but 15 minutes a week, then you do what is needed for it to start working, even if it's not perfect or far from what you wanted.
If you have plenty of time try to make the smallest thing that does approximately what you want. Then iterate over it, but always small but fully functional incremental changes. Don't be afraid of having to throw it away, no need to get it right the first time.
Paying for some of the grunt work or tasks that require learning new skills will free you up to do the more exciting tasks. Not only will this save you time, it also keeps you motivated and helps you keep up your daily cadence.
I think the problem to be solved is: lots of people dream of doing something, but risk aversion stops them from going all in. As a side project, the idea starves. If you could decrease the risk, more people would try new projects, and some of them would be really valuable.
Ironically, I don't want to quit my job to pursue this
I have a similar problem where I have a side project but can't really quit my job and work full time on it.
Here, the worry would be free riding.
So you need to work consistently 1-2 hours a day on your side project. It really doesn't matter what you do. If you manage to get those 1-2 hours in, you will muddle through and accomplish something. If your goal is to make a side project and bring in a non-zero amount of money, this is achievable. Learn whatever you learn on that project and then do it again.
Personally, I would spend exactly $0 on your task because, like I said, the thing that will kill you in the end is likely to be time commitment. If you spend money, you will be out the money and your time. So start with time and see where it takes you.
As others have said, no need to get fancy. Just build the simplest thing that will get you started, using the simplest tools you can find.