“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.”
— C.A.R. Hoare, The 1980 ACM Turing Award Lecture
Planning, developing and maintaining code is an exercise in code complexity. If you’ve worked on large software projects for a long time, you know the pain of helplessly watching the project get more and more complicated . . . until it must be written off. The answer to why it happens lies in code complexity and how it is approached.
Types of code complexity
Broadly, code complexity is of two types: essential complexity and accidental complexity. The former is what a software becomes because of its functionality. For instance, if a web service needs to combine data from several social networks, analyze it for interesting trends, and provide suggestions to users, the code will easily cross several thousand lines of code and require extraordinary dedication to understand. Accidental complexity is different, as it gets baked into a system because of design decisions that programmers take early on. For instance, if a software was built to support only 100 users, but now must support 10000, there’s a big problem.
Programmers save the day
Nothing much can be done about essential complexity, so the secret to software success is minimizing accidental complexity. In other words, hiring programmers that are sensitive to design and resource constraints, rather than those that happen to know only how to code. And what can help us in identifying good programmers? While nothing beats evaluating a person on a live project, there’s rarely the luxury of time to indulge in such extensive measures. At the same time, resumes and interviews hide more than they reveal.
Enter online coding tests, that can help you identify the essential habits in a good programmer early on. Online coding tests refers to programming assessments that are conducted online; this format is much superior to the paper-based one, as it benefits from the interactivity and advantages offered by technology.
How online coding assessments help
Much of software development is based on experience, sure, but there are some traits that good developers exhibit early. Thankfully, these can be measured through online assessments.
One of these parameters is the time taken to solve a problem. In an ideal world the programmer would have all the time in the world, but real-world business pressures dictate otherwise. And it’s not just the timelines that have to be met; quality is non-negotiable, too. An online coding test helps you measure how long a candidate takes to solve problems of varying complexity, giving you insight into his skill development in future.
Another highly important, and woefully neglected, aspect of programming is testing. Too often project managers are in a hurry to finish the project, and the product is released without proper testing. The result is more rework and loss of business opportunity as critical bugs in software are discovered embarrassingly late. With an online coding assessment, you can design test cases to check what level of testing quality a piece of code meets, which is a direct indication of how maintainable the software produced by that programmer is going to be.
And then of course, there’s the test of how thoroughly the programmer knows the basics, which indicates the attitude they have towards software development.
Software is tricky, no doubt, and hiring the right talent is even trickier. But online coding tests empower you to take the right first steps. Join the wave!