When I decided to build the “iLearn: English” app, I had just an idea about what it could be, but I didn’t have a clue about the features it would need to have in order to be useful.
In this post, I would like to share the process I used to define the features I added to the first version of my iPhone application.
In the past, I failed at launching a couple of pet projects. All of them failed for the same reason: I lost the motivation. Losing the motivation triggered the “I don’t care" state of mind, where I would basically try to finish my projects, without worrying about quality anymore. After a some time, I would just throw it away. It was sad, but my past experience helped me to not repeat the same error.
All the failing projects had the same root cause: they didn’t have a deadline. Without a deadline, I would keep working on something forever, always adding a new feature or changing something that was already finished.
With “iLearn: English”, I defined a deadline before I even start considering the features I would work on. It helped me to simplify everything else.
To understand my wife’s problem, we spent a few hours discussing about what would help her to study english and what would be the easier way to do that. The outcome of this discussion was a series of post-its with ideas that would be interesting to have in the application.
Even though our conversation was responsible for the creation of a couple of dozen post-its, they were really vague. They had all kinds of possible features that my wife could think about. We clustered the posts-its by similarity, breaking a really vague list of ideas into a small list of features. It helped us to understand what was the core problems the app would have to solve. Later on, we used the deadline constraint to polish our features list, adding only what would be extremely valuable and viable at the same time, cutting everything else from the scope.
To avoid jumping into the development with half understood ideas, I asked my wife to write down the features we decided to have, using her words. It was not easy. At the beginning, she would write descriptions like “I would like to have a button...”. We repeated the exercise a couple of times, until we have a really clear and implementation-free description.
How do you choose the features you are going to work on? Send me your thoughts to [email protected].
I’m a full-stack software developer based in Berlin, Germany. I’ve spent the last 10+ years working in a wide range of software projects, from internal web dashboards to real-time applications used by millions of people.More about me