Useful Problem Solving Skills I've Learned In My Technology Career Path

Useful Problem Solving Skills I've Learned In My Technology Career Path

Ever since I built my first computer I started learning IT problem solving skills. I admit, at first it was more of a trial and error approach but since then I have gained more powerful problem solving skills as I have implemented solutions within web development, linux system administration, and programming.

Below is a list of problem solving methods I have utilized within my career that helped solve real problems. Some of these methods are similar however I thought it would be useful to list each one that I have used despite their similarities. I will be adding to this list as time goes on. Please check back for updates and please comment on this article with any problem solving approaches you have used in your IT career.

Ask Yourself, Are There Any Unanswered Questions?

When planning a website it is important to first understand the user goals and business goals that a website should satisfy. There are other essential questions such as "What message are you trying to communicate with your website?" Essentially answering the unanswered questions up front can solve a lot of problems in the long run and help the development/design process go smoothly.

Ask the Client Enough Questions to Understand the Problem

Even within a company you should treat project managers as a valued client. Before touching code you should sit down with them and ask them questions to better understand what they want or what business problem they are trying to solve.

Ask a Coworker

It is okay to ask questions! If you don't understand something ask a coworker. Their answer could save you hours and perhaps days of work.

Avoid Reinventing the Wheel

Avoid wasting time on developing something that has already been done. You can often find someone else that has already provided a solution to the problem.

Back Track

It is good to go back and look at previous versions of code to see the change over time. You may find something that was added that doesn't need to be there or path that was poorly architected.

Challenge Your Assumptions

Sometimes we assume we know exactly what the code or program is doing. Read the manual or documentation it may solve some head aches.

Check and Double Check

Sometimes we check something and overlook a small detail. Check something a second time. You might find a detail you were missing.

Check For Understanding and Clarify

When in meetings or working on team it is especially important to clarify what is being discussed. It is better to clarify than to approach something wrong because you misunderstood something.

Check Permissions: Directories/Files

As a system administrator it is important to understand permissions. That error you are seeing in the code may actually be a permission error. Also be sure to assign secure permissions.

Check the Version of your Application

Sometimes an error can be the result of a version of an application. Even newer versions of an application can have problems. Always test new versions of an application/library/framework thoroughly before implementing it.

Check the Syntax

Nowadays we have nice IDEs that can tell us exactly where syntax errors are. However it is still very useful to know the syntax of code so you can not only identify these errors but appropriately address them and avoid them.

Communicate the Problem

Studies show that when you talk about a problem with someone you can often find a solution to the problem. Talking about a problem aloud to someone is a very powerful practice to solving problems. Give it a try!

Compare (code, dates, ownership, files, permissions)

Comparing is a very important problem solving method. Every developer I have worked with has found this to be essential to use in many situations whether you are comparing code in branches, permissions, dates, files, or versions it has often provided insights into solving a problem.

Define the Problem

If you ever get stuck on a problem, you may often do a Google search on it. However before you do a search make sure you understand the right words to use when searching for the problem. It will often help you get the more correct answer to your question.

Define Words/Acronyms

Within the IT world we use many unique words and acronyms. Be sure to write down and learn new terms. These terms can help you communicate more effectively with your team. These terms are often created to more quickly communicate a concept.

Eliminate Distractions

If you are a like me, I have a hard time tuning out distractions. My selective hearing only works so well. It can become essential to put yourself in a more quiet environment and away from any distraction that will prevent you from solving a problem. Try it out and see if it works for you.

Eliminate Posibilites

This is a very valuable method of solving problems and often comes with experience. Be sure to rule out all the possibilities. In the end you will hopefully be left with the actual cause.

Find Similarities

Sometimes to better understand a new system or program you need to learn it by comparing it to something you already understand. This may help you solve problems later on.

Generate Every Conceivable Option

It is useful to first list out the different solutions to solving a problem. You may find a solution that you did not recognize at first and you may find the correct solution. In another sense, when testing code it is important to understand the inputs and outputs of functions. For example, lets say you are making a tax program. It is important to not allow letters or special characters when inputing a number. By generating every conceivable option you can find bugs.

Isolate the Code

This can be referred to as unit testing. Where you test the smaller portions of your code. By isolating parts of your code you will understand what is going on in each part.

Label the Parts

By labeling parts of your code or process you can more easily communicate it to others and you often can begin thinking about the relationships within your code. Be sure to involve other developers input when labeling parts of a problem or code.

List Out What You Do Know

This method is useful because it you may remind yourself of an aspect of your code that you were neglecting. Also you may discover that you have been overlooking an important piece.

List Your Known Unknowns

Acknowledging what you don't understand is a great step in solving a problem. There are often many unknowns when joining a new project. Be sure to list all of the unknowns and get the answers you need to start integrating well on a project.

Look for Alternatives

Look for an Example

Look for Related Problems

Look Line-by-line

Look Under the Hood of the Library/Framework: However do not modify the library but rather override it.

Make Use of Existing Libraries

Map Out the Problem

Monitor the Problem: Watch Log Files as you Test For the Problem

Pair Programming: Speed Up Development and Improve Accuracy

Read the Documentation

Refactor the Code

Rehearse the Problem Vocally

Show the Problem to Someone

Split the Problem Into its Parts

Take a Break, Walk away

Take Baby Steps: Avoid Large Steps

Think logically: Avoid Emotional Responses and Always Attempt to be Rational

Try Another Approach

Try to Break It

Try to Find its Limits

Try to Replicate the Issue

Verify the Solution

Who’s Problem is It? It Might Be Someone Else's Problem To Solve First


Chase Hochstrasser

Front-End Developer | Real Estate Investor

8 年

This is a great list for new and old programmers.

要查看或添加评论,请登录

James Jenkins的更多文章

社区洞察

其他会员也浏览了