Why are there so few good developers?
ryanwaggoner.com
ryanwaggoner.com
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 qualityMaybe I'm not as far to the right as I thought I was :-)
It's weird how this "new" field of information technology is expected to be so radically different that common sense needs to be rediscovered.
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.
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.
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.
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.
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?
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.
Even worse is when they didn't buy Office, but had it come "free" with their PC's.
http://www.codinghorror.com/blog/2007/02/why-cant-programmer...
I bet most of those responses are terrible programmers.
[Edit: I also get inquiries for jobs and contracts weekly through Linked-in. It's a great job tool.]
To gauge the actual competition level divide that by the average number of resumes fired off by a single developer.
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.
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.
* Not talking about myself, regretfully.
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.
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.
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.
But, those UI controls aren't going to align themselves...
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.
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?
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?
> 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.
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.
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.
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.
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.
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.
Long story short, the bad drives out the good.
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.