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?
Uh (Score:5, Funny)
Appeal (Score:5, Funny)
That, or go trawling through the strip-clubs near Boston.
Re:Appeal (Score:5, Insightful)
So you advertise on the basis of the interesting work that you're doing, and aim for the ears of someone who has been itching to build such things rather than talking about the creature comfort and monetary perks.
Great people want strong leadership that will help them achieve beyond what they can do alone.
Re:Appeal (Score:5, Insightful)
I'd take a step back on that one. Before they're "programmers superstars", they're usually college graduates. Start by trolling for college students. Lower your needs from "must be" to "can be" and take those who actually enjoy programming and build them up into superstars by putting them in your super company. They'll probably turn into Superstars in no time if your company is as good to work for as you describe.
Cheers,
Fozzy
Re:Appeal (Score:5, Insightful)
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!
Re:Appeal (Score:5, Insightful)
At my work, I am teamed up with another developer that will simply never be a 'superstar'. She consistently needs help on code that is just not that difficult for me to write. That being said, she is immensely productive. She knows what level of code she can handle, and she does a LOT of work that, while I could do if need be, I would be far less interested in than the work I do. This would lead to lower quality code, and job dissatisfaction. Her presence on the team gives far more to the company than any 'superstar' could bring.
The key is that she knows what she does well, I know what I do well, and we appreciate each others contributions.
Now, maybe the question wasn't about 'superstar' coders, but in employees in general. If so, it didn't come off that way to me.
Re:Appeal (Score:4, Insightful)
Point is that what a great programer is depends on the environment they are going to be working in. Because of this I'm going to suggest finding people who have never done any professional programing but have the right personality and drive to become the great programmer you need. If you try and get a great programer that is already in the industry you risk finding someone that is set in their own ways which are in conflict with what you actually need.
Even Linus Torvalds is only a great programer is certain environments (if he even qualifies as a great programer and not just a well known programer).
Oh and great programers do not necessarily come from formal education programs. Most of the truly great programs, whether they went to college or not, learned there skills through practice and self education.
Re:Appeal (Score:5, Insightful)
The firm that realizes that is golden in my book.
When it comes to any form of engineering I would take a good process over any amount of talent. Talent is what I want in an artist not someone building complex technical devices (including software). Yes it would be nice to have both, but if you have to give up one don't make it the process.
Re: (Score:3, Insightful)
I mean, come on. I won't even touch the fact that you are basically advocating the widespread use of cheap labor (interns/co-op students) as a really, really, really good thing. I mean, I work with some smart, young guys
Re: (Score:3, Interesting)
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: (Score:3, Insightful)
I'd pose to you a give-a-man-a-fish metaphor. Why work on finding good programmers when you can find a good project manager - probably with a PhD - who can forge hard-working programmers into good and hard-working programmers.
There's way too much mystique over "superstars" who bring their midas-touch of computation to a company. It's bad for business, it's bad for your project, and it's bad for budding progra
Re:Appeal (Score:5, Insightful)
Nonsense (Score:5, Informative)
I've worked with people like this. No matter how much you try to encourage them to follow good design, they will continue to just ignore all good sense. A typical example is a former coworker of mine who was asked to make a small change to an app that sent out email notifications. He needed to make a slight change to take care of one particular circumstance, so he copied an entire class (hundreds of lines of code) and changed exactly one line to do what he wanted.
When this code later broke (due to that single line) we asked him about it and he denied even writing it. We looked at source control and it was definitely him. (This in itself was surprising because he often deployed changes without checking in code. We tried many times to tell him never to do that.) I asked him why he had copied an entire class just to change one line when it was trivially easy to modify the class to handle both situations. He said he just wanted to get it done. I told him it probably took him longer to do it the way he did it. He just shrugged.
How do you respond to someone like that? I'm sorry, but he will never be a good programmer. Some people just don't have it in them. He was a very nice guy, but he was a terrible programmer.
Thankfully, most of my coworkers do have it in them. I've been privileged to work with some great people. But it's pure fantasy to think that everyone is capable of being a decent programmer.
I'll one-up you with a car analogy. (Score:5, Insightful)
Re:Appeal (Score:5, Insightful)
Because
1) You can't teach hard working programmers the creativity needed to come up with novel solutions to hard problems, where the right creative solution can net orders of magnitude better performance and/or reliability. The rough order here can be of a better PhD thesis or Digital labs paper (but with more attention to reliability).
2) Experience productizing solutions _well_ is needed to build reliable complex software. I know of distributed systems groups that had to flush their first products due to algorithmic bugs and others that needed heavy operator support to keep things running because inexperienced groups lacked sufficient practical background in simulation.
The best you can do is grow people towards their potential. Some engineers have a creative mindset and will solve problems when given a description, with the size of the problem dependant on experience and aptitude. You can get them working on bigger and bigger problems with more attention paid to practical concerns. Some engineers can implement something given a description (smells like a log structured file system, with a separate log for B+ tree nodes). You can teach them better engineering discipline.
>Why? Because if you hire savants, they'll do their work in 10 minutes and bill you for 2 hours because that's the time it takes for everyone else to build the same amount of code.
If you pick their brains on an as-needed basis on what you think is important, you'll be paying $500 for their 4 hour billable minimum and not getting fringe benefits.
If you actually hire them and they have interest in how the product and company go, they'll work 60-80 hours a week (it's not about the money) for options on
If you're solving the same problems over and over again, it doesn't matter and they wouldn't be interested.
If you have something that's too hard for other companies to pull off, the right handful of gurus can mean the difference between success and failure.
Re:Appeal (Score:4, Insightful)
Not going to happen unless they were already decent. Not good, decent.
Let's take an example from my interview... How would you check that a string is a palindrome?
A clever programmer might do something like:
A programmer somewhat more concerned with efficiency might iterate over the string, character by character, comparing the first half with the second half.
A more thorough, correct programmer would do either of the above, but stick a
in front of it -- probably also strip out punctuation and spaces.
And then there are the WTF [thedailywtf.com] programmers, who will do something like:
Oh, and the above won't actually work as written, aside from being absurdly inefficient both in coding time and in runtime if it did work. The amount of effort it would take to mold someone who would actually write the above into a decent programmer is not worth it.
Compare that to someone who wrote the first example (sentence.reverse == sentence) -- remind them about whitespace, punctuation, and capitalization, and they'll be able to work it out.
Now, absolutely, if you can't do this stuff yourself, hire someone who can. That part is tricky, but the complaint of the original article was not that they didn't know how to find any good programmers (or even superstars), but that they couldn't find enough.
And absolutely, one "star programmer" is not as important as a team that works well together -- but a "star project manager" isn't a silver bullet either.
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.
Re:Appeal (Score:5, Insightful)
I'd pose to you a give-a-man-a-fish metaphor. Why work on finding good programmers when you can find a good project manager - probably with a PhD - who can forge hard-working programmers into good and hard-working programmers.
There's way too much mystique over "superstars" who bring their midas-touch of computation to a company.
Frederick Brooks, author of the Mythical Man Month, wrote that good programmers are 100 times more productive than average programmers. That accords with my experience; I've been working in this game for twenty years, both as programmer and as project manager; I've seen a lot of average programmers, and two or three good ones. The whole ethos that programmers are grunts who work for and are managed by project managers gets the whole pyramid upside down. Even the best project managers can do nothing to improve the work of a good programmer, but much to impede it.
Personally I'm still of the opinion that Frederick Brooks recommendation of the 'surgical programming' model is the best - you identify your star programmer, and everyone else works for them. Brooks recommended about five support staff for each programmer: a 'co-pilot', who worked in a sort of junior pair-programming role, essentially learning from the senior programmer; a librarian, who wrote up and managed documentation, looked after releases, and such like things; a tester, who just tested; a toolsmith, who built small scripts and utilities; an administrator, who handled business issues; and several other optional roles. Modern tools can automate some of these roles, but it's still the case that good programmers are so much more productive than ordinary ones that it makes economic sense to unload all the routine tasks off them to less able people.
Good programmers really do make or break technical companies - they add far more to the bottom line than anyone else. And if you don't recognise that, you won't be able to hire them, you won't keep them if you do hire them, and you won't get anything like the full potential out of them if you do hire them. Keep your programmers in the dark and feed them on shit, as most companies do, and in a very short time you'll have no-one left but shit programmers.
Re:Appeal (Score:5, Insightful)
Re:Appeal (Score:5, Insightful)
Simple answer... (Score:5, Funny)
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.
Change the others around them: Bingo! (Score:5, Insightful)
I've met very few superstars and this more than anything else set them apart as someone I would want on my payroll.
You want people who can lead by example, without even trying.
Re:Simple answer... (Score:4, Insightful)
Number one, extremely dedicated and intelligent people are looking for more than money. They want to change the world. They are driven. If they are after money, they want to be a part of the project, financially. That means stock. That means board positions. That means respect.
Number two, they want to know that you are a good person to work for. What is the company's goal, mission, vision, idea, et al? What career prospects are there? What can a "superstar" programmer expect to be doing in 10 years at your company? Hopefully not still programming.
You are referring to things that aren't necessarily associated with programmers, but with CEOs, CIOs, etc. Attention to detail, actually caring, etc. Well, ask yourself, why should anyone care about your company? Also, and lastly, these skills (pride in one's work, strong desire to learn and teach others, etc.) seem to be the type of skills taught in church (or synagouge)......
Re:Simple answer... (Score:4, Insightful)
Re:Simple answer... (Score:5, Insightful)
Every superstar I've ever known would run at either of those two thoughts. Cash is nice, but superstars are superstars in part because they love programming. So yes, they do want to be programming in 10 years. They may want to be lead programmer and be paid more, but that's about it.
As for the religion part of your comment- well, it shows your bias, but its absolutely not true.
Re:Simple answer... (Score:5, Insightful)
The original poster of this disussion hasn't specified what the nature of the work is - is it user-interface - is his company designing the next killer application. Then they would need someone who knows how to design and implement really polished application UI's.
Are they looking for someone to implement highly computational intensive core libraries - then maybe a programmer with Matlab experience or someone with a mathematics background would be more suitable.
Or are they looking for someone to write general purpose libraries that can be reused - then someone with good object-oriented design experience would be best.
If they are just looking for a programmer to implement specifications, then looking a someone who has done similar ework in a final year project or thesis would be a good place to look.
Re:Simple answer... (Score:4, Insightful)
the superstars are the laid-back and chilled out programmers, while the arrogant programmers are the wannabes - if they really knew as much as they thought they did, they wouldn't be so insecure.
True to an extent. An arrogant programmer may well become a superstar some day, but to get all the way they need to lose the arrogance. A superstar is going to be somebody who has learnt enough to know that he doesn't know everything and that new ideas of merit can come from surprising sources. If they don't, they stop learning. A superstar doesn't have to go around putting down people as incompetent - a proto-superstar might still be doing so, but must outgrow it before they become a real superstar.
Re: (Score:3, Insightful)
If this is what you think, then you have never, ever met an actual "superstar programmer". Superstars live to code. Most would suck at management, and hate it too.
Re:Simple answer... (Score:5, Insightful)
If anyone knows how to locate superstar programmers in the first place I'd love to hear it. Once I have one on the phone I have a fighting chance to hire him, but you certainly can't spot them from their resumes.
Re: (Score:3)
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...
Re: (Score:3, Insightful)
Along with what you said:
Job sites are a bad place to go. I looked at the discussion forums on Dice.com one time and from all the complaining I knew I wasn't going to find anything good there.
Referrals are really the way to go. There are so many people in this world who can, given a normal task, write a program for it. However, there are very few people who can actually think up a new project from start to completion, lead e
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: (Score:3, Insightful)
Actually, I'd say it's more like "the superstars produce what the very good programmers can't produce, ever".
It's not just about productivity, but insight.
There is an immediate problem here.... (Score:3, Funny)
Can't be that smart.
Still not so smart... (Score:3, Interesting)
One opinion (Score:5, Insightful)
The first thing to do is remove arbitrary barriers. IE, "must" have X years of experience, X degree, held X previous positions, must move to our area. That's the sum of major mistakes most operations make. The best programmers in the world don't typically get that way by being just another college / job drone (though some do... just don't slam the door based on mundane requirements - you want the problem solved, not a title you can be proud of.)
Secondly, market the job — make sure people can find out about it. That's perhaps obvious, but I know a lot of companies that try to stick to the back alleys of old boy's clubs, and it's no wonder they can't find anyone. Put an ad, a BIG one, somewhere programmers go a lot. Like slashdot. :-)
Third, salary, salary, salary, and benefits (particularly insurance and family coverage). Move 'em if you have to. We've even bought houses outright for our programming team members. You can't expect to hire a superstar by treating them like a drone.
The problem is almost always that really good programmers don't have to go looking, and if they do, they can - and will - turn their noses up at being treated like a commodity. Yet that's just what most companies do. Plus they throw up arbitrary and unrelated barriers to entry. Unfathomable, really.
Re:One opinion (Score:5, Interesting)
Re:One opinion (Score:4, Funny)
Re:One opinion (Score:5, Insightful)
Attitude, attitude, attitude!
I won't take a job where the person interviewing treats me as if they are doing me a favor in offering the job. They are after me, not the other way around. Even if I need the job, I'll never portray it like that. It is they who need me even then. Call it arrogance if you will but I'm not into indentured servitude.
Re:One opinion (Score:5, Insightful)
Although I have heard one or two that were programming problems in disguise, I would argue that even in those cases your riddles are worthless to determine their skill, and anyone would be well within his sanity to respond "well, I'd look it up online. Why waste time figuring it out when the answer is done for me?".
A great programmer will love to talk shop. Have one of your existing coders talk to him.
Re:One opinion (Score:5, Funny)
But they're so much fun to ponder in a non-riddle context.
"Why does a farmer have a wolf? How can a 5lb chicken eat a 50lb bag of grain? How is he able to prevent the wolf from eating the chicken when he's present?"
heh, if you ask riddles (Score:5, Funny)
I did-like the riddle portion of an interview. Often given by people who thuink that are good at riddles.
Example you responses I have given":
"How man quarters would it take to fill this room"
4 (I had to explain this answer at the end of the interview. )
"How would you move MT. Fuji"
"Am I going to work at Microsoft?"
alternate answers:
"Hire David Copperfield"(This gets a laugh)
"Convince the boss guy who sold that project to fire his sales team"
"Spec out the task, come up with a rough number, 500 Billion, after it is about 'half way through' Use the "Managed 500 Billion dollar project" on my resume to get a higher paying job somewhere else.
Yes, I know the answer there looking for, but really who doesn't?
I just remembered one that really pissed off the person interviewing:
I can't believe I ahd forgotten theis.
You have a farmer and chiken and a fox, only two of which can cross the river, but the chicken and fox can't be together without the farms.
I picked up the phone, hit speaker, called a buddy of mine and had him put on his 9 year old son, who I repeated the question to and he answer in about 30 seconds
My friend and his wife where laughing hysterically.
After which I hung up, told them this was a great interview now I know for sure I never want to work here, and left.
The word "Livid" comes to mind when thinking of there reaction. speechless would be another.
One guy was literally sputtering....ah good times.
Re:One opinion (Score:5, Insightful)
I don't necessarily agree with all of the points made because I've seen research show otherwise and have experienced otherwise myself.
The first thing to do is remove arbitrary barriers. IE, "must" have X years of experience, X degree, held X previous positions, must move to our area.
This part I agree with. Many hiring agencies shoot themselves in the foot asking for very specific requirements (must have 5 or so years experience with C++, must know domain specific but stupid tech with buzzword acronym, etc). The problem is you're always going to train an employee and there will always be some sort of lag time to start up. You're rarely going to get an employee who will be spitting out production quality work on day 1. If that was possible we'd all be contractors. What organizations should be after are highly qualified technical learners and a good foundation in software engineering practices.
Secondly, market the job -- make sure people can find out about it. That's perhaps obvious, but I know a lot of companies that try to stick to the back alleys of old boy's clubs, and it's no wonder they can't find anyone. Put an ad, a BIG one, somewhere programmers go a lot. Like slashdot. :-)
This in practice sort of works but not as well as you'd expect. If you post the job, the only people interested will be people actively seeking a job. Everyone else will just gloss over it because it is more of a waste of time than anything else. It's like commercials.
Third, salary, salary, salary, and benefits (particularly insurance and family coverage). Move 'em if you have to. We've even bought houses outright for our programming team members. You can't expect to hire a superstar by treating them like a drone.
There's a limit to how much you can bribe someone. Furthermore, just because you bribed them does not necessarily mean they will perform. You ideally want a match: you like them, they like you, for reasons other than money. For example what if you got paid to hack together open source linux code at home and you just happened to be a kernel dev? What if you got paid to work on your fancy game idea without any restrictions? Most people would rather do the job they enjoy for decent pay rather than get paid a boat load of money to do something they could care less about or worse hate to work with.
The easiest, cheapest, and most reliable way for a company to find quality employees is by word of mouth and employee referrals. This makes sense. If you were to start your own company from scratch, what would you rather do? Dig into the back of your mind across every trust-worthy and awesome programmer you worked with or interacted with and convince them to join you, or go through a lengthy hiring process about people you know jack about? I would rather do the former because I have personal work experience with the people I know that I don't even have to ask for a resume or guess if they're lying or not. I also probably have some sense of their personality and quality of work. In fact, I can easily make a decision in the back of my mind without even contacting them. The only barrier is if they would be willing to accept the offer.
I'm not surprised this is getting asked on slashdot, but I do think that slashdot lacks the expertise to answer it correctly. If you want a better answer to what truly works, you need to get in contact with an HR agency on a personal level rather than a business level. Yes, that's right, you need to know a friend that works in the HR or head-hunter business--if you come to them from the business front they will treat you like a customer rather than a friend so they'll skew everything they say towards supporting their business. But if they are more a friend they will easily be able to tell you things like success rates and employee turn over rates because that is what they deal with. People on slashdot often are just in front of their computers all day and don't g
Re:One opinion (Score:5, Funny)
Re: (Score:3, Funny)
I mentioned that in the interview, and he said he had a stack of interviews with people the have over 5 years experience with power builder 5.
I said, "oh, I have no doubt those pieces of paper say that, but it has only been out for a year."
Then excused myself and left.
Re:One opinion (Score:4, Informative)
Step one (Score:4, Insightful)
Re: (Score:3, Insightful)
quality vs quantity (Score:5, Insightful)
Re:quality vs quantity (Score:5, Funny)
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: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:It takes a good software guy to know one (Score:5, Funny)
Re: (Score:3, Insightful)
Hopefully, when your boss said his little catchy phrase about "Class A people only hire Class A people", you responded with "And in this case, class C people hire class A people."
Clearly, there's a flaw in your boss's theory, because a start-up company that has
Linkedin (Score:5, Funny)
(Dodges ballistic vegetable matter)
Not a programmer here but... (Score:5, Insightful)
My suggestion would be to use a headhunter, sure they are expensive but you get matched up with quality people that match your business philosophy. Also to you job seekers out there I would suggest finding and hitting up Head Hunters. I have had extrordinary success with em on both sides of the table.
Re:Not a programmer here but... (Score:4, Informative)
Most of the head hunters that jump on you when you post your resume on Monster are pretty bad though. They do simple keyword matching, ask silly questions ("how many years C?") and seem to rely on their speed and the amount of people they reach to find a few matches that will bring big bucks.
I ran across a sharp head hunter and he really took time to:
- get me interested in the job
- make the conditions of recruitment easier (he made me skip the phone interview with the company)
- helped me prepare for the interview by telling me what kind of book I should use to revise
- found the matches between the job and me, despites the mismatches
So I am pretty impressed with good head hunters.
Congratulations! (Score:4, Funny)
Get lucky, or hire young (Score:5, Insightful)
the 2 best strategies for having a high hit rate with your new hires:
1. hire young - bring people in as interns/coops and use their term as a 6 month interview - this can give you a great insight into their potential
2. poach - has anyone else in your organization worked somewhere else? find out if there are any excellent people from previous jobs looking for work
Old? You mean "Young with Experience"... :-) (Score:3, Insightful)
2) It's better to hire someone AFTER they've made the basic mistakes (and hopefully learned from them).
Many folks like me who are over 40 and still coding/designing are doing it as much for the fun of it as we are the need for food and rent/mortgage/college money. Hey, I'm juggling Perl, C++, Java, Fortra
Re: (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? ;-)
Re: (Score:3, Insightful)
How many good
Re:Get lucky, or hire young (Score:5, Insightful)
In my experience, those who think the best candidates are fresh out of school are power-hungry narcissists. They want fresh minds so they can indoctrinate their experience in the manager's image. You never forget your first. So, you have fresh minds who want experience: perfect captives. They do things your way and no better and you still get to blame them for mistakes and take credit for their accomplishments. You don't have to deal with any alternative viewpoints that might undermine your authority, so the Peter Principle is safe in your back pocket.
Don't listen to this guy, he's probably only an aspiring manager anyway.
This may help... (Score:4, Informative)
In 3 Ways... (Score:5, Interesting)
Judge them by their contributions to the field (Score:4, Insightful)
So.. books, projects, blogs, open source.. investigate all those in your field.
Why? (Score:5, Insightful)
For example, universities do not look for supergenius professors (if not only for label "Nobel prize winner"), they are mostly looking for a person who will be able to get grants
Supergeniuses are good in the environment that does not require any results any soon. That's the way they work.
Normally people are looking for good workers with a good experience able to fit in the environment.
I am actually glad that in my line of work there is no obsession with top level performers, like it happens in showbiz. As a result a lot of people are paid quite well.
grow your own thru training! (Score:5, Insightful)
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)
How Do You Find Programming Superstars? (Score:5, Funny)
Wouldn't that be sort?
Make sure their shoes don't match their belts (Score:5, Funny)
Real programming superstars, usually love coding so much they take precautions so that they are not accidentally promoted to have management responsibilities like tracking vacation requests and authorizing the expense accounts. So they make sure their belts don't match their shoes, their pants, if and when they wear it, are never ironed. If they are forced to wear ties, they pair it with half sleeved shirts. They are the the programming superstars. But be prepared for huge number of false positives.
Rarity requires a different approach (Score:5, Insightful)
Make sure you have a diverse staff. (Score:4, Insightful)
As far as where you find higher quality people, I've had the best luck being involved in user groups, professional societies and getting leads from friends.
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.
Be a superstar company to work for... (Score:4, Insightful)
(1) Drop the buzzwords:
- Every company thinks they are a great place to work.
- Every company thinks they only hire great people.
- Every company thinks their problems are interesting and hard.
- Every company claims to treat its employees well.
instead, give concrete examples. Are you trying to solve the protein folding problem with something other than the brute force IBM is is trying to use, or are you trying to figure out the best billing algorithm to use on credit cards so you collect the most late payments by skirting banking regulations? Is Paul Vixie on your board of directors? Did you just successfully hire Dennis Ritchie because your ideas are compelling to brilliant people? Would all your employees say that they would enthusiastically have their friends and family come to work for you?
(2) Have smart people working for you already; smart people like to work with smart people
(3) Ask the smart people who already work for you to refer other smart people they know
(4) Poach; if you can't poach smart people away from their current gigs, it's really, really doubtful that you are half as compelling a company as you think you are
-- Terry
Nerd Idol (Score:4, Funny)
Production Abstraction (Score:5, Insightful)
Every good programmer's worst nightmare is to step into a new job bright-eyed and ready to be creative, only to be told that their function will be to learn and maintain a piece-of-crap monstrosity that someone else created. Make it crystal clear that this is not the situation they are being hired into.
...as far as "where to find them"...The same principle that applies to "getting hired" (i.e. networking is always the best) also applies to hiring. Ask your five best programmers to give you the names of some of their friends and don't be afraid to aggressively go after them and lure them away from their current gig.
Non-technical interviews (Score:5, Insightful)
Looking for a job straight out of uni, I did a lot of interviews heavy on the technical side. Looking back, I'm not sure what the point was. They could already see how good I was at technical learning from my degree. The major difference between programming academically vs industry always seems to me to be that in industry you're programming for users other than yourself. In most academic situations you've got fairly clear user requirements of what the software must do. Most of the work I have done since then has begun with vague ideas about what the system needs to accomplish. Getting from there to coding a system that meets the requirements is very much like that question in the interview - 'how would you tackle it?'.
Any technical questions will allow any good programmer to just fall back into answers they know. You'll be swamped with applicants who look good but are only mediocre.
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]
What Agency (Score:4, Funny)
Techsystems?
Robert Half?
Spherion?
Aquent?
Are you a superstar company? (Score:5, Insightful)
The first part of this is going to sound antagonistic, but its meant to be helpful.
Are you a superstar company? Really? What product do you work on? Is it cutting edge/interesting/socially minded? Is it going to present a new challenge every day for your programmers?
How top-heavy is your company? Are the salaries of the managers 3x more than the programmers? How about the top-level execs? Are they getting $1.5M bonuses every year while solving no problems themselves? Do their salaries go up 12% every year while programmers get 2% raises? Do the execs get their own parking spaces while the programmers have to park on the street? Is the disparity noticeable and constantly rubbed in the face of your programmers? Do the execs act snooty and drive $60,000 dollar cars? If these qualities apply to your company, there is no hope. If not, read on.
People who can really solve tough problems (i.e. "superstars") know who they are. Their minds don't work linearly and they see patterns in everything. They make suggestions and observations only to get ridiculed because the small minds around them can't understand what they are saying. But they usually get vindicated [nobelprize.org]:
The unfortunate thing is that superstars, as you call them, experience this pattern again and again. You need to recognize that this pattern is common for them. You need to cater to their intellectual needs, make sure they are payed well, and, yes, appeal to their egos. This doesn't mean a constant suck-up, which is a common misconception. You need to give your damn best to understand what they are saying, to understand that their insight might be better than yours and to recognize that they have shown insight through a solid record of achievement. Superstars are players and not coaches (i.e. cheerleaders) and they can point to success, but you don't need to acknowledge it directly. If you want to employ them, you need to show that you can be student instead of master, because superstars are also teachers.
I know that that last one is going to hurt, especially in the hierarchical realm of corporate politics. However, your ability to be a student of your employees will separate you from mere mediocre employers and will get you those superstars you want so badly.
Flip the question around (Score:3, Informative)
Most of these responses are geared towards evaluating people once they're in the door, and that's fine, but if you want to find quality people, the best way to do it is to flip around the question and think about it from the prospective employee's point of view: how do they find you?
Word of mouth is certainly the best way, but I've also found the following ways that work:
Hang around computer groups in your area, talk to people, learn who's good. Many businesspeople will try this once, in that they attend one meeting, they talk to the members of the group, and they leave, and they don't find it very worthwhile. The problem with this approach is that the members are unlikely to open up to you the first time they're meeting you. You need to hang around for several meetings before they will begin to trust your presence and will open up to you, and you can then discover which ones are bullshit artists and which ones truly have talent to share.
Teach programming classes. This is what I do. I teach a weekly class from time to time, on C or Perl. I give the class for free, the class lasts 8-10 weeks, and the ones who turn in their homework assignments, and ask for feedback are the type of people that you want -- they are the type to become superstar programmers, and with a little guidance, they will. This also means that you can hire them on a fair market salary and not have to pay the big bucks. After all, you are looking for motivated individuals who are willing to learn new things. What better way to get the programmers you want than to entice them with a free class in the language you want them to use, and let the ones who are truly motivated show themselves to you. The best place to advertise these classes are the above user groups.
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.
Re: (Score:3, Insightful)
In any case, Ft. Wayne is *not* a small city. It's a major metro area in its own right. You do have jobs. It's not, however, a hotspot, so you'll have to work a bit harder to convince talent from say, North Dakota, to come there (though if you made a good offer and did it right, you could!).
Where should you be looking? Nearby cities that are filled with despair, like Coldwater, MI. Find the young, talented, but repres
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 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.
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.
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".
Re:Simple filter. (Score:4, Insightful)
As you said, good programmers work well in teams. They're open to suggestions, and only butt heads on issues when not to do so would be negligent. What happens when the candidate being interviewed is told "we'll be working in windows vista, using visual studio 2008?" Do they throw a hissy fit, and constantly complain about how the shortcomings of the windows environment could be improved by moving to linux? This attitude, which seems to be fostered and even encouraged here at slashdot, would be devastating in the work environment.
I think the only real way to find superstar programmers is, realistically, to find good programmers and lots of them, through various recruiting drives (temp work, contractor work, college co-ops/interns). When the term of their employment is up, you'll have a much better idea of how they are as a programmer, something that is relatively hard to do during an interview. From here, you'll have a resource pool to say "look, you're awesome, we'd like to hire you." This avoids the problem of missing the amazing programmer because they only looked "good" on paper, and it also gives a pool to draw "great" programmers from (even if no superstars are found).
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 super
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: (Score:3, Insightful)
Re: (Score:3, Insightful)
Re: (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. Su