I’ve spent a long time in IT. In fact, when I started it was called Data Processing, which is a term that hasn’t been in vogue for 20 years. In all that time, I’ve had two kinds of job — development or operational. So, I’ve spent over thirty years either designing and building systems or man-handling them into a form which makes them usable by other people.
Along the way I’ve seen a lot of development techniques come and go, and I’m not just talking about the techniques used to produce software, but also the organisational aspects of the process. After all, you can’t help developing a firm set of beliefs about what’s important over that kind of period.
Everyone in the industry has seen the adverts mandating “at least five years experience” in some very specific technology, or in a very focused area. In fact, about a year after Sun announced Java I saw an advert for Java programmers that demanded at least two years experience. I’m guessing that was some “jobsworth” in HR messing with something that they didn’t understand.
So, what is important for a software developer? The public perception of programmers is way short of flattering — young, overweight, no social skills, and limited hygiene. Well, I have met one or two like that, but only one or two — the last one got sent home with a company supplied bar of soap and instructions to use it. I’ve also had friends tell me firmly that programmers have no social skills because they never speak to other humans.
Well, after working in a lot of different organisations and meeting hundreds of programmers, in my experience the best share a small number of abilities:
- think analytically
- communicate well
No one ever argues with the second on the list, and you can usually persuade people that the first is true (more so since hacking appeared in newspapers). It’s the third that gets them, and gets quite a few software developers as well.
Perhaps this is where I need to define the term “software developer” — for me it’s someone who can discuss a requirement with a person who isn’t necessarily IT savvy, produce a design and get it implemented. Now I know that the software development process gets split into more stages than these three, but it’s not the process I’m concentrating on, it’s the abilities of the person. And communication is a large part of this.
After all, a piece of software only exists because someone, somewhere wants it. It might be you, it might be NASA, but someone wants it and they have to communicate what they want to the developer. If you can’t or won’t communicate, then you’re not going to make the grade, and the customer isn’t going to get their product. Which, in the end, means that you’re out of a job.
I’ve been part of the interview process in quite a few places over the years, and they all take slightly different approaches to try and understand how good a would-be programmer is. I’ve seen code samples handed over (in both directions) for criticism, an expectation to produce sample code in a few minutes, even a multi-choice questionnaire. None of them guarantee to identify a good software developer from the interview.
My preference is for a set of formal questions largely but not exclusively IT related because you need to get the interviewee to talk about themselves. It’s difficult at times, because most of us are a bit nervous at interviews. For anything other than a junior role, get them to bring along some code they’ve written and be prepared to talk about it. You want to see how they talk about something that they’re proud of.
My name is Paul Wilson and I’ve spent 30+ years in the IT industry, mostly in software development or operational roles, and I’ve worked mostly in the UK for large and small organisations, central and local government. These days I’m in sunny Western Australia doing software development for a local University. In my spare time I’m part way through an MSc and contemplating the challenges of setting up as a part-time eBook publisher.