Jiva Technology

What makes a good software engineer?

With so much software being produced these days, it seems as if no product can be released without a dash of software added to the mix. We’ve hired many software developers over the years: everything from junior developers straight from university to grizzled veterans who can still spell Cobol. But surprisingly, it’s only recently that I can remember a conversation where we talked about what actually makes one software developer better than another. That isn’t to say that cv’s and skills aren’t heavily scrutinised, tricky interview questions devised and code tests demanded in abundance. But somehow, amongst all of this, there was an unwritten agreement that a developer with a neat code test, the right skills and a passable interview was good to go. It should matter, because good developers are considerably more productive than average developers. Some argue up to 30 times more productive, which sounds a little outrageous, but we get the gist.

Oddly enough there seems to be universal agreement that specific expertise is overrated, so that huge list of skills and products mastered doesn’t mean a huge amount. A decent developer can pick something up quickly even if they haven’t used it before. Which makes me think that a good developer should be quick to learn. The reality is that new stuff is coming out all the time, so the shelf life for all those skills is fairly short.

Some folks will add in general skills like, “good communicator, hard worker and team player” but if we employ the eternally useful Law of the Ridiculous Reverse, who ever wanted to hire a bad communicator, a lazy tyke and a rubbish team player? And in any case, aren’t those qualities that you’d look for in any new hire? So do they really make a difference in the specific case of software developers? Probably not. There is an argument to be made about one particular generic attribute, which is time management. In theory, we should all care about time management, although the advent of social media has perhaps made goofing-off irresistibly attractive. But there is something different about managing time in a software development project. There’s a cadence associated with agile sprints that feels a little like the rising and falling of the tide; with the inevitable mad dash at the end to get final development, bugs squashed and code pushed in time. Time management needs to include an ability to change gears when needed. To work incredibly intensely at times and feel okay about lessening the pace at others (no one can work at pace indefinitely). So maybe there is such a thing as developer time management, which could be the reason why GTDs are so popular in the developer community.

So we haven’t really got that far: good at time management or changing gears and a quick learn doesn’t feel like an exhaustive list. But there is one skill which seems to very prevalent amongst the best developers I’ve come across. Call it problem solving, critical reasoning or whatever you like, the best software engineers share this with the best engineers of all disciplines. Its the ability to understand a problem at more than a superficial level, to understand what is the core of the problem, the difficult nut to crack and to sketch out solutions that may not be from the standard recipe book. The greatest engineers in history … I’m talking to you Isambard Kingdom Brunel … were exemplars of this trait. Of course a major part of this is an ability to empathise with the end user, with the person whose job has to be supported or automated or otherwise coded. Its understanding that its not just about the process, but the way that human beings interact with the process and adopt it, or not. Which in turn suggests a curiosity about the problem and the people that is too often absent in projects that I’ve seen in the past.

So perhaps we have an answer to the question, “what makes a good software developer?” A quick learn who has good time management skills and critical reasoning skills; is curious, empathises with end users and a decent time manager. So far, so easy. Now how do we design an interview process to test all of that.

Contact

Regus House
1 Friary

Temple Quay
Bristol
BS1 6EA
United Kingdom