For me, a critical distinction has always come with Software Patterns. I've never met someone who was "just" a programmer who had a grasp on what they are, and why they're good. Conversely, most (albeit not all) Software Engineers that I've known and respected have had a good grasp on Software Patterns, and understand why they're such a good idea.
I'm pretty sure, software patterns are of concern only for inferior OOP languages, like C++ and Java. You don't have SP in Common Lisp. Software Engineer must be synonymous with corporate drone.