
Learning a framework or tool and shipping your product are two things that don't really mix up most of the time. In this article, I explain why you should separate the two for your project
I have a strong belief that when your goal is to ship your MVP a la The Lean Startup, you need to use tools and techniques that you are familiar and comfortable with. That way, you can focus on creating the MVP and generating value.
The focus needs to be on the product level, meaning that everything you're doing is about thinking:
How you actually implement your project using (no-/low-)code, and if it is the neatest way to code it are not as important when you want to provide value without investing too much time and effort which results in a longer time-to-market.
Not when you're bootstrapping your product/service, and want to ship your product within a short timespan.
If you're working on a side project to learn a framework, stack, tool, whatever, it's best when you're not committing yourself to a stressful deadline. You can focus on learning the tools and choose simple tasks or projects to create so they can be realized within days or weeks.
Trying out variations and different approaches on how to create things with a framework really lets you get your hands in the code and often shows aspects and use-cases that are helpful later on.
What you have to understand, is that when you're using tools/frameworks/.. for a product that you want to ship that you didn't use before, there is a great chance that this will stall your progress.
You'll most likely bump into an aspect that you want - ney..need (it's an MVP, right?) - to implement but then, when you're actually using it, you find yourself spending hours on figuring out how to get this small thing to work for your project.
Perhaps you even are the lucky one finding out there is a bug in that one feature that you need for your use-case that was going to save you a lot of time... π
Nothing is more frustrating than finding yourself stuck or delayed because you assumed that a library would do the trick.
After developing for over 20 years I know that these scenarios are inevitable, but minimizing the risk of this happening and getting stuck less, can really mean the difference between "being in a happy flow working and getting enough progress to keep at it" and "getting stuck too many times and dwindling off to your next thing".
This is where the perseverance and consistency part for makers kicks in.
In my experience, the only way to properly integrate something that's "new to you" in a product that needs shipping ASAP, is to find something upfront and research it before you start your product.
Researching means going over the website, Googling, and reading user scenarios on sites like Stack overflow. Finding out if the product is actually working and if there are people around that can help you.
By making sure that the product is well supported and maintained you can be more assured that this will save you time, not cost you time.
Often, there are commercial products that will cost a little but that have proper support and guidance for your situation, which might give you more assurance that it will actually function.
When it comes to using open source, finding out if there is a vibrant community of users and demos for use cases or issue discussions can be a sign that it will help you out on creating and shipping your product.
Especially when you're implementing an edge-case that hasn't been implemented many times before, knowing that the creators, maintainers, or users of a framework or tool can help you out can be the life-changing fact you need.
By now, I hope I've shown you why shipping and learning don't really blend well if you want to ship your MVP and get it out there using minimal effort on a strict deadline.
Here are the key take-aways I want you to remember:
Either code to learn or code to ship. Or first code to learn, then use what you've learned to use that in something to ship.
Working with the things you are familiar with really helps to keep the pace, focus on shaping the right product, and will reduce the number of times you will get stuck during the implementation phase.
And it will prevent me from having to tell you that wildly annoying but famous phrase:
π¨π»βπ« I told you so βπ»
Code Hard, Ship Harder π₯
Great article. I find this to be true, unfortunately sometimes, for freelancers as well. I run my own business and I do not have time to learn all the new cool programming languages and things. Which is frustrating sometimes because I'm a developer like everyone else and love to learn new things.
Think a lot of it boils down to your "10 year plan". Do you want to become the worlds best programmer with the newest coolest stuff or do you want to create a business? It's hard to be both at the same time.
Thanks for sharing.
Couldn't have said it better @Cous, thanks for your insights.
I'm fortunate to have shifted from full-time working for a company to 3 days (9hr/day) a week.
The other two are for doing stuff at home, parenting and my own company.
The upside of working for my own is that I've learned a lot since I started in 2020:
The diversity of it all made me learn a lot.
The developer landscape has been diversifying and growing so much the last 15 years, it's even impossible to keep up with it all.
I've found that, when you're focussing on the fields that you want and making time on a WEEKLY BASIS for your own learning project is the only way to keep it up.
For me, currently, that is working on my side project using Laravel around 4 to 6 hours when the kids go to bed around 8 PM.
I actually kinda broke my rule from this article a bit: I'm working an idea (a clubhouse profile generator) that is so small that I can afford to shift releasing my MVP backwards). π€coming to think of it, i kinda swapped from "shipping product" to "learning project" with a shippable result haha.
Take care and if you can permit it, allow yourself a fixed block of time each week to learn stuff. The energy you get from that alone is worth the deal.
Just be strict about time management and block all incoming alerts (not to mention surpressing impulses like social media and Netflixing).