## Thursday, October 24, 2013

### Solving Problems in Software Development

As software developers we are in the business of solving problems. A problem can be described using multiple representations such as text, diagrams and equations. If you understand the relationship between different representations of a given problem, you will be able to translate one representation to the other. If you are dominant in one representation and when you are given a problem to solve in your weaker representation you can translate into your dominant representation and solve the problem.

1. Understand the Problem

- What do you need to find?
- What are the unknowns?
- What information do you obtain from the problem?
- What information, if any, is missing or not needed?

2. Devise a Plan

- Look for a pattern
- Make a table
- Draw a diagram
- Write an equation
- Work backwards
- Identify a subgoal
- Examine related problems and determine if the same technique can be applied
- Examine a special case of the problem to gain insight into the solution of the original problem.

3. Carry Out the Plan

- Implement the strategies from the plan and perform the computations.
- Check each step of the plan as you proceed.

4. Look Back

- Determine whether there is another method of finding the solution
- Determine if there are more general problems for which the techniques will work.

References:

1. Billstein, Libeskind and Lott have adopted these problem solving steps in their book "A Problem Solving Approach to Mathematics for Elementary School Teachers (The Benjamin/Cummings Publishing Co.).
2. Technically Speaking: Making Complex Matters Simple by Steven Rudich