Before we start to code, we need to realize some things.
We don’t waste our time to build something won’t be used. 50% of the code doesn’t pass to production. 80% software feature or command doesn’t be used by the users.
That’s why we have to use our critical thinking. We don’t create a software/program/code in real life because we want to learn. Learn is our personal objective. We create code to apply our learning to achieve our company North Star metric. So, we have to abstract the problem we would to solve and find the correct connected dots with the North Star metric.
The software is about a problem, not a solution.
First, what is the problem? We have to find the exact problem before even we start the project. If there’s not enough reason why then the project shouldn’t be started. Then why the problem happened in the first place? Then who is affected by the problem? Is there any person who clearly has a pain point about something that we need to solve. if it’s there, then quantified it with exact metric. How many of the person who goes affected by the problem? How many loss did they get? How many days did it happen? And then how the condition before and after our project is done? What’s the difference?
If the previous condition is clear enough, we can move to define the output of the project we would like to get. How many people will be helped with our solution? What feedback should we get after our solution is implemented? What metric do we want to improve? is that important enough? Then how do we solve the problem? what is the shortest path to the solution?
Never build a project for a hypothetical user.
If the user isn’t there then why we would create a project. Also, we shouldn’t make our self as the user. it would be biased the objective.
Never love your code
Never attached to your current state. Never love and satisfied with your code. If you have to delete your project because it’s irrelevant, then you have to delete it and we shouldn’t have a bad feeling when it’s happened. A feeling can trick you, but logic not. So train your feeling to match the logic.