Friday, 26 April 2013

Know your theory

How well do you know your theory? 

The explosion in software technology in the last 20 years, specifically in the software development arena has given birth to experts in certain and specific technology territories. Employees exposed to dedicated technologies or solutions over a duration will characteristically furnish themselves as experts in specific technical areas. This however is perfectly natural since with extended practice anyone becomes an expert.

Technical interviews are hard. They are hard because the interview questions can be chosen from a wide technical landscape. The interviewer will certainly ask questions which pillar the role offered but could also ask questions designed to either snag the interviewee or, boost the ego of the interviewer. It is highly likely that the potential candidate will not answer all the questions correctly specifically if the interviewer asks fruitless questions on finer technical details. It is impossible for the candidate to know everything.


Therefore a good strategy in a technical interview is to ensure that the candidate understands, and really does understand programming basics regardless of which technical paradigm surrounds the potential role. Aptitude is the ability to learn oneself into the position. Essentially asking the question, does the candidate exhibit the qualities to quickly learn themselves into the position. During the interview, the interviewer should determine if the interviewee satisfies this premise. Arguably, organisations will want to fill positions with team members who match the skills of the position. A good developer who really understands the fundamental basics will surely satisfy the sought after aptitude and once hired quickly fill the technical voids as required by the job description.

The answers to the sample programming theory questions below will indeed consciously acquaint the interviewer to the level of theory understood by the interviewee.

What are the principles of object oriented design? (Hint: there are only 4)

What is polymorphism?

Why do we do polymorphism? Least. what is the purpose of polymorphism?

What are the purpose of private methods?

What is the difference between a stub and a mock object?

Our unit tests take 45 minutes to run, what do you think could be the problem?

Explain what is the difference between the factory method pattern and the abstract factory pattern?

What is REST and how does REST work?

Are you familiar with SOLID?

Explain what is the Liskov substitution principle?

What are the advantages and disadvantages of database indexes?

What is velocity and how is it measured?

How do you technically keep up to date?

In an interview, a candidate will claim to be an expert in a certain area, boasting their strengths. Their strengths have been of course moulded from years of not deviating from the technologies described by their peers. Unfortunately strengths may not always be enough. Only once a developer truly understands the basics of programming theory can they consider themselves an expert.


  1. Interesting thoughts! There is a lot of "Specialists" out there that don't know the "basics" of object oriented programming that you described.

    Another way of testing a candidate is to use the classic "Fizz Buzz Test" ( But with a twist. The logic should be unit tested with 100% code coverage. That usually shows what the programmer is made of.

    1. Great, thanks for the FizzBuzz tip. I particularly like the problem since it seems really simple at first but can soon become complex without careful consideration and application of the basics.