It's a cheap trick and feeds my own insecurities or superiority complex or whatever other pop psycology you want to throw at it, but it gets results.
That way, when you're coding your brain still has something interesting to chew on… and I find it keeps me from going too far off the over-engineering deep end.
In all seriousness, it's only a problem for me with bigger systems. When I've got smaller tasks, even boring ones, I can blast through them easily, but when I have to do both sides of it I require more self-discipline to get through the last pieces.
I have half a dozen projects on GitHub where I worked hard for a few weeks, decided all the interesting code was written, and then never bothered to finish.
I keep saying that one day I'll go back and finish them, I just don't know when.
1. Practice TDD: Start out by just writing a test. Then you'll want to write the implementation.
2. Set yourself up for the next coding session when you're wrapping up. Leave a line of code unfinished (dangling =), or leave yourself an empty method/function/block that's just waiting to be filled in.
That way, I've got a reward already set up: a function I know is going to work well!
In this case I don't think it's a block in the same sense as writer's block, but rather a block due to a lack of motivation, because such tasks aren't enjoyable in the same way coding that involves creative thinking is.
I agree with nsxwolf, this is more of a designer's block than coder's block.
Creating the solution to a problem via code is easy, finding the correct design/implementation is much harder. I tend to write code first, refactor later.
As a new full time coder, I experience coder's block perhaps few times a week at the job. I think tomasien's suggestion to write things down is very useful, something I've started doing and help me get through some difficult problems.
Specifically, it is helpful for anyone that is solving a problem whose scope is not clearly defined. Writing, instead of talking, helps to map things out and takes out the pressure in verbalizing an eloquent solution / interpretation, which usually comes a lot later in the problem solving process.