Logan Koester posted some tips for overcoming Coder’s Block.
I get blocked, once in a while, too. In those situations, it almost always comes with the feeling that the problem I am trying to solve is too big. That, in turn, usually stems from not having thought about the problem enough, rather than the other way around.
The development staff at my company is pretty small, so we are all involved in each new feature from “front to back”, as it were. I like to start by thinking about the user interaction aspect of the problem. It doesn’t make sense to start with the back-end design until you know what the front-end is supposed to do, right? So I think about what operations the user needs to perform, then what inputs are needed to handle them. From there I can work out how many of those inputs should be stored for re-use.
I like to draw diagrams, since I find they are easier to re-assimilate when I come back to a problem after some time. So I may sketch out a few UI screens, or draw a few boxes and arrows to understand the relationships between objects (I use a sort of pidgin UML for that). I also make lists of attributes I might need for classes, since those map to the database schema.
There are plenty of good tools for making such sketches on the computer, but I guess I’m Old School. I find that sitting down with a pen and paper, away from the computer, helps clarify my thoughts. Since I don’t have my text editor, the temptation to write code is reduced and I can concentrate on the big picture. And once I have the big picture worked out, the way forward is usually clear.