Hard Stop and Reset
The importance of breaking free from technical gridlock.
It happens to all developers from time to time. You have been staring at the same feature/bug/code for the last hour and a half and there has been no movement. The pressure is starting to mount as this time spent has not felt productive. There doesn’t seem to be any open doors and things are getting frustrating.
Time to take a hard stop and reset.
Recognizing Work Grinding to a Halt
Earlier in my career, I would let technical issues paralyze me. Like most developers I was tenacious. The harder an issue seemed, the more I dug my heals in. Hours or days later there would always be resolution. But I didn’t use my time wisely. I wasn’t able to separate when work was going well or poorly.
Being able to “feel” roadblocks is definitely a learned skill. In hindsight, they always seem so glaring. But the truth is when they are approaching it isn’t always obvious. Frustration and stress roll in like an incoming tide and not a tidal wave.
All you can really do to identify this is keep an eye on your mood and/or demeanor. Everybody is going to handle this differently. The good news is the same frustrations seem to pop up every time.
“Why did we code it like this to begin with?”
“This feature is such a terrible idea!”
“I doubt users will even use this to begin with!”
“I can’t stand working technology ‘X’!”
At the end of the day, this is the developer’s job right? To solve business problems with code. Sometimes it will be easy and sometimes it will be hard. Someone who considers themselves to be a senior level developer will welcome both and handle them with grace.
Giving Yourself a Deadline
Once you have identified that “I’m totally stuck” feeling, it is time to set a deadline. This will separate it from being a problem and a complete time-suck.
How this looks is, say it is 3:13 pm. Give yourself 17 minutes to get to 3:30 pm to figure out a solution or take a break. Sometimes this deadline will force you to be more resourceful and EUREKA! A solution emerges. Often though it just gives you a light at the end of the tunnel.
If it helps there are many free apps that you can use as a timer for such deadlines:
- Be Focused (OS X)
- The timer on any smartphone
If the deadline has hit and you have not resolved the problem, it is time to take a mental break.
Techniques for Resetting
A good technique for resetting is anything that will change your train of thought and get you in a different headspace. Sometimes this will be as simple as changing gears to something else that is work-related. Other times turning your head from job responsibilities is a good thing, at least for a few minutes.
- communication talk to a colleague
- redirection work on something else (preferably something easy)
- read review a technical article or something that will help you with your job
- change your medium get your notebook and pencil and take things offline
- communication talk to you spouse, family, significant other, friend
- play play a quick video game
- read read something not related to work you are interested in
- exercise go for a walk, run, yoga…
- eat/drink have a snack or get some coffee or tea (cup of coffee and piece of chocolate is rocket fuel for me)
- meditation completely clear your mind of everything
Just as important as setting the deadline to stop working, try to do the same for taking a break. You are in the middle of working after all. If you are doing any of these things too long or too often it starts sounding like procrastination right?
Back to Work
😌 Ahhhhh 😌
Hopefully sitting back down and looking at the problem feels completely different than when you left. Maybe you are looking at things from a completely different perspective now. At the very least you should be in a less frustrating place.
Ideally, your brain feels like the picture below.
Take a New Path
There are a few things to consider when building solution 2.0. Think about some of the reasons you got stuck in the first place. Maybe you don’t have all the answers you needed from a business perspective. Sometimes your technical design doesn’t align well with the desired results.
There are a few simple steps you can take so you don’t make the same mistakes:
- Take a different approach. If you make changes specifically early on in your design, they tend to cascade down to everything else you are building.
- Hack. “Done is better than perfect.” It is a fairly well known Facebook mantra. It has a lot of value. You can always come back and improve.
- Start fresh, if you are able. Sometimes you have to cut your losses and start over. You just learned a lot about what you are doing. Development should be more rapid now.
Bah, It Didn’t Work
Sometimes despite identifying gridlock, taking a break, and taking a new approach you end up in the same place. The only thing that changed was how you got there.
At this point it is probably time to get the help of one of your colleagues. Everybody approaches problems differently. Getting a second set of eyes on the problem can help things break free rapidly. What was complicated to you may be trivial to them. But don’t worry, you’ll be in a position to pay them back. Everyone gets stuck from time-to-time.
One’s ability to avoid major periods of inefficiency is something that separates good developers from great ones. It isn’t that great developers never get stuck. The difference is when they do they know how to handle it. Learning how to fight through difficult periods can save your day.