Software development is an enticing career, made the more so by the popular fascination that has come with the consumerisation of technology. But just what does it take to be a top software developer?
The first thing to note is that software development is not for everyone; only a very select few have the right profile to do it well (and equally importantly, to love doing it). To get an idea, of a thousand-odd people who applied for an intensive software development course, only around 60 got in and just 30 graduated.
And it’s not necessarily the abilities you might think that make for the best developers. Most people immediately say ‘logical thinker’ or ‘math wizard’ when asked what they consider the ideal attributes for a prospective programmer to be. Indeed, when computer science was first introduced to South African schools, you weren’t allowed in without high mathematics and science marks. The authorities of the day had definitely missed a trick – software development requires a great deal more than the stereotype would have you think.
Some of the best programmers are those individuals who enjoy (and consequently do well in) humanities and semantics. The former requires an analytical-critical approach that makes problem solving a more creative and natural process, whilst semantic abilities (such as those involved in languages) have a more obvious application to writing computer software. People who are creative, diligent, think laterally and have a passion for detail, are those who tend to flourish.
It is also for those who have a fascination with understanding how things work in minute detail. If you like to take things apart and fiddle, to learn things from scratch, to seek out what makes things tick, you’re likely to be at home with programming. You’re not just interested in using a spreadsheet, you want to know how it works – and how you could do a better job next time, too.
It is an appreciation of the nuances that goes a long way. Often, developers will have ‘deep dive’ interests that require considerable technical knowledge and insight. Things like wine appreciation, astronomy or photography, for example.
Of course, a considerable interest in computers and computing will help. While you don’t have to be a geek, it definitely helps – there is certainly some truth to the stereotype.
Perhaps surprisingly, formal knowledge of logic isn’t as important as is generally thought. Instead, those with an intuitive grasp of syntax and meaning have a good head start. Learning the applied logic in software development often follows naturally.
Computer languages are difficult to grasp at the best of times, but if you are the kind of person who knows a sentence is wrong without necessarily explaining why, then you can probably learn the logical thinking that’s necessary in programming.
But it is the approach to problem solving that is most important. Often, software problems are, on the face of it, quite simple in theory. In practice however, they require a good deal of finesse and creativity. It’s a bit like pulling into a complicated parking spot where constant adjustments are needed to get the vehicle in safely. The problem itself is easy stated – “get the car into the spot” but there are many approaches that could be taken, each with its own set of risks and benefits. Similarly, there’s rarely a single correct solution to a programming problem.
How do we at Stanchion identify programmers who will fit into our team? First there is the particular ‘type’ or ‘profile’ that we have learned to look out for. We’re also keen on using established aptitude tests that evaluate lateral thinking and the ability to hold long, complex processes in mind to solve a problem. The tests also check the candidate’s capacity to understand complicated linked instructions and whether or not they can manage many levels of indirection and referencing.
Finally, we try to make sure that candidates love what they do – programming requires a great deal of effort and energy if it is to be done well and only those who enjoy the task will be able to assert themselves.
Keeping programmers happy includes paying attention to the usual suspects (such as financial reward, providing a great working environment and flexible work conditions). However, this alone is not enough – programmers need to be constantly challenged and to continuously learn. Software developers love engaging tasks that test their abilities and which scratch their itch to know how things work.
As for formal qualifications, it doesn’t hurt to have a grounding in computer science. Adding an appropriate university degree to the right profile and attitude goes a long way. We look for these kinds of degrees as the formal training and disciplines tend to make things easier for programmers later on in their careers.
By Shaun Baker, technical director at Stanchion Payment Solutions