What is a problem?
According to dictionaries, there are two main meanings:
- Something difficult you have to deal with (Merriam Webster dict.);
- Something that behaves differently than you expected (Business dict.).
Also business can describe a problem like "the idea that client brings to you".
What exactly does the "problem-solving" term mean?
This term is very widely used in each aspect of our life. The common meaning is providing any solution for the problem. But in business we cannot use any solution, it is risky for the projects. We need the best possible solution in order to avoid having the same problem in the future.
By the way, according to a new report "The Future of Jobs" released by the Davos World Economic Forum, the problem solving was ranked the most important skill in the professional skill sets of the future. So, answering the question of how to become a better problem solver may not only help to solve problems at work. It is also very important from the career advancement point of view.
- Problems with working environment.
- Problems with a task on tracker.
- Problem "Something does not work. Do not know what exactly!"
- Problem "What if I do it this way..."
- Problem of staying focused at work.
- Problem "Brain does not work well" :)
There are many different challenges we can face with and the following tips will show you how to solve work problems.
Steps to solve a problem
1. Recognize and identify the problem.
Problem can be explicit or implicit:
- Explicit problem is a problem that has already been identified by someone. For example, it can be a tracker issue and you just have to check and resolve it.
- Implicit problem is more complex. Unless you are aware of the problem, you can live with it forever, because it is a problem for others but not for you.
To define this kind of problems, people use experience, their own or someone else's. Possibly, the solution of your problem already exists and explained in such things as best practices and design patterns.
How best to identify a problem:
- Follow the best practices.
- Know the design patterns and methodology.
- Ask questions. It definitely works.
- Improve yourself every day.
To solve a problem, it is essential to gather all relevant information. This can include reviewing log files, consulting colleagues, and conducting online research. For instance, when encountering issues with a Ruby gem installation, I typically check the terminal log for error messages and search for solutions online. If unable to find a resolution, seeking input from a colleague with log information can be more beneficial than simply stating "I don't know."
When troubleshooting source code problems, options include utilizing a log file or debugger, reviewing team actions related to the problem field, using version control systems like Git or SVN, and running tests. Tests are especially important, as they can uncover other issues that may need attention. This approach is akin to the diagnostic process in medicine, where a doctor gathers information, conducts tests, and then makes a decision. By fixing any failed tests, you may uncover issues that are not directly related to your current problem but still require attention.
If you have a more complex problem, after gathering information, it makes sense to get it brainstormed. You can use a paper, mind maps or just sit and think - it depends on the problem.
You can use the Rubber duck debugging method or advice from an experienced colleague. It happened to me that, I was describing a problem to my coworker but suddenly stopped in mid-sentence, said: "Never mind, thanks, I got it" and went to write code before my mate came up with any ideas of how to help me. So, the method of rubber duck works. Try it out.
4. Relaxation and time breaks.
You should turn your attention from the problem, halt, relax, and let your brain have a rest. There is a wonderful practice with time breaks in the work process called pomodoro technique.
This technique will help you to focus on your task for 25 min and then have a short break. Regardless of your work style, you must not think about problem during the break. After a while, when you get back to work, you can discover a new vision of the problem. You will probably exclaim: "Oh, man! It is so easy. Here is a solution, how could I overlook it?" or something something like this. I know that feeling, believe me.
5. Avoid the same problems in the future:
- Write tests. After finding a solution, you absolutely have to cover all it with test units in order to check yourself and avoid similar problems later on.
- Understand solution. If someone helped you with a problem, you still have to fully understand it. Only this way you will earn experience for handling related problems in the future.
- Automate the solution if it's possible. If you have resolved the problem for one situation, try to project what you should do if the same problem occurs again tomorrow.
- Know your environment. To avoid problems, you must know your daily environment: OS, editor, terminal, programing language and project. If you know this well, nothing will disturb you. You do not have to fight with your editor or terminal and you do your job in the best way.
To be an expert developer, you have to improve yourself every day. Problem solving is only one of important and necessary skills. You may start from small problems, then proceed to more complex ones and gradually you can train yourself to deal even with long-term strategic issues.
Keep in mind, problem solving is not a problem, it is just a skill that pays you generously. Practice more and you will work more efficiently. Hopefully, our suggestions on how to become an expert problem solver may give you some useful hints.