Sometimes new and captivating ideas come to our minds. Be it a novel, an app, or a game - they find their place in our brains, forcing us to think about them all the time.
These thoughts sometimes lead us to desire of implementing these ideas, making them happen in real life. And here comes the challenge. Any finished product requires tons of effort to be completed. If our idea is not a part of our daily job, the typical and unfortunate result is… nothing. Or almost nothing. Like a purchased domain name, a few screen mockups and maybe a partially assembled backend service. There also might be a sense of disappointment and even guilt. But unfortunately, not something we are ready to show to the world.
So how do we counter this? There is a concept of Minimum Viable Product (MVP). It is a version of a product with just enough features to be usable by early customers who can then provide feedback for future product development (from Wiki: https://en.wikipedia.org/wiki/Minimum_viable_product).
Inspired by this concept, I propose to choose a Minimum Lazy Product path when building your pet projects. Like an MVP, MLP is a minimalistic implementation to present the idea, validate hypothesis etc. But in addition, MLP is a way to approach work considering our nature.
Oh, by the way, here is how Bing+DALL-E see MVP and MLP.
It looks like there is not much difference:
Probably because this term is not widely used, or maybe I’m not good at googling.
Anyway, let’s assume you want to create a new online game like Agar.io, something that looks very simple on the surface, but has many challenges when approached closer. You are a JS developer with most experience in writing front end apps and websites. When you start the implementation, you will see that some tasks go very fast, easy and fun, while others are a dreadful experience full of fails and setbacks. The idea of MLP is to list all of the tasks to be completed and split them into categories: Easy/Fun and Hard/Unfun (there is no such word, I know:)). For our example, they could be:
Easy/Fun: frontend client app, UI, domain, hosting, gameplay design, game logic, story
Hard/Unfun: server app (all these web sockets), DB, auth, graphics
By only defining the tasks and putting them into corresponding categories, you will make your life easier.
Firstly, because every time you pick up a next task, you will see in which group it resides and decide if you’ve got enough mental resources to deal with it today. You won’t also feel guilty if you fail to complete a Hard task, as it’s expected to be not easy, right?
Secondly, looking at each of these Unfun tasks, you should consider not doing them. Either not doing them at all (do you really need an auth, maybe having anonymous players with their name stored in localStorage is enough?) or giving this work to someone else. This could be a person or service, doesn’t matter. What matters is that for your pet project to be completed, you need to have your willpower and mental resources at a good level during the whole project development. Even one dreadful task can stop the whole project from being completed, so clearly defining unpleasant work and making sure you don’t do it unless it’s absolutely necessary can save the whole endeavor!
Hopefully, the approach will help to consciously spend your time, ship the product faster, get some feedback and decide what to do next. And this is what we usually want, a feeling of making your idea alive, right?