Simon Sarris

Hiring Software Developers in the Provinces

April 21, 2024

Or: the junior-first approach

Software hiring is reminiscent of the ancient aphorism that is oft summarized Ars longa, vita brevis:

Life is short,
and craft1 long,
opportunity fleeting,
experimentations perilous,
and judgment difficult.

Software interviews are a famously toilsome task for both parties. Candidate skills tend to span a wide chasm: one developer might be bewilderingly productive while another may actually hinder a project. And possibly that describes the same person on different projects! The complexity of the craft means that the talent of a developer may not be apparent for several months, so all kinds of tests are devised to suss out these skills in just a few hours, or days.

On top of this, the ideal developer must practice more than just communication with machines. The nature of software projects demands an amount of human coordination and courage. Software (when we are lucky) begins with a vision and a clear view of the end. The mysterious voyage to reach that vision requires one to endure a thousand frustrations, goose chases, disappointments, lassitudes, setbacks, disillusionments, and sometimes ancient sea monsters like AngularJS. To do well in software, one must have a patient disposition and a tender heart, if not for one’s own sake, then at least for one’s colleagues.

There are further traits needed, but suffice to say that good developers looking for work are as rare as they are valuable. This leaves a problem for companies like mine, which reside far from the city, where talent liquidity is even lower.

But while good developers are difficult to find, they are not as difficult to grow. After the founders, my company has only ever hired developers that were interns first, including myself, with the pipeline beginning in high school. This was not a deliberate strategy at first, but has worked well for us for over 15 years. It goes roughly like this:

  1. Year round, keep track of tasks that would be a good fit for summer students.
  2. Approach regional high schools, asking for the programming teacher contacts (eg, AP Computer Science teacher, if they have one).
  3. Ask them who their best students are, be they juniors or seniors, regardless of any intended major2
  4. Interview them. If the teacher really vouches for them, give them a chance regardless.
  5. Invite the best ones back every year.
  6. Junior or Senior year of college, offer them a job.

This is, I admit, not a strategy for the silicon valley pattern of taking a company with a headcount of 10 to a headcount of 200 in a year. But then again, most software outfits doing that are already concentrated in the cities. This is a hiring strategy that requires some patience and acknowledges that you could use more juniors than seniors. It is an organic approach to company growth, but one that I think is quite underrated. If you’ve ever thought “we can’t find good juniors”, asking local high school teachers is the least you could do.

The benefits are many: The students are delighted, they often really are the brightest kids in the area, and this gives students who want it an opportunity to stay. If you only hired right out of college, it might already be too late to even find them (after all, where are they? Spread out across universities). If you are organized, bright interns are generally useful, sometimes even in their first year, and the internship acts as not only a long term interview but a chance to mentor them into the kind of programmer you wish they would become. It avoids almost every pain point of the conventional hiring practice.

Of course, it does take an amount of work and your own time to structure internships, but after the first real hire it creates a virtuous cycle: once you have junior employees, you can direct them to train up interns as well. The whole point after all is that more colleagues will make your operation smoother. A junior-first approach to hiring might be slow to start, but it scales very nicely after that. I think our approach was actually closer to the norm for most of time, and is a bit too ignored today. So if you’re having trouble finding developers, why not start with high school?

I work for Northwoods Software since the 2010s, which has been creating diagramming libraries since the 1990s. Among other things I develop GoJS, the modern diagramming framework for rich and interactive data visualizations.

1 This is usually translated as "art" as in Art of War because of the Latin summary, but the original Greek has it as techne: craft or technique.

2 Many of our best students were actually declaring a physics major, not CS. And one of them was a multimedia major, who decided to switch after his internship.