How I Think

I plan on ranting here a bit more, so I figure I might try and lay out how I think about software design and development.

A good friend of mine introduced me to these terms: Mechanics vs Intent.

Mechanics are the how of your software.  It's the OS, Language, Framework, Patterns, etc that you use to write your code.  You have to have mechanics, since at some point you have to give the computer something to execute.

Intent is the why of your software.  Intent is why your particular piece of software exists.  The itch it scratches if you will.  To me this is also where the Domain concerns live.

So really I like to think as Software Development as a constant struggle between Mechanics and Intent.  The Intent is the reason for being, but you need the Mechanics to get your work done, and sometimes one can muddle the other: "How do I even express this in code!" vs "How confusing could you have made division!"