<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3235037735958643798</id><updated>2011-07-07T22:52:57.246+01:00</updated><category term='coding recruitment'/><title type='text'>zebraboxing</title><subtitle type='html'>Thoughts on Coding, Recruitment and Life and a futile attempt to make sense of them.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zebrabox.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zebrabox.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Warren Keyes</name><uri>http://www.blogger.com/profile/07639335341063963022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_rqghbU372aM/SbLOaGw-4iI/AAAAAAAAAAM/d0vcTUxnc1w/S220/DSC00152.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3235037735958643798.post-2483635737247743973</id><published>2009-08-31T11:43:00.001+01:00</published><updated>2009-09-01T22:54:03.512+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding recruitment'/><title type='text'>Programmer Interviews Do’s And Don’ts – Part One</title><content type='html'>&lt;p&gt;So for what it’s worth, I thought I’d share some of my thoughts on technical recruitment. I’m going to focus on what works and more importantly, what &lt;strong&gt;doesn’t&lt;/strong&gt; work from both sides i.e interviewer and interviewee.&lt;/p&gt;  &lt;p&gt;In this post, I’m going to focus on the interviewer.&lt;/p&gt;  &lt;p&gt;Before I start, the first question to answer is why? There are lots of books and articles that tell you about best practice, interview approaches, etc but on reading them, I always get the impression that the authors have never interviewed anyone, ever. So consider this the view from the trenches – my attempt to make sense of ten years of good, bad and indifferent interviews.&lt;/p&gt;  &lt;p&gt;First point to remember is that interviewing for technical positions is hard. Anyone who tells you it’s not is either lying or doesn’t do interviews. It’s hard because you are dealing with people and people are complex, shy, nervous, silly, stupid, clever and often all of those things at the same time. Picking your way through that and working out if you want to let the person sat in front of you loose on your code base, your project and your team is tough.&lt;/p&gt;  &lt;p&gt;Second point is to remember that people are not resources that you can stick into boxes. If you have a mental idea in your head of the ‘ideal’ candidate then unless you’re very lucky, you’ll spend most of your time being disappointed. &lt;strong&gt;Candidates are not job specs, they are people. &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lastly, remember that interviewing is not an exact science. You &lt;strong&gt;will &lt;/strong&gt;make mistakes or forget to ask the things you really wanted to or very occasionally regret hiring someone – It happens. Remember what worked and what didn’t and keep reviewing.&lt;/p&gt;  &lt;p&gt;OK so here’s my list of Do’s and Don’ts&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1) Do&lt;/strong&gt; interview the candidate not the job spec.&lt;/p&gt;  &lt;p&gt;Have a minimum set of ‘Essential's’ in your spec that you won’t compromise on, after that look at the candidate and see what other skills they bring to the position – they might even bring skills you didn’t know you needed&lt;/p&gt;  &lt;p&gt;2) &lt;strong&gt;Do &lt;/strong&gt;test candidates&lt;/p&gt;  &lt;p&gt;A test could be a couple of verbal questions, a written test, etc. It doesn’t really matter but you definitely need to get a feel of what the candidate knows and what they don’t know.&lt;/p&gt;  &lt;p&gt;3) &lt;strong&gt;Do &lt;/strong&gt;make candidates write code&lt;/p&gt;  &lt;p&gt;You’ll learn more about someone by how they approached a problem, how they implemented it and more importantly how they explained what they did to you than anything else. Remember, this is what you’re hiring them to do, this is what they will spend the majority of their day doing&lt;/p&gt;  &lt;p&gt;4) &lt;strong&gt;Don’t &lt;/strong&gt;ask lots of ‘memory questions’&lt;/p&gt;  &lt;p&gt;Asking someone to remember the exact format of stl::algorithm or all the methods in System.Xml.XmlDocument serves no purpose. People use docs and Intellisense – get over it.&lt;/p&gt;  &lt;p&gt;5) &lt;strong&gt;Do &lt;/strong&gt;ask open-ended questions&lt;/p&gt;  &lt;p&gt;Ask a few questions that don’t have a ‘right’ or ‘wrong’ answer – this way you are giving the candidate a chance to offer their opinion and you’re having a conversation rather than a glorified ‘tick list’. Two way conversation helps because it allows the candidate to relax and as important, it allows you to relax. Having a discussion can tell you a lot about a candidate i.e do they listen to your opinion, how do they respond to counter-arguments&lt;/p&gt;  &lt;p&gt;6) &lt;strong&gt;Do &lt;/strong&gt;see if they’ve done their research&lt;/p&gt;  &lt;p&gt;Always ask a candidate if they’ve heard of your product/team/game/company. If they can’t tell you just the tinniest bit about the company they are applying to then chances are you don’t want them at your company. It takes 30 seconds to type into Google after all so be brutal about this one. Trust me.&lt;/p&gt;  &lt;p&gt;7) &lt;strong&gt;Don’t&lt;/strong&gt; interview on your own&lt;/p&gt;  &lt;p&gt;You may be super clever, you may know what you want, you may think you can read people&amp;#160; but software development is primarily a collaborative effort so get in a couple of people and don’t just get in another manager or a senior coder – bring in your team and listen to their opinions. Importantly, catch up afterwards and discuss the candidate whilst it’s still fresh in your mind.&lt;/p&gt;  &lt;p&gt;8) &lt;strong&gt;Don’t&lt;/strong&gt; rush the interview&lt;/p&gt;  &lt;p&gt;The time to allot for interviews depends a lot on the type of position you’re interviewing for i.e junior, experienced, senior however always give yourself an extra half hour on top of how long you think you need. This gives you room to breathe and if you’re done early then fine. Go to second interviews if needed. I frequently do two interviews – the first is technical and the second is more focused on personality and team.&lt;/p&gt;  &lt;p&gt;You might not feel it’s appropriate or you don’t have time, however don’t discount it. If you feel that you didn’t get enough out of the candidate first time and there’s still potential&amp;#160; then get them back in. If they want to work at your company/team then they’ll come back.&lt;/p&gt;  &lt;p&gt;9) &lt;strong&gt;Do&lt;/strong&gt; ask for evidence&lt;/p&gt;  &lt;p&gt;If a candidate says ‘contributed significantly to the development of …..’ then ask them what they did, in detail, what they learned from the experience and what they would do again. If they can’t give you evidence and detail then chances are they didn’t ‘contribute significantly’. Beware candidates who use ‘we did’ all the time. Sure, development is done in teams but they must be able to say what &lt;em&gt;they &lt;/em&gt;contributed as well as describing the team effort.&lt;/p&gt;  &lt;p&gt;10) &lt;strong&gt;Do &lt;/strong&gt;be prepared to be honest&lt;strong&gt;&amp;#160;&lt;/strong&gt;and forthright.&lt;/p&gt;  &lt;p&gt;Most candidates slightly over-sell themselves. This is fine, their CV is what gets them the interview. However, if you think a candidate is not being entirely up front about their experience then say so. Make sure you explore strengths and weaknesses. Too many interviews end up being an elongated sales exchange. Yep it’s great that the candidate knows the ins and outs of UDP but does he/she know when they’ve made a bad decision and how do they deal with that? Ask them the last time they were wrong or the last bad decision they made. Be careful not to be too heavy handed or judgemental though -Making mistakes is perfectly natural and most of us do it all the time, it’s how we deal with it that’s important.&lt;/p&gt;  &lt;p&gt;11) &lt;strong&gt;Don’t&lt;/strong&gt; get taken in by confidence. &lt;/p&gt;  &lt;p&gt;There’s a fine line between knowing your stuff and thinking you’re better than everyone else. In a knowledge based profession like programming this is always a temptation for us all. I agree with &lt;a href="http://www.codinghorror.com/blog/archives/001020.html"&gt;Jeff Atwood&lt;/a&gt; on this one. A good programmer knows that coding is hard and that they make mistakes and a lot of the time their code sucks. Bad programmers don’t – they think everyone else’s code sucks. Caveat Emptor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Anyway that’s it for part one. All feedback gratefully received – good or bad.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3235037735958643798-2483635737247743973?l=zebrabox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zebrabox.blogspot.com/feeds/2483635737247743973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zebrabox.blogspot.com/2009/08/programmer-interviews-dos-and-donts.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/2483635737247743973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/2483635737247743973'/><link rel='alternate' type='text/html' href='http://zebrabox.blogspot.com/2009/08/programmer-interviews-dos-and-donts.html' title='Programmer Interviews Do’s And Don’ts – Part One'/><author><name>Warren Keyes</name><uri>http://www.blogger.com/profile/07639335341063963022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_rqghbU372aM/SbLOaGw-4iI/AAAAAAAAAAM/d0vcTUxnc1w/S220/DSC00152.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3235037735958643798.post-3026791917755781345</id><published>2009-03-07T19:53:00.000Z</published><updated>2009-03-07T19:55:11.802Z</updated><title type='text'>A New Home</title><content type='html'>I've migrated my blog from &lt;a href="http://zebrabox.spaces.live.com"&gt;zebrabox.spaces.live.com &lt;/a&gt;to here&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3235037735958643798-3026791917755781345?l=zebrabox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zebrabox.blogspot.com/feeds/3026791917755781345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zebrabox.blogspot.com/2009/03/new-home.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/3026791917755781345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/3026791917755781345'/><link rel='alternate' type='text/html' href='http://zebrabox.blogspot.com/2009/03/new-home.html' title='A New Home'/><author><name>Warren Keyes</name><uri>http://www.blogger.com/profile/07639335341063963022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_rqghbU372aM/SbLOaGw-4iI/AAAAAAAAAAM/d0vcTUxnc1w/S220/DSC00152.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3235037735958643798.post-6052989131923002812</id><published>2009-03-07T19:31:00.004Z</published><updated>2009-08-14T16:10:16.671+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coding recruitment'/><title type='text'>Back To Basics</title><content type='html'>&lt;p&gt;I spend a lot of time interviewing programmers. This has caused me to reflect on the changing nature of the programmers’ basic skill set.&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;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. &lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;I got the idea from looking at &lt;a href="http://www.facebook.com/jobs_puzzles/index.php"&gt;Facebook’s job puzzles.&lt;/a&gt; In particular &lt;a href="http://www.facebook.com/jobs_puzzles/index.php?puzzle_id=7"&gt;Hoppity Hop&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So, I knocked up a few of my own – here’s a simple one ( not one I use I might add!)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For all numbers between 1 and 101 (inclusive ) at each integer in that range, output the following to standard output:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;If the number is even then print ‘even’ &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;If the number is odd then print ‘odd’&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Simple right?&lt;/p&gt;  &lt;p&gt;I like it because it tests some basic skills that all coders need to have&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Can you read and analyse a requirement &lt;/li&gt;    &lt;li&gt;Can you solve a basic problem &lt;/li&gt;    &lt;li&gt;Can you write some code without resort to refactoring tools, help docs, google or intellisense &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You’d be amazed how many people can’t do any or all of the above :(&lt;/p&gt;  &lt;p&gt;If any of you want to try the question then feel free and if you have any other suggestions for good fizzbangs then &lt;a href="mailto:zebrabox@gmail.com"&gt;mail me&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3235037735958643798-6052989131923002812?l=zebrabox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zebrabox.blogspot.com/feeds/6052989131923002812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zebrabox.blogspot.com/2009/03/back-to-basics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/6052989131923002812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/6052989131923002812'/><link rel='alternate' type='text/html' href='http://zebrabox.blogspot.com/2009/03/back-to-basics.html' title='Back To Basics'/><author><name>Warren Keyes</name><uri>http://www.blogger.com/profile/07639335341063963022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_rqghbU372aM/SbLOaGw-4iI/AAAAAAAAAAM/d0vcTUxnc1w/S220/DSC00152.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3235037735958643798.post-8006842096113293355</id><published>2009-03-07T19:31:00.001Z</published><updated>2009-03-07T19:31:24.570Z</updated><title type='text'>Behind The Times</title><content type='html'>&lt;p&gt;OK, so here goes.&lt;/p&gt;  &lt;p&gt;I finally decided to start writing a blog. Perhaps a foolish, ill-fated and short-lived attempt, we’ll see…&lt;/p&gt;  &lt;p&gt;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.&lt;/p&gt;  &lt;p&gt;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 -&lt;/p&gt;  &lt;p&gt;‘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’&lt;/p&gt;  &lt;p&gt;Etc, etc&lt;/p&gt;  &lt;p&gt;Right enough blogmanure for now. More later&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3235037735958643798-8006842096113293355?l=zebrabox.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zebrabox.blogspot.com/feeds/8006842096113293355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://zebrabox.blogspot.com/2009/03/behind-times.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/8006842096113293355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3235037735958643798/posts/default/8006842096113293355'/><link rel='alternate' type='text/html' href='http://zebrabox.blogspot.com/2009/03/behind-times.html' title='Behind The Times'/><author><name>Warren Keyes</name><uri>http://www.blogger.com/profile/07639335341063963022</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_rqghbU372aM/SbLOaGw-4iI/AAAAAAAAAAM/d0vcTUxnc1w/S220/DSC00152.JPG'/></author><thr:total>0</thr:total></entry></feed>
