Stuck on a big hard programming task? read this

Sometimes I am stuck on a mind-boggling task. I know this because I found myself fiddling around, giving advises to other people, searching for food, drinking coffee or working on low priority stuff. Clock is ticking but little gets done. After I notice this unfortunate state, I talk with myself seriously – calling to conscience, sense of duty and pride of a man who never fails his mission and the team.
Over the time I have learnt how to return to a productive state and even finish difficult tasks. I want to share my experience here.

Precondition
I assume that you have a good idea what you should build. If not, you have to get back to your notes, client or a drawing board. You definitely will be unproductive if you don’t have clear understanding of your task. Most probably you will waste your time and client’s money.

Now, you know what to do but don’t know how and intellectually overwhelmed by this too big to bite piece!

I recommend

3 phase strategy to conquer your difficult task:

Hit the road – start moving and build the confidence
Take control – conquer uncertainty and map the road
Accelerate – drive on full speed while keeping control
Hit the road

“Writing a novel is like driving a car at night. You can see only as far as your headlights, but you can make the whole trip that way” – E. L. Doctorow

25 Minutes Burst
First, you have to physically sit in front of your computer – ready to write code. If you are not in this well suited for programming position, you should apply your negotiation skills to put your resisting body there. It is not easy to argue with yourself, but you can always ask for firm 25 minutes attempt in exchange for some personal favor. Use these negotiated minutes to hit the road – start powerful programming burst. What about other 25 minute burst after a short break? And another? You can try The Pomodoro Technique.

Pick Low Hanging Fruit by Fruit
The Huge Difficult task will try to kick you out of a saddle (chair) and immobilize. You have to gain confidence and steady mindset to make a real progress. Dive into programming as soon as you can. Start with some necessary piece that you know how to implement. Not everything should be clear – just couple steps ahead. You will discover next steps while you work on the current. Pick fruit by fruit to gain momentum: move from one small task to another without stops. Hold the chain of these tasks to stubbornly step forward against severe winds and waves of procrastination.

Copy and Paste
Copy and Paste is a bad practice. However, it is an excellent starting point if you have huge demoralizing task. Find similar code in your previous projects, help examples or Google / Stackoverflow it. Refine and knead these examples into acceptable for your purpose shape. Certainly, remember to clean and remove bad effects before you finish.

Offensive Reconnaissance
Survey the territory of your development task for potential paths and roadblocks. Do not engage in open fights until you mentally strong and prepared. Work on discovered tasks only if they are easy, otherwise estimate complexity and mark them for the next phases. In order to have better intelligence you can

Search on Internet for implementation ideas
Talk with somebody who can spark a solution (at work, online) or at least with Rubber Duck
Load information in brain and forget about this problem – let your subconscious to prepare for the Eureka!



Stuck on a big hard programming task? read this