Hacker News new | past | comments | ask | show | jobs | submit login
The War For Talent (avc.com)
54 points by travisglines on March 19, 2011 | hide | past | favorite | 67 comments



It may just be me, but I don't see this "war for talent". I live in San Francisco and have worked for 3 companies since moving here. I am a damned good frontend engineer, like learning and playing with new tech, very opinionated and dedicated to good product design, and sure I would be an asset to any company that wanted to hire me. I've also had experience with trying my own startup (failed) and even been part of a team that got a YC interview.

Despite all of this, any time I have interviewed with some of these companies that claim to be in a war for talent, that's not the impression I get. I always end up meeting and talking to people that are looking for CS students who happen to know HTML.

Some random Facebook engineer wasted a half an hour of my time trying to get me to write a function to calculate a square root approximation method. Another interview asks me how to figure out which one of 100 bottles of wine has poison in it using 10 mice. Seriously, WTF?

At no point have these people who say they desperately want a frontend engineer actually asked anything remotely touching the job skills I possess. Want super efficient pages? Well constructed js? An innovative solution to a hard frontend problem? A high performance html5 app that looks native on a phone? Apparently not. These guys just want more CS engineers like themselves and not people that have acquired the best knowledge by years of working in the field.

I work at a big name media company now. When they interviewed me a couple years ago, they got it. They knew what they were looking for and what they actually needed. I work with some awesome people. Sometimes we butt heads because I care a lot about what I build and sometimes big corporate decisions are bullshit, but that's ok. The team I work with is smart and capable and we get shit done.

And guess what? We aren't all CS graduates. We taught ourselves and built careers for ourselves. We learned everything we know the hard way, by actually doing it.


One of the biggest problems with development at FB, Twitter, Google, etc is that frontend engineers may not know "serious CS" and/or have some distributed systems "common sense."

It's remarkably easy for an apparently simple commit to dramatically increase load on some backend server, causing site stability issues and/or cost increases.

Your big-name media company probably doesn't care as much about getting every last penny out of its hardware, and its users probably aren't growing at a breakneck pace.

The questions you mentioned were designed to test if you know basic math and CS. If you don't know binary search, you probably also don't know asymptotic complexity, which means there's a chance you'll sneak in an O(n3) (expensive) loop in your javascript somewhere.


And this is exactly the problem I am describing. If the position is for someone who is only going to write js, then I agree. Those are important questions. But then that is for an engineering position who writes in js, not a frontend engineer.

If you want a good example of what happens when strict CS people write javascript without thought or knowledge of frontend best practices, look at YUI. Ugh.

So my argument boils down to making a clear distinction between a programmer and s frontend engineer. You describe the first, I the latter.


I've recently been on the other side, trying to interview and hire people. It's difficult.

My primary concerns are: Is the candidate going to be competent and capable of solving difficult problems and contributing to the team? Are they going to work efficiently and be productive? And perhaps most importantly, are they going to be enjoyable to work with?

It is less important to me that a candidate has a particular skill with a particular technology because those things can be learned easily by good programmers. I'm looking for more of an intuition, problem solving ability, and the ability to cleanly translate the solution into code.

To that end, I try to get candidates to code with me, usually by asking a challenging problem and then sitting down next to him or her to work it out. The whole process has been more difficult than I anticipated though. I find many candidates unwilling or unable to write code in an interview.

I'd love to hear some suggestions on hiring tactics and questions to help me better find my next co-worker.


This is the principle problem: "It is less important to me that a candidate has a particular skill with a particular technology because those things can be learned easily by good programmers. I'm looking for more of an intuition, problem solving ability, and the ability to cleanly translate the solution into code."

No, they can't be easily learned by people fresh out of college. I'm 31 and have been doing this stuff since I was a teenager. It takes years of hard won experience to really know the ins and outs all the various facets of frontend engineering. This particular sub-field isn't one programming language. It's knowing what html, css, and javascript do across at least 11 different browser platforms. It's knowing what kinds of interfaces work for different devices. It's knowing javascript as a true language and not a copy/paste thing. It's being able to know know to translate a 2 dimensional design into the correct underlying structure, in real-time.

So that's just my answer to your "any good programmer" statement. That just means you don't really know what you actually need to be hiring for.

I agree 100% about being about to get along with people. But problem solving is directly related to the field you're in. Ask a programmer to be a heart surgeon, I'm sure any smart programmer can easily learn those skills. The intuition will be there if the interview is about what the person should know.

