Day 1 of the new job involved refreshing a 15-year-stale knowledge of C++, and it's been busy since then. Finally had a thought worth posting about that I'm free to talk about, so here goes.
Prior to this job, I'd often spend an hour a week screening resumes for new hires. The vast, vast, vast majority of resumes are terrible; at one job in DC, I'd typically take 100 resumes, find five worth phone screening, call them each for ten minutes, and choose to bring in one for an interview. 1-in-100 wasn't atypical, from speaking to other folks doing the same job at other companies.
My meta-advice: keep the resume short, and to the point. I saw a non-technical resume this week for someone just out of college that was four pages long; five bullet points about every college job, every volunteer opportunity, and a half-page about their responsibilities in the Greek system. If you're just out of college, or within a job or two out of college, one page is the most you're going to get before recruiters take your resume and toss it in the trash.
If you have a Masters, the resume might be a paragraph longer than an undergrad. You'll need where you got the degree, what degree you earned, your GPA, and your thesis topic, if any. If you have a PhD, you get room to run; treat it as a full-blown job, and give it another paragraph to explain your thesis.
But in general? Short.
Given that, this article here is also worth a read; Steve Yegge giving 10 points of advice for resume-writers.
It's been awhile - resumes
Education
Rejoined the ACM today, mostly for the online content; it's pretty damn good, actually. The trophy take away today was something by Bjarne Stroustup, creator of C++. Not sure of posting fulltext and/or excerpts from the ACM; I need to find out their use policy. Assuming no to the first, and yes to the latter.
""Education should prepare people to face new challenges; that's what makes education different from training."
Never really considered that before, but it's spot on the difference between vocational training and academics; the academics are usually more theoretical, which gives you a wider reach of what you *can* do, but less ability to sit down and immediately *do* anything, unless you've also self-trained on the side.
This came up in an argument against someone being incredulous that computer science degrees don't teach revision control systems, which lead me to think, well, should they? It's vocational, and not theory; it'd be like teaching an IDE. They're really useful skills in "real world" corporate jobs, but they're not computer science theory, by a longshot. They're the things you pick up along the way in college to get the college work done. Then again, having a school-sponsored revision control repository would have taken a lot of stress out of losing a floppy disk here or there.
It's always seemed that if you can find someone with background in theory who enjoys doing hands on work, you've won the recruiting game. That said, the background in theory doesn't have to be academic, and the hands-on-work doesn't have to be outside of academia, either. Thoughts?
How to Spot a Good Programmer
So, it's been my experience that non technical folks have a hell of a time interviewing technical people. This article came up today on Slashdot, and was pretty much on-the-money for what helps to separate a good tech from a mediocre one from a terrible one in an interview.
how-to-recognise-a-good-programmer
Since it's been Slashdotted and the server is nearly dead, the summary section, with slight edit for completeness:
Positive indicators:
- Passionate about technology
- Programs as a hobby
- Will talk your ear off on a technical subject if encouraged
- Significant (and often numerous) personal side-projects over the years
- Learns new technologies on his/her own
- Opinionated about which technologies are better for various usages
- Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”
- Clearly smart, can have great conversations on a variety of topics
- Started programming long before university/work
- Has some hidden “icebergs”, large personal projects under the CV radar
- Knowledge of a large variety of unrelated technologies (may not be on CV)
- Knowledge of a few bleeding-edge technologies
Negative indicators:
- Programming is a day job
- Don’t really want to “talk shop”, even when encouraged to
- Learns new technologies in company-sponsored courses
- Happy to work with whatever technology you’ve picked, “all technologies are good”
- Doesn’t seem too smart
- Started programming at university
- All programming experience is on the CV
- Focused mainly on one or two technology stacks (e.g. everything to do with developing a java application), with no experience outside of it
