I am a developer and I am a writer. I cannot count how many times I have opened up a new document in my writing software and I am unable to think of what to write. Sometimes I have a clear title but other times, I can't even think of an appropriate one and I find myself constantly typing and deleting.
There have been other times however, when the words just keep flowing and I can't seem to be able to type as fast as my mind generates the words.
Developers suffer from a similar condition like writer's block but there are some differences. The main difference is that a writer is trying to find words to best convey his thoughts to the reader. Ask him what he is thinking and he will tell you in so many words but when it comes to writing it down, the need to make the words as creative as possible so that the reader can get as close to the writer's imagination becomes a big challenge.
Similarly, developers write code to solve problems or create products. The difference lies in the thought process. The developer not only needs to be creative but also needs to know the best tools that are required to solve the problem or to meet the users' need. This is usually the point where some developers get stuck. Sometimes it could just be the inability to make up one's mind about how best to deal with a particular piece of logic and other times it could be the inability to understand why something is not working as it should. This could result in hours and even days of just being at that point and unable to proceed.
If you are like me, you have been there before. How I deal with it may be different from how you deal with the problem but there are some general guidelines and helpful tips that I use and which I believe will be helpful to others who find themselves at the point where they get 'stuck' and are unable to progress on a project. This often happens on side projects which end up abandoned because the author just couldn't figure out the best way to move ahead.
Take a break. This is the first and most obvious step. **Human beings, and that includes software developers, are not machines. We get tired, fatigue sets in, we get distracted by stuff going in and around us. Sometimes all it takes is a break. I have been amazed at how many times I have battled with an coding issue and decided to take a break, only to return hours later to find the solution right in front of me!
Talk It Out - I have found that talking through my problem helps and the interesting part is that it does not necessarily have to be with another developer although talking to one most likely would help you explain the issue in more technical terms. Sometimes I speak to my wife about this 'method' that is supposed to return an integer but is returning a string instead. She doesn't understand half of what I am saying but patiently listens while I talk through the problem. Other times, I actually talk out loud to myself. I have found out that talking out loud when I am trying to resolve a coding issue helps a lot. Try it if you don't already!
Get Exercise! Exercise helps you de-stress. Programming can be quite a stressful job and the more complex the logic you are trying to resolve the more the stress you have to deal with. When faced with an issue where you seem to have hit a brick wall, head to the gym or go for a run! I often find out that I play squash with more aggression when I am in the middle of a complex programming problem. In many cases, by the time I return to the problem, I have a clearer head to relaunch and tackle it.
Write Tests. This is a no-brainer in modern software/web development . If your main logic is not working as it should, this is an indication that something is wrong. Write tests to evaluate that logic. Make the tests as simple as possible and don't overthink it. Break it down into units and test all units and when they pass, test the whole. Make sure you go through the process, 'Test→Fix→Retest'
Sleep. Everyone needs sleep. We are not robots or machines. The more sleep you are able to get as a developer, the fresher your brain is when you start each day and the more you are able to put it to work to deal with whatever logic you need to deal with during the course of the day.
These are some of the tips that have helped me in my almost 20 years of development.
I am interested to hear what others do to deal with what I could rather term, 'The Developers Brick wall'