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.


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