Saturday, 7 March 2009
Back To Basics
I spend a lot of time interviewing programmers. This has caused me to reflect on the changing nature of the programmers’ basic skill set.
Once upon a time, it was easy, I interviewed games coders; if they knew C/C++, basic 3D maths, were keen and not too socially objectionable then they got the job.
These days it’s much more complicated. I’ve seen CVs from people with 6+ years development experience and yet when I ask them a basic programming question they seem to get stumped.
It’s a puzzle to me. It seems that nowadays a lot of people learn some basic use of a language (c++/c#/java), some APIs then get comfortable and stop there. This is a major problem in my industry, and I would propose in any industry.
Recruitment takes a lot of time and effort so I’ve started to look at ways of quickly filtering out candidates who can’t do the basics. One of these is the ‘fizzbang’ question.
A ‘fizzbang’ question is a very simple problem solving question that requires you to write some basic code; no reliance on APIs, no language subtleties, just Plain Old Coding.
I got the idea from looking at Facebook’s job puzzles. In particular Hoppity Hop.
So, I knocked up a few of my own – here’s a simple one ( not one I use I might add!)
For all numbers between 1 and 101 (inclusive ) at each integer in that range, output the following to standard output:
- If the number is even then print ‘even’
- If the number is odd then print ‘odd’
Simple right?
I like it because it tests some basic skills that all coders need to have
- Can you read and analyse a requirement
- Can you solve a basic problem
- Can you write some code without resort to refactoring tools, help docs, google or intellisense
You’d be amazed how many people can’t do any or all of the above :(
If any of you want to try the question then feel free and if you have any other suggestions for good fizzbangs then mail me
Behind The Times
OK, so here goes.
I finally decided to start writing a blog. Perhaps a foolish, ill-fated and short-lived attempt, we’ll see…
I’ve always been a little slow on the up-take with technology trends which is quite ironic for someone who works in software development. I don’t have an iPhone, a Facebook account, an XBox or an iPod but hey there you go. I probably spend too much time in old-fashioned pursuits like drinking and swearing.
Anyway, let’s hope there’s something of value in here for someone out there and not all of it boring geek-talk about python and why coders nowadays have never had it so good and frequent posts along the lines of -
‘In my day we used to code with coal and had to stick the bits into the registers one by one then hope the chip didn’t blow up and we’d end up with transistors stuck in our face not like the web-pampered youth of today’
Etc, etc
Right enough blogmanure for now. More later