Two words which can drive you insane - it’s a simple question you’ve asked, you deserve a simple response, right? It might be asking the best way to attack a problem, the best method to call on an interface, or anything - and you’re left with no answer.
Yet it’s the most important lesson in software development. There is no “best way” to do something… only the most appropriate way given the circumstances. Is there a lot of point in developing an n-tier solution with 100% code coverage when someone just wants a simple application that’s only going to be used by one person? And an interface definition needs to consider the clients that are calling it as well as the service being provided… if sacrificing purity of design (let’s say adding an extra parameter) on an interface method is the best solution for my clients, surely that’s a better approach? Or at least worth considering?
The main thing to remember is that “it depends” is an important lesson in software development… but they’re not the most important words. The most important words come next: “it depends on… because… or…”. Listen, take these words on board and you’ll find yourself applying them to situations you find yourself in the future.
It’s a little thing called “experience”.
There are no perfect answers in software development.
You will make mistakes.
Good software developers will make few mistakes. Great software developers will make more mistakes because they’re pushing boundaries - and they’ll learn from each and every mistake they make.