How Do You Find Programming Superstars? 763
Joe Ganley writes "You are a programming superstar, and you are looking for work. I recognize this happens relatively rarely, which is part of my problem. But stipulating that it happens, how do I, as a company looking to hire such people, connect with them? Put another way, how do you the programming superstar go about looking for a company that seems like one you'd like to work for? The company I work for is a great place to work; we only hire really great people, we work on hard, interesting problems, and we treat our employees well. We aren't worried about retention or even about how to entice people to work here once we've found them. The problem is simply finding them. The signal-to-noise ratio of the big places like Monster and Dice is terrible. We've had much better luck with (for example) the Joel on Software job boards, but that still doesn't generate enough volume." What methods have other people used to find the truly elite?
Simple filter. (Score:2, Interesting)
It takes a good software guy to know one (Score:5, Interesting)
Assuming you already have a couple good guys on staff (but how do you know they are good?
Re:One opinion (Score:5, Interesting)
In 3 Ways... (Score:5, Interesting)
We use the old boys network (Score:5, Interesting)
So go to the experts at your current job, the people you REALLY respect, and ask them if they know someone. If they say no, then they're probably LYING, and you just don't have enough to draw their friends. Try to find out why, and fix that. Then those same people you asked will begin suggesting people.
If you don't have experts at your company, cast your web out to all the experts you know, and offer to pay people what they're worth. You may have to pay enough to relocate someone. That can get expensive. Say you'll do it.
This is in conjunction with the advertising of the job, not in lieu of it.
Start an open source project (Score:5, Interesting)
Re:Simple answer... (Score:5, Interesting)
The superstar is more than just somewhat hard to come by.
First, they are only going to be 1 out of every 100 programmers you work with. And that is only if you are lucky, and if you are good at hiring. If you hit job boards, you aren't good at hiring. (with apologies to the job board advertisement that is almost definitely above this post
Second, they can almost never identify themselves. Lots of people THINK they are the superstar. But then they get very little actually accomplished. These are the people I've lost to Google. But the superstar does much more than just know the tech details. They actually get stuff done. And their code really really works. And it is highly reusable. And they change others around them. The always make sure the best tools are in place, and they get others to use those tools, not just themselves. In this sense, they are also quite good leaders, although most do not want to manage large teams (and you'd be wise not to have them do so).
I've probably worked with 1000-2000 programmers in my lifetime, and I think I would give only about 10 of them the "superstar" status.
The superstars produce 2x to 10x what a very good programmers can produce in the same amount of time.
As far as finding and hiring them, the biggest problem is that they are very rarely on the market. So job boards are a bad place to start.
Just about all (maybe even 100%, actually) of the superprogrammers I've hired have come from friend referrals.
Go to your current employees, and give them very big checks if they can attract other programmers to your firm. Make sure this is worth their while (ie: $10,000 or more for bringing in someone). This will almost always be your best bet to find these guys.
Re:Simple filter. (Score:4, Interesting)
Lets face it, the biggest problem with development (and what causes the most failures) is not the "superstar" quality of the ocders, but their ability to work as a team, which basically means "management" by the program lead. If the lead isn't able to socialize outside the coding group (and open up the barriers between the coders and the rest of the business), you're either going to fail, have lots of delays, or a really poor product.
We give a lot of lip service to communications, but communications is more than just emails and meetings. Most real communications are one-on-one, with a bit of socializing thrown in. People are more likely to be open and honest about problem areas, and to offer their opinions and solutions, outside of the "formal development process".
You don't find me ... (Score:5, Interesting)
Seriously.
I haven't had to 'look' for a job (i.e. interview with more than one company) since the early 90s. I have a network, and if I want to change jobs, I ask the people I respect the most (and who I think have respect for me) if there is anything out there. (Changed job 5 times due to corporate changes such as mergers, acquisitions and startup failures.) Usually my income went up, but I took a cut in pay for the last one because the company appears to be that much fun to work for.
People who are truly superstars are probably working at a job they like and you won't be able to budge them *unless* you have an open pocketbook or something 'Google-like' that would appeal to someone who can get a job anywhere. Or something has changed (or their patience has just run out) and in a month or two will have another one through people they already know.
My suggestion is if you want a superstar, start networking with the people YOU know and respect the most. Maybe your network and a prospective employee's network will connect somewhere. That's how I got this one. A guy I know knew about this job and let me know about it because he thought it was something I would be interested in and knew that my company was going through an acquisition and thought I might be looking.
Re:It takes a good software guy to know one (Score:5, Interesting)
Class A people hire class A people
Class B people hire class C people
I think that is spot on.
Re:Old? You mean "Young with Experience"... :-) (Score:3, Interesting)
Hey, I'm juggling Perl, C++, Java, Fortran, and a few other languages for a living. How could that NOT be fun? ;-)
You could spend more time with Perl, C++, Java and Fortran, and less with the other languages? ;-)
You don't. They find you. (Score:5, Interesting)
http://mozy.com/contest [mozy.com]
What you have to be prepared for is the unexpected winner:
http://uphpu.org/pipermail/uphpu/2006-November/005608.html [uphpu.org]
It was so succesful they did a second take, check here for sample questions:
http://mozy.com/contest [mozy.com]
Behavior (Score:2, Interesting)
Writing a good job listing and recruiters (Score:4, Interesting)
Let me tell you a story...
I'm no a "superstar". But I'm a solid experienced programmer who does it for fun. I spent ten years with one company -- growing with it from an intern in a six person company to a senior engineer in a nine hundred person company. I got bored, and I left. Since then, I've been going to grad school, and browsing job listings looking for that "perfect job" for when I decide I should go back to work. I've talked to dozens of recruiters and been to a number of interviews, and I've taken a few short term jobs, mostly for fun, or to see what it's like, but mostly I take it easy, and do the school thing.
So I've looked at a lot of job listings and talked to a lot of recruiters, and one huge problem I've found is that recruiters tend to know next to nothing about the positions they're recruiting for. I got a cold call from a recruiter the other day for a position that isn't something I would ever do because I'd been one of the people who built the software that they were implementing at their client -- sort of like trying to recruit Ian Murdock to help implement Debian at your client site. A little bit of overkill.
Her problem was that all she had to go on was the name of the software and a long list of programming languages. She didn't know what any of it meant, and was just looking for resumes that contained those keywords. To help her out, I explained to her (in small words) the architecture of the product she's recruiting for, and the different types of experts available, and told her what questions to ask to see if people are a match for the position. It won't help her judge their quality, but at least it'll point her toward people who might be interested.
Speaking of long lists of programming languages... there are so many job listings that list all major programming languages or all major operating systems. That's... stupid. How many projects use five different programming languages? And who'd want to work on one that did? I usually know most of the languages listed, but it makes me suspect that the author of the listing doesn't know what they're talking about.
So the important things, I suppose, are to make sure that your job advertisements are fairly specific to what you're doing -- don't advertise J2EE if you are writing your own threading and server code, don't advertise "Core Java" if you're looking for someone to program JSPs. And if you want to scare off the lesser programmers, mention "scary" algorithms that might come in handy -- "familiarity with Q-learning a plus" or something like that.
Good luck!
--brian
Dig in the hinterlands (Score:5, Interesting)
As an example, I spent most of my life stuck in Southeast Idaho. There's a surprisingly large geek population there, but not a lot of employment for them. Generally people wind up stuck in low-paying dead-end jobs doing whatever they can (first tier phone tech support at the call centers that constitute the majority of non-agricultural employment, or as IT for a cash-strapped school district that is distrustful of the internet for religious reasons).
Because you are living paycheck to paycheck, you don't have the ability to relocate yourself with the funding necessary to find a job somewhere better. The majority of escapees (including myself) that I know of actually LIED on their resume and put a friend's address on it in a more lucrative market, and then lived homeless/couchsurfed/hitchhiked in order to get to interviews. It takes a lot of guts to throw caution to the wind and do that, and there's so much potential talent out there that could be snagged if employers would just reach out and find people and offer an escape that doesn't involve so much uncertainty.
Most people within 20 miles of Silicon Valley/NoVa tech corridor, etc. have the physical support infrastructure to get a job already. The hidden gems will be found in places where geeks don't have that option. The best places to look are population 25k-75k towns which don't have a major metro area within a 150 mile radius, and a depressed economy that precludes local employment providing enough income for geeks to self-finance a move to the high-cost-of-living of a tech hub.
Salary range (Score:3, Interesting)
I don't know if this will work, but here's a suggestion: increase your offer by 30% and on top of that be willing to pay for the services of headhunters and "staffing companies". Limit each headhunter to one resume.
Next step is to devise a way to qualify the applicants. This is an eternally discussed subject, and there are lots of suggestions out there: IQ-type questions, portfolios of past work, hobby computer experience, and just plain old good interview questions, such as "what's the hardest bug you've found, and how did you find it?"; "what's the most speed optimization you've realized?"; "what's the most clever algorithm you've invented?"
Finding geeks (Score:2, Interesting)
My advice is to go surfing looking for unusual resumes and examples of good work of the kind you're looking for that have been placed on the web by geeks who really hate hunting for jobs but look like they might be fun to work with and seem to live to write code. I'm sure they'd appreciate it.
Re:shortcomings of the windows environment (Score:3, Interesting)
Someone who is truly amazing at getting the most out of a LAMP web site isn't necessarily the best person to write a first-person shooter in C++. They're superstars in one arena, not all arenas, and maybe not your arena. In that case, they aren't a superprogrammer to you.
Re:Simple filter. (Score:5, Interesting)
Actually, I did that a lot when I first got hired at my current company. I flunked a round of interviews partially because of my hot-headed attitude and MS bashing.
I did a 2nd round with a different group and kept the rhetoric to a minimum. But once I was in, I turned on the flame-thrower again. "I can't beleive you put up with this crap -- pine and sendmail will service 25,000 mailboxes on a 1 proc machine", etc. I would constantly compare the lame MS experience to some F/OSS experience. This was back in the 2000-2001 time frame. Was it annoying? yes. Did people listen to me? Yes. Did we switch to f/oss software? No. Did a lot of the software we used to do our jobs get better? Yes.
The company I did this at?
Microsoft.
I'm a Microsoft Employee, and I'm a QA engineer (tools & automation developer). You had better beleive that when one of us says "F/OSS kicks our ass at this", people here eventually notice and try to remedy the problem. (Clearly, there's great job security here
I agree with the generalities of your point. You need to pick and choose your battles. But one thing I'll say is -- if you're frustrated that MS products are so (in your opinion) inferior to some F/OSS (or any competing offering) product, MS is a great place to work. We take competition very seriously, and we need more people that are used to not rebooting, apps not taking down more than they need to, user separation, simple tools that are efficient and single-purposed, etc, to help us make better software. When I joined, there wasn't a linux compete team, a compatibility lab, etc etc. Now we have all of those things and there are people who actually study where we don't measure up.
Re:Simple answer... (Score:4, Interesting)
I've noticed this too in my own interviews with them (no they didn't hire me). Their interviews seem to largely test for people who can a) remember stuff, and b) think on their feet in high pressure situations (like interviews). They seem to completely ignore previous experience, references, and other stuff. Being able to perform well in an interview is often not a good reflection of a person's potential.
On more than one occasion, I told the interviewer/screener that I didn't know the answer to a question and they proceeded to ask if it were "a" or "b" where it was so obvious that only one of them could be correct (ie "a" = !"b"). Them telling me the answer to their question is disingenuous and I had already said I didn't know so they should take that as my answer - I felt like they were asking me to cheat.
In many cases, the answer to a question could be found out in a couple of seconds by looking it up in the manual - or a web search (knowing how to find answers is still a skill). Those of us not still in our 20s have learned to select what we remember and forget what we can easily find out again when necessary. One of the principle things we remember is what problems various technologies can be used to solve, and so we can build systems using different technologies in order to solve bigger problems. We learn how to learn new things. We build intuition not a database.
Selecting only specialists with good memories and high confidence under pressure is fair enough, if those are the sort of people you want (ie they remember all the nitty gritty details of all the technologies they've worked on), but I wonder what it would be like in a company full of such people. I've heard some stories about Google, for example, that make me think that they could do with people who actually just 'get on with it' - ie not everyone has to be 'a superstar'.
Why do companies want people like this? Are these people 'superprogrammers'? Do they actually get work done in real life?
What about people who have demonstrated that they can solve problems by selecting from, learning, and using various technologies that are available? People who are engineers rather than programmers.
Also, do companies only want specialists these days? Is there no place for a generalist? It seems to me that generalists are quite valuable for startups and small companies, but large companies want teams of specialists, with each a specialist in a particular area. I the larger companies, I guess a generalist might be a reasonable manager or system designer, with the specialists doing the bits of the system they are specialist in...or something.
Re:It takes a good software guy to know one (Score:2, Interesting)
Re:Appeal (Score:4, Interesting)
But make sure you have something interesting to let them work on, otherwise you'll lose them, probably to the banks where they will be paid at least six or seven times what you can afford - make sure your projects are at least that much more fun for them to work on. And never EVER EVER put a math/science person in charge of any sort of UI, no matter how good a coder they are. Seriously, don't do it!
Finding Superprogrammers. (Score:4, Interesting)
- Know them personally or have worked with them in the past. When a stellar programmer changes jobs, it is almost always to work with someone they have directly worked with in the past. The great programmers don't usually browse the help-wanteds or craigslist looking for work -- they receive unsolicited offers from people they know and trust.
- Have a project that is visible, interesting, and challenging. If a great programmer does happen to be open to new options it will be the ones that are truly interesting to him. Things that *don't* generate interest are: super-secret stealth mode startups (how can you hope to interest me if you tell me nothing), monetizing ad-space in video streaming, ecommerce, pr0n (other than as a consumer). Craigslist ads looking for "Rockstar programmers to work in a hip radical fast-moving environment with foosball tables, XBox 360s, and endless 'Dew" especially don't work.
- Have a clear vision and communicate that vision well. Related to the previous item. If the project is interesting and challenging, you need to convey that fact effectively and motivationally. While attending an Internet2 conference, I attended a presentation by some guy studying off-shore microplate tectonics. They had embedded a network of sensors in the plates off of Puget Sound. The presentation was heavily into oceanographic and geological research -- not even remotely related to my previous employment history. But by the end of the presentation, I wanted to work on that project - now.
- Grow your own. This is especially difficult to do. Great programmers are not born, they are bred. Intellect, problem solving skills, and drive are the raw materials; but experience working on great code with great mentors are what really builds a great programmer. Some of the best skills development happens in the first 5-7 years out of university. Stellar senior programmers tend to really become apparent in the 7-10 year experience range. Note that you rarely get great programmers right out of school. You can get talented programmers that have great potential right out of university. Identifying such diamonds-in-the-rough is a real challenge.
- Don't be cheap. Great programmers tend to motivated more by the challenge than greed, however we still need to pay the rent/mortgage, eat, raise families. Free snacks and soda are OK, but not really sustaining. Great programmers are 4-10 times more productive than average programmers and should be compensated accordingly. Note that said compensation could be performance-based: equity or frequent raises. If you can only afford to pay a series of grad students $10/hr to write code, don't expect to be able snag a stellar professional with cup-o-noodles and a civil servant paycheck.
Re:Joel On Software (Score:3, Interesting)
no you don't. Rather, that doesn't really mean jack.
Joel and his little yes men followers cult is starting to get on my nerves;which means exactly nothing.
I know too many great, and extremely good coders that don't code on their own time. They all DO something, but usually not coding. Lets face it, most of coding isn't a new challenge. Some of it is, but a lot of it is the same thing I have done. Sure, you may need to be running 30 threads in a robotic system and there are some fun challenges there, but there is also a lot of write the stream to the serial port, make it cross compilable, etc that are just boring after a while.
I believe this is why some coders end up writing code too complex. A t some level they are trying to do something difficult. It's also why I think your Superstar/Guru/Prima Dona* should get time off when there isn't much interesting work to do. Bear in mind what they do do is done a lot faster then most people, usually about 10 times faster.
*I don't mind Prima Dona's, but if you are going to have that attitude, your shit better live up to it or I will call you on it.
Re:Appeal (Score:5, Interesting)
What businesses should realize is that students have a lot of energy but no experience and a lot of them lack the grit to finish when it gets boring.
A good seasoned program + 2 interns is a good combination. The interns do not argue with the good programmer all the time or try to put their "stamp" on the project. They just code a LOT and learn a LOT from the seasoned hand.
It is so sad, here in 2008, to STILL see companies pay $150 an hour to a consulting firm for recent college grads who lack any experience in thinking ahead 5 years.
I'm a good programmer- but there ARE superstars. I've known a few. They tend to be fanatics and don't work so well in teams. They write superior code, quickly. They are not so great on huge projects (unless paired with novices as above) because they get on each others nerves.
A good team needs one superstar with authority to decide things, a few solid programmers to catch the mistakes the superstar does make, and an equal amount of rookies.
Re:Simple answer... (Score:4, Interesting)
Amen brother, preach it. If a shop is using PVCS RUN dont walk to the exit, do not wait to get your parking ticket validated.
PVCS is what we use and we call it a BDPOS. Broke Dick Piece of Shit.
And the IT dept. Do they support the programming staff, of merely say NO to everything. Our IT is worse than useless, they are IN THE WAY of progress.
Sorry had to vent, today I was told by IT they didn't have memory for the computer they gave me. Repeat, did not have memory for the computer hardware they give to every employee. No spare parts? WTF kind of IT dept is that? I meant to say no parts for the computer they LEASE the software dept. IT thinks they are a cost center, making money for the company. Oh I wish the original owner was still here, he would have fired all them dam useless SOBs in a microsecond. Getting in the way of a BILLION dollar contract, get the F*&^ out of my company. Right now!
As you can tell no superstars work for us...
Interesting? Challenging? Sign me up! (Score:3, Interesting)
I have been trying to break back into the datawarehousing world, but since my experience is now several years old, I have a hard time convincing companies to give me a chance.
To answer your question, the best way to hire is your network. It is the same way for hiring as for getting hired. If I knew people in my area that were in the datawarehousing arena, I could probably get hired in a second, and that would be a good thing for both me and the company. Good for them, because after brushing off the rust, I know I will do an outstanding job, and good for me because I will be once again doing something I enjoy and making a difference instead of the technical equivalent of banging rocks together, which is what I do now.
Are you hiring star datawarehouse people in addition to programmers?
Why is everything technical in slashdot always about programming? There is so much more stuff that "nerds" do besides programming.
Still not so smart... (Score:3, Interesting)
Re:Appeal (Score:3, Interesting)
Re:Appeal (Score:2, Interesting)
The reason why superstars get the big money, is because they do it faster, better and in most cases without bugs. They write it, they test it, they give it to you and then go make coffee while the other guy is still trying to work out what you wanted in the 1st place.
From what the original poster said, he doesn't care about the $s, he wants someone that can work on problems that someone with experience and the ability to look at problems from different angle and solve them without fuss.
I have been programming for 20 years before i actualy got a Master of Technology (Software Engineering) I and another guy graduater at the same time, got a job in the same place doing slightly different projects, he last 1.5 months and could not compleat his project, they put me on it and 1.5 weeks later i done more than he did in the 1.5 months. Needless to i kept my job (well up untill i left for one that paid twice as much).
so paying for a superstar may cost more by hour, but it could save you money and reputation in the long run.
Puggs
Re:Appeal (Score:4, Interesting)
There's a recipe for disaster. When the pressure is on, the guy who's gonna crack is the one who spends 12 hours methodically searching through the code for the point where the data is becoming corrupted, instead of the guy who knows intuitively that the only place the data is in a state where it might get corrupted in that particular way is in function X in file Y. You don't burn out from doing integrals in your head. You burn out from working harder than you're reasonably able to, for longer than you're reasonably able to. I think the second guy is in danger of that much more than the first guy.
they'll do their work in 10 minutes and bill you for 2 hours because that's the time it takes for everyone else
Seems perfectly reasonable to me, unless you're also getting paid superstar hourly wages. If you get paid the same as everyone else, why does the company magically deserve more out of you than they deserve out of everyone else who they pay the same? You don't get extra talents for free, I am not a package deal. You get exactly what you pay for.
A bit passive aggressive you say? Certainly, it is. I should hold out for however much money I feel I am worth and give them 100% of my ability. But life isn't perfect, we've all worked our share of shit jobs for shit pay because sometimes the situation demands it. Anyone who busts their ass for shit pay is naive at best. There's no reason or motivation to do so. I'm not saying you should be a lazy asshole, either, you were hired with the expectation that you would achieve a certain level of performance, and you should meet that expectation, that's your responsibility. You are getting paid after all, even if it's not as much as you think you're worth.
Personally, I do get superstar hourly wages, and I do my work accordingly. Some companies are smarter about how this works than others. Most companies realize that even on salary, my pay rate comes with the expectation that I will only be working, on average, about 40 hours a week. Yes, I am on call at all times and always willing to fix problems as quickly as possible. But that doesn't mean I start working 80 hour weeks for free just because IT decides they're going to spend the next month installing a new topology for the database cluster.
And before the rest of you start, yeah, go ahead, make your jokes about how I'm going to get canned in six months. I won't. But if it makes you feel better, keep thinking that.
Look for them. (I've stopped looking for a job) (Score:3, Interesting)
Truth is: I've stopped looking for a job. The last interview I had a few years ago was promising for both sides. It was a classic example. Complex interactive Web Developement with Flash & PHP - which I have years of hands-on non-trivial project experience with. The guys were nice and even the boss interviewed me personally. They said they'd contact me in a week and I never heard of them again. Given, they were just building up and things were a tad chaotic, but their new website says they're still desperately looking for devs of that kind. Bullshit!
They didn't want experienced programmers. They wanted cheap, 5 Euro per hour students who fell for the idea of working on a cool project for factually zilch compensation. That's what it feels like all over the place. Confidentials are nothing but smoke and mirrors for competitors and investors ("Look here, we're growing fast!") and the bullshit companies put out into the open about the lack of experts - like the German autmotive builders right now whilst laying off thousands of people - isn't taken for granted by *anyone* anymore. Expert and normal postman alike.
I'm now a freelancer since 2003. It sucks to have to deal with the requirements of the German IRS, look out for the legal requirements, get into pissing contests with clients who don't want to pay and generally stay organised and watch out that you don't work for free or let billing slip just because the project is fun - because the next rent is allways around the corner. But it keeps me grounded and I actually have work to do. And AFAICT I'm not the only one in the field who ditched job-hunting for freelancing lately. Maybe you should look there. I'd actually go into employment again if the job is neat and interessting enough.
The bottom line is: If you are really looking for good programmers you'll find them. Just don't try to screw them over and pay a fair price and they will listen.
Re:heh, if you ask riddles (Score:1, Interesting)
"How would you move MT. Fuji" one a couple of times. Once i just asked "Why?" and looked as though that were the craziest thing I'd ever head. Awkward silence, and no response from the interviewer. The other time I felt a bit more friendly, and said simply "If i were standing in front of it looking right at it, I'd turn around 180 degrees, then claim that it had moved as i could not see it anymore. I guess it depends on what you mean by move and your sense of persective.