You know the feeling: you've got a great idea for a project, an app, a widget-me-jig, but you're struggling to get going. Perhaps — more commonly — you're already working on a particular thing, probably as part of your job, but you're stuck with where to go next, how to start, how to make progress.
So you stay stuck...
There's definitely an art and creativity to development, for all it's a technical medium, and like any artistic pursuit, such as writing or painting, we aren't immune to stalls, stops and straight up coders block.
But how do we get past our blocks and ship stuff that works? Well, hopefully these ideas will help move you past your block and start you moving again.
Stop forcing it
If something's not working, it's not working. Ironically, the best thing to try first is to just go away and leave it be.
I can't tell you how many times I've had to get up from my desk and just have a 5-10 minute breather, do literally anything else and come back to the problem with renewed enthusiasm and a fresh approach.
It's one of the hardest things to do because, if you're anything like me, you want to stay with the problem, force it to bend to your will and, sadly, this usually only makes things worse.
Step back, take a breath, and do something else. For me, it's maybe having a walk in the garden, or playing a few licks on the guitar. My dogs help too; being able to talk to them is a bit like a real life rubber duck technique...although you get about as much sense back!
Try something else
If you're still stuck, maybe a different approach might help. Again, related to the point above, I've found that occasionally, even after a break, it's just not happening.
It's easy to belligerently keep flogging the dead horse, but instead, try approaching it from a different angle. It might be that you leave the current component and move on to a related piece of work.
Perhaps you started at the back end and worked towards the front but have lost your way; try switching it up and start with the front and reverse-engineer the solution into the back end.
Maybe you're trying to solve a complex issue that has been neatly solved by a third party. Don't get me wrong, I'm not advocating just chucking another NPM package on the heap, but there are really well developed solutions to common issues (e.g. forms in React) that mean you don't have to get stuck trying to implement your own niche version.
Look to others for inspiration
"Lesser artists borrow; great artists steal" - Igor Stravinsky
Yeah don't steal anyone's stuff. However, there's not a person alive who hasn't browsed someone else's work, their ideas, and found inspiration in something outside of their own box.
For me, this sort of inspirational boost comes from attending meet ups or conferences. By exposing yourself to other people's work, ideas, and general approach to similar concepts that you're dealing with, you help to smash open your own creative box and can get motivated to push beyond whatever is currently holding you back.
Understand why you're blocked
Tricky one this, but it might be that you're not stuck because of a lack of inspiration or clarity; it could be that you're hamstringed by current infrastructure or technological shortcomings.
If you think there is a genuine issue that either you don't have the technology or in-house capability to solve, discuss it with your team, raise the point and see what can be done.
It's not always a silver bullet, but if you can understand the why's then you might be able to unblock yourself and move past it.
Just get started (progress > inaction)
Leaving things alone or being stuck in a state of indecision, inaction, is not helpful. Sure, we all need a bit of time and space to think, but delaying action, delaying progress ultimately harms our goals and inhibits forward motion.
I'm not suggestion that you just start banging out any old code without a thought about the architecture or how some components might interact. But, if some sort of indecision is hold you back then sometimes its actually quite helpful to just begin down a path and either adjust as you go (see my article on continuous refactoring for some tips) or backtrack and redo.
Making some sort of progress, even in the wrong direction, can sometimes help move you past the block, even opening up some more ideas for you.
And let's face it, we're fortunate to be in an industry where we have the luxury of this ability. For example, the above is terrible advice if you're working in an A&E department of a hospital (that's the ER for our US-based chums).
How do you deal with development block?
Do you experience this yourself? Do you have any tips or tricks that work for you? Let us know and let's start a discussion and move our work forward!