This document provides advice on how non-profits can build strong software engineering teams through an effective hiring process. It discusses challenges non-profits face in hiring, such as lower salaries compared to industry. It recommends casting a wide net to find candidates, running a rigorous interview process to filter candidates, hiring for potential as well as experience, assessing organizational fit, and making strong offers that emphasize mission over salary alone. The document provides examples from the author's experience hiring a new tech team at MoveOn.org, highlighting the importance of an inclusive job description and interview process for finding diverse talent.
2. Who am I?
Computer science grad, Carnegie Mellon 2003
Software Engineer for 15+ years
Technical hiring at Amazon.com, Rosetta Stone, startup companies; recognized as a “bar
raiser” at Amazon (technical interview lead)
Interviewed O(500) candidates, reviewed O(5000) resumes (over ~15yrs)
CTO of MoveOn.org, hired a whole new tech team in 2015, ran ~8 hiring processes from
2015-2018.
3. Hiring Software Engineers is Hard
● The Talent Gap: In the United States, there are more
technical job openings than there are qualified
candidates
● Salary Variance: Software engineering salaries can vary
+-50K / year for the same job / candidate experience
● Attrition: in big cities with lots of tech jobs like San
Francisco engineers change jobs every ~1 year
4. Challenges for Nonprofits
● Salaries: often non-profits can’t match industry salaries
for software engineers
● Hiring expertise: many non-profits lack in-house
experience in hiring engineers
● Culture and timing: some non-profits don’t know they
need to hire until they’re up against a big deadline, or
don’t see tech as core to their organization
5. Common pitfalls
● Over-reliance on outside consulting firms.
● Haphazard hiring, resulting in poor lack of fit.
● Failure to hire at all.
Hiring an internal tech team ineffectively is more
expensive than not hiring an internal team at all.
6. Your organization has a
big advantage
● Great engineers want to do meaningful work.
● (Have you ever heard anyone get really excited about “e-
business solutions”?)
● Great engineers want to work at mission-driven non-
profits.
● Great engineers want to have an opportunity to change
the world.
7. The Problem to Solve
Great software engineering candidates exist, but
you need to learn how to find them, and fairly
assess team fit.
8. How to do it
1. Cast a very wide net: get as many applications as you can,
advertise everywhere.
2. Run a rigorous interview process: filter, filter, filter
3. Hire for potential as well as experience.
4. Understand how to assess organizational fit.
5. Make strong offers that emphasize mission and culture as well as
salary/benefits.
9. Casting a Wide Net
● Advertise all job openings publicly
● Advertise jobs in a variety of forums
● Don’t just hire your friends (everyone underestimates the
limits of their networks)
● If possible, allow remote employees: let your hiring
process become nationally or internationally competitive
10. Filter for: Builders
● Test people on the technical skills they will use to do their
jobs, including both technical strategy and coding.
● Never neglect technical tests: many people with the job title
“software engineer” have peripheral roles and don’t actually
get their hands dirty coding.
● Above all aim to assess: can this person actually build stuff?
11. ● Don’t hire for X years of experience in technology Y
● Hire smart, motivated people who will learn and adapt to
changing technology trends
● Very expensive problem: the lead engineer committed to a
particular programming language or system who values the
comfort of their current expertise over finding the best tool
for the job
Filter for: Flexible Problem Solvers
12. The easiest way to determine whether a candidate will
work well with others in your org, particularly non-technical
folks, is to include at least one non-technical person in the
interview loop, and give them veto power.
Filter for: Organizational Fit
13. Your organization has some primary method of communication
(at MoveOn it’s email / written communication). Test this as a
part of the interview loop.
This is more for the candidate’s sake: candidates for whom
communication style is not a fit will feel discouraged quickly.
Filter for: Organizational Fit
14. ● Define the sequence of interview questions candidates will
have to pass ahead of time, and objective thresholds for
“passing”
● Minimize the amount of time between interviews
● Move decisively: after all interviews, let candidates know
your decision as quickly as possible
Run a Tight Interview Loop
15. ● Make a strong, well-rounded offer: in addition to salary /
benefits, emphasize all the intangibles of working at a
mission-driven org
● Make a time-bound offer: give the candidate 48 hours to
decide
● Use your culture to close the deal: recruit others to reach out
to the candidates with encouragement
Make a Strong Offer
16. ● ~300 applications for 3 software engineering positions
● ~80 candidates phone screened
● ~15 candidates passed the coding interview
● 5 passed the coding interview in less than an hour
● 4 offers
● 3 accepted
Case Study: MoveOn tech team
hiring process 2015
17. ● We advertised on tech job sites with broad reach:
WeWorkRemotely, HackerNews (y-combinator), wfh.io,
StackOverflow
● Also advertised on sites with deep reach: Women 2.0,
Women Who Code, Black Roots, Lesbians Who Tech
● 80% of resumes came from WeWorkRemotely ← benefit of
being remote-friendly
Casting a Wide Net: advertising
18. ● Wording is incredibly important
● Red flag or “trigger” words in your job description can cut
your candidate pool in half
● My algorithm: start with an overly specific job description,
fwd it to trusted colleagues who represent groups we didn’t
want to inadvertently filter out, and edited based on their
suggestions
Casting a Wide Net: editing the
job description
19. This was incredibly helpful: I discovered that in my wording,
I was inadvertently filtering for people like me, when really
what I wanted was to cast a wide net
Casting a Wide Net: editing the
job description
20. ● I removed the phrases “high energy environment” and “ninja”
=> an older colleague told me these are typically code for
“young”
● I removed a long laundry list of “suggested technologies” =>
everyone I showed this to (including 3 people I hired) told me
that since they didn’t 100% match to the job description they
wouldn’t have applied
Job Description Edits Based on
Feedback
21. ● I added clear emphasis on how MoveOn values and uses
technology: even though MoveOn is widely recognized in the
US, its use of technology isn’t well known in the US tech
community
● Made cover letter and mission statement a mandatory to
filter for “how much do you want this job?”
Job Description Edits Based on
Feedback
22. “The MoveOn team considers technology to be a core part of our
DNA. MoveOn pioneered mass online petitions, some of the first
mass distributed online-enabled house parties and remote
phone banks, and user-generated online campaigning. MoveOn’s
millions of members generate site traffic that would make most
startups jealous. And MoveOn has terabytes of data that all staff
have been trained to query with SQL. At MoveOn, making
decisions with data is a core part of how all work gets done.”
Example of “Tech at MoveOn”
paragraph
24. ● 300 applications
● Applications spread evenly across age groups 22-25, 25-35, 35-45,
45-60
● 75% of the applicants identified as the demographic dominant
culture of tech (in the US, this = white men)
● 25% of the applicants identified as not white men
● (While far from even, this better than the avg for the US)
Updated Job Description Results
25. Of the group of applicants who followed all the instructions, and
submitted a cover letter and mission statement along with a
resume over 50% were groups other than white men (!)
If you had asked me to predict these results based on my
personal network, I would have predicted a much different result.
Update Job Description: Results
26. ● 30min phone screen with technical strategy questions covering frontend,
backend, databases, scaling
● 1 hour coding interview: 5min before interview, share a doc with candidate
describing the problem, they code it up in the language / framework of
their choice over video conference, or as a take-home.
● 2 additional 30 minute team fit / campaign strategy interviews with
campaigners
● Reference checks
Interview Process
27. 1. Getting a job with a mission-drive org is viewed as a rare
opportunity
2. Advertise jobs publicly, don’t just hire your friends
3. Test your job description before deploying, and remove “red flag”
phrases
4. Make the candidate prove they want the job
5. Rigorous technical interview
6. Emphasize mission when making the offer
Summary