67 comments

[ 3.3 ms ] story [ 121 ms ] thread
"The reason is that almost everywhere I turn, I hear clients and employers complaining about how they can’t find enough good developers."

There are good developers for every kind of job. A good developer for a small bakery around the corner is very different from a good developer for the core search team at google.

The issue then is not why aren't there more good developers, but why can't employers find developers that fit their needs.

This is something that's been covered widely, most notably for hn by pg. If people that are starting tech companies have trouble hiring good programmers, imagine how difficult it would be if you aren't a tech start up company looking to hire programmers.

A small step toward the solution is to write on your blog a distilled checklist of how all of the companies you've worked for were able to describe what their needs were.

Once you are able to describe a problem, it is much easier to find a solution.

The other issue is that a lot of companies have extremely low estimates on what good developers cost. I've been to several smaller places where I knew my knowledge+skill could really help them out. The jobs sounded interesting so I bid the lowest number I could afford to. My number blew them out of the water. So I continue to do less interesting stuff in finance.
This is very true, but I'd like to add that old cliche: money isn't everything.

I'm making about 65% of what I was making 2 years ago, but the experience is far better. I have awesomely talented coworkers, get to work on fun stuff, have freedom to explore interesting alternative side projects/ideas, work from home and coffee shops every day, and have no strictly defined schedule. As far as some people are concerned, I don't have a job at all - but that's what you get when you love what you do and the company treats you like a responsible adult (an all-too-rare thing).

While I do sometimes feel that the money is not enough month-to-month, I have enough to invest some in retirement each month, pay a little extra on my mortgage each month, and occasionally buy a new Apple gadget. Not having any other debt (besides mortgage) makes this easier, too. If there's a bigger lesson here, it's to eliminate your debt while you're making the big bucks at the boring job - because that'll free you up to take the more interesting but lower-paying job when it comes along. Don't be a slave to your lifestyle.

People who say "money isn't everything" are often selling themselves short. You can have all of those things you mentioned, and still get paid a good salary, you just need to find the right company.

Too often, I've found that the companies that don't pay well are also filled with terrible employees, simply because the only people left are those that couldn't get a job anywhere else.

Also, any manager that says "we're not going to pay you as much as the industry standard for someone with your experience, but hey, you get free soda in the break room and you can work from home a few days a week" is ripping you off. Plain and simple - he figured out that spending a few cents on sugar water lets him save $thousands on salary.

You can make six digits plus, and still work from home, and chances are you'll be working with smarter and more talented people because they just won't let any schmuck that can't get a better job stick around.

I'm not sure why you'd assume that being okay with being paid average (or even slightly below) is such a crime. How does this translate to the company being filled with "terrible employees" and the like? I think you're assuming that everyone's goal in life is to just make as much money as possible and damn the risk. It's not.

The company I work for has been around for more than 10 years but is very small and fiscally conservative. I've worked for plenty of high paying startups (often from home and coffee shops and doing interesting things) who die in less than half the time this one has been around. In some cases, they died because they were paying above average wages in a misguided attempt to compete for the best of the best. That didn't work out so well. Of the 5 or so startups I've been with in the last few years, only Tapulous remains in business. Sure, they all paid great and I got rid of my debt during those years, but it didn't work out so well for them, did it?

>In some cases, they died because they were paying above average wages in a misguided attempt to compete for the best of the best.

It's not misguided. I've worked in every size of company, from a <5-man startup to fortune 5 and the best developers I've ever worked with were at a mid-sized hedge fund. The work was relatively boring and the management was shockingly bad but the much higher pay brought in some really talented developers. The only reason the place didn't fold was because of the effort of these developers.

