Minimum Knowledge for Computer Programmers

I've been taking technical interviews for Software Engineer role for over a decade. About 80% of the cases I have to say "No hire" to our HR team about the candidate, whether the candidate is a fresh graduate or has 10+ years of technical experience.

This is somewhat frustrating to us - we need capable software developers to carry out the responsibility of solving real life problems using computer programming. Despite receiving lots of CVs and resumes, very small fraction of the candidates successfully pass through the first round technical interview. I never ask for runtime or space complexity. I never ask the candidate to write BFS/DFS or even binary search. I never ask to write the most optimal solution in linear or logarithmic time. I never ask any brain teasers - they don't show a software developer's true potential. Still, most candidates fail to show that they are capable of writing computer programs.

I ask the candidates to write simple programs. To me, the problems I give are solvable by a fresh graduate, who truly learned programming, in 5 minutes. It's understandable that the candidates don't sit for technical interviews everyday. It's fine to get confused and nervous. So I give the candidates 20 minutes to solve the same problem, regardless of their experience level.

I believe if someone claims to be a computer programmer, s/he must have the following capabilities at a minimum in terms of writing code in their favourite programming language:

  1. Must know how to manipulate arrays and lists. This includes iterating over the array/list in nested loop and finding specific value that met certain condition or constructing values from the array/list elements (like multiplying array/list elements with themselves).
  2. Must know how to manipulate string. This includes string operations like substring search, concatenation, reversal, iterating over characters in a string and perform specific task (like separating letters and digits). Many of these string operations are supported by library functions in most programming languages. A programmer should aware of that.
  3. Must know when and how to use associative array. In different programming language associative array comes in different name but they all serve the same purpose: storing values against specific keys.
  4. Must know how to play with numbers. For example, understanding the modulus operation, counting number of digits, separating the digits in a number, integer division etc.
  5. Must know how to traverse and perform operations on a 2D array containing numbers or strings.

After presenting the question which can be solved by a combination of the techniques above, I've seen many candidates show frustration by telling me that they're not competitive programmers, or they are away from competitive programming for a while. Without properly understanding the problem they immediately conclude that the question can be solved only by competitive programmers. But no, I never ask a question that can only be solved by competitive programmers. I ask simple problems which are solvable by a computer programmer of any experience level.

I consider the above capabilities to be the least requirement if someone wants to claim to be a computer programmer. Anyone who has the above knowledge should be able to learn most technical stuff with ease.

To view or add a comment, sign in

Others also viewed

Explore content categories