Angelos Orfanakos

What I look for in software engineering candidates

I’ve been evaluating and interviewing software engineering candidates for some years.

A friend and teacher of programming in a public school recently asked me how I evaluate candidates so that he can better answer similar questions and prepare his students.

I thought this was a great question and after telling him, I decided to write everything in more detail here and share it in case it proves to be useful for other people as well.

This is also more important now that I’ve gradually started drifting away from interviewing as I find myself focusing more and more on running my team and our projects.

Soft skills

I’ve tweeted about this:

I’d add to this:

  • Honesty, kindness and quality of character
  • Communication skills

Update: A reader pointed out that “mental health” could be interpreted as “having a mental condition”. I thought it was obvious that this is not what I mean from my mention of “character” and “traits”, but here it is more explictly: With “mental health” I mean a lack of toxic behavior. This tweet captures perfectly the point I’m trying to make:

Cover letter

Before the resume is the cover letter. It’s as important as the resume — if not more important.

It’s the only way to tell whether a candidate mass-applies to companies and just wants a job (which is not bad in itself) or really wants to work for a specific company and is aligned with its mission.

Working in a company usually entails a lot of struggles and challenges. How motivated you are will determine if you’ll stick around to overcome them.

It also reveals how you think and what motivates you.

Resume

What is the purpose of a resume?

  1. To get you an interview
  2. To base the interview on

The resume itself will not get you the job.

Which brings us to the first and most important point:

Be honest

It’s very easy to figure out when someone knows what they’re talking about in an interview. Don’t over-promise and under-deliver. Don’t under-promise and over-deliver.

Just be honest about your experience and what you know.

PDF format only

Not everybody uses Microsoft Word or Windows. PDFs are cross platform and using one communicates you’re aware of this.

2 pages at most

I once read that your resume should be one page max. Two only if you’ve walked on the Moon (in which case you don’t need one).

Interviewing is very costly in terms of time and resources for a company and usually there are many candidates. Screening multi-page resumes with superfluous and unnecessary information consumes precious time and does not scale.

I prefer the honesty of a half-page resume than a 2-page resume with irrelevant information.

This also means that as your career advances and you gain experience, at some point you will have to decide what things to leave out in order for everything to fit in one or two pages.

Single column layout

Otherwise it’s very hard to read the text as you have to jump left and right, top to bottom.

By the way, I don’t find Europass resumes very appealing.

Consistent text formatting

This reveals your attention to detail, which transfers to everything you do (and thus the job).

Legible font family and text size

Self-explanatory. This also reveals your attention to detail and your taste. Don’t use funny or uncommon fonts. Don’t size your text too small to fit a 3-page resume in one.

No text colors or images

Colors and images are distracting. I rarely see this, but it’s still worth mentioning.

No typos

I’m very disappointed when I see typos in a resume. Along with a cover letter, it’s how you make your first impression.

Having typos communicates you don’t care or, worse, that you lack an attention to detail and are not even aware of them.

No personal photo or age information

How you look or how old you are is irrelevant. What’s important is the quality of your character, what you know and what you can do, all of which can only be deduced in an interview.

Skip self/personality summaries

Describing yourself can often come across as arrogant even if that’s not your intention. Let others describe your qualities and characteristics. If that is important for a position, provide references so that other people can vouch for you.

List work experience before education

Education is not as important as work experience when you are applying for a job.

List work positions in chronological order, with most recent first

Imagine having to read hundreds or thousands of resumes and some listed the oldest position first, while others listed the most recent one first. Madness!

This also communicates that you care and want to make the process as easy as possible for people evaluating your application.

Provide structured information for each work position

Specifically:

  • Start/end date
  • Duration (please don’t let me calculate this for each position)
  • Company
  • Job title/role
  • Key responsibilities and achievements (bullet points, not paragraphs)

Skip hobbies and interests

Again, what kind of person you are really shows in an interview and your hobbies don’t really matter when it comes to doing work.

Foreign languages

I’m only interested in knowing whether you’re fluent in English and Greek (in this order). Learning German, French or Spanish is nice but of no particular value, unless, of course, the position lists such need.

Questions I’m trying to answer using the resume

  • How long did it take you to graduate?
  • What did you do while in college? (personal projects, open source contributions, volunteering, jobs)
  • How long did you stay at your previous positions? (Are you job-hopping?)

In an interview:

  • Why did you leave your previous position?
  • Why do you want this position? (a.k.a. what motivates you)

Other channels

GitHub, personal projects and open source contributions

A great way to get a glimpse of your writing style, your attention to detail, your analytical skills, your taste and whether you actually like writing code is to read code you’ve written.

This is why it’s important to have an active GitHub account with your own repositories and not just forks.

What I look for (in order of importance):

  • Open source contributions
  • Personal (ideally open source) projects
  • Code that is readable, commented (when necessary), formatted consistently
  • Repositories (ideally Git) with small, self-contained commits with clear messages (style guide)

StackOverflow activity

StackOverflow is sometimes useful, but it’s also a proprietary platform with a low signal-to-noise ratio that cultivates a copy-paste/recipe mentality.

I’d be more interested in any difficult or tricky questions you’ve asked or answered VS how many gamification badges you have or how active you are.