Continuous Automation: DevOps • Agile • Leadership • Business Innovation: What the hell happened?
Continuous Automation: DevOps • Agile • Leadership • Business Recovering from Failure
Continuous Automation: DevOps • Agile • Leadership • Business You’re living in a buzzword world

The Luhn Interview Equation


Recently at an interview I was asked  to whiteboard my own implementation of  a Luhn algorithm. This was an exercise which made me think a bit afterwards. For those unaware, the Luhn algorithm was written in 1954, it is a function designed to check the validity of  crypto numbers (credit card, SSN, or IMEI numbers etc.).

I managed to get through the exercise on the spot, but what I realized afterwards is that since its inception in 1954 its been re-invented in every known programming language imaginable. This begs the question of “WHY would ANYONE EVER want to re-design something that has been solved  MANY MANY times, Do I really think I can do better than those who have come before me?”, and finally “Who the invents their code on a whiteboard?”

It made me think a bit more about what it means to truly engineer software. Engineering software can be a complex exercise but does it always have to be? NO.  Einstein put it quite eloquently:

“Any fool can make things bigger, more complex, and more violent. It takes a touch of genius-and a lot of courage-to move in the opposite direction.”

Below is a Java example of the Luhn algorithm for your own edification:

Researched version:

Homegrown Version (not my code):

Which do you think is better? Which is the proper engineering approach to implement?

What I  realized some time ago is that software engineering is a skilled craft like any other. The engineering craft requires research, problem solving and communication. In software engineering reinventing a wheel that already exists is almost NEVER the right way, EVEN as an interview exercise. By re-inventing it yourself or requesting another to reinvent it your essentially touting the following:

  • That the code you are writing is better than those who came before you
  • That research is not a valued part of software development lifecycle
  • That testing a persons ability to churn out algorithms under pressure on a non standard medium has implications on how they can perform the job.

None of these are true. Some interviewers will EXPECT that the interviewee will use the libraries and tools already provided and will FAIL you when you try and re-invent it. These type of “dance on the spot” implementations of the hiring process do nothing but do the company a disservice.

Some interviewers use these tactics to belittle or dominate their interviewees. Others use these tactics to verify one can create algorithms. Either way the result of this tactic is the following:

  • The people interviewing get bad taste for the company and dont (unless too stupid to realize) want to work for the company.
  • The talent pool your looking at shrinks mainly because you pushed qualified candidates away.
  • Potentially high value candidates dont want to work with junior engineers who employ this tactic
  • The culture your encouraging is one which renounces historical accomplishments, and good research in solving in computer science problems
  • The people who your hiring are egotistical, difficult to communicate with, and self serving


Just as the interviewer is looking for tells about the candidates ability to perform the job, the candidate is just as much interviewing the company. With the advent of modern social media a companies reputation is hinged on how candidates perceive the interview process, the people who work there, and the culture of the organization. While a hired candidate MAY have an impact on the organization. the interview process and reviews posted on social media WILL have an impact on the reputation of the organization.

Negative reviews on social media WILL stifle an orgs ability to procure talent. Below are some things to consider when interviewing people:

  • Were the interview tactics used fair and conducive to the culture the company wants to market?
  • Were the interviewers friendly and open?
  • Were reasonable efforts made to make the candidate feel welcome and accepted?
  • Did the candidates questions get answered?
  • Were the interview questions ridiculous or designed to interrogate?

It is important to consider these things when talking to people. Social media has as HUGE impact on how a company’s brand is perceived.


In interviewing people we can vet the candidate successfully by simply determining what their methodology would be in debugging software. What are the tactics they use? How would they go about finding a solution to technical problems? Do they possess the experience to solve problems by  utilizing google and the tools available.

Conversate with the candidate. Sounds simple right? It’s not an interrogation but rather a determination of qualifications and passion for craft.

By doing this we also determine non quantifiable aspects about the candidate:

  • Personality
  • Communication ability
  • Wisdom
  • Intelligence
  • Body language.

If we dont take the non-quantifiable into account we WILL make some grave mistakes in hiring talent. Hiring an introvert who cannot communicate and writes a ton of unmanageable code is like hiring a hermit who could care less about the business requirements of the software and only wants to work in an  isolated world.

So lets make it a point to interview people with care and determine best fit for personality and problem solving skills. Lets focus on research and pave a path forward that best utilizes the paths already paved.



[Total: 0    Average: 0/5]

Category: Engineering

Share this Article

One comment

  1. This is an excellent point, that needs to be talked about more. Interview exercises that are gimmicky or sound cool can do a lot more damage than good.

    Every recruiter or hiring manager needs to continually examine their interview process and make changes to achieve exactly one goal: Finding a process that is effective at identifying and engaging the candidate you really need for this position.

    The feeling of momentary satisfaction that you “outsmarted” or “shook up” your candidates is not going to last beyond your next coffee break and it is definitely not going to outweigh the frustration of having to settle for the wrong candidate because none of the most talented workers chose to accept your offer.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Article by: jmcallister