Imagine that we have discovered a new planet and the world has called upon you to make a plan for visiting this new planet with a probe to gather data about it. Where do you start?
This thinking about a problem is called Analysis and it is a very hard skill to master even with experience but it is essential when learning how to program. Every requirement you uncover requires analysis to further understand it, validate it and quantify it before you start to think about a solution.
Sometimes this analysis can reach a road block where you don’t have enough information to know something for certain. To get through these road blocks you need to get the information or make a choice to enable you to move forward. This choice is called an assumption and these are ok but you need to track them so you can validate them at some later point. An assumption that is not valid may invalidate your entire analysis and you may be in big trouble.
Teaching analysis is hard and I’m not sure that I have a good approach since it is about thinking and thinking deeply about a subject. The more experience you have with the subject the wider and deeper your thought can be. This is why experience is such a valuable asset. I’m not sure that I even have a ‘method’ of analysis but I do have what I think is a good exercise in doing analysis.
Most of you reading this post will have at some point boiled an egg, and if you haven’t don’t worry you can still do this exercise. Without going through the process or searching a recipe book or the internet, write down each step you would take to make a boiled egg, and I mean every step. Along the way you may make assumptions about things and you should write down these assumptions to. I’ll give you one assumption to start off with, “You are boiling a chicken egg.”. So make your list of steps and your list of assumptions.
I did this exercise and here is my list but please do the exercise yourself before looking at my list. After you have made your lists then look at mine and compare the two. Did you have the same steps? Did you have more or less steps? Did your assumptions match mine? Did you find yourself thinking, “I didn’t think of that?” or “Wow, I’m not winning Masterchef.”. I’d like to hear about your experience with this exercise so please send me an email.
The best part of this exercise is that we can test it by going through the steps we have outlined in order, one by one and seeing if we end up with a boiled egg. Often in the Business of software we don’t have this luxury and therefore we need to do analysis. The better your analysis the more confidence you can have that you understand the problem. Notice I talk about the problem and haven’t talked about the solution? It is very important to analyse the problem and requirements before thinking of a solution.
How’s your egg?