From Idea to MVP
How to start your own projects
As a software developer my mind is a idea factory. I have always something new in my mind that could be a great new side project. Sometimes it is just a simple little script that makes something easier to me and sometimes it looks like a million dollar idea. I know that this is rarely the case so the decision to start the building of apps like this is hard so mostly I never start building them. But i always track the ideas in my project board in case of a changing day when I really want to start building it. And here I want to show you a way how you can start a new project as simple as you can.
Getting some Ideas
The best ideas you can have are always the ideas that solves some problems that you have in your daily live. It is easier to you to solve some problems that you are aware of. As an example think about something like you are a party person that plays funny party games at home and you and your friends want to track always the winner of the games so you decide to get a notebook and start writing things down.
This is the simples way of doing it, but there is a big down to this. The data is always just in this one notebook so nobody can look at the data if he don't have access to this notebook. And if you forget this notebook at home you can't track the data for this day. Here we can have the idea of tracking it in an app where you can share the data.
But what is if we want to get a step further and make recordings of the games to analyze the games later? Now we need to keep this data in a storage and we use two apps. Here we can develop a solution for us that provides both for us. Tracking the data and keep recordings of the games.
Break the Idea down to a Minimal Valuable Product
This sure looks like a simple one but as our mind keep grinding we keep getting some new ideas for our app that could be added. Now this app getting bigger and bigger in our mind and we don't want to start anymore because it looks like a big load of work. But what if we don't make everything at one?
Just breaking everything down into small features that adds slowly progress to our app and make it just more valuable and than decide what is the first feature that you really want in your app. In our case it could be just the tracking of the participants and the winner of every game. That would be useful for our case and it can be used standalone without any additions.
Building and Deployment
Now we have our first feature that we want to build and we can start building it. But what are the needs of our app? We need frontend, server and database or do we? No we definitely don't in most cases. If you follow the KISS principal (Keep It Simple and Stupid) you want to build the bare minimum that are really needed.
Our app for example could start as simple frontend only app that stores all the data in the local storage of the browser and can provide a simple export and import if the data to share it between your friends. Now we don't need a server or a database because we keep everything in the browser storage.
As we build our app with our desired framework or just plain HTML, CSS and JavaScript we get at some point were we want to deploy our app and this at the most cost efficient way that we could get. There are many hosting offers out there but as we only have a static web page we could get a free hosting of this. I prefer to use CloudFlare Pages for this. A simple and fast CDN that provides my static web pages. I also use the DNS nameservers from CloudFlare so I can use and add my custom domains or subdomains in just a simple step.
Continue Development
Now we have a first simple app deployed and we can start using it. And while we start using it we can also start developing more feature. In our case it would something like start developing a server so that we can save our data there and not in the browser storage anymore.
But make always simple small steps as you go. It is always easier and you are way more happier with the results and a deployed app can get direct feedback from your users. That can also improve your app as you go.
An Example from my side
Now we talked about how we can get from an idea to a real MVP. But does this works for real? Yes it does and here is an example from my side:
In my company we have a trainee and I am involved in his training. I wrote down a little list of simple questions for training purpose and every day he gets some of them to answer. It started as simple notes in my mind but as it gets more questions I wrote them down in a file.
But I am a human so I have my favorite questions that I want to ask every day and our trainee don't get any new questions so I decided to write a little NodeJS script that selects a given amount of questions randomly. This is great for me because I only have to add new Questions and can guarantee that the ask questions are always random.
This script only works on my laptop. This was fine at first but I really prefer to use my smartphone during the question session and here is the starting point of a real app. As I always develop in Angular this was my way to go and I start to write a little Angular application that just allows to add new questions, delete old questions and get a specific amount of questions to ask. I developed and deployed it in just 2 days to get start fast.
The MVP is fully usable and I really likes it. You can view this app here but as you see there are some additions to it now. The MVP is ready but my head says "hey you could add this and that" so I started to add some simple additions to it. My current additions are simple things like export/import data, translation management, theme management and feedback management. All three things are small additions that can be developed fast and don't have any big impact but it is more features in the app. And as I made this additions as little simple libraries in my monorepo I have the chance to reuse them for other apps and don't need to made that again and again.
Conclusion
As last words I can say start always simple. Big things are nice if they work but if they are never deployed they can't be used. And always have fun coding. Have a nice day.