People in other professions have fairly concrete titles which indicate what they do.  Think surgeon, math teacher, architect, or president.  The computer field is somewhat different in that I’ve been doing basically the same thing (developing custom software on Microsoft platforms) for years and have been called software engineer, consultant, contractor, programmer, computer scientist, systems engineer, developer, and systems analyst (with various numbers involved even!).

None of those really capture the art and science of programming accurately.  Even after decades of research, discussions, methods, and patterns,  working in computers is definitely not a science with well defined rules and methods but it also isn’t an art with zero defined rules.

It’s a mixture of both and one of the reasons I think the field is so difficult and intimidating.  It involves a high degree of something like ordered creativity- being able to recombine patterns and ideas into something which is unique for each person but able to solve problems many have.  You don’t have to be a genius to do this, but not many people have the insight and patience to work like that (and of course can stand endless hours in boring cubicle farms…a topic for a future post).

Of all the terms, I like “software engineer”.  It best encompasses the ideas of structure and creation with the “software” modifier indicating that yes, no matter how hard we try, programming is fuzzy, malleable, and adaptable.