It's not the money I'm thinking about, it's freedom with my time. The more money I make now, the less I have to worry about making later. The things I'm really interested in no one is going to pay me to do (research, but I don't have a PhD), so the only solution is to make enough to take big blocks of time off every few years.
(comment deleted)
I get that a lot too. It's why I've stopped targeting a lot of small (10 people or less) companies. Too many conversations seem to go like this: "I just bought a copy of Microsoft Office for $500, why should I pay $1500 for <much simpler piece of custom software>."

Even worse is when they didn't buy Office, but had it come "free" with their PC's.

People define "good developers" as those who are extremely passionate about their work. They come home code more or read/blog about code. It's not entirely surprising that the people of this mold are a minority in the field.
There are plenty of great developers.
Perhaps you could substantiate your statement a little more. The OP has written 750 words arguing the opposite. You write 6 words making no argument and somehow think that's a valuable contribution to the discussion?
I don't really see the OP as having argued anything as he states that he might well be incorrect. In such a case a 6 word response can be as equally valid as 750 words of unqualified blog filler.
Ouch. I'm not sure how admitting that my knowledge of the subject in question might be less than perfect constitutes "not having argued anything".
Maybe he had something really valuable to add but passed out thinking about it and his head hit the reply button?
The article claims that there is a lot of demand still for developers, in spite of the recession. This may be so, but I get the impression that the supply is still many times higher. I was looking for work last year, and sure enough there were plenty of places looking for developers. I contacted those that appeared to be a good match for my skills and experience. Often they did not reply at all, and many of those that did reply mentioned that the response to their job posting had been overwhelming... suggesting that while the jobs are out there, you have to compete with hundreds of others, just to be considered.
Part of the problem might be that the overwhelming response often consists largely of people looking for a job, any job. My company advertised on Monster once, and got hundreds of resumes from mechanics, secretaries, and Best Buy types.
It all depends on skills and experience. It also helps to be currently employed. I had recruiters bugging me monthly this past nov-jun. Current employer and another local company struggling find enough devs to hire.

[Edit: I also get inquiries for jobs and contracts weekly through Linked-in. It's a great job tool.]

Any tips on getting inquiries on linked-in?
Completely fill out your profile as you would your resume. Join relevant groups.
I filled out my profile completely. How does joining groups help?
Internal and external recruiters often reach out to prospects through the groups they belong to. Problem is they're not very location specific.
Agree with the effectiveness of LinkedIn. In my last job I had recruiters calling me on my company with offers.
"...you have to compete with hundreds of others, just to be considered"

To gauge the actual competition level divide that by the average number of resumes fired off by a single developer.

It's not about you thinking you are a good developer, but about the employer thinking you are a good developer (i.e. you are a good fit for their purpose -- not talking about your actual skill itself).

                        How Stuff Gets Done
                       
    |                           ..
 d q|   where                 .    .                 where
 e u|  negative             .        .               real 
 v a|    work              .          .              work
 e n|    gets             .            .             gets 
 l t|    done           .    everyone    .           done  
 o i|     |           .        else        .           |
 p t|     |       .                            .       |
 e y|     v .                                        . v
 r  |________________________________________________________
     5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
                         developer quality
Shouldn't the y-axis be quantity and the x-axis be quality?
Yes fixed, thank you.

Maybe I'm not as far to the right as I thought I was :-)

Nah - expediting bug fixes moves you further to the right.
OOC, did you draw this by hand, or is there an ASCII art chart maker out there?
By hand. Space Bar, BackSpace, Delete, and patience are my friends.
Too bad you didn't have enough space to fit in "Where useless work gets done."
You should befriend emacs' artist-mode as well ;)
Well yeah, and this is true for every field/profession right?

It's weird how this "new" field of information technology is expected to be so radically different that common sense needs to be rediscovered.

It's true it's hard to find good programmers. Two reasons, I think:

1. Norvig's learn to program in ten years. Even if there's lots of demand now, people can't just say oh, there's lots of demand, let's go program now. They have to spend ten years becoming a good programmer first.

2. You can only tell if someone's a good programmer if you've worked with them (and sometimes not even then), and so you pretty much have to get a referral from someone you trust who has worked with them, which limits your pool of definitely good candidates to a very small number.

Some anecdotal evidence: Doing my graduate degree in computer science, it was hard not to notice the lack of Americans in my classes. Sure, there were plenty of Americans on the business side of school, but not engineering. I receive emails and calls from employers and recruiters weekly, and a large number of the positions require you to be a US citizen. Maybe that, combined with the fact that a lot of the good developers are already working creates a shortage of good developers available to be hired?
In my experience it's a lot easier to find a good developer than a good plumber or lawyer - and bad plumbers or lawyers can do an awful lot more harm.
Maybe that's just because you're a developer and can more easily attract and evaluate good developers, as opposed to the fields of law and plumbing, which you presumably know less about.
I've always noticed that companies advertise for Sr. Programmers. Everyone wants trained programmers but few are willing to train them. Since those are the only jobs advertised, job seeking junior programmers are forced to apply for jobs they know they aren't qualified for, virtually guaranteeing that hiring managers will receive a bevy of applicants that, on paper at least, don't match the hiring criteria.
Yes, I've run into this many times as well. Personally I'd love to get into some type of programming job (esp. at a startup), but I didn't major in CS or Computer Engineering nor have I had any professional experience in the field (read: haven't had a job programming professionally, therefore not qualified for a senior position). Maybe it's just the current economic climate but I've found this true of many startups as well (looking on job boards like Startuply, for instance).
Maybe it's just the current economic climate

For advertised jobs, the "Sr." requirement has been true for years. Everyone has their own way of judging economic growth and decline. Me, I like to look at job ads - esp. engineers and programmers. Both of those areas have senioritis.

If it takes "10 years" to learn to program, and you hire a guy five years into his ten years, and the average duration of employment is two years, and all of these clauses are "common knowledge" regardless of whether they are actually true, you can see the problem.

Training is a real long-haul investment, and in an at-will environment and culture even strictly considering the employer's side in an environment where the employee can leave literally at any minute makes this a very risky move. Train people to some extent, sure, but like actually give them the equivalent of a college education "on the job"? Sounds like a fast way to bankruptcy to me.

Since this guy is addressing 'web developers'... I got out of that game what every client was another person who was harass me indefinitely about minor site changes.

I realized the initial design money was not worth the phone calls and b.s. for the lifetime of the site.

And I'm not even a good developer. Frankly I think "good developers" don't need or want to deal with that crap.

"That guy" here. I know what you mean, and my solution has been three-fold:

1. Batch maintenance tasks together a few times a week, and manage client expectations accordingly.

2. Charge. A lot. In 1-hr increments, even if it takes me 5 mins.

3. Find a junior dev to sub that stuff out to. I taught my brother to program and he's paying his way through private school now doing maintenance work for my clients. Win, win.

When you say "it's hard to find good developers" what you really want to say is "it's hard to find good developers I can afford".
But this is a function of very high demand relative to supply. Why else would a 25-year-old with no college degree and five years of experience be able to charge $125 / hr for his services?*

* Not talking about myself, regretfully.

No, because good developers aren't strictly segmented by price. Bad developers are just as willing to take a high salary, and there are much fewer good developers.

At my last corporate job, we had a hard time finding good developers, even before the topic of compensation came up. That can be attributed to the unsexiness of the industry (fiber channel / SAN).

We went through a round of resume screening and applicants. We filtered > 100 resumes, and interviewed maybe 3. Our intern, an undergrad, was a better programmer than any applicant we saw.

One guy, with maybe 10 years experience, was coding on the whiteboard. We asked him to write something. He said "It can't be done!". I was seriously tempted to grab the intern and have code it up.

The parent comment is saying that to attract a good dev, e.g. from Google or IBM, you have to pay much more to compensate for doing less interesting work. Personally, I'd accept a living wage to work as a post-doc, but I'd need a truck full of gold to work for an insurance company.
Make sure to give your intern a raise. Seriously.
I think the biggest problem is that many developers never make the leap to professionalism after they graduate college. They bounce between firms without ever going through a mentorship that increases their ability to effectively develop software at scope, learning tool after tool and shipping little application after application and never growing.

But, those UI controls aren't going to align themselves...

There's no career path to get good at development.

As soon as you get good at development, you start getting promoted into roles where you increasingly do things that aren't development.

Is it any surprise that developers aren't good when companies systematically remove good developers from development?

My one main weakness is what i find stands in my way of being great and that is i make a sucky employee.

I detest routines, my life doesnt fit a 9-5 schedule, i often stay awake for over 30 hours and then sleep for 12-14 hours, i get extremely bored of work that is the same every single day and i will quit and i also dont fit into the "professional" sector at all as i detest small talk and stroking other peoples egos for the sake of it. I also dont understand "company loyalty", thats something my Grandparents valued, to me it seems really quite silly. Sure, i'm not going to disclose the companies secrets, but i'm not to stop myself looking for other, better, higher paying jobs just out of loyalty.

This is why i freelance, it suits me well, i can work whatever hours i like, i'm perfectly comfortable with meetings with my clients because its always on topic and isnt about shmoozing, and i'm paid way more, also, i know if its boring work, its always temporary so i can get through it.

The other thing is, what companies call "benefits" arent beneficial at all in my book. Pensions, stock options, gym memberships, free lunch, corporate retreats, private healthcare (i never get sick and i'm in the UK so the NHS is good enough for me), dental, etc. I dont consider any of those a benefit to me, i'd rather have the money.

So yeah, i'm a technically competent developer, but im a sucky employee, so i found a groove that works for me, it also suits my life very well, i dont have a wife/kids so its also very easy for me to travel around etc.

"Be regular and orderly in your life, so that you may be violent and original in your work." - Gustave Flaubert
Thats why we are seeing so many regular and orderly and mediocre programming (languages) around. Because if you are regular and orderly in your life, then that's just who you are.
What is "good"?

> Too hard for most people

I wonder if (I consider it a possibility without searching for evidence or thinking too much about it) good developers are not common for same reason good singers or artists or athletes are not common. Talent. Development is an art honed by science and experience. But without talent no amount of training or experience will ever get you out of the minor leagues.

The problem lies in how badly companies hire developers.

Sadly, the example used by the author - web development - is quite fitting. We have all met the sort of client who was never satisfied and for whom the saying "I don't know what I want, but I'll know it when I see it" was written. The same applies to companies. The hiring folks are not sure what they want, so they put out a bingo card full of specs and hope that something might work out OK.

TL;DR - companies and clients don't know what they want, then complain then they get it.

I like the Spolsky thesis: there are plenty of good developers. For cultural and practical reasons, they will spend very little if any time on the public hiring market. Accordingly, almost all hiring processes identify bad developers, or good developers in very extraordinary and rare circumstances.

I am not a 95% developer, but I get some stuff done. I think I was available for hire four days of my adult life. That number will never increase.

Right, in fact being in a recession probably makes this more stark as companies cut back and lay off underperformers. Meanwhile, high performers are more hesitant to change jobs, particularly to go work for a new company which might not survive in this economy.
The pros on this list really resonate with me. Whenever the "women in computing" discussion comes up my biggest input is that women are missing out on a job that can pay exceptionally well right out of college, offer flexibility down the road and that it's FUN to create stuff.
The question should be, "Why don't you know where to find good developers?"

If you want good developers to join the market, you're asking them to be good at two things: development and noticing economic opportunities. They don't always go hand-in-hand. You could wait for some "this is the last straw!" event, which may never come and even if it did, the developer still has no idea who you are. Or you need to recruit good developers and tell them they have a better opportunity at your company. Google seems to find candidates this way, just by sending people to universities, using recommendation systems, and trawling the web for people who post good work.

sometimes truth can be found in movie quotes ( sometimes, not )

  THE MATRIX 
  Agent Brown: Perhaps we are asking the wrong questions.

Ever since I started starting companies I have been looking for co-founders, engineers, hackers and developers.

It seems to me that the best co-founders are not the greatest coders, but they are relentless and extremely open-minded. In fact they probably will write crappy code that needs to be fixed later, but it got done and the company moved on. They don't care about code quality, they care about relationships, about milestones. They read books, and they like a variety of tasks, each requiring focus and effort. They are happy doing stuff alone, and getting people to come along.

As for developers they can make a good thing, and make it better, even great. They take a vision and make it possible. They are usually shy.

Engineers seem to be about the truth in process or systems, and they are one step away from idealistic scientists.

Hackers are more like artists. Code, and computers are just like a paintbrush for them. They need to be inspired, and they bend the perception of what is possible. Impossible is not in their vocabulary. They are OCD and love focusing intently on one beautiful problem at a time. Maybe hackers should never be employees. Hire them as consultants. Give them their freedom.

The best employees have always been developers, but they are risk adverse. Engineers should only be hired for a 20+ sized company.

Hackers and cofounders are the best people to start companies with as they seek risk reward scenarios.

In my neck of the woods I think the problem is a lack of software managers, not a lack of talented developers -- maybe things are different in Silicon Valley.

Somebody who could do very well in an organization that manages tasks, deadlines, architectures and conflicts well could be an NNPP or a ZNPP in an organization that doesn't.

It just occurred to me that there's another reason: in programming, it is relatively easy to detect a bad programmer.

Consider another complicated profession, like securities analysis. As long as they know the jargon and have some reasonable-sounding opinions, you cannot determine who is skilled and who isn't with a five-minute interview.[1] It might take years to separate skilled people from the lucky, or even the unlucky!

So it may be that in other professions they have similar difficulties hiring good quality workers. It's just that it's impossible to know with a five-minute "fizzbuzz" type test.

[1] I'm just guessing here; maybe a Wall Streeter can set me straight?

Maybe those companies that have trouble finding good developers are using HR-bots and headhunters who are looking in the wrong places, focusing too heavily on checklists, and asking the wrong questions?

The funniest trend I notice these days is that headhunters do the reference checks for hiring companies. It's in a headhunter's best interests to make sure a short lister gets hired. Yes, headhunters have minimum-term guarantees to keep their fee, but I do notice that many companies are also slow to fire someone who isn't blatantly incompetent, so there's a good chance that a headhunter will still win by placing a dud.