Understanding the Question
Answers are easy. The difficult part is understanding the question. Not until you fully understand the question can you create the answer. This is true for everything from doing well on a university exam to creating software. At university, if you do not understand the question how are you ever going to get the answer right? For software, if you do not understand the question, or more precisely, the problem, how are you going to create software that will solve that problem?
This is one of those guiding principles in my life. I tend not to do anything substantial until I understand the question and can then come up with the answer. Now don’t get me wrong, this does not mean that I do not do anything. It simply means that I don’t do anything big—like solving the problem—until I understand the problem or question that needs to be solved.
Translated into software development, this means that you do not architect the entire system until you understand the problem that that system is suppose to solve. However, until that understanding is attained, there is nothing stopping you from creating prototypes, proof-of-concepts and the like in order to more fully and accurately understand the problem.
Also, by understanding the question, or problem, I mean you understand what the client wants, what the client needs, the business processes that the software is suppose to solve, etc. By the time you have created the software you should be an expert in that client’s business. This is understanding the question.