Who do you go to when disaster strikes? I’ve been told I’m a good problem solver, and am often a “go-to” person for others when there are difficult technical issues to resolve. What am I doing to be tagged in this manner? Note, I don’t know that I actually believe I am better at solving problems, I’m just aware that I do indeed work and get paid to do so, frequently.
I decided to put together a list of attributes that I think make for good problem solving in the technical world. I hope this perhaps helps others. I am more than open to feedback for improvement on this list – please weigh in if you see something missing or that can be improved.
Traits of a Good Problem Solver
- Has A Good Memory
If you can’t remember what systems are “touched” by a specific action, you’ll be forced to rely on others that do. Or you will have to look up and research these dependencies on your own first, or discover them in a longer, even more painful path.
- Has Persistence
Solving a technical glitch can be difficult, especially when it is something that is difficult to reproduce. The most difficult problems I encounter are the ones that appear to happen randomly. The reality is that with a technical issue, this is really never the case; the challenge is in determining what conditions must be met to reproduce the issue. Is it only happening on a specific server? Could it involve caching? Have we established the exact steps taken to create the issue? What conditions in our testing environment might be missing in the production environment that could be part of the cause? It takes persistence to work through all of these permutations.
- Has Patience
While similar to persistence, this is a different trait in my view. Perhaps an example will help highlight why I think so. Often in web development or other technical fields, we are working on custom code or at least an integration of something in a unique environment. How long will it take to figure out what’s wrong when you are diagnosing something that perhaps has not been seen by others before? It could be two minutes due to some clarity or luck, or two days, or even weeks. Being patient and persistent is what will get you through these sorts of problems.
- Documents Everything
Very similar to having a good memory, being one who documents everything, including problems and their resolution, really helps problem solving. Have we seen something like this issue before? What did we do to fix it before? There’s nothing worse to me than diving down the same rabbit hole because you forgot how your resolved an issue previously. Write it down in a tool that has good search features, like a wiki, or Evernote.
- Can Write Effective Search Engine Queries
Learning to broaden or restrict your search query is a skill. So is knowing what keywords to include in your search. LetMeGoogleThatForYou.com is often used as a joke by me as a none-too-subtle means of poking fun at someone’s poor attempt to solve a problem, but there are skills to using a search engine for sure. Develop them!
- Has a Process for Change Management
The first question I always ask when there’s a problem reported at work is “What’s changed?” Having a good change management system in place with a code repository as well as a testing->stage->production deployment path for your code makes answering this question easier. If code hasn’t changed, how about data? If neither, is there a new browser or an update that has been rolled out? Some other environmental variable change? Stable systems don’t usually just “break” — something has been changed that caused a problem or exposed an issue kept hidden previously.
What other traits make a good problem solver for you? Please let me know what you think.