The job of a programmer could be described as focus-oriented, constructive and yet, monotonous at times. It is heavenly bliss when things are running smoothly and you are in control of everything. This phase is referred to as ‘the zone’ and it lets hours seem like minutes; everything else ceases to exist and you embrace a meditative state of mind. When a programmer is in ‘the zone’ the only option is to leave them alone in order to prevent a major catastrophe.
Writing and running code can be a time-consuming process and the frustrating part is when you get stuck in the middle and can’t figure out where you went wrong. So, what do you do?
Being stranded is not something experienced by amateurs; it could happen to a developer having 20 years of experience in his/her field. The conventional method is trying alternative solutions and hope one of them works. If you keep failing, giving up might appear as the right thing to do, but it’s not. Brilliant programmers will practice and practice until they solve their problem using the original framework. This is called problem solving and can be pulled off with a few smart strategies.
Problem-solving is often not a requirement for many theoretical or repetitive tasks such as adding changes to an already written code or getting rid of minor bugs. In fact, learning to code itself is a logical process that relies mostly on memorizing and calculations; it more or less involves left-brain activity. On the other hand, writing a code from scratch needs creativity which is provided by the right-brain. People who are right-brained are the ones prone to develop problem solving skills because they are extremely perceptive and philosophical. Left-brained people tend to live a happier life, but right-brained people can make revolutions happen if they don’t get lost in the abstract of their minds.
Now suppose you just started working on something original and suddenly hit a stand still. The first thing you need to do is fully interpret the issue using the simplest words of your native language. Sometimes that is all you need to zap away the glitch that was bothering you all this time. Unfortunately if the problem persists, look it up – carry out rigorous research. There’s always someone out there who has encountered a similar situation as you and maybe they were considerate enough to share it on the world wide web.
After doing some research, you may or may not get the answers to all your questions. The next step is to break down that king size enigma into smaller fragments. If you can accomplish this step, you possibly have what it takes to become an ideal problem solver. Now we will look at a metaphor:
Suppose you need to put heavy crystal-ware on the top shelf of a cupboard. This situation represents a compound problem that needs to be first divided into simpler elements. First of all, the top shelf is too high for you to reach. A ladder would be helpful, but do you have one around? How about a chair you can step on to? Presumably, that will provide better stability compared to putting a ladder against the cupboard.
So there are 15 pieces of crystal-ware in total and each weighs about 5 lbs. Holding up all of them together is nearly impossible and even 2 per trip can be risky. What if you mishandle and break one? On the contrary, transferring them one by one would take up too much time and energy; so is it really the prime method?
Then there are other things to consider as well:
- Will you have to move the chair repeatedly?
- What if you still drop something though you’re going one by one?
- Will the pieces be easily retrievable when they need to be taken out?
This might not relate to a programmer on a personal level, but the point is that there are aspects to every issue. If you can separate, differentiate and decipher them all, you will ultimately figure out the answer to the big question.
Then again, a subset of the problem too can occur as an odd piece of the puzzle. When this happens, it’s far more easier to start anew instead of trying to find out where you went wrong. Debugging demands too much of re-evaluation, attention to details and time. At the end of the day, practice makes a man perfect. When repeating a procedure multiple times gets you out of your first conflict, next time you’ll be in the right rhythm by ruling out mistakes you previously committed.
Want to improve your problem solving skills? The most enjoyable technique is playing games that exercise the brain. These can be modern interactive games that offer various quests and puzzles, or old school board games like Chess, Monopoly and Sudoku. Celebs like Mark Zuckerberg and Elon Musk have regarded video games as a valuable contributor to their success. There are even courses at college/high school level that allow you to test your thinking skills by presenting an assortment of questions that need to be answered within a fixed time period.