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.
Stop calling expert programmers "superstars".
End of lesson. You may press the button.
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?
(Dodges ballistic vegetable matter)
Do not mock my vision of impractical footwear
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?
You have found me. How much is my salary?
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
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.
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.
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.
...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!
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
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.
Lets face it, the biggest problem with development (and what causes the most failures) is not the "superstar" quality of the ocders, but their ability to work as a team, which basically means "management" by the program lead. If the lead isn't able to socialize outside the coding group (and open up the barriers between the coders and the rest of the business), you're either going to fail, have lots of delays, or a really poor product.
We give a lot of lip service to communications, but communications is more than just emails and meetings. Most real communications are one-on-one, with a bit of socializing thrown in. People are more likely to be open and honest about problem areas, and to offer their opinions and solutions, outside of the "formal development process".
Kevin Smith on Prince
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.
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.
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.
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.
Just one thing though ... They just may have had nothing to say or whatever on Slashdot because they were otherwise engaged saying stuff or ... you know ... coding.
I have not met a programmer outside of academia who could answer that question. Simple fact : Most programmers don't care WHO did something in our field, they only care WHAT was done and HOW they can use it. I have Knuth's book on my shelf but I had to use google to figure out who he was. The only super programmer I know grew up in east germany and didn't graduate college, does he know who Knuth is? Of course not. Does he spend his free time exploring new technologies and writing test applications for fun just to prove a new technology will work?
My advice for finding great developers, is to look for someone who loves what they do. Hire them. Make it easy for them to do what they love and then watch how productive they can be when you keep distractions away from them. Sadly the best way I have found is to find a couple great people and then use word of mouth. Someone is rarely great in isolation, others helped them achieve greatness and are likely to also be very good at what they do.
Maybe the best thing you can do is get a reputation for being a great place to work and then the best will come to you as their peers tell them about their experiences working for you.
Lastly talent is no silver bullet. A company also needs a lot of people who are dedicated and yet are merely decent but are willing to do the hard work to get things done right. Someone has to fix bugs in last years application, write test cases for publicly identified bugs, test the product with the new version of windows, or just help write the product documentation. Those tasks take a lot of hard work but most hotshot developers would run screaming from those jobs as they are not mentally rewarding challenges. Yet they do contribute to a company's success.
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
You assume companies want the typical slashdot poster. The truth is that people here are often opinionated, brash, and hostile to ideas they dislike. While many of them may fit the role of "good coder," they often miss the bigger picture of what it is to be a "good programmer."
As you said, good programmers work well in teams. They're open to suggestions, and only butt heads on issues when not to do so would be negligent. What happens when the candidate being interviewed is told "we'll be working in windows vista, using visual studio 2008?" Do they throw a hissy fit, and constantly complain about how the shortcomings of the windows environment could be improved by moving to linux? This attitude, which seems to be fostered and even encouraged here at slashdot, would be devastating in the work environment.
I think the only real way to find superstar programmers is, realistically, to find good programmers and lots of them, through various recruiting drives (temp work, contractor work, college co-ops/interns). When the term of their employment is up, you'll have a much better idea of how they are as a programmer, something that is relatively hard to do during an interview. From here, you'll have a resource pool to say "look, you're awesome, we'd like to hire you." This avoids the problem of missing the amazing programmer because they only looked "good" on paper, and it also gives a pool to draw "great" programmers from (even if no superstars are found).
In theory, practice and theory are the same. In practice, they're not.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Can't be that smart.
Actually, I did that a lot when I first got hired at my current company. I flunked a round of interviews partially because of my hot-headed attitude and MS bashing.
I did a 2nd round with a different group and kept the rhetoric to a minimum. But once I was in, I turned on the flame-thrower again. "I can't beleive you put up with this crap -- pine and sendmail will service 25,000 mailboxes on a 1 proc machine", etc. I would constantly compare the lame MS experience to some F/OSS experience. This was back in the 2000-2001 time frame. Was it annoying? yes. Did people listen to me? Yes. Did we switch to f/oss software? No. Did a lot of the software we used to do our jobs get better? Yes.
The company I did this at?
Microsoft.
I'm a Microsoft Employee, and I'm a QA engineer (tools & automation developer). You had better beleive that when one of us says "F/OSS kicks our ass at this", people here eventually notice and try to remedy the problem. (Clearly, there's great job security here
I agree with the generalities of your point. You need to pick and choose your battles. But one thing I'll say is -- if you're frustrated that MS products are so (in your opinion) inferior to some F/OSS (or any competing offering) product, MS is a great place to work. We take competition very seriously, and we need more people that are used to not rebooting, apps not taking down more than they need to, user separation, simple tools that are efficient and single-purposed, etc, to help us make better software. When I joined, there wasn't a linux compete team, a compatibility lab, etc etc. Now we have all of those things and there are people who actually study where we don't measure up.
My opinions are my own, and do not necessarily represent those of my employer.
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.
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
"Hire the people who would program in their spare time if you didn't pay them. Those are the people you want."
no you don't. Rather, that doesn't really mean jack.
Joel and his little yes men followers cult is starting to get on my nerves;which means exactly nothing.
I know too many great, and extremely good coders that don't code on their own time. They all DO something, but usually not coding. Lets face it, most of coding isn't a new challenge. Some of it is, but a lot of it is the same thing I have done. Sure, you may need to be running 30 threads in a robotic system and there are some fun challenges there, but there is also a lot of write the stream to the serial port, make it cross compilable, etc that are just boring after a while.
I believe this is why some coders end up writing code too complex. A t some level they are trying to do something difficult. It's also why I think your Superstar/Guru/Prima Dona* should get time off when there isn't much interesting work to do. Bear in mind what they do do is done a lot faster then most people, usually about 10 times faster.
*I don't mind Prima Dona's, but if you are going to have that attitude, your shit better live up to it or I will call you on it.
The Kruger Dunning explains most post on
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.
"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.
Oh, I already escaped. =) I'm now living in one of my top 3 favorite cities so I'm set now.
In any case, Ft. Wayne is *not* a small city. It's a major metro area in its own right. You do have jobs. It's not, however, a hotspot, so you'll have to work a bit harder to convince talent from say, North Dakota, to come there (though if you made a good offer and did it right, you could!).
Where should you be looking? Nearby cities that are filled with despair, like Coldwater, MI. Find the young, talented, but repressed geeks who are trapped there, dreaming of a way out. Draw from tiny towns in Kentucky, where a geek dreams of getting away from the rednecks in pickup trucks that throw beer bottles at him.
The key is to find the ones that are talented but trapped. Recruiters normally are too busy trying to poach people within 20 miles of a company's zip code, so these people slip between the cracks. (Lord knows, I have a great job now and I still have to give the finger to an endless stream of recruiters -- where were they when I needed them?)
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
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.
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
While I am an OSS developer, I would rather work on an interesting non-free project than on a boring free project. And I suppose that most OSS developers are employed (like me), but still might consider an offer that looks interesting.
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
When hiring, take your best developers into the process.
They recognize people like them in a very short time,
with very few questions.