6 reasons why you can’t find programmers

I’m without work at the moment. That entails spending enough time per day finding one, and working on projects aiding with finding one, to leave me brain-dead by 5 PM. I’ve been asked multiple times why I can’t find a suitable job despite the dozens of open listings and what seems to be a lack of programmers to fill those positions.

I thought it would be nice to list why they can’t find programmers, from a job seekers perspective.


One. Cut the fluff, bring out what the reader wants.

You’re writing an ad. You want me to get pumped for it. As Antoine de Saint-Exupéry wrote (in French),

If you want to build a ship, don’t drum up the men to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea.

You’re not really making me too excited about your job offer if 8/10 paragraphs state that your business is really awesome (according to the owner), and that you offer the same stuff as everyone else. Get me excited! Tell me in great detail what I will work with, and how I will be proud to see hundreds of clients use the code I wrote!

Also, you can totally bribe most IT-related workers, including programmers, with the latest and greatest. If you have PhpStorm for everyone, say so. If you let employees pick their own keyboards, mouse and screen setup from a budget, say so! Don’t forget to make your site look “modern”. At least remove that Made for Internet Explorer 6 badge from the bottom of every page.

Two. Don’t combine too many roles.

I’ve found numerous listings which wants to put you, a “junior developer” in charge of doing

  • Design and development of software.
    This makes sense. It’s the title.
  • Administration and maintenance of servers, both software and hardware.
    DevOps isn’t uncommon, but if you have the finances for it, you probably should entrust that to an actual System Adminstrator, and not a junior developer.
  • Testing.
    Writing unit tests? Sure. Actually testing the application? Ehh… It’s generally cheaper from a business perspective to at least contract in some quality assurance folks.
  • Sales.
    No. It’s like asking a mechanic to sell a Fiat 500L. Programmers will be aware of all shortcomings, and even if they get a sale by lying through their teeth, they will have to deal with the fallout.

I also found listings which told you that you were expected to travel a lot. As a “junior developer”. Yeah, right.

Three. Break the stigma.

If you have a developer and a project, ask them what stigma can surround languages and frameworks you’re using. For example, it’s probably a good idea to include version number with PHP or Java, since they have changed quite a lot with time.

I really wouldn’t mind something that runs on PHP 7, if you’ve been stuck on PHP 5.2 since 2009, I’ll pass, thank you. The only thing calling me to an interview will do is waste time for both of us.

Four. Cut out your degree requirements for entry-level jobs.

We’ve established that you’re writing an ad. For a low ranking “junior” job, cut some slack. It’s known that at times, degrees are bunk and a practical test like FizzBuzz is more efficient. Replace them with a three choice path — where fulfilling one of the three is good enough to forego the degree or previous experience requirement.

A project in a related programming language to the one you want.

Would I surprise you that it would take about a day, with documentation at hand, to write good C# if you know C++? They are both class-based and has a C-derived syntax.

A relevant problem for which they need to formulate a solution.

If you have a lot of encoding problems, present an encoding problem. This works for pretty much any bug filed by QA that has been fixed. Give them ample of time (two, three days) to come up with a cause and a possible solution, along with how they came up with it all.

For example, after passing through a pipeline of tools, a message comes out as:

I???m sure life is busy, even hectic and I???m sure you have many Talent Acquisition people contact you too. Well you can add me to the list??? and there is little I can say to make myself the ???different one???.

My “solution” for this:

My mind instantly jumped to Unicode, or rather UTF-8. It’s common, and due to the design of UTF-8 “higher” characters use more bytes.
It makes sense if you look at the possible culprits, as rendered with UTF-8:
* “ (LEFT DOUBLE QUOTATION MARK, U+201C) is <e2 80 9c>, binary <11100010 10000000 10011100>.
* ” (RIGHT DOUBLE QUOTATION MARK, U+201D) is <e2 80 9d>, binary <11100010 10000000 10011101>.
* ’ (RIGHT SINGLE QUOTATION MARK, U+2019) is <e2 80 99>, binary <11100010 10000000 10011001>.
Judging by the position of the ???’s, the message was written with “fancy” non-ASCII characters, saved as UTF-8, and then something along the line replaced all non-ASCII characters (8th bit is set) with question marks.

Note how I didn’t say exactly how to fix it, but identified a likely root cause. I didn’t even directly demonstrate that I know how to program, but it’s likely that I can. I don’t know of anyone that knows this kind of stuff without programming, but if you’re doubting, just do FizzBuzz as described in the next alternative.

A quick programming test called FizzBuzz.

FizzBuzz is, to quote the original post,

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Inform about the modulo operator, which most people probably has never seen but know what it is when you speak about it — it’s the remainder of an integer division. 5 modulo 2 is 1. Speaking pseudocode, you’ll most likely get something close to

for each number between 1 and 100
if number modulo 3 times 5 is 0
print FizzBuzz
else if number modulo 3 is 0
print Fizz
else if number modulo 5 is 0
print Buzz 
else 
print number

Five. Programmers can learn.

Shocking, right? I’ve seen job listings which lists “experience with an agile environment” as required. Disregarding the fact that Agile has ended up a buzzword in plenty of places, it strikes me as something that you can teach a new employee.

Same goes with your framework of choice. If they know the underlying language they can pick up how to use the frameworks vastly simpler functions, because that’s what your framework does, right?

Six. Let me quickly apply to the job.

If you’ve come as far as getting me interested in the job, nothing kills it quicker than a “Send CV/Resume and cover letter to John Doe, Generic management title, at j.doe@example.com”. At least have a web form for submitting a CV/Resume and cover letter if you don’t want anything else, because there’s nothing more awkward than those emails.

To: <j.doe@example.com>
From: P. Rogrammer <p.rogrammer@example.org>
Subject: Applying for “Junior programmer”
Resume and cover letter is attached.
Sincerely,
Patrick Rogrammer

What if there’s multiple positions named the same, and you’re not aware of it? Ask any of your existing developers, they could probably set up a form on your website that does the same thing, but the person trying to get a job won’t wonder whether it arrived as it should or not, or whether everything is attached as it should, because John only checks his e-mail every Thursday morning and rarely send any back since he thinks e-mail costs money, just like real mail.