We are in the process of hiring more Java programmers. Our hiring hasn't been too good lately. I'm not involved in the Java side of things, but my boss asked me to get my programming tests ready and test the applicants.
In my department, we had recently hired a programmer who couldn't program, and he had left. One of the jobs he had failed to do was modify an if statement. My boss wanted me to incorporate this into a small test.
I had three questions. First, the FizzBuzz program. Then the Countdown program. Then my if statement expansion. Ideally, someone should take about 30 seconds to do each one. Allow for nervousness, maybe 5 minutes each. If it takes longer than that, they are not active programmers.
At our Friday departmental lunch, I mentioned this to the others. They were interested, I gave them the questions, and both our junior female programmers had the core answers in seconds. Yep, they are programmers.
So I got a short time with our first applicant this afternoon. Any language he likes, don't care about syntax, don't care about spelling mistakes, braces, semi-colons, things like that. I'm solely interested in the logic and thinking ability.
I was also prepared for a candidate who refuses to do these sorts of tests. That's fine. But often in a job, you have to do tasks that aren't palatable. If you aren't willing to do something like that in an attempt to get the job, you are going to be less willing if you get the job. I wouldn't hire you.
But our candidate was okay to do the test. The FizzBuzz and Countdown took a minute or two each. The if statement test took longer. I think my question was badly worded. I have since modified it to use integers and not pointers. Pointers seem to freak out Java programmers, even if they are irrelevant to the test. But he got through it fine, showed me the tricky bits, and was done in about ten minutes.
Why are we doing this? To weed out applicants who talk the good talk and get through headhunters, but can't actively program. I don't want to go through that again.
There are a lot of defense contractors in this area, with the Navy base. It seems that they write a lot of code that never gets used. It gets tossed. Projects are completed and abandoned. In those environments, you can be a great programmer. But every single thing we write here, it goes live, it makes a difference. It has to fit into a complex system and make things better. It's hard. Great programmers writing never-used code don't translate to great programmers here. Rockstar programmers out there, crash and burn here.
Another thing, I would have thought all our candidates knew about the FizzBuzz test. It's a common one. But only with programmers who actively manage their careers, follow programmer blogs, and are interested in the industry. They all know about FizzBuzz. Every applicant we've had here has never heard of it. That's a caution too.