The Working Programmer's library

I like programming books. I daresay I’m obsessed with them. I collect them, they adorn my shelves and workspace as if they were trophies of the knowledge contained within them. The battles they fought are hidden in their dog-earred pages, marred by late nights and tossing them to and fro as I research them, commanding them to reveal their secrets.

On command, they relent to the pressure, spilling their secrets and marching back to my bookshelf, available at my beck and call. They are my fellowship, our common quest is to make me the best programmer I can be. This knowledge takes many forms, but the dead-tree book is the most basic.

It is strange then that I should recommend Safari Books Online. A virtual library available at your fingertips, so long as you are connected to the Internet.  This presents a problem, vis-a-vis being disconnected from the ‘net. Sacriledge, I know. Bear with me.

Safari Books solves the ‘OMG my boss needs me to write code in a language I’ve never seen before’ which usually happens at just the wrong time. I know Perl, but since our build servers don’t have Perl installed (gasp) I’m writing the script in Powershell.  Except that I’ve never written Powershell before.  Enter Safari books. Within minutes I was able to pull down Powershell in Action and Windows Powershell Cookbook immediately. Within ten minutes, I had the script written. 

It’s not the right tool for every job, but Safari Books Online is an indispensible part of your toolkit. Use it.

Attracting Talent – A Response to Eric Lippert

Eric Lippert posted a blog post today about attracting talent. He posed two questions:

(1) When you read a job posting on a career site, what are the things you look for when deciding whether you’re interested or not? Are there “red flags” that immediately make you unlikely to follow up? Are there more subtle indicators that discourage you? What encourages you?

(2) What would you find particularly attractive or unattractive about an opportunity to work on a developer tools team? (at Microsoft or elsewhere, though I am particularly interested in “at Microsoft”.)

I only answered the first question (quite simply, I was too nervous to even consider the second question), but I want to answer both in more detail. I was just nervous because Eric is a Smart Guy™, and people like me simply do not walk up to Smart Guys™ and start chatting as if I’m on his level. I am not. 

Things that Turn Me Off

1. If I get a generic, “We think you’d be a great fit…” I don’t apply. I’ve seen enough of those to know that they haven’t spent more than a few seconds looking at my resume. They saw a keyword and sent it based off of that. Thanks, but no thanks.

2. Trendy words: “Ninja Coder” / “Guru” / “Think outside the Box” .  My mom tries to use ‘cool words’ too. I try to use them with my younger brothers and sisters. It doesn’t work. You don’t know the lingo, you don’t watch the movies. Stop trying. 

3. No, I’m not sending you an updated resume when you send me an email with the words “We think you would be a great fit.” On Linked In or Stack Overflow Careers. In fact, I may just send you an email to gauge your interest. I’m going to ask questions in this email. As the knight said to Indy in The Last Crusade: Choose Wisely.

4. In the interview, Don’t try to stress me out. It’s just going to annoy me. I was in the Army. I trained for battle. I slept very little. I know what stress is. 

Things that Turn Me On

1. Companies that are known for treating Software Developers well. Google, Microsoft, Fog Creek Software, Amazon, SAS. I know that if I worked there, I’d be treated well and be around people that are the best and brightest. Every day would be a challenge for me to outperform the previous day. That turns me on, programmatically speaking.

2. Make me write code in the phone screen. Make me write more code in the interview. Ask me intelligent questions (no, I don’t know how to Move Mount Fiji, but my answer would include hiring foreign cheap labor). 

3. Good processes. I swoon when I see automated builds. If you have a CI build, I’m probably going to get all geeky on you. Unit Tests? I may just ask your CI server out on a date. That’s hot stuff.

4. Being able to make a difference. In Eric’s question, he talks about the Developer Tools team. That’s the team that makes the tools that you and I use to make our software. That’s like being the team behind the team! It’s definitely not headache-inducing crap line of business software. 

Ultimately, just like I said with regards to Amazon: I’d love to work at Microsoft. I’d move across the country to work at Microsoft.