The Art Of Recruiting Software Developers In A Tough Market

Hiring software development talent – real talent – is a multi-faceted skill that lies at the crossroads of social networking, technical acumen, process management, and intuition. Anyone who has ever had hiring responsibility understands all-too-well the extent and depth of the hiring challenge.

Particularly, the most challenging fact is that the hallmark qualities of exceptional software engineering candidate are extremely difficult to evaluate. How do you explore a candidate’s ability to innovate and think creatively? How do you determine if he’s a team player? How do you diagnose her ability to take constructive feedback?

Beginning: Filling the Pipeline with the Best

The process of finding and hiring the elite few begins long before the interview itself. In fact, a systematic approach to properly identifying potentially qualified candidates can streamline and increase the efficiency of your entire recruiting process significantly.

Assessing Software Developers’ Technical Acumen

An effective determination of technical proficiency goes far beyond the nuances of a specific programming language or technology. While these technical details should certainly not be ignored, they typically are not the most important element of the evaluation process.

At CodeGround, our recruitment philosophy is simple. Make the recruitment test as closely aligned with actual job as possible.

The best way to filter candidates for a software development role is by asking candidates to write code to understand their programming skills. As a company, you should only be chasing next customer, not chasing next employee.

For example:Consider the following coding question that serves as an assessment of basic coding ability:

Write a program to return true if an input string is a palindrome and false otherwise.

If a candidate cannot write code to meet the basic coding requirements of the question above, that candidate is not fit for a role in software development.

For more advanced assessment of coding ability, we encourage recruiters to test the candidate’s understanding of Data Structures.

A cache of capacity N, N > 0, supports the following operations:
PUT (K, V), where K and V are integers - The value V is added corresponding to the key K. If Key K is already present in the cache, the old value is replaced by the new value. If the capacity of the cache N, is exceeded, the Least Recently Used element (from a time perspective) is discarded from the cache.
GET(K) - Returns V if key K is present in the cache. Else, it returns null.

Both, PUT and GET operations count as usage. Therefore, whenever an element is added using PUT or fetched using GET, that element immediately becomes the most recently used element (used latest from a time perspective).

Consider the question above. It is part of our DEMO Online Assessment Tests, specifically this Programming Test.

It tests the candidate’s ability to instinctively figure out that the best data structure to track usage by maintaining a doubly-linked list of key values, ordered such that the Most Recently Used element on one end and the Least Recently Used element at the other.