0% found this document useful (0 votes)
7 views

01 - Problem Solving

The document outlines a 4 step problem solving process and discusses creating checklists to help solve problems methodically. It describes understanding the problem, identifying causes, developing an action plan including testing, and executing and modifying the plan until solved. Checklists are recommended to prevent mistakes and forgetfulness by forcing consistent processes.

Uploaded by

nayyabgul24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

01 - Problem Solving

The document outlines a 4 step problem solving process and discusses creating checklists to help solve problems methodically. It describes understanding the problem, identifying causes, developing an action plan including testing, and executing and modifying the plan until solved. Checklists are recommended to prevent mistakes and forgetfulness by forcing consistent processes.

Uploaded by

nayyabgul24
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Problem Solving

Wed Jan 9

Goals
1. To develop a mature approach to applying problem solving to sw activities such as
debugging
2. Explore the use of tools such as checklists for problem solving

Problem solving in design


● Design challenges
● Scientific method ← make decisions based on facts, you can reproduce the same thing with
the same facts. Use this to predict how to debug software. How we can use this to discover
different types of problems in programs.
○ Debugging
Problem Solving
● A 4 step process
○ Understand the problem
■ Understand the situation and the problem
○ Identify the cause(s) of the problem
○ Develop an effective and efficient action plan to solve the problem
○ Execute the plan, analyze its effectiveness and modify it until the problem is
solved
● Understand the problem/current situation
○ Communication
■ Look for other people who have encountered this problem
● Don’t reinvent solutions to problems people have already
solved
■ Ask for advice but don’t expect others to do work for you
● We are here to learn how to be independent problem solvers
and critical thinkers
○ Reflection
■ Have you ever run into this type of problem before?
● Note these problems as they appear and explain their solution
● Think: future self would like to know
■ You may want to look at previous code, so take notes about that code.
You are collaborating with your future self
○ Research
■ Google, library, reference books, books on topic - look up info before
formulating a plan
■ Go to forums, post questions, email experts if appropriate - the answer
may be available by simple querying
○ Testing and Experimentation
■ Do you know enough about the problem?
■ To find out how the system works, observe the system, make a
change and see how that affects the system
● Change the program to see what's going on
● Print values often to see what's going on
■ More testing never hurts - refer to appropriate documents like
specifications, design docs, etc
● Make sure the software is meeting the specs
■ Start with the root cause and describe to yourself (best if you write it
down if it is a big or particularly difficult problem) what the
characteristics of the problem are
■ Categorize the problem
■ Ockham's Razor, try the simplest solution first
■ Are there other issues/problems that should be looked at as well?
Prioritize them. The most important things are done first
● Example: life checklist ranked by priority: drinking water,
eating, sleeping, working on courses
Develop an effective and efficient action plan
● Test first! Develop a testing plan first!
○ How will you know if your plan has worked?
○ If you don't have a way of testing, you’ll never know if your fix fixed the
problem
○ If you know how you’ll be testing this, you can design your plan for that
○ Regression testing
■ Testing things that you tested before again
● In case it has broken due to changes
● Do one thing at a time!
○ Solve problems in order - root cause first and then go down your list of
priorities
■ Only solve one problem at a time, if you don’t do that you can’t see
what caused the change in behaviour
■ More effectively move ahead if you run the program each time after
making a bug fix
○ Before moving on make sure things are working
○ Keep copies! Keep a spare copy of important things, important projects
■ If you have a copy you can compare it against the newer revisions.
See the difference
■ In this course simply make copies in
■ In this course to compare to files use diff A B
■ To copy use cp
■ To rename mv
Execute the plan, analyze its effectiveness and modify it until the problem is solved
● Develop a work plan and stick to it
○ You can modify your plan when you have results but be methodical so that
you do not miss something important
○ Use checklists - experts do: mistakes can be made and memories cannot be
trusted
■ Trust for anyone who work in critical systems: pilots, critical systems
control, faculty members - anyone who needs to get things right!
Checklist
○ A checklist is a list of items you check when performing a task
○ Checklists help by recognizing routine procedures and itemizing ways to
achieve desired outcomes
○ Checklists maintain best practices by forcing you to always follow a specific
processes - no skipping steps
● What is on a checklist
○ Very important things
○ Things that have been forgotten in the past
■ These tend to be forgotten again
○ Things that are not obvious and thus can easily be ignored or forgotten
● Standardization
○ Checklists can be used by multiple people and can embody “organizational”
knowledge and experience
● Prevent cognitive overload
○ Checklists mean that you don’t have to remember multiple items since they
are written down
● Continuous improvement
○ You can keep adding to the checklist to make it better and to accommodate
new experiences and knowledge
● Collective learning
○ “Borrow” for the best - read checklists by other designers and learn from them
The 6 step process to create a checklist
1. Identify stupid mistakes that cause failure
2. Seek additional input from others
3. Create simple do stes
4. Create simple alk steps
5. Test the checklist
6. Refine the checklist

In perl, print outputs exactly what you give it and no more, prints what you want with a new
line

■ In this course to compare to files use diff A B


■ To copy use cp
■ To rename mv
■ To get the manual for the commands man (command)
● Example: man man explains the manual command

You might also like