When building software, if you can state an unambiguous goal and what rules apply you are more than halfway done. It's not uncommon to work on something for a year and discover you have been building the wrong thing. Navigating that ambiguity is where all the value in software engineering is.