Start Simple Iterate Quickly
Today, I want to come with an advice to those of you that have an idea. An idea that could become a project that itself could become your job.
My advice is very simple but powerfull : “Start simple and iterate quickly”.
To illustrate this idea, let’s say you want to create a new kind of ticketing system. How to start simple ?
- Do you need an authentication to your system ? No. Authentication is both very common and a huge time taker. This is not the place you will get your distinctive advantage.
- Do you need email notifications ? No. Sending email suppose that some people read them. No users, no one to read the emails !
What you need is the bare minimum (a minimum viable product) to make it work (and sell ?) and then planify next iterations that will features at a rapid pace.
Let’s planify a roadmap together.
The MVP (minimum viable product)
An MVP should show a good understanding of the business at hand together with the core features of your tool.
Thus there are the bare features I would put in the MVP of a ticketing system :
- A correctly implemented domain model that only contains the notion of Ticket;
- A ticket have a title
- A ticket have a description
- A ticket have a publication date
- A ticket have a status that can be : Submitted, Running and Done
- When the ticket is done, an end date is set on it
- A comprehensive set of tests on this domain model
- Some persistance mechanism
- A way to expose features via an API (REST or GRPC)
- Create a ticket
- List tickets
- Change a ticket status
Taking your time to create this, this should take about a day to complete. It is fast. It gets you started on the project. It proves that the idea is doable. And then you can immediately ask/get feedback from some kind of users (even if it is only technical ones). And really it is all what a ticketing system is. Other features are just decorations !
Next iterations (one or two weeks each)
Each iteration should follow the same steps as the MVP. In fact each iteration should be the MVP of a subset of features of the application.
- Add the notion of comment on the ticket. No nested comments or fancy reactions, just plain text with no author at all.
- Add the notion of categories of tickets.
- Add the notion of Author and Support users.
- Add authentication
- Add email notifications
- …
For each iteration, implement the bare minimum features. If it works, you WILL get back to it later to add what’s missing and at that time you will have :
- Way more understanding of what is a really important about this feature
- A clear understanding tha tyou have time to iterate on this feature as your project is going to good way !