Graham Brooks: Architect, Software Engineer

Over the years I have been described as a programmer, analyst programmer, software developer, software engineer and many other derivation of software X professional. For most of the time it has not seemed to be important. Recently though I have started to wonder how these names might affect the way software professionals see their role and perhaps how they view themselves.

In certain countries and regions the term engineer has more special definition. Wikipedia emphasizes the method or approach to developing software. In Europe the term infers that someone has undergone formal training and attained a status through examination or peer election to a learned society.

But why should we care?

In 1999 Andy Hunt and Dave Thomas wrote The Pragmatic Programmer: From Journeyman to Master. Their first tip was Care About Your Craft. If like me you care about the craft/practice/discipline of building software and software applications then you probably feel that naming things is very important. Without a clear name and common understanding of what a name means it is very difficult to communicate effectively.

I also take a sense of pride in describing and talking about what I do. That pride comes from the quality of the work that I produce and the study and knowledge that I have gained from building software.

If I am going to use a name to describe what I do it needs to be reasonably well understood, match at least part of my self image.

Searching for definitions brought up a number of suggestions mostly around these themes

  • Programmer or ‘coder’
    • Has less that 5 years experience
    • Works from specifications
    • Code Monkey
  • Software Developer
    • Gather requirements
    • Designs applications
    • Researches technologies
  • Software Engineer
    • Designs and implements components, frameworks for developers and programmers to use.

So many people seem to infers a level of experience to each of these terms with Programmer and I think there is a level of experience but also levels of self awareness or interest in particular ares of software.

I don’t see the term programmer being used much these days in job adverts. The most popular term seems to be Software Developer for developing applications. All these terms are fine but while I really enjoy building applications my passion is for building better tools and applying new techniques and languages to the problem. This feels more like engineering to me. So after a an absence of some 15 years Software Engineer is coming back to my vocabulary. No one term can capture everything about a person and does not translate directly to my role at any point in time but it is a starting point.