It should come as little surprise that as the world becomes more complex, we’re increasingly reliant on digital solutions. These digital solutions require experienced programmers to write, check, test, and debug countless lines of code.
And with more demand for development work than ever, we’re always looking for talented programmers with a knack for logical thinking and problem solving. It’s the reason why we’re running rolling recruitment drives.
But after the latest round of recruiting for my team, I noticed a common theme that set off several alarm bells in my head. Before I get into the details, let me first explain our interview process.
Interviewing that goes beyond coding skills
Prior to interview, we set an online test including three separate tasks – two covering general programming and one covering SQL skills – for our candidate programmers using Codility. The two programming tests are most interesting to me because their simplicity and underlying prioritisation are key to deciding on a new hire.
In other words, while core coding skills are, of course, important, I’m most interested in seeing how candidates prioritise their work – helping ensure they’re the right fit for how we work as Agile teams at Headforwards.
Firstly, we give the candidates a straightforward specification and ask them to write a new function, adding a bit of code to what only amounts to a dozen lines. And then, we give them a piece of existing code we already know fails under certain conditions, asking them to fix it by only changing a maximum of three lines of code.
I hear you say this is all fascinating, but why is it important? You see, it’s not necessarily the scores candidates get that’s the interesting thing here (although they’re obviously important). It’s how the candidates got to the end that I want to see – in essence, showing their working.
In fact, only one candidate out of ten scored 100% on the test, with the rest scoring lower than anticipated. And remember the alarm bells I mentioned earlier? By drilling down a little further into the candidates’ results and methods, I noticed something critically important.
Leaning on complexity under pressure is a false economy
Under pressure to complete a test within the allotted time, most candidates overcomplicated their work, adding unnecessary methods to their code in an effort to overcome potential bugs. What’s more, many failed to prioritise their tasks effectively, neglecting to identify the advantage of covering off the quick SQL task before tackling the more time-consuming programming tasks.
It all made me look at my own experience working as a programmer over the past four decades. As I went from extended contract to extended contract, being offered new roles and relied upon for issue diagnosis and quick demonstrations, what was my secret to success?
The conclusion I reached is the same reason why many of our candidates weren’t successful: in an effort to impress, they rejected the simplest route.
The truth is, the simpler the code, the easier it is to both understand its purpose and debug – not just by yourself but also by whoever has the task of maintaining your code in the future. If you can keep your code simple, you’ll be a step closer to the promised land of self-commenting code.
Encouraging our developers to “show their working” pays dividends
In the case of our applicants, they’re encouraged to write messages to the console at regular intervals, encouraging them to produce the code in small chunks. It also helps them demonstrate what they’re trying to achieve, allowing them to see any logical flaws before submitting their final answer.
While it’s easy for me to say “keep things simple”, when it comes to modern development and even demonstrating your mettle as a developer, simplicity can take many forms. Here are the three steps I follow:
- Start by breaking the problem down into its core issues
- Then focus on and isolate the main issue or requirement
- And if the solution is object orientated, build the simplest object using a standard design pattern
I believe this philosophy has stood me in good stead over the years. If you ensure the core fundamentals are covered, everything else will fall into place. And it’s one of the main reasons I joined the Headforwards team. Regardless of your role or area of expertise, the company’s commitment to Agile practices ensures that simplicity reigns supreme. It ensures faster development and a far better end product.
Straightforward, Agile software development for the masses
If you’ve had enough of complexity, we’d love to hear from you. Our dedicated software development teams pride themselves on building great software in timeframes that suit you.
To learn more, get in touch with us today.