Winter protip: hand warmers. Lots of them.

October 31, 2011 at 12:08 AM | Miscellany | View Comments

Now that winter is coming, I'd like to share a tip that has been the difference between a terrible and a great day: hand warmers. Lots of hand warmers.

Here's what you do:

  1. Buy hand warmers. Lots of them. Like fifteen pairs of them. They are $1.20 for a pair, so no banks will be broken by having a few extras.
  2. Put a pair (or two?) in the pocket of each of your winter jackets.
  3. Use them! Next time you (or your friend/spouse/child) is uncomfortably cold, just rip a hand warmer open. Ten minutes later you'll have a warm little bundle of joy to stick in your boot/glove/jacket/hat.

There are a bunch of reasons I've found step three to be hard: I don't want to admit to myself that I'm actually cold, I don't want to use them now because I may need them even more in the future, or because I don't feel like the warmth is worth the $1.20 it will cost... But since I have never regretted using one, I feel like it's worth tricking myself into using them more liberally by keeping lots of spares around, using it "for a friend", and telling myself that each one only costs 60¢ (that's like two quarters!).

Permalink + Comments

On Startups and Identity

October 18, 2011 at 03:18 PM | Uncategorized | View Comments

A curious thing I've noticed recently is that a large number of startups don't include any information about the identity of the founders/employees.

I find this strange because, in my opinion, a big advantage of working with (or using the product of) a startup is that I can get to know the person (or people) behind the scenes. They might even be someone I know, or someone a friend knows.

I would go on, but I would just be repeating what Jason Cohen says in You're a little company, now act like one.

So, if you're part of a startup: please, include your identity and the identity of the other founders/employees somewhere on your website.

Permalink + Comments

What Makes a Good Resume

October 17, 2011 at 09:40 PM | Uncategorized | View Comments

I've read a small but nontrival number of resumes in my life, and each time I've vocalized strong feelings about what makes a resume good or bad.

Some people, presumably mistaking these strong feelings for expertise, have asked me for advice when writing their resume... So I will summarize here the things which I appreciate or despise while reading a resume.

Disclaimer: these are just my feelings. It's likely that people similar to me will have similar feelings, but it's unlikely that someone like me will be the first one reading your resume.

For many positions a non-technical recruiter or HR person will be the first to see your resume. They will likely apply naive pattern matching against a given set of buzzwords to determine the quality of applicants, so a section containing buzzwords and synonyms (ex, "Python, CPython, Django 1.3, Django 1.2, Django forms, Django admin, AJAX, ...") would likely be helpful (although, again, I can't speak with authority as I'm not a non-technical recruiter).

Steve Hanov has a comic that might be helpful.

As I'm looking at a resume I'm trying to answer three questions: what does the applicant know? How well do they know it? Would an interview with this applicant be a waste of time?

Some of the things I like to see are:

A summary of skills, programming languages and tools sorted by experience. I can't count the number of times a applicant includes a list like this on their resume:

Programming languages:
Python, Java, C/C++, Objective-C, JavaScript, C#, Visual Basic, HTML, CSS, Perl, Scheme, ML, Prolog.
Make, Vim, Emacs, Word, Power Point, Terminal, Linux, Firefox, Flash Player.

This kind of list is absolutely useless. Actually, no, that's not true. It's very useful. It tells me that the applicant doesn't feel the need to distinguish between their knowledge of Prolog and their knowledge of JavaScript, and they think C is similar enough to C++ to warrant listing them together.

A list ordered by experience is much more useful. For example, my list might look something like this:

Programming languages:
Python (5 years, 50k SLOC), ActionScript (2 years, 20k SLOC), JavaScript (5 years, 5k SLOC), HTML+CSS (5 years), C (2 years, 2k SLOC), some knowledge of PHP, Scheme, Haskell, and ML.
Vim (6 years), Bash (4 years), POSIX shell environment and utilities (4 years), Linux (8 years, mostly Debian and server administration), Mercurial (3 years), git (1 year).

Alternatively, the headings "most experience with" and "some experience with" could be used, as they give some idea of both expertise and breadth.

It's also worth noting that, at least in students, self assessment of knowledge is useless, so when I see words like "expert" or "very good" in a resume I mentally replace them with "dangerously ignorant".

Relevant links. I feel like this should go without saying, but I would guess that only 10% of the resumes I have read included any kind of link.

I appreciate any links to a applicant's online presence: a blog or personal website (if it has been updated in the last five years) is good, and an account on GitHub, BitBucket, StackOverflow, Reddit or other social site is even better. It's hard to convey interpersonal and communication skills on a resume, but social sites are a good way for applicants to demonstrate those skills.

And a corollary which: irrelevant links (for example, to a "home page" without any information that isn't already in the resume) are worse than useless - they waste my time and make the applicant look silly.

Length. I don't care. After the summary of skills, languages, and tools I'm usually skimming for interesting things... And if the applicant has three pages of interesting things, I would like to read those three pages. But if the applicant has three boring pages, I'll just skim over them.

Relevant work experience. Specifically, specific work experience. A statement like "worked on a team" or "helped implement" isn't as helpful as "wrote server-side JavaScript" or "designed the database schema". Also, while others might, I don't care about unrelated work experience.

It's also useful to include the software/tools used at a job. For example: "MegaCorp - 2001 - 2003: Designed database schema to optimize sale transactions; performed A/B testing to optimize widget sales; software used: PostgreSQL, PHP, libABTestOMatic"

School. As a university dropout, I'm a bit biased here... But I care very little about school or degrees unless they are directly relevant to the job at hand. For example, if I the position I'm hiring for would benefit from a strong knowledge of a particular academic field, formal education in that field would be important... But, in general, I haven't found formal education to be very important for the types of programming that I do, or the types of developers I hire.

Look, feel, and little details of the resume are important too. I want a programmer who cares as much as I do about consistency, attention to detail and never, ever, under any circumstances mixing tabs and spaces. If an applicant's resume has bullets that don't line up, text in random fonts, and consistently missing punctuation, I can't help but assume that their code will look similar.

Cover letters. I have read one or two very good cover letters where the applicant gave specific reasons they were interested in the job, and why they would be worth my time to interview. They were short, to the point, and distinctly lacking in phrases such as "I would make an excellent …". I appreciated these cover letters.

I have skimmed and subsequently ignored all other cover letters.

tl;dr: I want a resume to show me in as much detail as is sensible what the applicant has done, what they know, and why they are a good programmer. Bonus points for interesting content and links to social sites like StackOverflow or Reddit.

Permalink + Comments