How Do You Find Programming Superstars?
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?
I'm right here.
Be Google.
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.
I've fallen off your lawn, and I can't get up.
Find a developer of an admirable Free Software project who, for whatever reason, isn't currently employed as a professional software developer and make him the right offer. Just go after people who make the code you respect the most.
Ask them who Knuth is.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
Stop calling expert programmers "superstars".
End of lesson. You may press the button.
Add your preferred email address to a comment below this one so you can be contacted?
Support NYCountryLawyer RIAA vs People
to their obvious sense of humility, and only ask for mere "stars".
That, or go trawling through the strip-clubs near Boston.
"Flyin' in just a sweet place,
Never been known to fail..."
You can't have both quality and quantity. Searching for the best of the best is bound to return a small number of people.
Unfortunately, software development is one of those things where you can only judge talent if you have talent.
:-), do you use any open source projects? Interview those guys. Open source is a great way to get to know someone -- you can review their code and documentation, and you also know that programming is something they love. People who are involved in open source typically love programming (otherwise, why do it?).
Assuming you already have a couple good guys on staff (but how do you know they are good?
Just go through the Google address book. ;-)
(Dodges ballistic vegetable matter)
Do not mock my vision of impractical footwear
My company puts all out programmers together with spare body parts laying around the office. How else do you get programmers?
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.
CS: It is all sink or swim...oh and did I mention there are sharks in that water?
I usually just submit an "Ask Slashdot" article asking how to attract superstar programmers.
In theory, practice and theory are the same. In practice, they're not.
You have found me. How much is my salary?
Contact the slashdot admins and bribe them enough to find the real identity of 140Mandak262Jamuna who is definitely a programming super nova.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
Honestly - imo, you are incredibly fortunate to hire excellent experienced people based off interviews (our hit rate is about 25% good, 50% passable, 25% poor)
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
sdguero@gmail.com
But don't contact me if you are outside San Diego!
Visit it. Not all of them will be hired by Google.
Scourge the Internet forums. Solicit anybody that seems interesting.
Post to Slashdot... uhm, sorry.
Rome taught me patience and assiduous application to detail. Virtues which temper the boldness of great, general views.
Jeff Atwood had an interesting article on the subject a couple weeks ago. It generated a metric buttload of comments, so you might consider mining for ideas there.
"Times have not become more violent. They have just become more televised."
-Marilyn Manson
Have a good development-oriented company blog and be engaged in the community.
The problem is simply finding them. The signal-to-noise ratio of the big places like Monster and Dice is terrible.
I groan whenever I see someone ranting about how Slashdot has "sold out", though the whining has gone down in the years since they went semi-corporate. Still, there's the occasional whimper, especially if an article in some way might be helpful to Slashdot's parents or advertisers.
So, will this rather backhanded mention of Dice.com, whose ads I see constantly on Slashdot, silence those critics?
Didn't think so. Carry on.
Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
I would say in 3 ways. One, stop calling them superstars. To a programmer, the world superstar implies massive overtime with little compensation (aka we want someone who loves programming so much that they won't worry about the fact that we under pay them and over work them). Two, do some research on job requirements. Don't list idiotic buzz words as requirements when the package is something a programmer could pick up in less that a day working with it. The best way to get people to completely glaze over your job posting is to list so many technologies that they are bound to be missing one or two. Third, treat them and pay them what they are worth. If you want a superstar programmer, be willing to pony up. I read something a few days ago here on Slashdot that said Facebook and Google were competing for new grads and offering salaries in excess of 110K to new grads. If that's the treatment those companies give them, what do you think someone with experience and "superstar" status probably thinks they deserve? If you can't give them the money, make up for it with benefits and ability to progress or become a partner in the company...Bottom line, be realistic, and they will take you seriously. A programmer can detect a job that will probably be bad from a mile away just by reading the description.
If a developer is truly a "super star" there will be a trace of that on their public record. They'll have built code that they've sold, built a business, built up a successful blog, contributed to or started an open source project, written a book, any of those sorts of things. If you're hiring from Monster or Dice, you will rarely find anyone with a single one of these qualities.. so that's how to start. Find developers who've written books in the field(s) you cover.. find popular open source projects and look at who's contributing.. it's not hard, and so few employers actually bother to take this route. I don't know why though, since this is how you find the best people and, most importantly, the best contributors and communicators.
So.. books, projects, blogs, open source.. investigate all those in your field.
Try to hire consultants to do your job and steal them from their employer when you like them?
Seriously, why do you need a programming superstar, why not settle for a programmer with substantial experience in the area you need?
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.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
believe me , nothing your business is doing is so god-damned special that it takes a "superstar" to accomplish. Just find some people with some programing background and give them the opportunity to learn and grow. Anyway, the person asking of this question, if _they_ were a "superstar" HR person/manager, would already know the answer. Since the company can get by with plain old average HR/management I think it can live with average normal programmers as well.
While you can market to wazoo, and you should, following the advice of others, here, you'll always only be half right, because talented people first and foremost recruit other talented people and solicit other talented people for work.
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.
When I want to find bugs in my code, I grep for bugs:
$ find src | xarg grep bugs | less
I guess you can try grepping for 'superstars'
$ find resumes | xargs grep superstars | less
Happy hunting.
...and be prepared to hire telecommuters, even in other countries. All of our software guys at Slim Devices (now Logitech) found us through our open source projects, and to this day every one of the telecommutes. The stratum of talent you gain access to when you are reaching the people who are so excited about the technology that they'll work on it on their own time.... unbelievable - forget about Monster.com, this is the way to do it!
Advertise your jobs with 3 to 4x the salary you pay non-superstars. What? You won't pay that much? Well, you don't need us then!
Good companies send their geeks to tradeshows, it helps keep them up to date on what the competition is doing, and stimulate new ideas.
:)
It's a good place to show what you're doing (having a booth), and only geeks that are interested in your company are bound to look around and ask questions.
A small sign in a out of the way place with "we're hiring" would be enough for the geek that was interested in your company.
It's how my current company found me
Most dumbasses I've worked with have been hired with the attitude "well, he doesn't know shit about anything but we'll bring him on and see how he works out".
You can't *want* or *need* to hire good people. One must not desire the thing which one wants most, Grasshopper.
BTW anyone who calls themselves a superstar is usually a dumbass hiding under a layer of bad attitude.
Give a man a fish and you have fed him for today. Teach a man to fish, and he'll say "WHERE'S MY FISH, YOU IDIOT?"
I only work for companies that are referred to me by other companies I trust.
Working for people you don't know is a pain in the ass.
Ask your current employees to mine their contacts. Don't be cheap about it, you should be offering a 4 figure finders fee to them.
Wouldn't that be sort?
Well, back to rejecting software patent applications.
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.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
I will put out the best code your have ever seen. (But realistically this would never happen, so good luck there bub.)
In Short:
Capitalism is not about rewarding labor, but rewarding capital. Therefore, I really don't have a vested interested in having you pimp out my labor.
I have to agree with 2 things said here - people referrals and head hunters. Being in the field for almost 30 years as a developer myself, I've found every one of my jobs this way. When I was a hiring manager, it's how I hired people. Secondly, have you considered not who you want, but what you want them to do? One area that is often over looked is finding talent to complete projects. If you have good people now, folks that can define the projects that need completing, then you can shop the project. In the computer field, we say "use the right tool for the task". If you apply that to the tasks you need completed, find the right person for the task and they will give you a good result. If you go the task route... The people can literally be anywhere - including telecommuters. BUT, *beware* seriously low bids for work. It usually results in crummy code. You don't mention where your company is... Maybe someone here is close and looking... Just a thought. G
Word of mouth is an incredible tool. If someone is well known in the industry and truly a superstar, people will know who they are. If you want someone like that, you need to realize you'll have to pay for them. I haven't personally "looked for a job" in a long time. I have found a niche for myself, so people look for me.
At my last two places of employment (previous was contract and I am now full time), I was found by someone who knew my reputation. By contrast, I had a recruiter call me who had gotten my name from another recruiter friend of his. He called me and told me how they were in desperate need of a senior person who would set standards, mentor teams, etc. I had a great time laughing at him when he told me that they were offering a solid 40K less than what I was making at the time.
Don't. If you're looking for people that you're going to be calling superstars. You're going to get just that, ego and all. Although they may be the best programmers on the face of the earth, generally they won't live up to the reputation they've built for themselves. They won't do it any other way than their way, for better or worse. While I'm not trying to advice you against hiring competent experienced programmers, in my experience "superstar" tends to bring out the worst. Best of luck.
There is far more need for real talent than there is talent to fill it. I think the problem is intrinsically hard (you don't need me to tell you that), and I think it always will be.
Which is to say, I don't think there's any way to improve the situation. I think you will have to continue to be clubbed over the head with a poor S/N ratio, like a soul in hell that can't ever escape the burning.
My last employer was a startup, and most of the early engineers were at the top of their field, by necessity. Many of our best had worked with the founders or other execs before, or were referred through one of the same.
But they managed to get them by offering excellent pay (the company was in a state with no income tax, which made that even more enticing) and excellent benefits (1 month vacation time to start, plenty of options, matching 401k contriubutions).
Assuming you find the right one.
In all seriousness, you might try
*college placement offices at top-notch schools
*"are you really smart" filtering questions like Google did a few years back
*ads in publications geared toward smart people, like honor-society and professional-society publications or MENSA publications. Be careful though, high IQ!=quality employee.
*Requiring people to submit either a portfolio of non-proprietary work, letters of recognition or equivalent from proprietary employers [properly redacted, of course], etc. in addition to a resume or grade transcript.
*For students, look for awards and recognitions earned while in college
Be prepared to pay a premium. Be creative. Say the typical salary for the job is $70K/year. Offer 90K/year BUT hold back the last 20K of the 1st 12 month's salary until after certain project milestones are reached. If he quits before the next milestone, you keep what he hasn't collected. After 12 months roll the "bonus" into his salary. Even more creative if the person is big on social-welfare/charity: Pay him $70/year but offer him a chance to earn up to $20K/year more for his favorite charity by meeting certain performance goals.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
I belive most great *young* superstar programmers can be found within several open source projects.
I also think that a lot of superstar programmers like to keep the number of working people within a project minimum, that means less than five persons, preferably 3 to 2 persons. A good salary and as little administration as possible, again preferably NO ADMINISTRATION.
I also think that the superstar programmers like to work in an environment with people who share the same interests, that means no wife/kids chatting at the office but rather things like new programming features, algoritms, data structures, memory allocation and so on.
And finally let them choose the tool for the job, no matter how weird/expensive it sounds.
That's a subjective term that means different things to different people. Be honest, tell the people what you want. Do you want someone who can produce good code, fast or great code slow. Do you want someone who is a strong team leader or a strong team member. What does the job require, how many hours a week are you expecting from your workers, what is a reasonable salary range. Is this a short term contract or is this a long term position.
How do I know...Just ask someone who works there:)
Participate in college career fairs and make yourself visible. At a place like MIT these are taken fairly seriously, but make sure to bring free swag (students like free swag). Some companies hold info sessions with free food. Others sponsor student events and competitions, it's a great way to gain appreciation from the students and get seen on posters around campus. Software engineers at these "top schools" rarely need to look very far to find a company that appeals to them, so it's important that you get them to know who you are and what you do.
You cannot HR the superstar. They are so rare, that you just cannot open a superstar position and expect it to be filled up. Instead, what people usually do is when they accidentally stumble upon one, they create a superstar position for him.
I do not believe in karma. "Funny"=-6. Do good and forbid evil. Yours, Oft-Offtopic Flamebaiting Troll.
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.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
Look for resumes made with LaTeX.
Finding a good headhunter is almost as hard as finding a good employee. Bright side is they can call contacts who aren't actively seeking alternative employment.
But a few headhunters have provided more benefit than an entire HR department.
Or hire them when you see their own open-source projects, on the off chance that Google hasn't already.
Because "programming superstars" means either:
a. people who you think (through some means) will be a superstar at writing programs in the future, or:
b. people who you've seen write superstar programs already
Option a is rather hard. Option b is really easy: find a cool open-source program, and hire the author.
It doesn't have to be an open-source program, of course, but it's a lot easier to find out a lot more information that way, and people working on awesome closed-source programs tend to already be employed by cool companies.
From the article summary, that you have some people already like the ones you are looking for. I think its the people you already have who will be your best resources when it comes to finding more people like themselves. Birds of a feather flock together - people will tend to have friends like themselves - either past colleagues, college buddies etc. Incent your people with referral bonuses and they will bring the programming superstars to you. I work for a very successful but low profile company that does not advertise itself and while they do advertise their jobs to some extent, it is still true that a very high percentage of people they hire, especially in IT, find the company because other employees referred them. The company offers a generous referral bonus, makes it known that they really appreciate referrals (even when they end up not hiring the person) and *pays attention* to candidates who are referred by reviewing their application and contacting the candidate much more quickly than they do with applications received through other sources. And as a past job candidate, I can tell you that I'd always look first at a company where someone is referring me if it makes me feel like I have a better chance at getting the job and really being wanted there.
Understanding is a three edged sword. - Ambassador Kosh Naranek, Babylon 5
What I find to be important is to have a diverse staff. You can no more have a coding staff full of "superstars" than have a football team full of quarterbacks and wide-receivers. What I find a lot of people mean when they're asking for "superstars" is, "someone who produces a lot of code". Which sometimes is needed, a person that come hell or high water gets the problem solved. But I've also found that a lot of those people leave a path of uncommented and undocumented destruction in their path. In which case you need other talent that can polish their code or influence them to come back later and pickup the pieces. Those people are usually a little more academic, they might be as slow as Christmas and if you counted solely on them to get the product out the door... It would never get done.
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.
They have bad /. Karma ratings
Fred Grott(aka shareme) http://mobilebytes.wordpress.com
I find you....
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.
I rarely read replies, it's my opinion and if you thought about your opinion a little more, I'm OK with that.
They spread their mess everywhere and if their IQ is massive enough, they eventually implode sucking in everything around them and not even the light at the end of the project tunnel can get out.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
What IS a "programming superstar"?
Windows applications? Unix applications? System level? Oracle? SAP?
Social Networking sites are one element of your answer. You need to be "LinkedIn" to the circles of your developers.
Just another "Cubible(sic) Joe" 2 17 3061
I was job hunting a couple years ago for a programming position. I graduated head of my class in C.S. (named the Outstanding Graduate at my university), and did a round of resume-bombing. I'm not one to overbearingly market myself on things, preferring to be very straightforward about what I'm looking for.
Most of the places I sent my resume to didn't even have the common courtesy to respond with "no, we don't want you", let alone "yes, come in for an interview."
Lots of good programmers aren't good at marketing themselves. If companies would give people the time of day and take a few minutes to talk to the person (especially in person), rather than discounting someone because of some mystical applicant-filtering list, they might be pleasantly surprised at who showed up.
Every in-person interview I've had (3 thus far), I've been offered the position. Granted, it could be that I got the interview because they were more interested in me than other places, but still...
-- I prefer the term "karma escort."
Post puzzles like Google does, they tend to get phenomenal programmers by posting whiteboard puzzles at recruiting fairs (any and all recruiting fairs). They found a FANTASTIC programmer at Purdue once by doing this, and the guy didn't even go to the university, he just went to a local high school, heard Google was there, stopped by, solved ALL the puzzles they posted, and was hired then and there. Last I heard he was poised to start working there as soon as he graduated from high school.
But if you want to hire these superstars, be prepared to compete with the likes of Google, who do both of the above. They have hired better than 1/2 of the programming contest superstars that I have met.
Let me anticipate a strawman response: the tasks posed in programming contests do not represent the sort of tasks that grunt industrial programmers are called on to do. They do select winners.
1) burnout - you may get a few good years out of them, or you may get a career.
2) you miss out on the benefits only age and experience can bring to the table.
Everything else including relevant experience and education being equal, A 40 year old whose second career is programming is much more valuable than a 25 year old.
Likewise, a person whose first career was programming and who made it to 40 and who is still productive is not likely to burn out quickly.
Some of the best guys I've worked with had a lot of gray - or missing - hair to show for it.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
For i = 1 to PotentialSuperstars
If i = PotentialSuperstar
slapProgrammer()
deflateEgo()
Else
moreWork()
longerHours()
payCut()
End If
Next i
So...
Step 1 - Don't code in visual basic...
If you want good developers, be ready to offer money for them, because everyone else wants them too.
P.S. I'm kinda tired of reading about how, of the IT firms whose employees post here, 90% want to hire the top 5% of developers. How about an article about the truth: how to hire so-so developers and _still_ get some work done? Now that's an accomplishment!
List the CORE technical need. anyone one worth their salt will pick up the supporting stuff easy.
I hate when it's like we need 10 years experience in :
SQL, C, C++, Perl, active directory, MS OFFICE, Clear case...ad nauseum
That just tells me you don't really know what your programmers are doing.
Especially when you ask "Used in the last ten years, or ten years in each?" "Each."
Actually reply, btw.
The Kruger Dunning explains most post on
For young blood:
Go to some nearby/preferred universities that care about computing/programming, and talk to the career-advising departments about possible interviews/co-op/internship programs. It's like a free sample, practically, considering most companies pay $10-15/hr for co-op's/interns the first time around (exception for expensive areas I suppose). I'll never forget when my university "adviser" told me that I should switch to Mechanical Engineering because there were no jobs in Aerospace (much like the "all programming is going to India" problem), and here I am now with more than 2 offers and the possibility of interesting grad school research. Let students know that jobs are out there, or this will be a bigger problem in the future! I found my company via co-op'ing by the way, as did nearly all my friends in my major.
Or, like Lockheed does, go to the campus and set up a "challenge" event--go to the school and offer prizes for students solving a programming challenge like one you face. Students like competition & free stuff (please NOT pizza). Not sure what overhead something like that requires, but just another idea.
Or maybe they have something like an "Engineering/computing week" or a "Career Fair" where students come and hand you resumes while you sit at a decorated booth. Anyways, I think most campuses that have good candidates try to put them out there. Use their resources.
2. Troubleshooters are brutally useful.. take an expert with a known problem in his head, and have the troubleshooter (applicant) role-play the diagnostic... If your really bored, prep a full test with some odd code that doesnt work.. coders that cant effectively troubleshoot are not superstars, and are often dead weight.
3. Ask them what they hate... If they use a product X it should have some horrible inconsistencies that they will despise. Programmers have some habits that the compilers just hate, depending on the skill level the coder will have different views on what is bad..
After all of that then you have to find a good place to put them.. you cant feed an algorithm head CSS style sheet problems, they will be malnourished. Then you need to make sure they're on task.. algorithm heads love puzzles and problems.. keeping them working on one that they've solved is almost punishment.. Once you've hit their boredom wall you need to adjust the task so that they're not slogging through the motions.. or re-task them and let a hardened solid coder finish up the dull bits.
Storm
Just think of an interesting project for them to work on.
Almost every programmer can be a superstar. They just need proper motivation, and unfortunately, money does not usually fall into this realm.
I like my job and most of my coworkers, but some of them are incompetent.
Many of the truly excellent programmers I've known have never left a job without knowing exactly where they were going. This especially includes graduate students, by the way, who frequently are long on talent but short on connections, clue, and time to search. Just like the pretty girl sitting by herself at the prom, the geeks aren't going to approach you, even if they realize you exist. (Cue the commenters taking that analogy WAY too far)
Go to trade shows and chat with the scruffy-looking folks with bags full of swag, go to conferences (ACM and IEEE) and read the papers, look into interesting projects on Sourceforge, go to college recruitment fairs. Be specific in your job description, and approach people with an idea of what they would add to your company. Be ready with a business card and the phrase, "My company is looking for people like you."
On the attracting side of things, make yourself visible in the right places. Publish academic papers, if you can, and send people to conferences. (iRobot is particularly good at this) Contribute to the open source community -- and try to maintain good relationships with fellow contributors.
A) If there were programming superstars around, the only way to connect to them is by, well, connections. The friend of one of your current employe is good, and through that one you get in touch with the superstar.
B) There aren't any (or almost). In the current market, where everyone comes out of CS school as an applied math major with "Computer" written somewhere on the diploma, there's virtually no one qualified to fill in software architect and project manager jobs and, to a lesser extent, functional analysts. So a lot of "superstar" programmer are quickly promoted to these jobs, the "top" QA with an associate degree who knows a little PHP is promoted to programmer, and quickly enough, you end up with zero superstar programmer, just superstar "monkey team leaders".
Even the big shot companies like IBM, Google, MS, or the fast growing ones like Endeca, work like that. A bunch of monkeys lead by 2-3 former top dog programmers.
I am not going to tell you what we do.
Seriously, I've worked for companies both big and small, even the government for a while.
Instead of locking myself up at yet another company, I decided to set up my own software development company. Instead of looking for assignments, the assignments find me. I take assignments on a per-project basis, and if I don't have time or the project isn't interesting I know enough programmers who might want to take it.
It's not for everyone, but with a professional attitude and some word-of-mouth advertising I must say it beats any job flat-out. And I get to give discounts for open source software development, as that's what I enjoy most.
This sig is intentionally left blank
By advertising on online job sites, you hit a much broader area of people. Often folk in IT are willing to move if the financial package and technology are right. Note I am nudging up my own company here, but I do believe if you specify the job description well and weed out resumes that apply you can find the right kind of people. One thing I think also helps is having candidates do a difficult (worthy & interesting) development test prior to even interviewing them. I have seen companies give out 2-day tests that target not just good development practices, but also the ability to think outside the box. Only the hearty will stay on and they may appreciate the test if it makes for a good puzzle.
JohnE
jobbank.com - Search jobs, post resume,
Do your company/team a favour and don't recruit 'superstars'. You might find yourself hiring some braggart with a big ego who insists on wanking their ideas around and bullying everyone else into using their pet technology of choice.
I suggest looking for people who can provide hard evidence of:
- decent technical knowledge (depth and breadth) about what you are hiring for
- having developed larger non-trivial components in real world projects
- having worked successfully in a team. In fact have them meet some of your team in the interview.
- having written documentation/requirements/designs
- having worked on, and persevered through, disaster death-march projects (have battle scars)
- willingness to treat others with respect, listen well, and take direction
Anyone who is even average or slightly above average in all these points will likely be a superstar in your organization.
HTH
Sadly, the only mechanism I know for this which I've actually seen work is essentially the "good ol'e boy" network.
The last time I got a real job that wasn't even indirectly via some contact I already had was in the mid 1980s. What I'm used to is, networks of at least reasonably competent people remain loosely in touch with each other and get a vibe for when someone is dissatisfied where they are, and correlate those vibes with needs they observe elsewhere.
A disadvantage is, it can be hard to get the first competent person. An advantage is, once you do, if you really have a good environment to work in, you might get a steady stream from that point on.
But stipulating that it happens, how do I, as a company looking to hire such people, connect with them?
If you're only able to hire up really smart people who are out of work, that is you can't go recruiting gainfully employed ones... there's something wrong with your company and if the person is as smart as you want them to be they'll smell that and not take the job. If they miss that they're not what you're looking for. Catch-22.
It sounds like you're trying to bargain hunt great talent. Maybe it's just the phraseology, but if that's the case, step 1 is to clean that up.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Be a superstar company to work for...
(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
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.
You sound too full of yourself; that alone is a big warning sign.
I seem to remember Joel having good ideas.
Hire people who want to program. Hire the people who would program in their spare time if you didn't pay them. Those are the people you want.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
Why do we keep seeing this sort of crap on here?
"Ohhhh I am just sooooo 'lite! Ohhhhh wher can some one as 'lite as I go?"
Jesus if all you can do is program and you can't engineer or design or do development why would anyone want to hire your 'lite butt?
Just STFU dumb ass!
If your employees are good, they'll tend to know other people who are good (from previous jobs, school, socially, or outside projects). If they know you want to hire people, and they like the company, they'll refer these people. People of the level you're talking about will generally be able to find jobs by way of their contacts of this sort, and will generally not want to talk to recruiters, HR people, or headhunters (all of whom are normally scary non-geeks).
I never respond to job ads that give a hard line, lengthy list of specs. It is almost always a case of H1-B Visa abuse, where they have already selected an indentured servant from another country to do the job and are just trying to convince the government that there is no one else *exactly* like them in the world.
I've been programming since the 70's. Since I started, I've watched tech industries one by one outsource manufacturing, labor, and design to countries with cheaper labor. Their defense is always the same, "Our competition is doing it, so we have to race to the bottom too in order to remain competitive."
Some one looking for a "superstar programmer" and who is willing to pay well for them is a rarity. The industry is too commoditized.
I mean, if they are what they say they are, a superstar, then they shouldn't have any fear about saying so. I mean they (the employer) wants to know. I only suggest that they wear their shades because sometimes the spotlights can burn holes through the stage, but otherwise they're a pretty safe bet. The interviewee should also be asked about previous projects, did they improve on the design? Did they do something new? If they don't have much to say they're too much of a new comer. If you make a mistake when typing up notes on the interviewee then go back, whatever you did, you undo (Ctrl+Z).
Borrow someone else's superstar to help you screen the candidates. If you don't have enough candidates, you aren't offering enough money.
(If at first you don't succeed, do it different next time!)
Personally I think "Superstar" developers are interested in three things:
1) Decent compensation - shares are a big part of this, they don't like making other people rich off the back of their talent.
2) The difficulty and type of work. Choice of language and how it gets done is pretty important.
3) If the guy in charge is not a technologist but a business person that lack of understanding of development, and especially hackers, is going to mean you have no chance anyway.
Two solutions based on current reality models would be either "Nerd Idol" or "Big Brother Nerd edition". The idea would be to pit these guys and gals together and see what develops. Sure it probably wouldn't get the same ratings as the current versions, but something has to be said for cult value ;)
Jumpstart the tartan drive.
I'm in my final year at University in the UK, about to finish a masters degree in computer science. I've had a few job interviews and been rejected every time. I don't know why -- the responses have been standard "at this time we don't want you" messages. I suspect I need to work on interview skills a bit more -- maybe plan my answers to common questions more carefully instead of ad-libbing them. It's the only thing I can think to improve, since my CV is good: I've worked for 6 months at a respected company, I've held positions of responsibility at University and I've got good grades.
On the other hand, I'm running out of interesting places to apply to. I want to work in London, but I don't want to work at a bank, and I'm avoiding the financial services industry (this seems to limit things a lot). Finding interesting companies takes soooo much time!
....tie a string around it, throw it round the corner and wait. Have a large net handy as they spook easily.
First of all it would have been helpful if you defined what language(s) your "superstar" needs to know and where your company was located. You might just find that person here. But you're probably going to have to get your hands dirty and network. Start by talking to some of the people you have in your company now that you respect--they're you're best source for new employees.
Monster and Dice are not really the way to go--I can assert this from a job seeking position. Usually the listings look like an pizza order than a serious quest for a real person. That's likely because it's done by HR and/or managers and they just throw everything, but the kitchen sink as a requirement which turns off the ones who are truly gifted, but are good because they specialize in knowing a few languages well instead of a little bit of everything. Plus if they are really all that good, they can quickly pick up on any oddball need your company happens to have. Unfortunately, those are the ones who'll probably get filtered out by HR because they're just scanning for key words.
If you've never been modded as "flamebait" or "troll," you've never tried to argue a minority viewpoint here!
1) Since many people find it hard to retire at 65 or earlier due to layoffs and whatnot, even that 55- or 60-year-old programmer could provide barrels of binary goodness for well over a decade to come. :-)
;-)
... it's simply migrating to other areas. In my case my face. Greying beards are distinguished, don't ya know. Besides, 40 is the new 20. Right? Or is it 30? I forget...
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, Fortran, and a few other languages for a living. How could that NOT be fun?
And my hair isn't missing
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
you write a program to go find you a job.
no, really.
In other words, the background investigator is a POS, and proud of it. Think about that.
There are a lot of great programming/hacker(The good old kind) forums where programmers chat and share ideas. Browse around forums for some of the most active posters because they tend to be very knowledgeable and experienced.
For example try Sorceforge, I've been around the forums and there seems to be a few programmers hanging around helping people.
http://sourceforge.net/community/forum/
Find them through buzz or word of mouth, by recommendation or via groups. Contact them when they write articles in the press, or when you learn about their open source project. Then offer them substantially more than they're making, and let them know the offer will stay open.
In my current job, I did some consulting for a client, turned down an offer but stayed in touch, and accepted a (better) offer a couple years later when I was more ready for a change.
talk to their people.
Convey to the applicant that your company values *production* and *problem solving* over meetings, phone calls, "strategy" and any of the other abstract "big picture" bullsh*t that people with "soft skills" use to justify their positions at the expense of programmers. Bonus points if you can point to a programmer or two in your organization and demonstrate that they make more money and are more valued than the softies. Let the applicant know that "Yes, we expect you to function within our management framework, but that framework is here to help you be *more* productive"...every good programmer dreads the "Office Space" scenario where they are spending more time filling out TPS reports than doing the work that they love.
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.
If they are a superstar - I bet there is a good chance they want to still be programming after 10 years. It takes a passion for the craft to be a superstar. These aren't the type who view programming as a career route to something else - it's a calling.
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? ;-)
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
The place I work has some top people working there. It also had one of the strangest interviews I ever did. I was barely asked about programming or anything related to my job. Just pointed to an engineering diagram of a chemical plant and asked how I'd tackle it. I'd never done chemistry and didn't understand the diagram, so I figured I was probably failing the interview. Another poster mentioned the difference between top grade programmers, and the real superstars that actually get things done. I think this was the type of question that was really aimed at separating those types of people. It was a question you didn't have to get 'right' - it was just to find out what you'd do to figure out how to figure out the answer.
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.
A 'superstar' programmer will find the job he wants with the salary he desires and get that job. A local company is well known for finding top flight programmers. They held a $10,000 programming deathmatch challenge. The winner got the cash prize, and a job offer. Guess what, they were extreamly successful.
http://mozy.com/contest
What you have to be prepared for is the unexpected winner:
http://uphpu.org/pipermail/uphpu/2006-November/005608.html
It was so succesful they did a second take, check here for sample questions:
http://mozy.com/contest
What agency did you say you work for?
Techsystems?
Robert Half?
Spherion?
Aquent?
"A person is smart. People are dumb, panicky dangerous animals and you know it." - K
I like to act a little unusual in a meeting. Even show some eccentricities. Based on how accepting of odd behavior a company is usually helps me (alleged talented engineer) determine if I want to work their.
That's all you need!
http://www.coderoshi.com/
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:
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.
Just callin' it like I see it.
Some of the seeming superstars are the ones who can talk your ear off about programming and their brilliant insights and experience. But once you get them into the workplace they bring productivity of everyone around them to a crawl. They are temperamental, ridiculous, stubborn, irrational, fond of verbose complication over simple and straightforward and *highly* political. These people sound great, know all the right words and buzzwords to use but they get nothing done. Zero. They are all talk. Often they have Ph.D.s or will frequently bring up how they used to work at ILM or Pixar or some great place where they are no longer employed. Primadonnas *SUCK*.
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.
Programming superstars are innevitably subhuman aspie filth. Working with them...? no.
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
We using programming puzzles as part of our recruiting efforts. We put them on the subway and as ads on slashdot. We get a lot of submissions saying "I saw your puzzle on the Red line and thought I'd give it a try." One of our puzzles was linked on reddit, and that generated a bunch of submissions.
But our single biggest source of leads is referrals from people who already work here. Something like 40-50% of new hires are found that way.
I've encountered a related problem in my (non-programming) line of work. I'm in networking, and I've probably given 100 technical interviews over the past 2 years. Of those, I've only recommended hiring 4 or 5 of the candidates. Why not? Because when someone puts "OSPF" on their resume, I expect them to be able to intelligently talk about its utility and shortcomings, and compare it with other IGPs.
A bunch of the candidates I've spoken to have been egregious fakers, and it's really, really hard to find the good ones among the not-so-good.
Need Geek Rock? Try The Franchise!
There's a vast pool of trapped talent in rural areas in the U.S..
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.
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?"
I don't know if I'm a good programmer. I think I'm okay, but I can always be better. I have code running on millions of machines and it works alright, but it's not perfect. I've never looked for work. I quit my first job after 13 years because it just felt like I'd worked there for too long. I sat around for 18 months building robots and learning about OpenGL and then the phone rang from a startup who found my resume and geeky stuff on the web and needed someone to work on the kind of stuff I can do. Alas, they ran out of funding before they could ramp profits up to sustainability, and I proceeded to sit around some more hacking away on fun stuff waiting for the phone to ring again. It eventually did, and I've been at job number three for the past 4 years.
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.
I don't do Windows and I don't do suits.
Great developers often generate more income when they work for themselves where nobody would look over their shoulder and tell them how to do things. They become the CEO of their own company within few years, vs. if they work for another company, they may never get that opportunity.
Knowing that, if they don't work "for" anybody, they are often more than happy to work "with" other teams as collaborators as long as they get to have direct communication with the clients and stake holders and the opportunity to participate in all the decision making process. Great developers despise command chains and management hierarchies and instead prefer to work in flat team structures.
Remember: It is always easier for the Hackers to learn about business than Business people to learn about technology.
- Get an Ask Slashdot article posted with your real name and e-mail address.
- Get people to find your personal site via the domain name in your e-mail address.
- Put a fat banner on that, redirecting the crowd from Slashdot to your blog. Warning #1: say you are an export C# programmer on your blog.
- Put stuff about your company on your professional site.
- Put a big job ad on the front page of your company, White Oak Technologies.
- Post a bunch of stupid, tedious, entry-level jobs on your jobs page. Warning #2.
- Put this on the bottom of the jobs page: "Applicants must be U.S. citizens and selected applicant will be subject to a government security investigation and must meet eligibility requirements for access to classified information." Three strikes, you're out.
Limiting yourself to U.S. citizens excludes most decent programmers outside and inside the U.S. Excluding people who will pass a government security investigation excludes all the programmers who've done... interesting things. Excluding people who are willing to do U.S. government contracting work, well...Anyone claiming they are a superstar programmer is suspect immediately. Superstar programmer, WTF? Seriously how are you defining this? A "superstar" programmer of C? Cobol? Java? Python? PHP? Lisp? Tcl? a kernel hacker? HTML??? Show me a superstar of any of these I will show you a programmer who sucks balls at a million other caveats of IT.
The reason why the parent can't find any superstar programmers is because he is searching for something that only exists in ridiculous movies like the latest Die Hard flick.
It's validating their claims. The only way to really prove someone is a superstar is to audition them -- actually have them do some work, when another superstar (or at least another programmer who knows the difference between a superstar and a regular grade B programmer) work with them, and figure it out.
Besides, what makes a superstar? It's not just pure brilliance -- they have to be able to be flexible, integrate quickly with a team, and properly document and share their ideas without treating their colleagues like children.
Back when I still thought I wanted to write video games for a living, there was a great book on the topic of designing and marketing games. Well, a humorous book, anyways. It discussed the problem of working with Prima-Dona programmers, and ways to get them to work on the team. My favorite anecdote described a programmer who was excellent, but worked in such a way to ensure that they were irreplaceable. So, what that company did is hire another programmer, who was relatively young and willing to play the part, and gave the irreplaceable guy a 'promotion' and an 'assistant'. The assistant's real job was to get a handle on the internals of what the other guy was doing, and document it. After a few months, the assistant gained the trust of the prima-dona, and figured out everything, and then presented his new documented, highly professional replacement component, and the prima-dona programmer was given a chance to shape up or ship out... I don't remember the exact outcome, but I enjoyed the story.
The point is that it is highly subjective, and dependent on the environment to find someone like that.
I know I would rather have a solid hard-worker who isn't necessary brilliant, but is good, and has a likable personality and good attitude towards work and the company/team, than an impossible genius any day.
More Caffeine. NOW
I agree that a superstar is the one that just gets the damn thing done but still manages to do it as part of a team. This usually results in an overall improvement of the team. Many people think the superstar as the one who hides in a corner and comes up with brilliance but doesn't play well with others. I call them commandos. ...
Personally when I hire I want a mix of superstars, commandos and drones. Drones are needed to do things like translations and so on. They need to be good but can be nearly completely devoid of innovation.
Commandos, when properly managed, can partially simulate superstars by coming up with insane code that when fixed by others is very good. But never leave a commando in charge.
Superstars are difficult to manage. Not due to any problem with them but simply the speed at which they work. They can usually take a team and run their feature set to 110% with few bugs and so on. But then you end up having them clean up after other groups and then everyone feels used or abused. But as to your question about superstars. The better the superstar the more likely it is that they know what to do better than anyone in your organization. Thus if I were working in PHP as a codebase and a real superstar came available but wanted to work in Erlang I would seriously think about either switching the project over to Erlang or at least the bits that I needed some superstar work on. This way you can get the superstar as they will realize you comprehend their value. But this leads to another question. What is the difference between a superstar who can help take you to a whole other level and some nerd who wants to play in a new sandbox? This is where references come in. Real references from people you personally trust. Thus my answer is like many of the above. Networking is how you are going to get the superstar. You let it out on your network that you have something that demands a superstar and you might get one. But if you want a super drone then
Lastly I think there are a few signs of superstars. Expertise way outside of programming. A superstar programmer is usually not the one who wins obfuscation contests. They are the one that understands you have a problem that needs solving because it somehow will help the company and eventually its bottom line. Thus when you talk to them they will refer to technology as a tool to solve your problem. One thing that I have noticed is that the better the programmer the less obsessed with computers and programming. They can talk for hours with the right person about the performance problems of exception handling vs the architectural advantages but won't say a word with someone who isn't a high caliber programmer about programming. So a good test is that you sit them down with an accountant and they will talk accounting and so on. Also in this same vein great programmers also tend to not have much paperwork or anything that diverts them from the direct path of problem solving. So no certifications, few degrees, and few jobs with giant companies. Also their resume is rarely nebulous. No "assisted in the deployment of..." usually a straight: "designed, and implemented monkey fondler in C++ on an embedded system. Lastly their resume will read like a timeline of computer technology. You will see a series of projects where the best technology of the day was used. This shows that your project will not be from the dark ages as well as a huge ability to learn.
Good luck
I've actually been trying to hire superstars for my company recently, and I find they fit into two categories:
1) Superstars who are content where they are are purely fought-over by their former colleagues. They never look for work because they're constantly being recruited by their peers. If they do look for work, they just apply directly to Google, or wherever else they might want to work.
2) Superstars who are more ambitious quickly advance to a point where they only really work for companies they found themselves. At this point, even if you do know them, it's hard to hire them unless you're going in on a joint venture.
With these two facts in mind, the only real way to hire superstars is to make them. Find younger talent, preferably straight out of college and groom them for 3-4 years. If you're near a university, try to strike up a dialog with the professors, see if you can get access to their TAs or star students. Talented programmers tend to hang out with each other, so if you do land a superstar, you've got a good chance at hiring their buddies too.
Superprogrammers, who are seem to be consensually defined here as "someone who writes the right code at the right time in the right time," can most certainly dislike Windows, Vista, Linux, Macintosh, COBOL, whatever. They can dislike anything they want to. The important point here is that superprogrammers deliver what you need, when you need it.
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.
And make sure this is well known in the industry.
I'm not saying that I'm a superstar. But if I were, I'd look for a group with a track record solid project management. This means a group that
1. Keeps numbers on man-hours from previous projects and uses these numbers as a heuristic when scheduling future projects.
2. A company that puts out controlled revisions of its existing software at regular intervals, without much deadline slippage.
3. A company with low staff turnover.
4. Interesting projects that really attempt something new.
Things I would not touch with a 40-foot pole:
1. Long (multi-year) release cycles that never seem to quite make it out the door.
2. Execs who set deadlines based on thin air, or when the next trade show is.
3. A reputation for frequent and serious "crunches" where developers are expected to work 70 hour weeks. Occasional crunches are part of the business. If they happen too often, it's a sign of bad management.
4. Projects that basically reinvent someone else's product so the company in question can get a piece of the market.
Nothing kills a love of programming like constant crunch time, schedules based on thin air, and an incompetent, bureaucratic approach.
Sadly, it's most often the organisations whose project management is totally out of control who are seeking the "superstar coders" - they want guys who are 10x more productive in order to save them from serious scheduling mistakes they have already committed.
Don't always bar on experience either. If you look at some of the top schools they can put out some amazing people that just haven't gotten their hands dirty yet (me being one of them). My advice is to contact the computer science departments of many universities and find out what is the best route to advertise an internship. It is a gamble, but you get a programmer for way less than market value, and you don't have to keep them if they don't perform. Plus, if you do have a really dynamic and exciting company word will travel fast and you'll get a lot more students (and their associations) knocking at your door. The key thing is a campus presence, students won't come to you till you come to them and give a talk on what you do. All the top students I know got hired by companies that came and gave talks/internships first.
home: kreatium.de tblog: i-no.org
Word of mouth. Depending on the industry (I code in the semiconductor industry) the current employees know a lot of other people in the field. I wouldn't categorize myself as a superstar but I'm very good at what I do and when I left my company last year I knew enough people in the industry that knew my work and reputation that when I went to interview at another company they wanted to hire me before I even interviewed. The interview just clinched it, because if the programmer doesn't have good communication skills and is easy to get along with they may be a superstar that will hold your other employees back because they can't work with him (I'd say her too but I've only worked with one competent female programmer in this industry and she couldn't get along with anybody).
Older people (especially with kids) are more likely to stay around and contribute to their job, unlike kids who are padding their resume so they can go somewhere else for more money.
love is just extroverted narcissism
I do posix, I'm good, don't tell me I can't use vim. What do you need?
Fighting for peace is like fucking for virginity
Advertise competitive pay and they'll come to you. The more competitive, the better you'll get. Double the salary of a typical programmer will probably get someone who is at least twice as productive.
This site, www.topcoder.com, has various kinds of programming competitions, ranging from algorithmic problems, heuristic challenges, design, implementations, and others. Its most traditional competitions is the algorithmic one. The kinds of problems presented are similar to ICPC (http://icpc.baylor.edu). These competitions define a rank among the thousands of competitor of the site. There are also some competitions giving prizes, and one or two annual tournaments, with big prizes (USD 10k), usually with big sponsors (Yahoo, google, nsa, aol, etc).
I guess this kind of site might help you find people that definitely have some good programming skills.
Budget for a small but enticing retainer to hire a good CS professor to refer some names to you, say, $5k/yr. When I was teaching programming it was pretty easy to identify the highly talented students. I didn't really do anything with this info but praise them. If it doesn't pay off after the first year or two, then you have lost very little time and money, but the potential win is huge.
NotchUp might be right up your alley.
I do not work for NotchUp. I just knew about it and their target hiring audience is higher level people. Though I suppose it wouldn't necessarily weed out people who have a good resume but are just slightly better at programming that that goo under my sink.
As someone who is responsible for hiring people, and being an ace programmer myself, I can say that any good developer won't show it in the resume. I personally have had a history of a lot of job changes. I mean to stay, but something pisses me off and I split. While it might seem egocentric, for me to say so, I don't have to hold on to a job because I need to have it. My last COO treated the development department, and particularly me as head of it like crap. In two weeks I had a job- not just any job, but one with more pay, less hours, and better management. I'm inclined to think that other aces don't put up with crap either.
The other thing I mentioned and will elaborate on is that you can't judge people by the resume. Get everyone in, meet them. Geeks are not great at self-promotion. They are more about structure and technology than self-promotion. These are skilled bit-smiths, not word-smiths. Often they have hints of autism that make them evaluate the world differently. Look for these quirks and see if the attitude and previous experience will work for you.
Also, think about what you need in terms of ability, not prior knowledge. Everyone can learn, but HOW you learn is more important. Its the difference between "I don't know how so I cant" and "what do I need to know so I can?" "Geniuses" either invest an exhorbinate amoutn of time or pick things up quickly. I'm personally the pick-things-up-quickly kind.
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
Can't be that smart.
Why do you insist on superstars? Haven't you seen the regularity with which the "All Star" sports teams get beat by "ordinary" teams! Superstars are great for one person jobs; jobs that said superstar really wants to do. Anything larger than one person, then you need a team. A team means team players. Very, very few superstars are team players. This applies to sports, software, hardware, even management. Furthermore, good luck keeping "merely" good to very good people when the local superstar starts hogging the lime light, perks and rewards. Brutally, you get more done with a TEAM of good and very good people than you ever will with a superstar. In my experience the fastest way to kill a project (or even a small company) is to bring in a superstar, the good and very good people find somewhere else to be, quickly. Ultimately, be careful what you wish for, you just might get it.
You just described every detail about me. Unbelievable.
Peter predicted that you would "deliberately forget" creation 2000 years ago...
http://xkcd.com/356/
...its hard to get them working again afterwards.
Seagoon: Shut up Eccles!
Eccles: Shut up Eccles!
You are spot on that word-of-mouth is best. The best people are not on the market, unless they happen to be consulting, and then there's a small time-window in which you have to move fast.
However, this notion of $10,000 is so silly as to be insulting. A headhunter will get 20% of the first year salary if that person stays around a year. So offer the exact same thing to your employees.
If you need to find the best people, use the people who are the best able to contact and impress them.
I laugh (silently) when I hear a company offering anything less than a $20,000 reward for the best people. It is another way of saying "We're going to screw you out of a full commision". If you want my contacts, you damn well pay the market rate.
Honestly, companies are penny-wise and pound foolish. And it always comes back to bite them.
To be honest, in my programming experience, the one thing that companies miss is the fact that programmers aren't "coding ninjas" based off experience. In my studies, I was the top programmer in all of my classes and had recommendations from all of my CS professors. The problem is, companies are blind to that fact! It didn't matter that there are those who's passion and personal experience far exceed those who have been in the industry for 5, 10, or 20 years. To date, I've worked in many companies who were so intent on hiring those "Senior Programmers" with at least 5-10 years experience, while I had the title of "Jr. Developer" only to have me go in and fix all the problems with newer, more efficient code. Newer developers are more intent on bringing systems to the 21st century, and a company that is willing to give those who have fresh ideas a chance are more likely to succeed. For example, the company I am currently with has 2 senior developers -- both 3 years post-degree nonetheless -- and the efficiency and technology behind applications released in just the past month far exceeds any of those I've seen in any company I've been with who were "too afraid" to take in new ideas.
Clones are people two!
IAAPP (I am a professional programmer, that is, I get paid to code). I was educated at an elite school in their computer science department. Of the people I've known in my professional life, the superstars -- the one-in-a-thousands, and I most certainly do not count myself among them -- over half were educated at elite universities.
This means two things, first, you can find superstar programmers that were not educated at places like MIT, Carnegie Mellon, Stanford, etc. But it also means that you'll have a good chance of finding them by recruiting at places like that.
If you ask elite universities the best way to recruit there, they'll push you toward their careers office. That will get you the good programmers. You'll only get the superstars by having a relationship with a faculty member -- perhaps your old professor -- and getting them to give you the inside scoop.
Superstars don't go through the normal hiring mechanisms. They don't need to.
Put my fist through my alarm clock with its ding-dong death inside my ear. - The Blackjacks.
http://tripractix.com/job_opportunities
Fort Wayne isn't exactly a small town, but its not on the radar for most people. Have a look and send me a resume, my team needs a new developer and the rest of the company needs sysadmins for our hosted customers.
A programming superstar can think about a problem for 3 months and then write 15000 lines of code in 48 hours to implement a solution that works for 10 years. A programming superstar can spend 2 weeks non-stop in a cold room hammering out a solution to save a company from bankrupcy. A programming superstar can also be faced with a crisis on a Friday evening at 5PM, write 25 lines of code that generate a 120,000 line program from a spreadsheet by 6PM so that programming superstar can go home crisis averted. A programming superstar doesn't care about language* or system or hardware, it doesn't matter... the only thing that matters is the project. Look at the projects your candidates have lead.
;) ]
One possible way to differentiate the wheat from the chafe is to ask them to write a program to solve a particular maze. The mediocre programmer will write a program that solves your maze, a good programmer will write a program to solve a class of mazes, the superstar will write a program to solve mazes. The main thing is that the superstar will enjoy solving the problem.
*[except Perl, programming superstars hate Perl but love Rexx
-- Each tock of the Planck clock is a new world and here we are still life. --
:(){
Interesting thing this quality you speak of, here is a quote from "Zen and the art of motorcycle maintenance"
"Phaedrus felt that at the moment of pure quality perception, or not even quality perception, at the moment of pure quality, there is no subject and there is no object. There is only a sense of quality that produces a later awareness of subjects and objects. At the moment of pure Quality, subject and object are identical...It is this identity that is the basis of craftsmanship in all the technical arts."
"And it is this identity that modern dualistically conceived technology lacks. The creator of it feels no particular sense of identity with it. The owner of it feels no particularly sense of identity with it. The user of it feels no particularly sense of identity with it.Hence, by Phadaerus' definition, it has no quality."
I think this quote explains commercial vs Free software. Free software is about quality, commercial software is about money.
Most professionals dont understand the concept of quality, professionalism is all about making compromises, a professional compromises his work to suit another purpose, be it to reach a certain market, demographic or price point. Professionals shouldnt talk about quality.
You run your interview in a manner that looks good to self proclaimed superstars, then when you enter the "we're interested you phase" go to all the ones that say they aren't interested and tell them your not really like the interview, you just did that to weed out the really great people.
The Kruger Dunning explains most post on
In my experience, you attract premier programmers by doing this:
- 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.
It also helps if you decide how you're going to compensate them too.
Now that you've done the recruiting, do the interviews, which he's also discussed.
Further questions? Read his website. Mine's about books, so it's not likely to be all that helpful for programmers.
be prepared for answers that make you think.
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.
The Kruger Dunning explains most post on
You don't find "Superstars" -- you meet them and work or have worked with them at some point in time.
It is not that difficult to figure out who they are, things which are immediately apparent are: Their thinking process is well defined, almost like a mathematical theorem, layered, clear, defined; They always go the extra mile, they always create and invent, code related to the project, tools to help them in their process of their work (i.e. things they aren't really required to do as part of their work). They normally put things down on paper before they put a single line of code. They try to "prove" the design is correct before writing the code. They aren't a programmer-of-all-trades. They are normally dedicated to an industry, for example: security, networking, filesystems, storage, etc. They are an expert in that field. They have a university degree or two in related field: mathematics, cs, eeng, physics, etc. They've been tinkering with computers ever since they remember themselves. All these factors tell you something.
Most importantly, really, is the word-of-mouth and/or the experience working with them. It's an absolute pleasure.
Many employers say: "We need the superstars", but beware: "Superstars" have their opinions, which become immediately apparent at an interview. It really turns out that the employers aren't a match for the "superstars", not that there aren't any "superstars" out there.
was to talk to your "super stars" (damn, I hate that almost as much as being called a "guru").
If you have some really great programmers, they surely know other great programmers. If they say they don't, its because you haven't demonstrated that you can meet the needs of their friends. Would you recommend that a 5-star chef friend of yours go work at the local burger joint? I doubt it, because they A) wouldn't, B) probably wouldn't be your friend anymore, C) tell their friends not to take positions you are recommending.
I have a handful of guys I would hire in a heartbeat if my company would step up and start compensating the great programmers what they were worth (or even an acceptable negotiation), but they don't so I won't bring my friends.
The "truly elite" tend to be hard to work with. An employee who works
with his employer and turns it decent work is preferable to a touchy
prima donna that leaves you in the lurch.
-- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
1. How to find one? Start a programming reality show, with a panel of three judges. Each week, each of the candidates will program snippets of code. Viewers will text in their votes. Bottom one or two gets voted off each week till the programming superstar remains.
Winner will get a huge cash incentive plus employment, stock options, etc. Any code he makes during that time will be open-source.
2. ???
3. Profit!!!
I can just see it now:
African-american judge: Y'know, you've always been my favorite dawg! I think you started off a bit unsure, but you nailed it in the end!
Female judge: Your code... Its... just so pure. It cuts thru all the obfuscation. It really moves my heart. I'm your biggest fan.
Brit judge: I just don't get it. You want to take on a piece of code that big that's been done to death by Knuth, you have to at least do it right. Your naming convention is dreadful, and the algorithm's uninspired. You want to stay on the show, you'll have to do better than that.
Programming Superstars get that way because they program a lot. They love it. Programmers program. So, I would think that you look at people who actually have their own little shareware, blog, or some sort of program that they've written in their own time along with anything else on their resume. Just take the time to look at their sites and see what they are up to. If they are building things that you don't think your company could ever build, chances are, you would benefit from hiring them.
This is my sig.
Mirrors.
I make businesses better. My personal interests are for my personal projects. Paid work results from companies realizing a great programmer is needed, usually after trying several "good" programmers. I arrive, learn about the business and the current needs, and complete projects so everybody is smiling. Programs are fast. Interfaces are easy to use and teach the job rather than requiring training. Designs are easily understood, options allow for changes in business, and the code is maintainable by normal programmers.
Most companies need me for weeks. The largest projects only need my skills for months. With good plans and any difficult code written, projects succeed without my continuing involvement. The result is more of my time is spent waiting for work than working.
I have been actively seeking work for a few weeks. The last effort was two years ago. Finding work is difficult. I have been involved with over 200 successful projects for over 70 companies; none of my projects were over financial or time budgets. I cannot sell myself since listing achievements sounds like bragging, focusing on teamwork makes me just a project manager, and focusing on code makes me just a programmer. Once contact is made with a customer, we focus on their needs; my breadth and depth of experience is obvious from my questions and solutions.
Companies expect consulting firms to rave about the skills of consultants. My method is to contact several consulting firms. Consulting firms wait for a request for the best while giving most projects to less-expensive programmers. Contact is eventually made with a potential client, and I start work a few days later.
I have met thousands of programmers. Most were good. Several were terrible. A few were great within their specialties. I have no idea how a company could locate those few. I doubt any company needs more than a few great programmers since a great programmer can handle the work of hundreds of good programmers. One project started as assisting with an almost-two-years-of-work backlog for a 20-programmer department. I focused on program design, code reuse, and mentoring the permanent teams so the work was completed quickly and the organization was more efficient. The backlog was eliminated in two months.
I once had expectations that previous clients would contact me when attempting another urgent mission-critical project or discovering the IT department is not delivering well. Management turnover has eliminated that hope. Successful projects lead to promotions so my bosses rarely need me again. Bean counters look at immediate cost rather than ROI. Better development methods mean clients rarely have problems until most of the people aware of me have left. Few companies have used me more than once; the assignments were usually years apart, involved different skills and sometimes different consulting firms (e.g. DuPont and GM each used me for an architecture project and a programming project with no overlap of required skills.)
Consulting firms usually prefer to offer good programmers with higher profitability than a great programmer. Web job boards seem useless; I have received only one position due to my resume being found on the Internet. (I have not posted to Joel's job board). Referrals work when management truly cares; about half my positions come from previous colleagues recommending me when a project's success seems hopeless. The rest of my jobs come from a consulting company caring more for a client's happiness than immediate profitability -- either about to lose a major contract because a project failed, or as the loss-leader suggesting that hiring more consultants from this firm will give similar results. At least one currently empty position is in that last category -- the diverse skills required are rarely found in one person and a consulting firm wants the "win" so I may be working soon.
I spend my life entertaining my brain.
First you look at some of his sample code. Then you test the prospects mettle er I mean Metal! Do battle with guitars! If they stand up to the test of Metal they should be a superstar or on their way to superstardom!
Balderdash!
That they will be granted 72 virgins willing to have sex with them.
I consider myself to be a great programmer (in some areas, and I know where my weaknesses are). Or more accurately, someone I consider really great can vouch for me. Anyway, I find that companies looking for great talent for important projects often list a masters degree or better as a requirement. This always turns me off for two reasons. 1) I don't have one, so I figure they'll reject me based on resume alone. 2) If they actually have some PhD types, they'll be making all the decisions and I'll be their go-fer (management supports this based on credentials of course). I can handle being a gopher for someone, but only if they're actually better than me. In that case, I'll be learning from them.
I've been programming for about 18 years, and have only had to hand in a resume once. The people who offer me jobs either already know my work, have heard about it, or offered me a job based on casual conversation.
Finding me isn't the problem. If I would be a "superstar" in what you're trying to do, researching the problem itself will uncover something I've done in that area. The problem is I'm also fiercely loyal to whoever I work for. Which means that unless you find me at a time when I've already done what I was hired to do - I'm not going to leave to come work for someone else.
I get job unsolicited job offers every week or so, from companies who clearly know something about me. I thank them, but tell them I'm involved in another problem and am currently unavailable. The good companies (like Yahoo) will ask me to let them know if I become available. The rest don't write back.
Let me be clear on something here. A "superstar" programmer is *not* a great coder who will abandon his company for a higher salary or loftier title. People like that are great at first, but then eventually leave your company in the lurch - so badly that you'd have been better off with a lesser coder who stuck around. Remember, you want a great employee first, a great programmer second. The same goes for consultants for any project longer than a few weeks.
So there are 2 ways of finding a superstar programmer.
1. Find someone who learns fast and has a great personality, and is eager to pay their dues. Give them the resources to learn best practices, and watch them rise to the occasion. Someone like this will be at the level you need inside of a few months.
2. Find someone who already has the experience and skills you need, and keep in touch with them until they become available.
Both of these types of candidates will repay your patience many times over. They will put the success of your company at the top of their priorities, and their work will show it.
The reasons for not poaching a superstar programmer from another company are the same as the reasons for not stealing someone's girlfriend. If they can be tempted them away from who they were with before, they can just as easily be tempted them away from you. Sometimes this takes the form of slacking off so they can do consulting work or just taking more time for themselves, and sometimes it takes the form of them giving you 1 week's notice in the middle of a six month project. And people with values like that rarely create work that can be handed off to someone else without painfully long ramp up times. Either way - you'll ultimately regret the hire. I've seen it happens dozens of times.
I would strongly recommend working for an IT contracting and placement company called Tek Systems. They're the largest IT contracting company in the US and probably the world. They have relationships with some of the largest, best companies and once they approve you to work for them, it's like a quick backdoor or shortcut into a good company. A lot of their stuff is for hire too, it's not all set length project contracts. When it comes to programming, they actually have sort of a set aside group of really good programmers that they send in when the job is important. So if you really are the best programmer (like I am :-D) they'll send you on one of those. And trust me, if it's a bad place to work, they will drop that business as a customer real fast. It's like having over a dozen agents constantly searching companies for programming jobs and filtering them all out for you. Some of the time they trust Tek Systems enough that you get the contract without even going for an interview with the company since Tek Systems already interviewed you to work for them. When a smart, professional company wants someone to do a job, they just call up Tek Systems and say hey, send over a ____ and they take them and that's that. They skip the whole stupid searching and interviewing process because Tek Systems only sends really good, pre-approved workers. It's like shopping for people :-P I got a job with IBM and at a hospital through them so far and I'm only 20.
Google's Super Secret Search Algorithm: SELECT @search_results FROM internet WHERE @search_results = 'good'
Some good posts from the past:
* Nine Things Developers Want More Than Money
* Personality Traits of the Best Software Developers
* How to Hire Like a Start-Up
* An Open Letter to the Software Managers of the World
* Timeline and Risk: How to Piss Off Your Software Developers
* Nailing Your Technical Interview
(Rob Walling) http://www.softwarebyrob.com/
Ask Microsoft for the list of hackers they have caught in the last few years. Find the one that looks like the best programmer and pay him some money. Sounds stupid but I bet you get yourself a great coder dirt cheap.
"I guess I'm gonna fade into Bolivian."
They are all hiding under rocks. Go to your nearest quarry, and you'll find plenty!
You post it on slashdot.... "Doh!"
"Computers are a lot like Air Conditioners" "They both work great until you start opening Windows"
Wait, are we thinking about the same person?
I can't hep but think that you've got the premise completely wrong. First of all, let's define a "superstar" programmer. How many of these superstar programmers are there in the world? What's the percentage? Let's think of it in statistical terms, are we looking for someone whose talents fall 3+ standard deviations from the average? The problem is, when I think "superstar", I'm thinking of someone even more rare than that. At most there are maybe 1000 real superstars, and most them are probably filthy rich by now.
But you seem to be claiming that everyone already at your company is a "superstar"? I find it hard to believe. Then again, if there are any similarities between programmer's egos and the crazy contestants on American Idol, there are probably plenty of competent programmers who think they're "superstars", wondering when everyone else is finally going to wake up to their genius.
Long story, short. You are not going to hire a "superstar" from Monster or any other job board. You will learn about a superstar through connections and then track that person down. A real "superstar" will know their worth, and at best they will let you partner with them. Meaning they're going to get a ton of compensation because their talents demand it.
You've got it backwards. You don't find the great programmers, they find you. If your company and your projects are interesting, and you respect your staff, your reputation will spread and attract smart masses. Likewise, if you suck balls, the incompetent fools will rush to you while the good guys will avoid you like the plague, and name low-level half-orcs after your product lines.
You simply can't advertise "Now hiring geniuses".. well technically you can, but all you'll get is a bunch of posers and art-school dropouts. See the magic thing about us geeks is despite our anti-social nature, we hang out online, in forums not unlike Slashdot. We IM each other, we read blogs and we play MUDs and MMOs together. Inevitably with all those venues, we'll talk about life, work and money, and that's your chance to shine.
-Billco, Fnarg.com
... you're on the front page of Slashdot.
there are plenty of self taught programmers, but there are few self taught computer scientists and software developers.
I have met brilliant people who are self taught, but those people are few and far between. Also, most of the brilliant self taught people I met at college, where they were going back to get their degree, even though they've been successful in the field for years.
There are plenty of people out there who have read some "how to program" book out there and think they have the equivalent of a college degree in computer science, but most of them are garbage. The truth is a CS degree covers a lot more than programming, and a software developer needs to know a lot of theory and mathematics to do good work.
Even if someone is self taught, they are always better off going back to college.
Well, I have a few suggestions. Try these in order:
(1) You could require that all of your candidates take a carefully
crafted programming test. The higher the mark that they get on
the test, the better programmer they are. Duh.
(2) You could ask them to bring a 5000 line sample of their code.
Just a glance should tell you whether or not thay are a super
star. After all, if their coding style looks like yours, they
must be good, right?
(3) You could get into a "design session" with them. Ask them
something like:
Q: how would you design a house?
Then let them talk and draw pictures for a few minutes. Pretend
to be paying attention, nod in agreement a few times, ask a few
clarifying questions --you get the idea. It doesn't really matter
what the candidate says here, because when they are all done, you
say something like:
"Oh, well that's pretty good, but I want a design that is
optimized for a family of giraffes" **
What you are looking for here is how they respond to the kind of
unexpected changes that happen in the real world.
At this point, if the candidate takes a swing at you then you have
found the right one.
---
** some jackass actually suggested this on his website.
I used to be probably not a superstar, but certainly a star consultant in datawarehousing, replication, and database administration. Somewhere along the way (thanks Osama!) I got off of my preferred career track and now find myself working in an environment which is challenging for all the wrong reasons. My job is challenging in the way that punching your way through a brick wall is challenging, not in the way that, say, designing a skyscraper is challenging.
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.
If you are not allowed to question your government then the government has answered your question.
"There needs to be more detail on what a "Great Programmer" is. Is a great programmer a good code monkey capable of following instructions but turning out high amounts of bug free code? Is a great programmer a person that knows how to work without a specification but still do what the company or client needs? Is a great programmer a person who is great at coming up with new and unique software projects that may eventually be profitable"
In short, a great software developer needs to be able to do all of these things and more. You also need to have your own specialty to bring to the team, so you can distinguish yourself from the other great programmers.
>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.
The vast majority of people come from formal education. You also need professional experience, but you'd be doing a disservice if you suggested that college isn't important. CS coursework teaches theory and mathematics that you won't get in the industry, and which is important in high level work. A lot of the good people in the industry who are self taught end up going back to school later after they realize they've hit a wall in what they can teach themselves.
This may be an unpopular thing to say on slashdot, where everyone is convinced that they are uber leet HAXORS even all they do is dick around with their linux install, code a little python, and live out of their mom's basement.
Step 1: Find a superstar.
Step 2: Teach the superstar to program.
More seriously, how does one *become* a programming superstar? I mean, I'll do it. If no-one else seems to want to, I mean. Sure. Programming superstar. Sounds cool.
The only thing is, I would rather be lit on fire than have someone try to teach me that Java is the perfect 'lingua franca' of computer science, so that sort of rules out formal education, in my part of the world.
Sysadmins.... Sigh... it just seems to go with the territory doesn't it.
SSRC? Google turns up...
- Social Science Research Council
- SSRC is a leading manufacturer of theatrical distribution products found in entertainment facilities.
- Structural Stability Research Council
:: Welcome
- SSRC v1.30 (open source)
- A fast and high quality sampling rate converter (resampling)
- Social Science Research Center (SSRC)
- Storage Systems Research Center @ UC Santa Cruz
- ....
So which is it?"We get brilliant results from average people managing brilliant processes. We observe that our competitors often get average (or worse) results from brilliant people managing broken processes." - Toyota
SanFran is still in the US.... In Christchurch NZ, which has a functional social system, there are no homeless, the city is pretty clean, it has fair transportation system, excellent food (if you avoid anything that looks vaguely britishy...) And best of all are the beaches and mountains, which reduce the need for mall ratting to zero. (It's the only place I know where the Banks are closed all weekend...but the camping supply shops are open 7 days a week!) Only one problem.... nothing really Bad happens so the news papers are really boring. I like that.
"How Do You Find Programming Superstars?" ;)
I post an article on Slashdot asking how to find a programming superstar
Superstars work on their own schedules and don't do 8-5, or whatever ridiculous hours business people thrive on. If you are going to lock whoever you are trying to hire into some predefined schedule, forget about. Tell a superstar when the product needs to ship and he/she will get it done. Don't worry about what hours they are working in the mean time.
he (she?) finds you.
Q: What's purple and works from home? A: A non-Abelian group. (It doesn't commute.)
Spot on. 'Course, that describes painfully nearly all people who post anywhere on the Internet, but that's the best simple summation I've seen of the average slashdot poster in my years of lurking.
MOD PARENT UP!
1) A lot of people have said networking/referrals; this is absolutely true. The best people don't generally need to hit the job sites when they do need work -- they just let their friends in the industry know that they're looking and work will find them. More likely, they'll get poached away from their current job long before it even gets to that point, and it's not because they're posting their resume or taking lots of calls from headhunters. Does this mean you'll need to throw a lot of money at them to get them to come over? Not necessarily, but it may. If you're unwilling to do this, you don't value quality people as much as you think you do.
Related to this: You need to make your company as ridiculously good a place to work for your current employees as you can. Bonuses for referals are helpful, even important, but alone they're not enough. There's a level of job satisfaction where your better employees will tell their out of work or looking friends to apply, and there's a higher level where your better employees become a constant and fantastic advertisement for your company because they're so happy with their job and want so much to share the joy of a great job with their friends. You really want to be in this second category.
Side question that I don't have a good answer to but that I'd be interested in hearing other people's answers to: Given that the value of networking in getting the best people and, on the other side, finding the best jobs is so high, how do you pull good people from other areas (geographically mostly, but also technologically if, say, your company is mostly Java programmers but you really really need to bring on one great embedded C guy)? Same deal with being a programmer looking to relocate -- there are definitely moves I'd personally make if I could find the right opportunity for it, but without that kind of network in play it'd most likely need to be too blind a move.
2) Value education. I mean really, really value education. Be willing to pay for all kinds of education for your people -- books, conferences, classes, whatever. Whatever it is they want, even if it doesn't directly relate to the job. Often, the best people are passionate about technology even in their private life, but I find they're often as passionate about some other kind of learning, be it music, philosophy, political science, etc. You absolutely need to encourage (and by encourage, put your money where your mouth is) technical education to even be in the race, but encouraging education in all its forms will put you ahead of the pack and offer a benefit that is hard to replace or pass up.
Be willing to give them paid time off work to do these things. Yes, this costs. It's worth it.
3) Consider hiring consultants for shorter-term projects. Yes, we've all worked with lots and lots of terrible consultants. If you draw one of those people, when their contract is up you're done with them and you don't hire them again. It cost you something, but a job search isn't cheap, and at least you probably got some useful work out of them. On the other hand, some consultants will blow you away. A few of these will be ready to do something different in their career, and if you're willing to make them the right offer, you can get them. I've seen a lot of the best consultants I've worked with transition to non-consulting companies this way -- they got to a point in their lives where they wanted steady hours to ease the strain on their families, or they wanted to move towards a management position, or they wanted to do design as a bigger part of their job, or they wanted to work from home more often, whatever -- they were great at what they did and ready for something else from their job, and one of their clients was smart enough to offer it to them.
4) Decide what kind(s) of people you need, and hire accordingly. What is a superstar, really?
There's a passage in the Art of War that goes: The skillful employer of men will employ the wise man, the brave man, th
http://www.joelonsoftware.com/articles/FindingGreatDevelopers.html
http://www.joelonsoftware.com/articles/fog0000000043.html
The Joel Test
1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?
DO:
1. Show me the money/benefits/insurance/401k
2. Give me the "Say So" when it comes to my decisions. No questions asked.
3. Give me the tools/budget.
4. Give me the specs or give me time to get the specs
5. Give me the people I need
6. Let me design it, code it, test it, fix it, document it.
7. When I am done Go to step 1 with a new, different project.
DO NOT:
1. Make me attend meetings, I can do every decision by Email.
Email gives me a "paper trail" to show what decisions were really made, when and by who. If you can say it to my face you can type it into the damn computer.
2. Make me beg for resources. I know what I need. I will use open source whenever possible/practical. I will not waste ANY money, I want to take it home in my paycheck, not give it to some vendor.
3. Lock me into any software. This is my area of expertise. I do not care that you made a stupid contract with software vendor.
4. Keep moving the target. Lock down what we are trying to do in a month. Then we start. You keep changing the product during development, I am gone.
This list could go on forever, but you get the idea.
Smart people like freedom. They like responsibility. We respect good decision makers and hate wishy washy management.
When I got to my present job there were 5 computers in boxes, a couple of routers and hubs, an idea and me. Been going 2 years now and the work I started has blossomed into 12 computers working full time, doing automation work. The contract pays us for the work our programs do, not for writing the programs. SWEET.
Making more money every month.
- I live the greatest adventure anyone could possibly desire. - Tosk the Hunted
Some people are simply not up to the job of being a programmer. They cut corners and ignore good design in order to get the project done real quick. It may seem like they're getting the work done, and maybe they are, but crap code piles up. It takes time to work out the bugs. Over time it'll build up so much that it wouldn't even occur to people to refactor it.
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.
Cow Cube
For superstars...
Look for those who are in a different field completely and yet are able to answer
those tough interview questions.
Passion drives those ones.
---
Anyone wanna buy a car?
You could the linux kernel mailing lists, figure out who the bigwigs are, try and snap them up.
Interns are a cheap way to test the water. When you find someone you like, hire them on full time at a good rate.
That's a good way to find junior people but not anyone with experience. I used to work with a local community college for student labor. I remember getting a call from the coordinator one day explaining that she really valued our participation in the program but it would be really nice if I would stop referring to the candidates as "galley slaves."
Not too bright but they rowed really well. Oh, well.
The problem with senior people is they go out and start their own companies. Or they partner with other small groups of equally talented people on a project basis. Employer? We don't need no stinking employer! No matter how great you think your company is, a bad day working for yourself is better than the best day working for someone else.
That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
Thinking about what was lacking with my current job (which is by the best one in my entire processional career...) I came up with a few ideas...
Learn what you can about your employee. Ask them what they need to feel that thay have suceeded in life, then (here is the tricky part) see if you can do *something* to make a step in that direction.
When you ask directly you never know what youwill find. For myself it would be to help me find an arts studio I can work in from time to time. I do not personally need to be ding art every hour, but at least a few hours a week feed my soul and keep me gong in ways I can hardly describe. Importantly when I am feeling creative artistically I am creative scientifically. Your world view and milage will vary. What makes you wake up in the middle of the knight screaming OH YEA!!!!!!!!!
You don't want a 'super-star', believe me. Super-stars are primadonnas, and amazingly good at grabbing the attention and looking impressive; but most programming work is un-glamorous, tedious, hard work, simply, and for that you need people who are able to make a constant and reliable effort. These people are almost without exception modest, a bit shy, possibly nerdy, and certainly not 'super-stars'.
On the other hand - the way you describe your company sounds over-hyped and conceited, so maybe you really are looking for attention-grabbers and posers.
They got burned by the move toward Java, .net, and similar stuff.
For running regular old app code, the Crusoe wasn't all that bad.
(considering the power usage, and considering the competition
of the day)
It's not about finding those who are already "superstars" but in identifying potential "superstars".
Specks
Batteries not included
If you're in Australia there's a new service similar to Joel's: http://jobreel.com.au/
Same no-agencies policy, so it's small and selective and not so attractive to job-seekers who adopt the resume cluster-bomb approach. And wherever you're advertising, some of the guidelines in comments above are very good advice.
Software developers with much better than average productivity work out well.
Superstars, framework builders, frustrated artists, language lawyers, self titled architects and mono-lingual ones usually don't work out well (low productivity, high noise, high turnover).
Pushing multiple releases of a software product out the door over a 3+ year timespan is generally a good indication of developer productivity as well as deep understanding of post-shipment development costs.
Semester term project workers/consultants with many short assignments generally do not work out (low productivity, never lived with their own code for more than 6 months after shipment).
..your story hits very close to home. I think the difference between the programmers who "get it" and those who don't is simply the fact that they don't care about your project. They may actually be decent programmers they just can't be bothered to take pride in the work they do on your project because of what that would mean to them - they would actually have to put their pride on the line and do a good job.
A lot of people have posted a lot of (mostly good) advice about how to entice the superstar to join you once said superstar has been found, but not really all that much about that first initial step: finding.
For finding, talk to the ones you've got. Tell them you're looking for some more. They are going to be active in communities where those kinds of people are. Ask them for some names. Set up an initial contact from there, either directly or together with the referrer. If the cultural/personality fit is right, the probably won't be all that hard to entice. Good, smart, motivated people want to work with people like themselves. The more of them you have, the more of them you can get.
My company is a lot like what you describe, and a number of our people (including myself) were hired as a result of somebody saying "Hey, I know somebody I think we really ought to talk to."
Actually, I read "superstar" and my mind translates to "prima donna". Do you actually want a prima donna working for you?
I also have to ask, why do you NEED superstars? Can't you organize the team to get the job done without a genius to pull it all together?
These posts express my own personal views, not those of my employer
This is a generic problem. The way sports world solves it is by having a farm system. So you might want to set up a dummy project, hire a bunch of young people, then select the best and entice them for the real job. You could also set up a review board of senior programmers, have them look through open source code for various projects, find the best stuff and hire the authors. You could poach aging "superstars" too, but just as in sports, you'll probably end up overpaying and you'll probably have to deal with lower productivity since these people will have kids and other commitments.
I believe there are two types:
1.) Mad geniuses who can violate most accepted programming practices, produce great new products, and walk away with the glory and leave the glorious mess to those who come after him or her.
2.) Software professionals who may be a little more tortoise than hare. They understand the companies they work for, adopt practices that fit into these companies, and spend much of their time mentoring anyone who will listen. They know that the best thing they can do is leave a better place than they found.
Just my experience. Don't even get me into bad programers. There are so many...
-ltr
You don't find them, you need to attract them, by having a business that offers it's employees interesting things to do in a nice environement, and a set of intelligent people that the new superstar gets along with... Superstars probably tend to end up at superstar companies, and that's why superstar companies are superstar companies - dull coders works for, and akes up the dull companies.
How do I find programming superstars? Well, I found supernovas particularly hard to program. Although they sound promising, programming binary stars proved to be a crap shoot as well.
Come off it man! After Brakpan you can't have one left to rip!
Drop zone? You mean this?
http://www.skydivingnz.com/
Hanging up there between the Alps and the sea those guys must be getting one helluva good view!
...if you want a hacker (somebody who gets a task and gets it done), sure. If you want a software engineer, somebody who knows how to design a system, no.
Learning how to program is easy. You and (I would guess) about 30% of the population can probably teach themselves how to program in a week. Learning how to design systems, on the other hand, is hard. You can't learn that in a week, and many people probably can't learn it on their own at all. Which is why you go to a university for four years to learn it.
You don't study Computer Science to learn how to program. You study computer science to learn how to design systems. You write whole operating systems, databases and compilers, you learn about chip design and assembly and how to design and implement a script runtime, and all that fun, hard stuff. That's not hacking, that's designing systems. Hiring hackers is great, but you'll still need at least one architect to tell them what and how to hack.
What does talent even mean? I'm actually not sure such a thing exists at all. To get a good product, you need a working process and developers with knowledge and experience. Maybe talent helps you attain knowledge and experience (if it even exists), but talent alone is worthless.
First, Joels list :
1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?
has nothing to do with "superstar" programmer, it is just a rambling of common things mostly out of the control of any programmer. Superstar may be fast or may not, a mood point in lifetime a product. Superstar may or may not be a good corporate citizen, that is only to please the management. Superstar has opinions because he/she knows what he/she is talking. Superstar leads others, not that he/she wants but because what he/she is. Superstar listens even managers but makes his/hers own decisions. Superstar can be the worst programmer if forced to work against the best practices (he/she knows much better than any manager) or using the bad tools, etc especially when good ones are available. Superstar doesn't care what platform, language, operating system or business problem is - he/she gets the work done and teaches others aside. Superstar writes extensible and flexible systems that can run and be maintained "forever". And so on.. Now - (almost) all this goes against current management idea but sorry, you can't control a superstar, you can only give interesting problems to him/her to solve and if you want "good" results to support him/her. Superstars don't care of money BUT are very sensitive to that. Superstar can get bored or even agitated of the so common "carrots" as a corporate sign to your desk for work well done, etc. Superstars want to get out, they are actually very social and amazingly often very family oriented, so two, three seminars or development conferences a year will keep them more happy. NO - pony and dog shows will not do that, they hate those. A long list and you may ask what separates them from CEO's - they just haven't made up their mind to start own company!
You take a mortal man
And put him in control
Watch him become a god
Watch peoples' heads aroll
I think that's what works. It begins with giving people a chance and responsabilities.
The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
We don't see the world as it is, we see it as we are.
-- Anais Nin
Seriously. Look in Sweden, the place is crawling with talented underpaid programmers (same applies to Denmark, Norway and Finland). Especially around the big cities. I am from outside of Sweden and am amazed time and time again how good the programmers are here, and they arent earning anything near US salaries.
What? Is that some kind of joke? The worst thing you can do with a great programmer is to promote him (or her) out of programming. Great programmers want to program. What you need to provide is not a career path out of programming, but a good career path withing programming. For most great programmers, going from programming to non-programming is not a promotion, it's a demotion. If you want to retain great programmers, be able to promote them while letting them be programmers.
A big question is whether you need a "programming superstar". If you're trying to figure out how to do seismic analysis using a rack of graphics boards, or improve the robustness of 3D SLAM for mobile robots, or make a hair simulator work in underwater scenes, or get better density from an IC layout algorithm, or work on the RF end of cell phones, you need "programming superstars". If you're writing yet another "Web 2.0" app, you don't.
Most programming today isn't really that difficult as such. Most of the algorithmic problems have been solved. You usually don't need to invent all that much. Difficulty generally lies in understanding some messy and ill-documented thing with which you need to interface. That's not a "superstar" problem, just a big headache.
Third year, programming, I can attest that I outperform, out-design and outwork most programmers at work and I work for a huge and reputable corporation (I am just about ready to move out of this big corporate structure). I pick up things very quickly, am a generalist, I can find a creative innovative solution to any problem. I don't keep notes, memorize textbooks, chapters, etc. What one learns in 2 years, I learn in 1 month. However, being a non-CS major and no official training, having dropped out of High-school, GED, average state-school degree, with no "eye-popping resume builder"; I am unlikely to fit the suit of an "ideal candidate" for a competitive "exciting" Superstar Programmer position. As far as I am concerned, the day I fit that ideal candidate position for such jobs, I won't be looking for jobs. You can argue that being the ideal candidate on paper is a sign of weakness. If you have such stellar background, why the fuck are you interviewing? Are you a bookworm? Have you memorized books? Are you purely a hard-worker? Are you just ambitious? Maybe, you know how to sell? I have a huge passion for learning and I am highly unorthodox. Here is my advice: If you are going to interview people following same old procedures you have read about or seen, don't waste your time, because you already made your mind up on who you are looking for before the person walks in. This is why the interview process is worthless in further identifying qualified candidates. Be unique and customize your own interviewing process. Forget the formalities, forget the same old cliche questions: "Tell me how you overcame adversity!" uhhhh "Are you a team player?" I mean come on, all you are asking anyone to do is just act for however minutes this stupid pretend ideal session lasts. Lastly, look for the hidden gems, it's by far your best return on investment. Nothing in my resume says Ivy League, Rock star, Wow, but I am one capable son of a bitch! These are my thoughts on JUST the interviewing (finding) process. Then you have to keep them!
SELECT "fname", "name" FROM "job_application" WHERE "iq" > 150 ORDER BY "iq" DESC;
no.. seriously, you will not know in advance who is a real programming superstar. You will know after a few years, by judging the way he/she DESIGNS software rather than just coding it, in the first place. You will know after a few of his/her programs have been running a few years without ever crashing or messing up your data.
Anyway, I think that having a very high IQ (especially in math/logic) is a prerequisite to becoming a really good software developer.
My approach to hiring has always been more like impedance matching (you used "signal to noise ratio", so I'm assuming you know this too).
What kind of person best suits this situation. Some roles require very little redesign, more maintenance, good uptime, no oversight. In such cases, I specifically look for people who have been doing such work, people who have the qualities to work independently. Some roles require people who need to do something radically different. They need to communicate well with a various different groups and come up with a radical new design. In such cases, I look for people who are good communicators, knowledge of various technologies to be able to provide new ideas.
I want to stress that both roles are very critical for the organization. I would probably give both of them the same compensation, but it would be disastrous to hire the first kind of person for the second kind of role, or vice versa.
Also, unlike impedance matching, these qualities are not quantifiable. There are various kinds of roles requiring various kinds of people. Sometimes, you don't get the perfect match, but you need to take a decision to make the best match and bring up the person to speed in the other requirements.
Another important point is to make sure that you set the candidate's expectations to reality. If you tell the candidate that he is going to redesign the company and let him realise that he is only there to fix bugs, he will give you a hard time, even if he is incapable of finding another job that he thinks he wants. A frank discussion during the interview could make the difference between an unproductive employee and a "super" employee.
How to find great programmers? Ask Slashdot.
Just because most recruitment consultants are rubbish, doesn't mean all of them are.
Find one with a reputation and use them.
I'm basically thinking of http://www.ecmselection.co.uk/ here, they won't accept you as a client (on either side of the deal) if you're not very good, so companies *know* that they are are not going to be sent any poor candidates, and candidates *know* they are going to be sent to decent companies with decent jobs for decent salaries. Everyone's a winner.
As a dev manager at a startup where we're trying our damndest to hire developers, I know all too well how the traditional job sites don't provide the goods. The people worth hiring are not the ones looking for jobs.
It must be said that hiring for a startup is even more challenging, because you don't have the time or resources to hire junior and train up; you can't pay the same salary as a large corporate; and you generally don't have that many developers through which to network. You have to sell the job with phrases like "fun startup environment", "new projects & technologies", and "stock options".
I throw out 9 out of every 10 resumes immediately. I could write a book on all the reasons. Spelling and grammar mistakes, or lousy formatting, are unforgiveable. If you're not going to put in an effort to get the job, what quality of work can we expect once you've got it? I can't believe how many people claim "expert knowledge" of things like arrays, cookies and querystrings. That's just clutching at straws. If you spend 7 pages explaining your skills to me like I'm an idiot, you're in the bin - a good developer knows how to keep things simple. The most important question I ask in an interview is "Which development journals and blogs do you read?" because above all else, a good developer is passionate about what they do.
The answer is easy: Look for them.
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.
We suffer more in our imagination than in reality. - Seneca
You're wrong. These are precisely the people you want. Programmers who like to communicate are rare. If you can get them, do. These are the people who
Programmers who also like to write, talk and communicate are rare. Get them when you can.
When hiring, take your best developers into the process.
They recognize people like them in a very short time,
with very few questions.
Man, I hate to respond to such a good succinct post (definitely one of the best posts I've seen). But I just want to add one little thing (which is why I'll never write a good post).
In reality, those that can lead by example are always trying. And it's hard. Very, very, very hard. At least half the people you work with hate your guts. There's always some intrigue shoved in your direction. Always somebody who wants to take you out because you are ruining their free ride.
In truth, it's hard; it's lonely; it's thankless. Those who can do it best appear not to be trying. They never take credit. They seem to just glide from one situation to the next, effortlessly making the world a place worth living in. But it takes its toll.
So if you've got someone in your organization doing this for you, spend some time just to say thank you. It makes more difference than you would believe.
> How Do You Find Programming Superstars?
I generally find them rather arrogant... and often rather smelly. Generally with unwashed
long hair and long straggly beards. All-in-all, rather unpleasant characters.
return 0; }
A good project manager does not necessarily know much about good programming.
A good programmer is _far_ better and more knowledgable at programming than his project manager, and no amount of pure hard work will make a bad programmer into a good one.
Put a banner here or use the Jobs section :)
My company has the same problem, most of our interviews give us barely passable people. Once we find a good programmer we don't normally have a problem with retention. Those that are (or believe they are) superstars normally only stay for a while. Once the difficult problems are solved they loose interest, or their egos start getting in the way. Out of 11 truly brilliant people I"ve worked with in this job only 3 have been able to stay and continue to work here. Mostly because they are the ones that can work with others and are not arrogant/condescending/etc which tends to be the case with many "superstars", specially with the ones that can't deliver.
0. Awesome programmers use base zero for lists.
1. Awesome programmers are already gainfully employed.
2. Show me the money!
3. It better be more money than that buddy; remember #1.
4. two words: Mercedes Benz.
5. Poaching disgruntled ones from other companies may be an easy way to get awesome programmers, but disgruntle takes a while to shake and can yield slightly lower productivity up front.
Notes:
0. Awesome programmers aren't necessarily fast, and cannot necessarily solve whatever wacky programming issue you have going on... you probably need at least an awesome architect and/or manager to go with them.
1. In case #6 doesn't make sense to you, consider this: just because 1 woman can make a baby in 9 months, doesn't mean 9 women can make a baby in 1 month.
stuff |
Superstar programmers are hired like CEOs and other unique positions: word of mouth. Ask your programmers, "Who did you used to work with elsewhere who would be great here?" Ask your opposite number at a comparable company, "Who did you almost hire last time? Can I have their resume?"
http://www.airsdirectory.com/
That's how the recruiters do it - find out who is linked to, say, Sunsoft.com (por the D programming homepage, or your favorite open source project) and start the cold-calling/winnowing process from there.
Great programmers, by definiiton, are smart.
They can smell lies millions of kilometers away.
And you are lying, sir.
If you have so great working conditions and so interesting problems to solve, you would be filled up with great programmers DIRECTING what needs to be done, instead of asking how to get great programmers, which at least in my dictionary, means you think programmers are coding monkeys that will do whatever you want them to, even if it is incorrectly specified.
Sorry for the brutal explanation, but I'm anonymous, therefore I can speak freely.
Let me analize the situation, so that maybe you can understand what I mean.
Let us suppose you have very interesting problems. Would your current programmers tell their classmates how interesting work they are doing right now and therefore even better programmers go to interviews there? I'm sure that would happen! Why it isn't happening? Because they are telling them how the work suck in your shop.
Maybe you find the work attractive, but surely they don't. Most of the time it is because an MBA type is directing the work while the coders are directed to follow instructions no matter how nonsensical they seem to them.
Therefore your real problem is:
1. The people directing the work are wackos and shouldn't be listened, so that developers are busy decorating their resumes.
2. The people directing the work are geniuses, but the coders are lame, so you need better coders.
I think you think you are in problem number 2. If that is true, create prototypes to show the people directing the work are real geniuses and not some wackos with no real idea of what they are talking about.
Usually wackos abandon the ship when they hear that they need to build prototypes to prove they are right, because they can't blame the developers no more.
We are an odd bunch, really, we like to play pool at work, do our laundry in the same building we do our work in, more bonuses, free lunch etc... is all a great reason why Google ends up with all the brightest ones. M$ started off that way, but then began cutting back and hence millennium and so forth...
...(the same president of this company never spent much money on his IT staff or IT dept, his quote was "well if it doesn't bring back any money, its useless")
If we saw more companies act like this towards their employees, we would be a happier bunch and more likely to stop working underground circles trying to get money for all the personal info we got...
I once worked in a company where all the employees were so overworked and under payed in accounting that they couldn't keep anyone for more then 6 months at a time...these are the people handling the finances for this company, imagine what they did to the IT staff
Some people are good software coders.
Some people are good software designers.
Some people are good interface designers.
Some people are good DB designers.
You will rarely, if ever, find all three in one person. But they are all necessary for almost all large software projects. Who is your superstar?
They find you, not the other way around.
When they do find you, you'll notice they will let you state what you have to offer at the beginning and they will interview you, not the other way around. They don't care for your interview although the questions you ask are also reflective of what kind of people you have. So yes, even your questions are analysed. Because of this, most interviewers think these programmers are telling them how to do their jobs and these interviewers resent being interviewed themselves when they believe they are the only ones who has a right to form an opinion. Most superstar programmers will fail your interview because it's not up to them to pass (hence they will often fail on purpose to see how you handle it), so it's up to the interviewer to show their skill. If you turn negative, then it's over. If you turn positive and try and engage in a conversation, bonus.
Also, many jobs say they want superstar programmers, but are only interested in scamming them by not paying them or saying they have a certain range in mind and then later on, they will go below it. That's a deal killer right there.
If you want to know if someone is a superstar programmer, ask them to talk about one of their favourite projects and what challenges they faced and whatnot. Anyone, in any field, that truly loves what they do won't be able to shut up. You have to entice them first though. Once they pick up the conversation and start talking a lot, then you at least know you have someone that has potential. Either way, you'll find out a lot more this way than any other technique beyond the simple programming questions.
Oh, and if you see programmers walk out of interviews, those are either superstar programmers or you're the worst interviewer in the world (likely the latter).
The signal-to-noise ratio here isn't likely to be that much better than on the big job boards. Though undoubtedly most of us who read Slashdot think we qualify as "superstars" (even if all the evidence is to the contrary), it should be assumed that out of the hundreds of thousands of registered users, there are not more than a few thousand true stars of the sort your are looking for. From a quick read through, I'd venture a guess that about one in five or less of the posts actually gives useful information, and several contain what I would call disturbingly bad advice that sounds like it was authored by an MBA whose undergrad degree was in psychology or sociology or some other soft, unstructured major and who have never actually worked closely with geeks. I have been in and around the industry long enough and have worked with enough obvious superstars that I think I can offer some moderately good advice regardless of whether I, myself, am a superstar.
First, there are recruiters who specialize in finding 'passive', high-end talent. You will pay a fair amount of money compared to a listing on Dice (usually a percentage of first year salary), but in the long run, it'll save you money. The reputable recruiters will refund money if the person leaves or is fired for cause in the first year - make sure that your contract specifies that.
Even with that, it's really quite difficult, because so many people have entered the field. The dot-com and Y2K fueled work shortage of the late nineties drove up the rates artificially high for even mediocre programmers and, as a result, a lot of people who would have otherwise gone into other fields, decided to go into programming because it "paid well". That one fact makes it so much harder to separate the wheat from the chaff.
Although the stereotype of the high-end programmer having no social skills and poor hygiene is not completely warranted, it is also not entirely without basis. The best programmers very well may not be the one who come across the best in an interview. If social interaction and communication are an essential part of the job, then you need to look for people who can communicate well in personl, but if not, and you are looking for a real, roll-up-the-elbows coder who's going to sit at a computer ten hours a day and rarely speak to live humans, then don't put too much weight on how the person comes across in the interview, or you could unintentionally weed out some great people. Basically, the main criterion you should look for is somebody who would be programming even if they weren't being paid to do it. You want people who are motivated by the challenge, not primarily by the money. Unfortunately, that doesn't mean you can pay them less than they are worth unless you have a project that offers truly unique challenges. Ask potential candidates about their coding experience prior to their first job; ask them why they went into programming in the first place. Ask them about the first "real" piece of software they wrote, and then gauge their enthusiasm as they tell you. If their response is a class project in a college or technical school class, there's an increased chance the person chose the field for the money. Of course, there are people who don't discover they love coding until they take a college or technical school class, so don't rule people out simply because they got a late start. Certainly, you should ask them why they went into the field; you may not get an honest answer, but you might.
To attract the type of person you claim you want, you need to set up your work environment so they have a fairly large amount of flexibility and freedom - they often do not respond well to set hours or work rules written by some MBA who just doesn't grok programmers. This is a difficult thing to manage in a large company, because non-superstars will expect the same freedom and flexibility, and most corporations seem to have a pathological desire not to give such freedom to anybody. You shouldn't, of course, bend a rule that was created for
Ask them if they know how to program in Executable UML.
Back some time ago, one method that was used was to lurk on Usenet news groups and see who was actively trying to help people solve problems. I was actually offered a really good job in the mid-90s for that very reason.
You get to see if the person really knows their stuff, how enthusiastic they are and how they relate to others.
With the Usenet not as popular any more, you might try and find chat channels associated with areas of interest you need folks and monitor those.
"We've had much better luck with (for example) the Joel on
Software job boards, but that still doesn't generate enough volume."
Maybe there really isn't that much volume.
The thing about the 'bell curve' is that most of the
part of the curve that is really above average is
really thin. (ie: low population)
Pay reasonable money and give people some downtime
and you'll get 'geek share'.
in the resume. No better way to find your superstars. This is the guy who is thinking so far ahead of your regular programmers, he is in a different league.
I've done it a few times, and there are two levels to this. Writing code in language A to write code in Language B and writing code in A to write code in A. The latter is harder.
What this will bring about is someone who BUILDS HIS OWN TOOLS. Example. I just finished writing a program that takes a tablename, bounces off the system catalog and gets the databasename. It then writes parameters for a couple of utility steps later in the same jobstream. Why? So the DBA doesn't have to look up the databasename to perform the on request job stream. This saves him the time it takes to go manually look up the databasename. Now save that 10 minutes 6 times a week (and sometimes it is 6 times a DAY!) and he has an extra hour to work on other issues that week.
Another saying I have. I am "successful" at a company, if I implemented changes that would save them more than my salary cost them. For example. Three related changes at an insurance company, saved them $60K in processing costs per year - even after I left! (freed up about 3 hours of mainframe processing per night) Or how about this one - 1 line of code changed in 1 program at a major entertainment company - freed up $10 million in capital!
Your superstar has to be able to find stuff like that and DOCUMENT the effect.
Put a really hot, scantily-clad woman out on an LA street-corner holding up a sign that says "Looking to give jobs to the hardcore".
I guarantee it will generate a lot of interest.
SJW: Someone who has run out of real oppression, and has to fake it.
I agree it would be the best process to review code before it gets committed. Sometimes adopting this standard is harder to adhere to when you have too little manpower to face the deadlines you have looming. That's when a real challenge begins to try and catch the organization and restore order before it falls headlong down a flight of stairs.
... who doesn't spend half the morning reading 600 posts on how to find a superstar programmer.
Since every slashdot reader considers him-/herself a programming superstar, obviously this post has the highest number of comments in a long while.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
And advertise that you do. Any really great programmer is great because he loves his craft and wants to use it to do exciting things. If you do something cutting edge and exciting, advertise THAT, because that is what will bring in the talent. Of course, you have to pay the man what he deserves (if he truly is good), but the work will attract him more than the perks. A truly superstar programmer is generally going to love programming so much that the most important thing is the quality of the work that he can do, everything else is icing (which is important, but you need a good cake first). Seriously. Great programmers are great because they love it. If the person is only concerned about money and perks, to them it's just a job, and you probably don't want them. (Again, you want to have those things, but it's not the main driving force)
We've been trying to recruit for months with no success. While looking for work myself I came across my current company's add on Monster. When I saw the add I realized why we hadn't had any good applicants. Whoever posted the add talked so much about how we interface with the customer and how our standards of excellence are so high, that it left out the important bits i.e. What is the job and how much does it pay. The only bit of the add that discussed anything about the job was a list of buzz words and job skills that seemed to be more beefed out than it should have been. I think we would have had more luck placing an add that simply said "Wanted: Excellent C# programmers for Windows Forms applications. Excellent pay and benefits available"
You described, quite well, how to create a super star team. Which is what most organizations need: not a single star.
I prefer Flambe as apposed flamebait.
Rule number one: don't look on Slashdot.
Rule number two: DON'T LOOK ON SLASHDOT.
Relying superstars is a flawed strategy.
The most important attributes of a successful company are its leadership.
The company must know where it is going and how it is going to get there.
This means having an excellent management team, product managers, and
software architects. Implementation, and your success, becomes a matter
of execution, not of heroics.
We all like to fantasize about the breakthough products coming up from
engineering. Sometimes that even happens. But in the
real world it all about consistency. That means a team of good, solid
all-arounders you can move around as your needs change.
I don't really think they do. They just want the cheapest person possible who they think can do the job.
The interview format these days seems to be a "phone screen" tech grilling coupled with an office grilling by dweebs who think they are superstars. Asking every topic from Stroustrup's C++ book, or old college questions about traversing binary trees is no way to find a superstar.
I think good references and a "network" are far more important for finding ideal candidates & superstars; but what we have now is basically a "meat-market", thanks to (from what I hear) the vast legions of H1Bs who do & say anything on their resume to get an interview & job.
"Real Programmers have no use for managers. Managers are a necessary evil. They exist only to deal with personnel bozos, bean counters, senior planners, and other mental defectives."
I am not a superstar programmer (by a long shot), so I probably am not the type you are looking for...
However, I am a creative mind and I solve problems, and some of it requires programming. I guess people would call me a "generalist." I'm paid fairly well and I enjoy my job (so I'm not looking right now).
So when I'm looking for work, here's my dilemma: When I see a posting for a job, there are three things that keep me from wasting my time of even submitting a resume:
1. The company didn't print the compensation amount. (Why would I apply for a job that pays half what I make now?) Be up-front with what you pay so I know what to expect. You'll get less noise, and I'll waste less time. And don't give a range like $50K - $75K. We both know that means $50K.
2. They leave out some important details of what the job really entails. Using anecdotal examples does wonders for me.
3. They require some credential/certificate (that usually isn't even necessary) before they would even look at my resume anyway.
If companies would just say what it is they want done, how senior of a person they want doing it, and how much they are going to pay, then I could reduce your noise by either sending a resume or not.
"They said I probly shouldn't fly with just one eye," "I am Bender. Please insert girder."
is to look at open source projects that are related to the products that you want this "superstar" to work on. Review the code base and compare the commit logs to get the names of the ones that wrote great code. Almost all superstars care more about the code than making gobs of money, so they will be out there in the public projects committing their hearts away. :)
Reviewing code is FAR preferable to interviewing for finding that right programmer. Have your existing staff look around if you aren't comfortable in your ability to see good code when it's in front of you. Even if you are comfortable with the code, take samples of code that you like and present them with numbers instead of names to your existing staff to vote on which code is the most elegant, easy to read, and efficient. Approach the top 10 names on the list and you will probably find one or two that are currently between projects.
Too bad I stumbled upon this great thread so late. Such is life. I would be more than willing to leave this heavily outsourced, IT-black hole that is known as Ohio if I had the security of knowing I could. Ohio has been in the $#!+hole ever since Bill Clinton signed NAFTA into law. Unfortunately I graduated from college during his second term when it all went downhill here, barely surviving from layoff to layoff. One of these days I will get noticed. *Sigh*
In many, many organizations, developers are lackeys for others in business departments. Create an organization where this is not the case, and make it known.
Nothing makes a developer wretch more than taking orders from some clueless business person that just has to have some lame-ass feature that has to be hacked in at the last minute.
Your smartest people are at the "bottom" of your organization. No, they may not have business experience, but if decision making is explained to them, and justified, the technical folks are the most equipped to judge the reasoning behind your business decisions. Use them.
Your posting reminded me of a post I read a while back:
http://onstartups.com/home/tabid/3339/bid/3504/Startup-Developers-Telling-Schmucks-from-Superstars-5-min-quiz.aspx
I agree with all of his points, but the one that resonates with me most is:
"#12. You're going to start your own company someday. So, you're interested in sales, marketing, operations and things other than figuring out how to make Ruby on Rails scale to large numbers of users when there are complicated database queries involved."
I think you're looking for the total package, someone who can do anything, and ends up choosing what they want to do. The problem is, the after #12, none of the "total package" folks will be interested in working for someone else. Thus, the set of candidates is shrinking as they finally take the plunge...
Well, though I expect a firestorm for this comment, I would say find one who is left handed. In my career--coincidence or not--the most superior performers: creative, energetic, thinking-out-of-the-box, were the Left Handed developers.
she is coming for you
haha, that's true, I don't know how many mundane companies I've been to that claim their people are the "best and brightest" and are looking for the "same." Even google doesn't really impress me, so they think they get all of these hotshots for what's basically advertising and "payola" scams?
and tell me that it's ice cream.
"Man is nothing without the works of man" -- Helvetius
"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."
So, um, who do you work for? And how much do you pay?
Honestly, I've actually met quite a few people who I would consider "superstar" programmers. I myself am only quite average. Most of the superstars were stuck in low paying jobs at fairly small businesses, because they couldn't make it past HR type standards that big corporations like to set in place. Not everyone has the time/patience or money to go to school and get a diploma/degree for something they are already more proficient at then their professors. Before you start asking where all the decent programmers are, you better figure out how many resumes are sent to the waste basket instead of being sent to your desk.
I don't understand why people think programming skill is some sort of "gift". Let's call it what it is: a skill, and an acquired one that that. If I were a project manager looking for programmers, I would look for some that have steadily increased in their skill sets, from simple projects to gradually more complex systems. No one is an expert at their job as soon as they are out of the box. If they are willing to learn, willing to admit mistakes, and willing to learn from their mistakes is what makes good programmers. 9 times out of 10, genius programmers probably aren't interested in projects that require a load of work. You need people willing to trudge through, be attentive to details, and are able to think ahead of their own project. In my own shop, I've seen what I thought were terrible programmers really start to shine once they got pushed neck deep into the work.
Most companies don't know about the superstars they have. Or otherwise.
If you ARE a superstar, then you should be able to identify one in
a conversation. It's the Turing Test. Is the person across the
table competent?
Unfortunately, being a really good programmer does not always make you
good at other things. For example, i'm terrible at sales.
So here's one of the better conversation starters in the interview:
What are your favorite tools?
Oh, and try to get some detail about some past project.
I'm really good at this. Perhaps i should hire myself out to perform interviews.
But it should be noted that the only real candidate i talked to turned us down.
-- Stephen.
When you specified the work for your outsourced buddies, did you specify that the input was sorted (and UTF-8 or 8-bit ASCII) ? If you didn't, that was hardly their fault.
We are all around ... problem is for years the business people in charge have made it impossible to talk to them by refusing to speak with anyone not on a vendor list. They insist on dealing with an agency. The agency has every interest in keeping us from talking to you. So eventually there is so much "business type noise" the technologist and those who could use their help are on opposite sides of the universe. We are here. Email us.
If someone in India can get the same results as you at 1/4 the cost then wouldn't that make you overpaid for your position? If you want to keep the $40K per year salary then maybe you should consider retooling yourself by attending a university and going for another field such as human resources management and even learn another language such as Hindi so you can move out to India and keep your position. If you want to remain uncompetitive and lazy with an attitude you are entitled to a job then maybe you should consider working at a restaurant and repeat the phrase "Do you want fries with that?" or just waint until you starve to death as you will not have a job.
in a programmer. It is a completely ignorant thing to say at best.
Lazy people don't 'work smarter' they do the minimal amount of work AT THE TIME. They do NOT think ahead and say "How can i make this easier next time?" Thinking ahead is not what lazy people do at all.
You want someone that values their time. Lazy people don't value there time, they value expending as little energy as possible at any given moment.
The Kruger Dunning explains most post on
Class B people get hired when ( inflationary, like Big Bang )"growth" outpaces
Managed Development.
Read "A New Brand World" ( http://www.amazon.com/New-Brand-World-Principles-Twenty-First/dp/0142001902/ ) by the former brand-manager for Nike & Starbucks:
their super-growth period ( Starbucks ) meant hiring rather a few former macdeath managers, and they didn't "get" cafe-culture,
so they obliterated some of it,
in exchange for supersized coffee cups.
Sometimes one has to have the brains to turn-down an opportunity, in order to keep one's soul,
===but that blows the short-term-bottom-line,
you know?
PS: Also read:
Al & Laura Ries, The 22 Immutable Laws of Branding
http://www.amazon.com/22-Immutable-Laws-Branding/dp/0060007737/
& Focus - The Future of Your Company Depends On It
http://www.amazon.com/Focus-Company-Depends-HarperBusiness-Essentials/dp/B000GG4G3K/
Both of which counter some of what the first book says, and eloquently
PPS:
Western Style: .. firing 'em, because their nature didn't change!
Hire the skill-set, change the person-nature.
Which results in
Japanese Style:
Hire the someone, change the skill-set
Which is more-valid, seen plainly as that?
Try also my gallery: http://photo.net/photos/AntrygRevo
Hear, hear. "I am a lazy programmer" is a self-agrandizing way of saying "I will do whatever is expediant."
Your ad here. Ask me how!
It's kind of a dated, macho, ego-driven, suck it down, work 24/7 and get the project done, concept. But we've grown up since those days.
And anyone who thinks they're a SuperStar is going to have such a huge ego that won't work well with others in teams.
It also doesn't scale. While you may be able to find one SuperStar Programmer who does the the work of 10 mortals, you won't be able to find 10 SuperStars who'll do the work of 100 because they won't work well together. You might be able to find 100 normal hard working programmers who can be organized efficiently to do the work of 100.
Who hired class B people?
Superstars? If I was applying for a serious job I would avoid a company advertising positions for superstars this or that.
You are not making auditions for a soap opera or a bad B movie after all.
IANAL but write like a drunk one.
It's great when you get a superstar, but you'll drive yourself nuts looking for them. Either they'll find you if they think the work is good enough, or you'll luck out and get one who doesn't know that it gets any better.
That said, if you're writing stuff like generic CRUD apps on five year old Java frameworks, chances are you're not going to attract superstars. Superstars want cool things to play with. They can work anywhere. Give them a reason to work for you.
If you insist on looking for superstars, be sure you're getting real superstars and not just guys who are good at job interviews.
I suppose your company wants to hire good developers, because stars you cannot recruit them And I doubt you can use them efficiently, I have the chance to know many stars,some you probably can call superstars, no company exploit the potential of any of them seriously :-)
The companies clearly see those guys solve problems others cannot, but they don't even think to push the limits of those guys
The superstars are rarely the people you see of the photographies, there are exceptions :-)
And don't think about recruiting them, the stars are already working on something they like too much to abandon it : sorry
Stars don't need help to find their way, they have clear vision of what they want to do and not do
Stars will never put their CV is the WEB in the middle of that noise "polite form", this is totally illogical
I would not recruit somebody that is so desperate to publish his CV on the WEB, when his peers should find him a direct entry to the best projects
Then you still think you have some very interesting project that require exceptional developers, find some entry in the network
Experts know each others and can recommend many friends, ask for some ranking from 1 to 100, shoot for 95
And in middle of those experts there are some gems, your talent is to find them, but you have done only 10% of the task
Good luck
By the way , if you look for talents why you have not made a clear description of the talents you are looking for ?
What are your projects ?
Propose a nice laptop to any person that give a successful pointer to the talent you are looking assuming you recruit him : 2K$ for such a talent is pretty cheap
www.topcoder.com and icpcres.baylor.edu
You indicate that you're looking for elite staff and are complaining that the number you're finding is very low. That's the very definition of elite. The elite are by definition in a tiny minority.
Yup, all true (I hear Auckland has some danger areas, though.) Christchurch is wonderful. Except that everyone I met was either 21, and getting ready to go on an O.E. they hoped never to return from, or 28 and back from their O.E. after exhausting their visas without getting a spouse or a job that could keep them somewhere where the papers are scary, the homeless nasty, and there's something going on. Not to knock it -- there were a few Christchurchers happy to be there at 30 (one told me the city was so nice because there were no Maori making crime -- I felt a little schadenfreude that there are racists in paradise), and the internet makes things easier, but if you have ambitions that don't involve the interaction of geography and gravity, it's hard to realize.
Protect your liberties. Donate to the ACLU