George McIntosh

I do something...with software...

What's My Job, Again?

For years now, it’s been an in-joke amongst my friends – few of whom work in IT in any way at all – that my job is to “fix computers”. It all started back when I was a software engineer for an EFT vendor, and was on a 24 hour support rota. One of my friends assumed that, when the pager – remember them? – went off, it was so that I could slide away and fix someone’s computer. Why? Because she had very little idea what I actually did, even though she knew my job title.

Similarly, my parents never really grokked what I do, either. At one point my father asked “so you make up your own programs?” having mildly grasped that there was even such a thing as a ‘program’ not long before. “Well, not exactly my own, but yes” was the best I could do. According to my girlfriend, I “work with that complete gobbledegook that makes no sense”; inf fact, I’m reliably informed, when anyone else asks her what I do for a living, the reply is along the lines of “he puts a load of gobbledegook on a screen”.

The point of this post is not, however, to ridicule civilians for not understanding the software lifecycle, or anything else. It’s not to ridicule them at all.

It’s because I, too, struggle to actually define what I do these days.

This is a brand new blog, to replace my most recent attempt at blogging, which was – and this is pertinent – called George Codes. There are two reasons I’m moving away from that. The first is quite pragmatic: up until very recently, the domain name has been selfishly hogged by some American heating company or something, and I’ve been unable to get my paws on it. By chance, I checked recently, and it was available, finally, so vanity won out, and I grabbed it.

The other reason is, I’m not sure “George codes” really adequately captures what I do any more. I mean, I do still write code, but I noticed a while back that, whenever anyone asked me the inevitable “so what do you do for a living?”, my answer stopped starting with the words “I am a” and began starting with a vague description of what I do. “I build software”, or “Oh, I build web apps”, or something else. Which is true. I do that. But I do a lot of other things, too. I just don’t think “coder”, or “developer”, or “programmer” or any other word that means “writes source code”, cut the mustard any more.

I am not my stack, dammit

I’ve never been a fan of being described as a “ developer”. Whether that something is a language – I hate being described by recruiters as a “Java developer”, especially since I haven’t written a line of Java in over 2 years – or a framework – some might currently say I’m a “Grails developer” – or even an entire field, such as “web developer”, the term always seems to do me a dis-service. I am not my stack. I am not pigeon-holed that way. I’ll give anything a go. This is a WordPress blog, using a theme I’m evolving myself. My [company website[( is build on Sinatra, and I have a spattering of Grails and Rails apps kicking around the Internet. It’s irrelevant. I’ve also written a bunch of messaging apps, and rich client apps, and all sorts of things, in ‘C’, Java, C#, whatever. None of them define me.

So I have long disliked being called a “ developer” because “something” can mean so many different things. Now, I don’t like the developer bit, either. It’s not what I do any more. Here are some examples of things I do in my day job, which do not make me a developer, are not necessarily required in order to be called a developer, and which are also done by people who definitely are not developers:

  • Provision servers
  • Build continuous integration environments
  • Script single-click deploys
  • Coach developers on how to code
  • Advise clients on their software architecture
  • Advise clients on better approaches to requirements capture
  • Help clients choose technology stacks for the right reasons
  • Define development processes
  • Challenge designs that seem inadequate or wrong
  • Ask clients questions that lead them to figure out that they meant something other than they first thought they did

Many will argue that some or all of the above is actually still within the remit of the developer. That doesn’t change the fact that when civilians hear the word “developer”, none of the above leap to mind. All that leaps to mind is “he writes gobbledegook on a screen, and makes a computer do something”.

So what do I do? I have no idea. I do something…with software…

I can write software. I can help others write it. I can take it from being an idea, to the inkling of a plan, to being source code, to being a tested, deployed artefact. I can decide what sort of platform to build it on. I can often build those platforms, in nice efficient, repeatable ways. I can script. I can automate stuff. I can motivate people. I can test stuff, I can even write automated tests. I can spot when a practice is worth doing, and when it might not be, after all.

I can’t define what I do in simple terms, but that’s ok. I’m betting that most people can’t, if they try hard enough not to.