This was exactly how we built OwnLocal before we quit our day jobs. In a sense, it was very easy because when you don't know how big the problem is, everything feels like progress.
Now I see 40 barreling towards me and it's hard to just do a little bit every day. Because I have experience, I can form a much bigger picture of an idea in my head and it's hard to peel off a tiny bit and make that feel like a success.
This curses me in my startup attempts but it also curses me in my work. It's hard to think like a founder anymore. I always overspec projects because I can easily guess what demons lie on the horizon.
I miss my early startup days when I could just write some code every day and feel successful. I want that back.
On the other side of 40 here, I definitely know what you mean, but I also think you can cultivate a beginner's mind and openness to ambitious ideas while still leveraging your experience to see around corners and avoid dead ends. Two ideas:
First, remind yourself that software is malleable. You don't need to build it perfectly the first time, and in fact you will always need to modify it as you go, so don't get stuck in analysis paralysis. You're good at writing code, so leverage that skill to iterate quickly.
Second, don't equate growth with chasing more and more powerful abstractions. Remember, "all abstractions are leaky" in the same way that "all models are wrong, but some are useful". IMHO valuable software comes from concrete use cases. So as you get more experienced you should be able to write simpler code that provides more value. Let the abstractions emerge from practice and experience rather than obsessing over them before you understand the problem.
When starting to lead a team I was shocked at the amount of times I had to redirect from overcomplicated ideas and over optimization. Even more than that, I had to constantly remind the team that we needed to get something working before we got something perfect. Pragmatism came slowly for me but learning it early would, I think, serve anyone well.
> I always overspec projects because I can easily guess what demons lie on the horizon.
What opened my eyes was stories on HN about projects that were little more than a glorified webform that sent an email at first. User volume was so low that it was more cost-effective to have a form send the email and have an actual human do the task manually.
When the project picked up (proving the concept had actual clients), they started automating the process at certain pain points, eventually ending in a fully automated system, which did exactly what it needed and nothing more.
the industry may have changed too - in my early days I remember more fantastical failures where the whole website would be down for an evening or other tragic mistakes.
As more and more ppl got involved and things started to be worth more and more money we were more or less forced to put in more safe guards as there is less tolerance for failure/mistakes. I think the trade off between speed and safety will always be there and business folks will always want both despite them being at direct odds w/ one another.
This is a very accurate description of the situation, and with good culture it's usually possible to coach the business folks to be a little more patient in return for a little more safety.
Over the last 18 months I have been working to get that back. I remind myself at the end of the day that what I did was productive and useful and so far that has worked well.
I realized that it is really easy to fall into the "but what if..." trap but doing so is not spending enough time in the present moment.
Now I see 40 barreling towards me and it's hard to just do a little bit every day. Because I have experience, I can form a much bigger picture of an idea in my head and it's hard to peel off a tiny bit and make that feel like a success.
This curses me in my startup attempts but it also curses me in my work. It's hard to think like a founder anymore. I always overspec projects because I can easily guess what demons lie on the horizon.
I miss my early startup days when I could just write some code every day and feel successful. I want that back.