cynicalman asks what the “problem solving skills”in a job description actually mean and then tries to discover and blog the answers.
I do not actually agree that his first discovered rule is actually “a skill”(I think it is more of a test procedure),but the question asked does require a thought.
I was frequently told that I have good problem solving skills. So,here is my quick take on what those skills are:
- Being able to quickly deduce a structure and meaning from the given examples or behaviour
- For example,my co-worker was having a problem with a Fortran program. I haven’t seen Fortran before,but was able to figure out the control structure rules on the fly and see where the bug was. Another example would be to take a program with an unfamiliar menu structure (or a familiar Microsoft one) and quickly find where a particular option could be.
- Knowing how to ask question –of yourself and others –that would partition the problem space
- So,you say the server has crashed? is not a good question. How about When you say the server crashed,did the program exit completely? If not,was it rather just very slow and/or returned to normal a while later? It is really a couple of questions here,but the idea is to split the possible problem space into segments and decide which segment to keep working with. Similarly a good question would be:If this was caused by a network problem,how/where/when would it show up? Which log or trace file do I need to check to confirm or reject this?
- Knowing how to convert data into information
- Getting a 3 page long java thread dump is a (bad?) luck. Knowing how to read that thread dump to identify what the program was doing at the time and what it was _not_ doing is a problem solving skill.
- Being able to manipulate large datasets and extract required individual entries
- To me,this covers not being scared by 2GBytes access logs when I search for a problem behaviour pattern. It also covers knowing the tools to slide/dice/reconstruct the data sets.
- Having a toolkit and knowing it well
- At the moment,my toolkit is Vim with couple of plugins for editing and RegExp work,Ethereal for network,FileMon/RegMon/TcpMon from SysInternals for Windows troubleshooting,XMLStarlet for XML files,and,of course,Cygwin for its full toolchain. I have also written custom programs,mostly for complex data extraction. Finally,I use GraphViz for visualization of my extraction results. One of the things that frustrates me most is a person reading a log file in Notepad. What can they do with it except looking at it one line at a time? No highlighting,no place marks,no way to interactively clean it up by regexp deleting some unrelated sections.
- And,above all,not giving up
- Most of the situations can be troubleshooted successfully. Especially if you can reproduce it,insert trace statements or do other developer level modifications. If you think you hit a writer’s block of troubleshooting,use the same techniques writers do (try anything,switch attention,define next action,etc.)
Comments,thoughts,references?
BlogicBlogger Over and Out
