The Non-Programming Programmer

Back when I used to hire programmers (c 1990-2000) for a computer games company I used to run, we used to do a programming test during the interview and this weeded out a lot of people who claimed competence but really had none.

(My favourite example was someone who had written ‘Assembly language programming’ on their CV but didn’t know how to answer the question ‘for what processor?’ in the interview. Also, I interviewed someone once who, when asked what their hobbies were, replied “I smoke a lot”)

But what really astonished me was the level of BS on people’s CVs. People claimed to have written famous hit games when they had not (we knew the people who actually did write them) or people who claimed to have worked for MI5, the CIA or Mossad. If they had worked for these organisations they wouldn’t say so on their CV. If only out of self-preservation, never mind the Official Secrets Act. This made me think that a lot of the stuff on CVs that was harder to disprove was also BS.

In the words of Ronald Reagan: “Trust but verify!”

“Do not cheat and call your languages’ equivalent of str_reverse.”

Surely calling the use of built-in functions in a programming language “cheating” is somewhat excessive? I find it hard to believe you’d be looking for the kind of candidate that would prefer to invent their own broken-ass string parsing functions instead of relying on standard libraries.

I mean I understand what you’re getting at, but “Nooooooo! Stop cheating!!!” seems like a pretty poor way to handle your own failure to write proper explicit instructions :wink:

Well, the point is that they aren’t testing whether you can reverse a string or not. They’re testing whether you can come up with an algorithm to solve an arbitrary problem. String reverse is kind of a lame example when compared to what you’ll ever actually have to do, but it’s a reasonable test of whether you can think through iteration and loops.

Also, it’s not just programmers who have this problem, it’s really any skilled profession that doesn’t have a meaningful certification. I’ve seen it interviewing carpenters. 3D graphic artists are the worst, because everyone who’s a little artistic and has pirated a copy of 3d Studio max thinks they can apply for the job. We had I kid you not ten different applications whose portfolio consistent of the same 3D Studio tutorial.

More than a decade ago I applied for a programming position and sure thing they made me code the solution to a rather complex problem. As it was my style back then, I wrote comments all over the code and I added an about message on top, sort of like: written by…
I didn’t get the job. They never really gave me an answer as to why. A few months later, a very good friend of mine got accepted to another position on the same company. He called me a few weeks later to tell me that he saw code that I wrote in one of the company’s main product. When I asked to describe the code he described what I wrote during the interview. However, what gave the code away was my about message and my comments: they didn’t even remove them! They just blatantly used my code.
In the following interviews I had over the years whenever someone asked me to write code as part of the interview, I would point them to my web site, then excuse myself and I would leave the interview. I DO NOT WRITE CODE ON INTERVIEWS!
That shows nothing.
My background: more than 20 years coding in C and ASM for Unix, Windows, and Mac. Over 10 years of information security consulting where I find exploits and vulnerabilities for common programs

1 Like


Over the years I’ve used quizzes, on-site programming questions and take-home programming problems as part of of the interview and screening process. I’m always amazed at how much you learn by asking someone to write some code. I’m also amazed at how frequently people bomb these fairly easy problems. Sometimes I even have candidates that refuse to do the programming problem! It’s like they feel offended that I’m asking them to demonstrate the very skill I’m considering hiring them for. The nerve of me!

While I think I’ve gotten better at screening and interviewing over the years, I think the best approach I’ve found is to hire people on a contingent basis for 3 months (consulting contract) with the understanding if both parties are satisfied about the arrangement after that time, then they will be converted to full-time.

I feel compelled to point you to

There should be an international association that accepts software developers into its ranks after some sort of peer assessment process. I have noticed a few of these while browsing the web, but I haven’t had a chance to assess their effectiveness or reach.

Accountants, doctors, lawyers and engineers have such associations with exams and strict qualifying criteria – programmers should to. I’m sure that NPPs will still sneak through, but I think that it would help.

“Do not cheat and call your languages’ equivalent of str_reverse.”

I have to agree with an above commenter here. While I understand the intent of the task you’ve set, you make it seem like this having to add it is a bad thing. Frankly, my first instinct would be to shoot for that with the idea that “Hey, I know the language, DRY, and surely this is a trick question just to weed out the people that can’t focus on solving problems efficiently and quickly.”

Considering I could write the function myself without trouble, I’d be more likely, after finding out I’d been dismissed for using the native function, to post about the company as “a company that doesn’t even know the languages they are using and obviously using non-programmers to do the hiring.”

Basically, if you are going to ask for coding samples or actual demonstrations of code writing, make sure you clarify what you want. After all, while you want a coder, you also want someone who get’s the job done efficiently. And punishing someone for solving your problem within the limits outlined quickly and efficiently really suggests that maybe you aren’t a great place to work.

Note, I’m not suggesting that this is the OP’s work place. Rather, a warning to those who would use these methods.

I have to side with Ryan Bergman on this one. I’ve definitely been stumped by those academic-style questions before, and have grown to loathe them. Especially in the nerve-wracking environment of an uncomfortable interview. What those questions usually prove is not that I cannot program, but that I cannot remember the algorithm to do something off the top of my head. Give me the algorithm, and say “code this”, and I’ll be just fine.

But I really thing one of the bigger issues at hand is simply that most programmers have no portfolio they can show you. If all you ever work on are closed-source projects you don’t own the rights to, then you can never share more than a bullet-point in a resume about them.

This is one area where participation in open-source projects can be very important, in my opinion. It gives you something you’ve worked on, in a calm environment, that you can openly show to anyone who is curious. Of course it can be a double-edged sword, and many people may simply not have time to do that in excess to their day job. Regardless, it is one possible solution to a problem that we all seem to have.

Pfff…it’s easy to just say “they can’t even program”, but at the very least you should tell us what questions you’re asking. Maybe the guy who wrote that article is a complete tool on the phone and very off putting…who knows. Easy to throw grenades.

The funniest of them all was a woman (don't get me wrong but... thing are the way they are) who couldn't find the modulo result and wrote a small function which iteratively subtracted one operand from the other until it hit zero or a negative value and took the decision from there on.

Isn’t this exactly the sort of programmer you would want to hire?

She wasn’t incompetent, like you claim, just ignorant. But despite her ignorance she figured out a way to calculate the modulus anyway.

Programming is about solving problems. Later you may learn an easier way to solve that problem but the important thing is to have a problem solving ability to start with.

When I was beginning my professional career one of the first interviews I had asked me to write an array. This freaked me out and I couldn’t answer. Not because I didn’t know but because I felt like I hadn’t heard the question correctly. I had passed the little test the placement put me on (Getting a 70-odd percent in SQL, even though SQL isn’t my competence) and they thought I would be a good fit. The second interview had me do the exam by telephone. This sucked because you’re stuck on the phone, thinking of an answer, but have to break your concentration so they don’t think you hung up.
The third interview went much better. It was in person. We talked about my experience, resume stuff, and at the end they gave me a takeaway assignment. I had sent it back before the end of the day and had another interview a few days later. Although I was offered the job I didn’t take it.

I do believe that the interview process can be a nerve-racking experience. Like dating, when you’re taken everyone wants you. You’re confident, experienced, have all the right answers. You are polished. When you’re looking for work you are under pressure, lack confidence, and the stress can make things fall apart, quickly. Answering simple questions can send your mind racing.

BTW, I didn’t take the job because I had made my mind up to do some travel. Malaria shots take 2-3 weeks before you can travel. Without worrying about being accepted, the interview was less threatening


Just write bad code. What’s the problem? If all they want to see is whether you can program at all, doing a bad string reversal should be sufficient to differentiate from those who can’t even do that.

While I tend (and want) to believe that application development is not computer science, I also think that some basic knowledge of computer science concepts are required, even if we always work with APIs rather than our own algorithms.

For the interview purpose I would assume that a string reversal that works on ASCII only is sufficient to show that I have an idea of what’s going on. Framework-provided methods work on unicode as well. Excellent, that’s why we use them.

Hey Now Jeff,

Programmers should be able to code & use SO for assistance with detailed questions. Nice Post.

Coding Horror Fan,

As sad as this might sound I have found this to be true in my 10 year career as Software Developer and Software Engineer.I had the opportunity to interview people for Software Engineer or programming positions in my career and even people with master degrees in this area could not code a simple program like just writing a function that receives 3 integers and return the max or the min of the 3 integers. I even try this question letting people know that they can do it in pseudo-code( so they don’t feel the pressure on being perfect with the syntax of the language) with the same result.

What do you think?

The problem is with languages which hide too being taught as the first programming language. I have had folks trying to brainwash me into believing me that knowing the details and the way things work under hood is a waste. A closer reading of will give you an idea of things to expect.
I am not against Java (or any other easy to use language), learn to write code and understand how it works on the machine before thinking of abstractions. You cannot write programs knowing only design patterns, you still need to code!

Whew, luckily I’ve been able to solve all the questions in the comments (fairly quickly) and I’m not even a programmer. Anyone hiring?

Wow, where to start?

I think there should be some basic competency programming test, but it should be related to what the actual business needs. Here are two really quick examples.

I code in and C# for .Net1.1+. I have never taken a programming class. I am just a natural at learning and problem solving. At any rate, I was asked in a phone interview the difference between a linked list and an array. The company does not do low level programming or code for mobile devices which would make the performance between the objects perceptible. At any rate, I didn’t get a callback. After my friend/colleague pointed me then to a site which has the “10 most common asked phone interview questions”…Well can you guess what I was asked on the next phone interview?

I had an actual in person interview with a web travel company. It was for a simple front-end/javascript/html/css development position. One of the interviewers asked me this complicated question regarding sheep, herdsmen and migration. I worked out the formula. He kept pushing for a different answer. I had no idea what he wanted. It made no sense. In the end he says “I was looking for ‘Triangular Number’”. Well I didn’t go to school for math and have never heard that term of art for that formula. It wasn’t enough to have solved it, but he wanted the exact term. AGAIN, this was for a simple front end job, much less complicated/difficult than was I was doing at the time.

After all, most jobs aren’t at google or microsoft. They are corporate coding jobs. And just because you can solve a logic/programming problem doesn’t mean you can solve complex business problems. These are the problems I face day to day.

I used to work as a fake programmer. Got sick and fed up with programming. Nowadays i’m a fake doctor, better paid and more interesting. :wink:

An hiring manager not asking a programming applicant to write a simple program (or an applicant refusing to do so) would be like hiring a chef without asking them to cook you something first. Absurd. Of course, at a sufficient level of fame this may not be necessary, like already having been the head chef at a fantastic well-known restaurant, or verifiably the sole/main programmer of a great product. But that’s not really who we’re talking about.

Aside to Matthew Stibbe: other than the tiny percentage of CIA employees doing covert ops, you may not be able to talk specifically about what you did, but your employment history itself is not a secret. For most people working for the CIA and similar agencies, their friends, families, and subsequent employers are totally aware of where they work. (That’s not to say that the people you interviewed weren’t BS’ing you. But “if they did work for them, they wouldn’t be able to say” is simply untrue.)