My own experiences programming are as a self-employed, generally self-motivated coder, designing software I want to design. If you are an employee writing code implementing someone else’s specifications, this may not be helpful.
For me, programming is usually a creative process. Unless I am fixing small bugs or making minor tweaks, writing software is no different from writing a story, a song, a poem, or drawing a picture. It is an abstract process by which I turn general ideas into something that doesn’t quite approach a true language. There is a purely creative process: coming up with ideas to implement. And there is a less creative, but often just as abstract a process: turning those ideas into little processes that a compiler can understand.
Since writing code is so much like writing anything else, a programmer is prone to “programmer’s block” just as an author of a novel can be afflicted with writer’s block.
Beating programmer’s block while simultaneously staying productive is something easily done as long as you keep these things in mind:
- When you’re stuck, do something else.
- It’s easy to do something else if you have more than one project.
It’s really that simple, at least for me. At any given time I have at least a half-dozen “things” I can do that constitute productive behavior. If I experience programmer’s block when developing one application, I have several others I can go work on for a while. Or, I can write a blog entry or even read a business-related book.
The key is to have more than one thing to do at any given time, so that when project A gets stuck, you can go work on project B for a while. It’s not hard. And for me, the goal is to take a break without becomming idle. Sure, vacations and long-term breaks have their place, but with all those people on welfare counting on my taxes, I just can’t relax when I am truly doing nothing so I always have something else I can do when I hit a wall.