- What is the intended benefit?
- How is the problem going to be solved?
- What is the data will be output?
- What is the data that will be coming in?
- What will be the analytic approach?
- What code will be written?
The components are ordered in terms of importance! Getting the right problem to solve is vastly more important that writing the best code.
However, almost all of the papers and talks and blogs concentrate on components 3.2. The least important step actually gets the most attention.
That's the problem. I don't know of a good way of getting better at the higher-value stages except to try to always understand what you are doing. For instance, radically changing component 3.1 may mean you are really changing the business problem being addressed; just make sure that is what you want to do.