Why the New Guy Can't Code
theodp writes "'We've all lived the nightmare,' writes Jon Evans. 'A new developer shows up at work, and you try to be welcoming, but he can't seem to get up to speed; the questions he asks reveal basic ignorance; and his work, when it finally emerges, is so kludgey that it ultimately must be rewritten from scratch by more competent people.' Evans takes a stab at explaining why the new guy can't code when his interviewers and HR swear that they only hire above-average/A-level/top-1% people. Evans fingers the technical interview as the culprit, saying the skills required to pass today's industry-standard software interview are not those required to be a good software developer. Instead, Evans suggests: 'Don't interview anyone who hasn't accomplished anything. Ever. Certificates and degrees are not accomplishments; I mean real-world projects with real-world users. There is no excuse for software developers who don't have a site, app, or service they can point to and say, 'I did this, all by myself!' in a world where Google App Engine and Amazon Web Services have free service tiers, and it costs all of $25 to register as an Android developer and publish an app on the Android Market."
Firstly, why is this a nightmare? Who wants extra competition?
Secondly, "technical interview" is a misnomer. They're actually "potential colleague" interviews. Who is going to pick someone who is smarter than them, or who is going to give them competition for promotion?
Those who get through technical interviews are either smart enough to bluff to the interviewer that they're not quite as smart as the interviewer, but an ok guy to hang out with; or are genuinely not as smart or talented as the interviewer, but are an ok guy to hang out with.
Quick tip: when you attend a technical interview, answering the questions correctly doesn't get you the job. Being amazed at how much the interviewer knows does.
Experience can be gained on non-job tasks. Quite a lot of the people who contribute to open source projects that I organise are in university. When they graduate, there's a body of code that they can point to and say 'I worked on this'. There are also public commit logs so that people can look at them and see exactly what they did, and sites like Ohloh.net that let people quickly see their total contribution. If anything, this is better for a recruiter than experience on the job, because most employers won't allow you to show code that you wrote for them to your next potential employer...
I am TheRaven on Soylent News
I think the problem is that a lot of people, no matter how skilled and dedicated, may not have had any summer jobs or internships (at least around here those are very hard to come by) that led to them taking part in the creation of "real" applications as well as not really have any "finished" applications to show off (as in, they may have dozens or hundreds of little apps but you rarely want to show an interviewer that 900 line perl script you wrote that has half a dozen required and undocumented parameters and does something extremely specific to your home computing environment.
I was actually in that sort of position after college, I ended up working tech support for over a year because I couldn't find a "real job", the reasons for why I either didn't get an interview or why they didn't find me interesting post-interview were split between no reason given, "You're not quite what we're looking for" and "Please try again when you have at least three years of experience, the ad might've said 'entry-level' but we really meant we were looking for someone with a few years of experience...".
Greylisting is to SMTP as NAT is to IPv4
..as a programmer?
That question is one of the best filtering questions around.
I'm god, but it's a bit of a drag really...
All good ideas...for people with tons of free time. When you get a job doing this stuff, you get 8-10 hours a day to do it. I'm hard pressed to think of any time outside of my work hours that I have 8-10 hour blocks of time to do stuff for fun.
Exactly.
It's all well and good to tell people they ought to have prior experience... And that they ought to be coding on OSS projects or something in their spare time... But spare time is something I've just now discovered - at the age of 34.
There's a reason why they consider 12 credits "full time" (at least here in the US) - if you're taking classes that are even remotely challenging you'll be putting several hours of work outside of the classroom into every single hour of work in the classroom. And then you throw in a job on top of that... Doesn't leave much time for OSS projects.
Then I graduated, and got a job at Electronics Boutique, because nobody would hire me in anything even remotely IT-related. It was part time, hourly work... Which meant absolutely no benefits, a schedule that would change wildly from one day to the next, and no sick time. I was constantly dropping everything to cover for someone. Had to take every hour I could get to make ends meet.
Then I grabbed a second job, because EB wasn't working out - taught things like Microsoft Word at a local community college. Prepping for class... Teaching the class... Office hours... Grading... All in addition to working at EB.
Then I finally got a job in IT. Worked for one of the local repair shops for a while. Quickly moved through the ranks from bench technician to lead network engineer (a fancy title to make up for the lack of pay). I don't know how much overtime I put in there... Came in early, worked through lunch, worked late, came in on the weekends...
My current job is the first one where I can actually leave work at 5:00 on a routine basis. It's the first one where I don't wind up working weekends on a routine basis. It's the first one where I actually have some time to myself at the end of the day. Time I could spend doing some OSS coding...
Except that my days of writing software are long behind me. I've got experience now, but it isn't in software. I've wound up on the sysadmin side of things. Yes, I write scripts fairly frequently... But I sure as hell couldn't be trusted to do anything substantial.
And I graduated with a Computer Science degree that was very heavy on programming. I originally intended to write code. But nobody would hire me. The local repair shop only hired me because they figured I could probably replace a HDD without drooling all over it first.
"Work is the curse of the drinking classes." -Oscar Wilde
I agree with Vectormatic. Just because its my job which I enjoy and I'm good at, does not mean I'm going to sit around doing it for free. If I have extra time on nights/weekends to do some coding, I'm going to bill for it.
I've been a developer for 13 years, at a half-dozen jobs. I've never been asked for a code sample, and I wouldn't have one to provide if I were.
My favourite was the web. Mosaic just came out when I was in tech school. When I hit the job market 2 years later they were looking for web developers with a minimum of 8 years experience in web development because that is what their policy was for every thing else. You still see lots of that, especially when working with open source software. Requirements for more experience than the project has been around. Clueless. And the worst of them are the head hunters. There is one where I live that will not put any candidate forward that doesn't have an MCSE even if the position is for a Linux admin or Solaris etc. Because apparently the MCSE is what "professional" administrators have. The fact that I was running load balanced Linux clusters years years before you could even get certified in Linux makes their heads explode. It just doesn't compute.