Empathy, Coding, and Resumes
I haven’t read Coders at Work, but I have seen this quote from Josh Bloch going around the ‘Nets.
And if you lack empathy or emotional intelligence, then you shouldn’t be designing APIs or GUIs or languages.
What we’re doing is an aesthetic pursuit. It involves craftsmanship as well as mathematics and it involves people skills and prose skills—all of these things that we don’t necessarily think of as engineering but without which I don’t think you’ll ever be a really good engineer.
This absolutely hits the nail on the head as to why some smart people are bad programmers. (I’d also argue that lack of empathy is a major source of political strife in America.) Every time you write a line of code, it’s worth trying to imagine the person reading your code and possibly getting confused by ambiguous naming, getting frustrated by cumbersome APIs, or getting lost due to the lack of comments.
This problem of empathy also extends to something else I’ve been spending time on lately: resumes. Many companies in New York, including my own, are trying to find good talent, but are still nervous about hiring outside of their network. It does not help that engineers are terrible at writing resumes. I really thought they taught this in schools now, but apparently not. A lot of it comes back to the inability to imagine the person reading the resume: given 1,000 resumes, why would I pick this one to call? The resume needs to answer some key questions and tell a clear story - even a promising resume with many open questions might not be worth pursuing further.
Some questions your resume should answer:
- If you sent this in response to a posting, why are you a fit for the description? This is especially true if your recent work has nothing to do with the job. Are you a PhD in algorithms looking to work on User Interfaces, or are you just applying out of desperation? Are you open to everything, even though you’re really big in the Scheme community? Are you capable of real engineering, even though you’ve been operating at the top of the stack in J2EE and .NET?
- What are you good at? One of the things that Google did well for annual evaluations was ask you to evaluate your peers’ performance along a number of dimensions, recognizing the way that good engineers are often good in different ways. Are you good at coming up with ideas and rapid prototyping, finding relevant technologies quickly? Are you good at detail work and building super robust systems? Are you good at taking initiative and leading a team? Are you good at designing large complicated systems? Are you willing to deal with tedious monitoring and production systems? Are you good at understanding how computers work and making code more efficient? Provide concrete examples that clarify the scope of your work at your past jobs or side projects, as well as what you were forced to do and what you chose to do. Just telling me you are “hard-working” is not only helpful, it shows you lack an empathy-hat.
The other big issue is aesthetics. Putting on our empathy hat again, does your resume have many typos, poor use of English, pretentious superlatives, nonspecific language, and heinous formatting because you made the resume in a hurry and you have no friends to look it over? Or does it reflect a general lack of care or an inability to see when something is ugly?
As a big believer in meritocracy and social mobility, nothing makes me sadder than having to discard totally hopeless resumes that might have good people behind them, but I just don’t have the time. If you think chartbeat is cool and have an empathy hat, shoot your resume over to tony at betaworks dot com.
(Oh, and I also agree with Joel on the “tell me a story” bit here. Often the most useful data I get is by checking out someone’s blog or Twitter account.)
(Also check out Niniane’s post.)