Seeking a Scientist, Mathematician or a developer......?

Recently, a friend sent me the link to a coding challenge, run by a large chip manufacturer, run on a popular online code test environment. It was in part to win a prize, though in reality, I suspect it was to weed out potential future recruits. I signed up off the cuff, not because I was interested in a new position, but as an avid developer, I always relish a chance to test my abilities. However, apart from being a suitably complex challenge, I discovered, that while such environments may be suited to the quizzically minded of us, the Sudoku players of software if you will, they may be far from the ideal platform for exposing potential great candidates, or even good and well-rounded software developers.

At my Initial overview, several things popped out at me as to the platform used in this challenge. First, its timed, this already removes the ability to undertake one of the most important skills of a developer; research, trial and error, the art of asking questions. With only two hours available, the only solution, in my opinion can only be a rushed solution, most likely messy, 'un-optimized', and something which would not in all likelihood, stand up to scrutiny in real life application or situation. Of course, not withstanding some highly intelligent challengers, who may have no problems, the regular Dev, will most likely struggle.

Next, the description of the challenge. Well if one actually is able to weed out all the blurb in it, it actually takes quite a few times of reading it, to actually understand what is required. This is a common failure in modern software recruitment and development. The importance of requirements (the specs) in Software Development is often heavily underestimated, and this challenge it was no different, the 85% of propaganda removed allowed the remaining 15% of the actual details of the challenge to be seen. This time taken to clearly establish the solution specifications obviously eats a wide chunk of the allotted time.

Quite clearly, even us less scientifically and mathematically minded developers could see in this particular challenge, the actual solution rested on developing a clear algorithm for sorting an array and counting the number of sorting steps.  Such a problem is a common one. However, encasing it in a timed environment, does indeed only serve to expose the far more mathematically minded of us. It really has nothing to do with the code at all. Perhaps it was also testing about being under pressure, but again, is this truly a reflection of modern software practices?

One of the biggest oversights of this challenge in my opinion, is isolating the solution to provide the ability to solve the problem by using only Java or C#. Of all the languages available to software, the kind of solution needed here, could be far better handled in a language more designed for speed and optimization of this kind of manipulation. Now don’t misunderstand me, the challenge is a fair one in relation to overall software problems, it is not an overly complex or impossible problem, but in retrospect, far more suited to a solution using a more functional and data orientated domain specific language such as Scala or Clojure, or even Python. Isolating it to only be written using Java or C# limits time and the range of optimal libraries and functionalities, to use (not to mention the version of Java used is not illustrated, meaning making use of more functional aspects of Java 8/9/10  is unknown without more time and research).

I’m not a particularly huge fan of timed skill tests for software development, either online or in interviews. Of course, some claim to test the coding ability of a candidate, but in reality, they remove the reality of software jobs from the interview. They may well test basic ability, but in my many years of experience, I have come to discover software is very much a collaborative and communicative industry. The sharing of knowledge and ideas, much research, trial and error, and something which cannot really be compressed into a 2-hour, enclosed environment challenge.

Certainly, it can also be argued that it’s a quiz, and in this case yes, the environment suits, yet the platform and the particular challenge was worded as so to explain that it was also in part to illustrate what the particular company sees as a good developer and candidate. It is here I disagree, as do I disagree with in interview software tests that are reduced to an hour or so. Sudoku and Crosswords are great platforms for testing our mathematical and logical reasoning, but as for testing for wider skillsets, I’m not convinced

I fully appreciate it could just be my own shortcomings in my software skills. For me, once I had deciphered the specifications out of the blurb, the actual required solution approach wasn’t to difficult to understand. It was the timed environment and the language (Java / C#) that really slowed my reasoning. I am a qualified Java Developer, but to me, the challenge was not about knowing the language but more about how on earth to use it in the time allotted.

I pride myself (humbly of course), on many years developing software, and generally consider myself a fairly good developer. I'm not particularly introvertedly minded when it comes to writing code, I usually approach problems from a wider perspective, ask questions, fail a lot and try again, yet I absorb and learn much from this practice, and my career has certainly benefitted from it greatly. This is perhaps why this particular challenge and environment irked me so, it was so opposite to my opinions and approaches to software, and reflected those times in the past where, I experienced poor interviews, employers, and just an out of touch industry.

This is a rant, no doubt about it, but in a vast and rapidly growing industry, surely, doesn’t it pay to be in touch with the ecosystem, to be in line with the latest practices, and not be stuck in one’s own world? Being a large multinational with x’ hundreds or even thousands of employees does not really protect you from using dated and irrelevant practices to build your business. Know what you need, and understand what is available, don’t make models on what you think is an ideal employee if you misunderstand the role.

Oh yes, and I certainly need to work on my algorithms....!

 

 

 

 

To view or add a comment, sign in

More articles by Stephen Davies

Others also viewed

Explore content categories