Suppose your database queries are running extremely long and slow because you're a startup and you and your cofounder are generalists. Your company starts getting traction and now that database is becoming a problem. You're a frontend dev that knows python, and your partner is more of a biz guy that does some coding. Now you both identify that you need someone who really knows how to scale databases. Do you ask candidates random CS questions to see if they have some ill-defined "intuition", or do you find out if they know how to scale databases?

It's no different for frontend engineers.

I also agree about the coding part. But you have to do it in the context of the requirements. For a frontend, look at their previous work. Identify some area of your own product that you think can be improved, or was improved. Have the frontend candidate work through how they would improve the js/HTML/CSS etc. This should involve coding, and the person interviewing should have at least enough base knowledge themselves to know if the candidate is worth their salt or not.


You're right, a lot of things take years of experience to learn, which is why solving a difficult problem is not the only way I evaluate a candidate. I definitely look at their previous experiences.

But someone who is so specialized that they can't solve problems outside their area of expertise would worry me. I don't expect a programmer to learn heart surgery, but if you've been doing C++ for years, I'd expect you to pick up Javascript in a month or two.

Now, in terms of "knowing who we actually need to be hiring for," I know exactly. I want someone who can do their thing well but shift and learn as technologies change and as the business grows, and potentially do things they've never done before well. It's integral to have people like this in any start-up (any of USV's portfolio companies) or a fast-growing company like FB.

The trick for me is, how do I evaluate this?

Lastly, here's a real-life example that hope illustrates what I'm looking for. At an old job we had built a web app that monitored an embedded device via ajax polling. The client liked the solution, but found it impractical to always have a browser window open. None of the engineering team had any experience w/ XMPP, but our research and discussions with the client led to an XMPP-based solution. We didn't have time or money to hire an XMPP specialist and we didn't want to lose the client. We had to learn and adjust.

I've already brought my partner on that project aboard my new company. But every time I step into an interview, I am wondering how I can find someone like her.


The question about mice seemed sort of neat to me at first. I figured the desired solution was splitting the wine into two groups, taking the group that turns out to be poisoned, and then recursing.

Then I came up with an alternative solution.

Step 1: Kill 9 mice.

Step 2: Have the mouse drink from a wine bottle.

Step 3: Wait to see if he dies. If he dies you found the right bottle. If he doesn't take the next bottle and go to step 2.


He left out that there's a time limit. You have a party with guests coming over in 10 minutes, and it takes 5 minutes for the wine to kill the rat (in any dosage amount). Given those constraints, how do you do it?

It's a fun question, but the best response I've heard to this is, "Move. You're never going to get laid with rats at your place during a party."


He's testing if you can think in binary. Label the bottles of wine with binary numbers, 0000001 to 1100100. Give the first mouse every other bottle of wine, the second mouse every bottle of wine with a 1 in the 2's place, the second mouse every bottle with a 1 in the 4's place, etc. If a mouse dies, the poison lies in one of the bottles it was given. If a mouse survives, there is no poison in any of the bottles it was given. Since every combination of mice is associated with a unique bottle, you can read off the digits formed by the dead and live mice to determine which bottle it was.

And then hope none of your guests call the SPCA.


Given the constraints (10 minutes total, 5 minutes for poison to kill), you can also divide the wine into 10 groups and assign each group to each of the 10 mice. The mice then drink samples from every bottle in his group, and after 5 minutes, the one that dies has the group with poison in it. You then assign each of the rats a bottle from this group, and then see which one of them dies. If they all live, then the remaining bottle is poisoned.

Granted, your solution is better, but you can solve this problem without binary tricks.


Thanks for this additional information. Now I finally see what geuis is talking about.

This is a great puzzle but IMHO a terrible interview question, even if you're looking for C programmers. Interviews are about talking. I might be able to solve this puzzle (though not necessarily under pressure) but I'm quite sure this isn't a puzzle I could talk my way through out loud. At best, I'd sit around for minutes muttering under my breath and staring at the walls and pacing, and then state something approximating the answer. A waste of good interviewing time.

Remove the time limit and the puzzle isn't so bad. There's a nice stupid answer (the "99 bottles of wine on the wall" algorithm) and a progressive series of potential improvements (the "10-bottles-of-wine-on-the-wall played in parallel ten times" algorithm; the "mix the first N/2 together, mix the second N/2 together, feed the first batch to a mouse, iterate" algorithm, and finally you kind of parallelize that and get the ultimate answer). But you shouldn't expect to get all the way through that discussion in an interview -- and, if you state the time limit up front, you just scare the wits out of the candidate.


Split it into ten groups of ten with a mouse per group. One mouse dies. Split that mouse's group into ten groups of one with one mouse for each group. There is a leftover group since one of your mice died, but it doesn't matter. If none of the other mice die you can deduce that the untested bottle contains the poison.

Two poison applications to find the right answer, so it only takes ten minutes. Lock the door and tell the guests who arrive you will be there in a minute so you have a bit of breathing room in which to prepare your bottles.


Yeah, the answer is actually bit math if I can remember. And I'm sure these kinds of questions are right for some kinds of positions, but they aren't appropriate for frontend engineers. It was fun to try and figure out though. If the question was "you have 10 mice, 10 bottles of wine, and a house full of people that you want to leave, what's the most efficient way?" then that's something that has merit. That involves thinking about compression methods and shoving people (data) through limited exits as quickly as possible. That's a relevant question.


Yup, it's bitmath. I happen to know which company's asking that variation of the question right now. Interesting to see good companies miss the mark in interviewing so widely.

I think it comes down to most people (myself included) having a hard time recognizing competency and skill outside their own experience.


Yeah I met up with them a month or two ago. Great guys, and they seem to be doing well


A fine opening, because not only is it the stupidest algorithm that could possibly work, but it also tees up the obvious follow-up questions: "How efficient is your method? How much time will it take in the worst case? How much in the best case? How much in the average case? Can you improve on this?"

These follow-up questions, and the fluency with which the candidate navigates them, are actually the point of the exercise. Well, that and to learn whether or not you're talking to someone who can't properly state any algorithm, and to help gauge your candidate's level of primadonnatude. [1]

[EDIT: Okay, I typed this up before people stated the version of the question with the 2-mouse-lifetime time limit. That version is, IMHO, an awesome puzzle but too damn hard for an interview question.]

---

[1] There is no one ideal level of primadonnatude. It depends on the business, the role, and the company culture. Steve Jobs is, arguably, the prima donna assoluta of computing, and that seems quite appropriate for his job. On the other hand, a good second grade teacher, the sort of person who enthusiastically spends every day for fifty years instructing students in the subtraction of single-digit numbers, probably has very little primadonnatude.


The thing I loved about the second solution is that it actually performs better at scale. I love the irony of the function with the higher growth rate being the better function as the number of wine bottles increases.


a better way to illustrate it..

one deck of cards..

1 have 28 cards dealt out and ask victim to pick their card

2 Deal out 4 card stacks, cards face up staggered stacked so that victim sees every card. & cards in each stack

3 have victim tell which stack their card is in..

How many more deals before you get their card in the first card position in a stack?

Answer, counting the first deal its 3 or less..

I used this example in a RealNetworks interview, they really did not get it..



The most important things for me as a developer:

- Money (I have a family to care about)

- 'Interestingness' of the job: does it require creativity? Do I have ownership? Can I start things from scratch, or do I have to maintain an ugly overcomplicated buggy code full of EntrpriseEntiytyManagerConfigurationFactoryFacadeIntefaceBean-s created without any philosophy behind?

Hardware setup is not that important for me. Never was.

Also there is no war for talent yet. Firms in Silicon Valley did not realize yet that there is talent in other parts of the world for much cheaper than in Sillicon Valley. When the real war will begin, I hope we will gain access to better opportunities here in the east than now. (Now they mostly resort to the east if some noncreative work should be done. (So called 'offshoring'.))


> Hardware setup is not that important for me. Never was.

Maybe that's because you've always had a decent hardware setup. I once worked for a company where the clueless management decided to save money by having fewer workstations than developers, and our department had to make sure they all looked in use, otherwise a management snap inspection might take even more away.


You could look that on the plus side and start doing a bunch of pair programming. I have started doing bits of pair programing and found it to be very productive.


One place that a little more money on hardware can improve productivity is using two monitors:

  http://research.microsoft.com/en-us/news/features/vibe.aspx


> Give someone a second monitor, let them use it for while, and then try to take it away. It just isn't going to happen. They'll never go back to a mono display.

I once had a two-monitor setup, and I dind't like it. Way too much clutter and information overload on the desktop. Managing that wide screen real estate is cumbersome. The view angle is too wide. You never know where the focus is, etc.

I peronally would prefer just one display with really good resosution.

> The first study revealed that the users' productivity increased by 9 percent. Further studies showed even greater increases - at times up to 50 percent for tasks such as cutting and pasting.

What a great productivity boost for a programmer! Yeah, copy-pasting is what we do all day long.


>Managing that wide screen real estate is cumbersome. The view angle is too wide. You never know where the focus is, etc.

Try two vertical monitors. It's awesome. (FYI: vertical monitors are sold as rotatable widescreen monitors; Dell sells them for sure).

But I have reverted to one widescreen monitor, and I like it--I like the focus.


As a programmer, all I need is:

1. Money (to not have to worry about it)

2. A challenge

3. A great team


As a programmer, all I need is:

1. Money (to not have to worry about surviving with basic treats from time to time)

2. A challenge

3. A great team

4. Equity (to make the sacrifice of #1 be a bet that pays off over time to more than offset the choosing of the harder path with a tighter belt)


Bah, I don't care about equity. I just want the work to be interesting and the pay to be high.


Don't play their game. If you are a great dev, ask for what you are worth (100-150 an hour). Or get solid equity. Or start your own company.

Don't be fooled by cheap gimmicks. You can buy your own Dr Pepper.


If you are a great dev, ask for what you are worth

You don't have to be a great dev to be worth north of $150 an hour. Step 1: get inserted into the part of the company that makes money. Step 2: adjust any knob available such that they make more money. Step 3: get in the habit of citing Step 2 when you aggressively negotiate salary.


100-150 an hour? I have 6 years of experience and I can hardly get more than $70 an hour in NYC. Maybe I'm not a "great" developer.


I was also making around 70$ to 80$ an hour. I decided to get in to Wall St (Investment Banks/Hedge Funds) and now I am able to make more than 100$/hour. In NYC, other than finance industry, I haven't seen anyone paying more than 100$/hour.


It depends on what you do, but if you're a freelancer, finding your own clients, managing your own projects, and paying for your own social security and benefits, then 100/hr is fair for a good programmer in NYC. It is comparable to 100K full-time, full-benefit work, which is at around what one of USV's NYC portfolio companies will offer you if you're a good programmer w/ 6 years experience.

If you feel you are underpaid, then apply for one of those positions on USV's portfolio jobs page. All of their NYC companies are awesome.


Wishing for a "talent-detector": I could make billions.

Seriously, how can you call it a war when the territory is so poorly delineated. Searching for "talent" is like capturing neutrinos. So shouldn't it be termed a "Crapshoot for Talent" or "Gold Rush for Talent" or such? Add to that the interaction problem (an excellent worker in one environment may wither in another).

Metaphors matter! Choose your weapons carefully. Oops, sorry, it isn't a war! Choose your garden shrubs carefully.


Google, FBook, etc in particular are fighting over some key execs and senior engineers, as well as the flow of new grads from key universities like CMU and Stanford.

That's the war. For most industry engineers, its a crapshoot.


It's interesting how much the high-tech industry that made remote and distributed working possible is still bound to a locality.

Outside Silicon Valley, and outside the US, there is also a lot of talent, which would dream of earning even half of what a Silicon Valley developer does, but cannot move there for some reason.

Ample opportunity here for smart companies.


Yes. If anybody is interested: For example offering half of Sillicon Valley salary to developers I could find the brightest 10-20 programmers from my country. I am well connected amongst developers. (Hungary is a 10million people country.) Just give me a very hard 'test', I will give that or something similar to hundreds of developers, and choose the best 10. If you offer higher than market salary, money makes miracles.


TopTal does this: http://www.toptal.com/ . You should contact them if you're interested.


Thanks, I will contact them.


Depends on the company and what they do but there is a lot of advantage to work at the same physical location at least some of the time. If this wasn't the case I think the market as a whole would have worked it out and you would see far less concentration to the one physical location.


That could also be the case because the business world is slow to adapt to new paradigms. There are not many ingrained best practices yet for distributing development teams over the world.

The market is moving in this way, but slowly. There is a certain threshold above which it just isn't worth to pay multiple times the salary just for someone that lives closer.

It might also be that better collaboration tools need to be developed, or improved, to support this. Or that good tools exist but they are not well-known enough.


It is probably just me and my overly pessimistic and cynical point of view, but sometimes I think this "war for talent" is basically synonym for "search for very good engineers willing to work 70 hours a week for less than 100K" (or something like that). I do understand the need to for these creative idea (good setup, etc.), but unfortunately these tweks and ideas work only and only after salary is good, challenge is there, and team is great.

And there is one more problem: some of startups struggling to hire very good engineers are not aiming big - the prevalent business model is: we hope to be acquired by Google/Apple/Facebook/Intuit etc. Stories of Digg, Reddit, and Delicous don't inspire a lot confidence for engineers to join these companies.


No matter how much a company is willing to spend on gadgets, everyone seems to stick with that same $100 Ikea desk.


Have you tried asking for a different desk? They end up with the same ikea desk because no one cares about it that much.


I actually like those desks, I just think it's funny.


Who cares that the desk costs $100 if it does an excellent job as a workspace/computer desk? I'm a huge fan of the Ikea Galant desks to the point where I bought myself one for home to go along with the $700 chair I have (similar situation to what is shown in the Tasty Labs picture).

I didn't buy it because it cost $100, I bought it because they are JUST ENOUGH desk to make an excellent workspace and they are height adjustable. I will never use a non-height adjustable desk again, full stop, and there aren't many other options for height adjustable desks that are anywhere near reasonable in price (and that is coming from someone who didn't blink when buying a $700 chair).


there is no war for talent. It is just a market that started to favor seller a bit (smart buyers buy in a buyers market by the way). When i recently "came up on the market" (laid off), 2 companies gave offers under the asking price, one din't make the offer at all as it was "above the range", and another company (that i even didn't hope to get into) offered ~15% more than the asking price was and of course i'm happy to be there now.


... while on this side of the ocean i couldn't even accept a position at a northern europe bank because i can't afford relocation at the moment, and everyone tells me people are hiring like crazy in NY/SV. Life can be bull sometimes :(


I may not have a cinema display, but many in my company do. When I started, I had a brand new HP desktop. A few months later I got a brand spankin new Macbook Pro when I started doing Mac development. I would expect AT LEAST what I see from the picture at any serious software company and I live/work in mid-michigan. We don't have to put our monitors on cardboard boxes either.


Looks like they're offering up a Macbook, a cinema display, a red Swingline stapler, and Dr. Pepper in the photo. #devporn


... and an Aeron chair!


Given how selective joshu claims to be in hiring, would be surprised if he turned down a developed who requested a mac pro and 3 x 24" or 30" monitors for both home and office, in addition to a macbook pro or macbook air.

A $20k pimped out setup or two is still less than a recruiter would charge, and hopefully about the same as the value of a developer's work to the company in 1 week.

I think Asana has the right idea, just letting people pick whatever they want within a $10k or so budget. There is some value in having commonality (spare parts, support, chargers), and I'd be surprised if anyone wanted anything except Apple or Lenovo laptops and high-end desktops with big monitors.


Valuing a developer's one week of work at $20K is a bit much (~$1M per year?). Also, I'd question the judgement of developer who thinks a $20K pimped-out setup, a Mac Pro and three 30" displays at both home and office, in addition to a laptop, is necessary.


If they expect you to work in that one spot more than anywhere else, the Aeron might be the most important thing you get! Nothing worse than a cheap, (eventually) painful chair. :|


and no door.


This. Headphones sometimes help, but there are times when I think I'd be better off with a VT100 and a door. I wish anyone beyond Microsoft and Fog Creek realized what a huge waste it is to let random people knock me out of the zone incessantly.


I wonder if there's a point where the talent wars in the Bay Area could actually affect pg's view that the Valley is the best place for a startup. I know that Jason Calacanis has talked about how it might now make sense to do your development somewhere else.


Finding good talent elsewhere is non-trivial, but with some care it is much easier.

We're currently doing our development in WA (one founder), NH (lead developer, almost founder), and IL. If we get into one of the Bay Area programs, I'll move to CA for the program, and probably then some.

The reason for the move isn't for development talent, it is for networking opportunities and mentoring opportunities.


Getting standard-issue equipment that you need to do your job? I don't disagree with the overall premise but getting a computer isn't that unusual and you need one anyway.

I think 37signals gets it (more) right. A company credit card with which you can buy any training or educational materials you need to become better at what you do or to help you with your work. Now that's a perk. (Though a personal secretary/PA to handle all of the non dev BS would be even better..)


That was taken out of context. We get developers whatever they want. We only posted it to be funny.


Oh, right. But yeah, I wasn't picking up on you or Quora, more Fred's interpretation of a banal reality - I'd hope any company would get their developers this sort of kit! :-)


Indeed. However, the hiring part IS brutal. We interviewed 90-something people, made one offer.

There's a huge difference between engineers and developers.


What makes the difference between the one developer you would hire and the 89 engineers you wouldn't?


I want to hire engineers, not developers.

Engineering is the negotiation of constraints. Developers write code. You need to be both.


This goes back to the popular post about Reddit being down to one developer. The war for talent comes down to a) having the resources to pay for top talent - Google or b) cool and fun concepts to work on which have enormous potential - Hipmunk. Getting hooked up with nice hard wear is great but at this point it seems expected as everyone pretty much does it (except for the bootstrapped start-up).


Does this "War for Talent" mean that I don't have a hope of acquiring talent through outsourcing? I just looked (briefly) at the Philippine job boards, and unless I'm doing something SEO heavy, there didn't seem to be too much there.


Heh, Mr. Wilson forget to mention that a primary qualifier for getting headhunter cold calls is quality/quantity of comments on HN.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: