Why programmers can't program

Original author: Jeff Atwood
  • Transfer

I was incredulous when I read this observation from Reginald Braithwaite :


Like me, the author has problems with the fact that 199 out of 200 applicants for each programming task cannot write code at all. I repeat: they cannot write any code at all .

The author he means is Imran Ghori, who obviously turns his back on many programmers who cannot write a simple program :


After considerable trial and error, I found that people who have problems writing code do not just struggle with big problems, or even small problems (for example, create an implementation of a linked list). They have problems solving tiny puzzles.

So I decided to develop questions that could be identified by these kinds of developers, and came up with a class of questions, which I call “FizzBuzz Questions,” in honor of a game that children often play (or are forced to play) in UK schools. An example of a Fizz-Buzz problem is the following:

Write a program that prints numbers from 1 to 100. But for a multiple of three “Fizz” values ​​instead of a number, and for a multiple of five “Buzz”. For numbers simultaneously multiple of three and five - "FizzBuzz".

Most good programmers should be able to write on paper a program that does this in a couple of minutes. Want to know something scary? Most computer science graduates cannot. I also saw that candidates for a senior programmer spent more than 10-15 minutes to write a solution .

 
Dan Kegel had a similar experience hiring entry-level programmers :


A surprisingly large proportion of applicants, even those with master's and doctoral degrees in computer science, fail, they are asked to solve the simplest programming problems. For example, I personally interviewed graduates who cannot answer "Write a cycle that counts from 1 to 10" or "What is the number after F in the hexadecimal system?" Less trivially, I interviewed many candidates who cannot use recursion to solve a real problem. These are basic skills; anyone who doesn't have them probably hasn't programmed enough.

Speaking on behalf of software engineers who are supposed to interview potential new employees, I can say with confidence that we are tired of talking to candidates who are hard to work with in programming. If you can successfully write a cycle that goes from 1 to 10 in each language of your resume, can do simple arithmetic without a calculator and can use recursion to solve a real problem, you are already ahead of many!

 
Between Reginald, Dan and Imran, I'm starting to get a little worried. I am more than ready to give concessions to newly-minted programmers at the start of their career. Everyone should start somewhere. But it disturbs me and is outraged that any so-called programmer will apply for a job without being able to write simple programs. This is a slap in the face to anyone who makes a living by programming.


The significant gap between those who can program and those who cannot program is well known. I assumed that the one who is applying for work as a programmer has already crossed this abyss. This is apparently an unreasonable assumption. Apparently, preliminary screening of candidates by questions such as FizzBuzz is simply necessary , otherwise we will wastelessly spend a lot of time on interviews with programmers who are not such.


So that you do not think that the FizzBuzz test is too simple and dazzlingly deliberately light, the commentator on the message of Imran notes its effectiveness:


I would not want interviewers to dismiss the [FizzBuzz] test as being too easy. In my experience, it is truly amazing how many candidates are incapable of the simplest programming tasks.

 
It might be foolish to start interviewing a programmer without first looking at his code . At Vertigo, we need a sample code before we move on to the phone interview phase. And our on-site interview includes a little coding exercise. Nothing complicated, just a basic exercise that allows you to work out the task of creating a small application in an hour or so. Although there were one or two noticeable spikes, for the most part this strategy worked well for us. This allows us to focus on real-world software development in interviews without resorting to tedious puzzle questions .


It is a pity that you have to do so many preliminary checks to allow yourself the luxury of interviewing programmers who really can program . It would be funny if it were not so sad. I'm not a fan of certification , but it really amazes me that Steve McConnell was busy doing something with all his talk about creating a true programming profession .


PS


I suggest trying to solve the JavaScript problem below by detecting the time spent. The survey is anonymous, it makes no sense to deceive. The correct answer is here . I admit that it took me 67 minutes using googling. True, he spent some part of the time using the Japanese method - the most ridiculous assumptions and fitting them to the task, surely there is a more elegant solution. He spent some more time combing the Hindu code. Are there really so many of us? :)


Write a program that prints into console the numbers from 1 to 100. But for multiples of three print "Miss" instead of the number and for the multiples of five print "Kiss". For numbers which are multiples of both three and five print "MissKiss". Each print must be asynchronous call console.log function with a 50ms delay.

Only registered users can participate in the survey. Please come in.

Hospital average temperature

  • 7.8% I understood my mistakes after reconciling with the correct answer 63
  • 80.3% Decided in 10 minutes 643
  • 9% Decided in 20 minutes 72
  • 2.7% Decided in 30 minutes 22

Also popular now: