Much of the research for this document has encompassed the use of tradition print based media (books), material obtained thru cyberspace (World Wide Web), and the authors own twenty five years of software development experience. Some of the tools I have used to gather and disseminate this information are listed in the Appendix along with a brief description.
This research used print based media and the World Wide Web (Internet) to obtain information pertinent to this report. A number of sources were used to gain information applicable to problem solving, Extreme Programming, patterns, refactoring, object-oriented programming, structure programming, RAD, and traditional structured development.
The premier site for
extreme programming would be the
A key player and
author in the UML, design patterns, and refactoring worlds is
For a different perspective on problem solving, I have made use of material from Arden Bercovitz. Arden is an an Einstein look-alike and spends much of his time speaking on creative problem solving. Specifically, I rather like his article on Problem Solve Like Einstein which gives us an Einstein like perspective on problem solving. Another useful site has been the Rio Salado College, information focused on problem based learning, but containing a good outline of a problem solving process.
To provide a solid base in UML,
design patterns, software engineering I include some key sources,
Problem solving has been a subject of study for decades. To set common ground we require a definition of problem solving. A typical definition we might find in the software field would be
"Problem solving is the process of breaking problems down into smaller and more manageable parts. As the large problem is broken down into smaller parts, each part becomes more specific. These individual solutions to smaller problems are then combined to solve the bigger problem. Problem solving is also referred to as analyzing the problem to be solved." (11).
This definition highlights that problem solving is a process. This is further supported by Fed Nickols, an active consultant to small business “… They believe it doesn’t make much difference which problem solving approach people are trained to use as long as it is systematic.” (10). Most problem solving activities involve following some form of systematic process. A typical problem solving process would consist of a number of steps (13):
Step 1: Identify the problem
Step
2: Select a strategy to solve the problem
Step 3: Apply the selected
strategy
Step 4: Evaluate the result
Step 5: Present the final
solution
Most experts will also agree that problems are best solved with visualization (draw a picture), use the appropriate tools, “Tools form the bridge between work and working; they link the performer to the task“ (4), and avoid re-inventing the wheel. In most cases, we look to analyzing the genius for clues on how to solve problems. Albert Einstein was one such individual with a very different view on solving problems. He believed that "Problems cannot be solved at the same level of consciousness that created them." His approach to solving problems was to broaden his way of thinking in such a manner as to view a problem from a completely different perspective with an open mind. Redefine the original ideas and continually consider alternates. Based on Einstein’s approach, here are a number of problem solving guidelines developed by Arden Bercovitz Ph.D., a well known consultant specializing in promoting and teaching innovative and creative thinking (2):
· Nurture your ability to see and consider alternatives, even contradictory or impossible ideas
· Develop an awareness about being too attached to your own ideas
· Suspect “the ONE right Answer”
· Base your decision on the best choice between several right answers.
· Consciously look for alternatives.
In summarizing our problem solving attributes we can identify the following key components and guidelines:
Use an established and proven procedure
Visualize, draw pictures
Use tools to help solve problems
Break the problem down into small parts
Combine solutions to solve larger problems
View the problem from different perspectives (no matter how crazy)
Always look for alternatives
Develop more than one solution
These form the criteria we will look for in the various development methodologies under scrutiny.
Last updated December 6, 2002 by R. Dyer
(c) Copyright 2002,2003 R. Dyer, All Rights Reserved