On my mentorships, I ask my mentees to create an App they love. This motivates them to continue studying and allows them to practice all kinds of skills, from TDD to App Design.
The other day, while discussing the domain layer for one of these cases and trying to reduce the features of our MVP, we encountered an entity called Category that was complicating our possible solution.
After drilling down more deeply, we realised we needed to create a default Category for every element in our domain. However, I was unconvinced about Category’s role in the App we defined, so I asked the mentee to explain why we needed it.
I need it for a possible filter implementation where I can select elements by Category.
That’s when it struck me!
YAGNI – I said. (Definition of YAGNI in Wikipedia)
And she was like:
You ain’t gonna need it! – I clarified.
We are complicating our code to incorporate entities for a possible feature.
But – she argued – I wanna be able to filter elements by Category and show charts.
When will you need this awesome feature?
Well, not now… but I want it!
Did your users request this feature? For now, let’s remove Category from our solution. We don’t need it, and trying to maintain it would add unnecessary complexity to our MVP.
When adding a new feature to your App, ensure that all parts of your solution are being used. Don’t plan too much ahead, especially if it’s all a hypothesis.
Because, more often than not, You Ain’t Gonna Need It!