Programming by Wishful Thinking
A nice little posting that describes a great way to get started with Domain Specific Languages (this article assumes a method call concrete syntax, but the approach could be generalized). The trick is to start to scribble out your solution pretending that the magical compiler will turn your wishes into working code. Then once you've refined your language just enough to make it worth coding, go write a parser, translator or a set of method calls to implement your magic compiler :->
I'm a big fan of both top down design like this and bottom up design (where you add concepts to your language to solve ever more specialized problems). The trick is to think of programming as the art of language design and to focus on writing lots of little layers each providing more useful abstractions on top of the lower ones.


This is often helpful because sometimes a good syntax is hard to design for a new feature. This often suggests that feature is inappropriate for the tool.
Once the desired syntax is uncovered, then I can investigate whether it makes sense to add the feature.
Interestingly, if you Google "code by intention", I only got 124 results suggesting people perhaps use a sightly different phrase. One other I've heard is top down design http://en.wikipedia.org/wiki/Top_down, but you're right that whatever you call it, it is a pretty common approach - in the OO and procedural programming worlds.