- Restatement of the problem, both written and verbal.
- A diagram or drawing of the problem to visualize the symbols. This is probably the most important process for me because my ability to see visual patterns and transformations is strong. This and the previous step will help you think about and define symbols that you introduce in the next step.
- Table of symbols, with column headers for values (initial or other), the value's measurement unit, and description of what the symbol represents. This table should also include conditions on the variables you've introduced e.g. statements like "x is positive" or "V not equal to 0".
- A written statement of approach that describes how the problem should generally be solved. This statement is a prediction of the necessary steps to get an answer. When solving programming problems, this is usually done with pseudocode.
- Manipulation and reconfiguration of equations or functions e.g. differentiation, integration, refactoring. It is always good to state what facts you use to make jumps in logic for your own reference and for others to follow along. The more you explain yourself in writing or another durable way, the better value your work has as a reference for yourself in the future and for others.
- Numerical calculations. This can be a subtle step that ruins your answer. Do calculations carefully, substitute the correct values by referring to symbol table and only after you've fully completed the last step. Be particularly wary of sign.
- Solution and concluding remarks. View all your solutions as something you'll need to go back to in the future when you forget, so write down a little journal entry stating the process and how it differed from what you expected.
This is a short list, but it is very helpful for approaching many problems. Another great resource for problem solving is Stewart Calculus: Principles of Problem Solving. If you want to master the problem, teach it and speak the solution to someone.