Fabulous Adventures In Coding
Eric Lippert is a principal developer on the C# compiler team. Learn more about Eric.
Thanks for all your insights on what is attractive or unattractive about job postings, and about working on developer tools. A great many of the comments were strongly aligned with each other; no one likes “alphabet soup”. And a number of them illustrated that there is a wide spectrum of what people find attractive and unattractive. To sum up the hundred comments I received:
Factors that make a job posting unattractive are:
Factors that make a job posting attractive are:
Factors that make working on developer tools unattractive are:
The last point I want to talk about in a bit more depth.
You don’t need a PhD in computer science or be a Waterloo grad to work in DevDiv. Now, don’t get me wrong; it helps to have a relevant degree from a great school. A great many of my coworkers have degrees in CS, mathematics or other related fields. But a number of my coworkers do not have degrees and are not even from Waterloo. (At one brief moment in my career my entire management chain from me up to our vice president was Waterloo grads; there are disproportionately many Waterloo grads in DevDiv.) Having an academic background certainly helps because it means that you’ve already been exposed to a lot of the ideas that we work with every day. But what matters is whether you can grasp those ideas and use them in practice, not whether you can “chew algebra and spit assembler” as one commenter put it.
A few anecdotes to illustrate my point. A couple years ago I had a conversation with an architect who had spent several years building up a library of objects to represent control flow operations on generic types, and only a year after he was finished did he realize “aha, this pattern of composable objects that I built this whole architecture around is called a monad.” You don’t need to be able to rattle off “a monad is an endofunctor with an associated bind and return functor” in order to write a library of objects that an academic would identify as being monadic.
A more extreme example: my wife worked at Microsoft successfully for ten years as a software tester; her degree is in the study of the French “Theatre of the Absurd” movement of the mid 20th century. Admittedly, that sort of thing is less common these days than it was fifteen years ago. But it does illustrate that people do come here with all kinds of academic backgrounds. What matters much more than academic background is drive, talent, intelligence, ability to learn new skills, and simply getting stuff done.
Let’s move on to the positives.
Factors that make working on developer tools at Microsoft attractive are:
Thanks again for all your comments and constructive criticisms. I appreciate it very much.
In my experience, it's also important to have personal contact.
I know it's impossible to do that with each applicant, and phone screening is also a form of contact.
But, I always wonderd that there was no stand on de the PDC (not in '08 when I was there) which gave job information.
Looks to me a great way for screening people, every visitor is into devloping in some way.
"Please spend thousands of dollars and several days in lost productivity to send your best developers to the PDC so that we can attempt to poach them away from your company" is not a message we would like to send to our best customers. -- Eric
A lot of software developers needs some kind of push or pull to get out of there 'not so' comfort zone.
The good one's mostly have a job.
I was going to reply to the last post, but ended up getting distracted. No worries, Business Week ended up publishing an article with most of what the post was going to say:
What has frustrated me most about applying with Microsoft is the "Black Hole" I've applied to several positions I've thought I've been a good fit for and never hear anything back other than visiting later to see the position closed (or worse not)
For the most part, this is a really great list of do's and don'ts for hiring overall, thanks for putting it all out here!
A few of them caught my eye.
1. no evidence of awesome coding methodologies, such as “Agile Programming”
2. evidence of dogmatic devotion to trendy coding methodologies, such as “Agile Programming”
It is somewhat interesting that both of these occurred, and I definitely think there is an important balance between them. People need (want?) to be coordinated and work together towards a goal, but they also want some freedom of expression and creativity to pursue it in their own manner. As an employee, I expect to be told what the goal is, but I definitely want to be involved in figuring out how to get there. Give me a process, but don't choke me with it.
The other interesting one was "problems are too academic, too abstract, too difficult."
Academic and abstract I can understand. Work that doesn't produce a tangible result isn't for everyone. But when someone says "too difficult" my heart skips a beat and I feel all tingly. At that point, my intellectual prowess is being challenged, and I almost feel compelled to at least TRY to meet that challenge. I won't always get there, but where is the fun if you never try to push your limits?
That,'s true, but there some who pay their own.
It's amazing how analagous the requirements for a good "help wanted ad" are to the requirements for a good online dating profile! Most of these translate verbatim, like "too much emphasis on certifications / degrees / class standing" and "flat, boring list of requirements with no evidence of “personality”".
I suppose the only real difference is the need for an online dating profile to have a photograph, which I don't think I've ever seen in a help wanted ad.
Chris B wrote:
"Academic and abstract I can understand. Work that doesn't produce a tangible result isn't for everyone. But when someone says "too difficult" my heart skips a beat and I feel all tingly. At that point, my intellectual prowess is being challenged, and I almost feel compelled to at least TRY to meet that challenge. I won't always get there, but where is the fun if you never try to push your limits?"
Good point. I think probably the best combination of factors in terms of this (well, for me at least) might be working on a piece of software that has some practical value, but gives you enough latitude to try to work in some more abstract/experimental elements.
I once interviewed a candidate for a Director of Product Development position and upon seeing the guy's resume I was almost floored! He had an undergrad degree from Harvard, and a post-grad degree from M.I.T., as well many other accoladacious achievements. He was well-spoken and clearly VERY intelligent.
Then I asked him for his references. He fumbled with his briefcase for a while and then looked up and sheepishly told me "I have forgotten the combination to my briefcase!" and it was clear, he had.
NO - I did not hire him. Why? Because before I care at all about glorious degrees, amazing experiences, or fantastic achievements I need to see the ONE thing that is so sadly lacking in today's world. What is that?
This, the most vital element in the world is so sadly lacking in so many corners that well, when you find it, hold on to it, and when you dont see it - RUN LIKE HELL!
Like I say, I dont care if you have 10 degrees from the 10 top schools - if you then lock yourself out of your briefcase, or (worse) over-design software or make it way too needlessly complex, you are not "smart and creative" - you are in fact, badly in need of a shot common sense.
But alas, look at our world... In 2008-2009 6,000 Americans lost their lives due to people talking and texting on cell phones in their cars, and we still dont ban it. Common sense? No, lunacy...
Give me common sense any day, and I will take care of the rest.
Common sense....its a funny word if you stop to think about it....because its anything but common.
So after that teaser in the first post, you're not even sharing your answers, Mr. Lippert?
On the subject of job postings: I only ever look at job postings from the perspective of the employer, not the candidate employee, so I don't have a good sense of what makes postings attractive or unattractive. Hence the question. On the subject of working on tools, I don't have anything particular to add. I enjoy very much the combination of the abstract/theoretical/academic and concrete/practical aspects of designing and implementing language tools, and it gives me a lot of satisfaction to ship those tools to millions of people just like me. I also like that the tools are not there for themselves, but are part of a larger business strategy for producing huge value in the economy. Basically not different from what others said. -- Eric
I got a PhD in BBQ... do I get the job?
"What matters much more than academic background is drive, talent, intelligence, ability to learn new skills, and simply getting stuff done. "
While I agree that this is an important skill, as a candidate, how do you express this in a resume or cover letter (besides the required "I am a quick learner" shtick everyone puts on)?
It's difficult. Many of these things come across much better in person, in an interview, than on a resume or CV. -- Eric
If I could get people to do just one thing when recruiting in order to make the process more effective, it's this - I'd get them to remember that a job ad without salary information is like a CV without a name on it.
I disagree completely with the thrust of this analogy; I'll proffer up two analogies which I believe are far more exact. I say a job posting without the company's name on it is very much like a CV without the candidate's name on it. And I say that a job posting which does not state the offered salary range is very much like a CV which does not state the candidate's required salary range. Are you in the habit of putting your required salary on your resume? If not, why not? and why do your reasons as candidate not also apply analogously to the employer? -- Eric
That's a good point, Eric.
I think what worries people most about job ads with no salary range is that they feel that if they're offered a position, the employer will ask the candidate how much they are looking for, usually before mentioning any kind of range they are looking to pay. This leaves the candidate with 3 potential outcomes, two of which are bad:
- Asking for more than the employer is willing to pay and making them balk, potentially removing the offer or just going with someone else
- Asking for less than they would pay and having them accept the offer, only to build resentment later when the employee finds out what other people are earning
- Asking for something in the right range, and everyone's happy
Indeed. My point is that the employer is in the same boat. They can offer signficantly less than you're willing to accept, which means you balk and take your skills to their competitor. They can offer you significantly more than your minimum acceptable salary, which means they just wasted shareholder profits. Or they can make the right offer. Three outcomes, two are bad. -- Eric
The anxiety over the first two can be pretty bad. I hate telling people what I am "looking for" before hearing what they are looking to pay. It just feels like a setup to give an answer that's likely to disadvantage me in one way or another. I think another anxiety causing situation is employers who make talking about your salary in any way a sackable offence. It builds enormous distrust from employees. I think the more open the employer is with the employees about salary and progression, the less reason employees have to whisper among themselves.
Of course that puts you at a disadvantage. The point of the negotiation tactic is to put the other party at a disadvantage. This is the oldest tactic in the book; whoever mentions a number first is automatically at a disadvantage, so a skilled negotiator who is coming from a position of weakness will try to get the other party to mention a number first. No one is forcing you to answer the question. Were I in that position I'd simply turn the question around and ask what the total compensation package was like -- salary, bonus, stock options, savings plans, benefits, when are raises typically offered, and so on. All reasonable questions that are hard for the employer to duck.
A negotiator coming from a position of strength -- for example, the party who needs the deal less and is more willing to walk away -- doesn't need to use that tactic. (But that doesn't mean they won't use it!) -- Eric
One reason why people want to know the range is that people like to feel like they're being paid "fairly". That doesn't mean "as much as they could get anywhere else", just that if the role you're looking to fill generally pays $x-$y, you can work out what seems fair based on what level of experience/knowledge the employer is looking for. Even if you could get a bucketload more down the road at another company, the big point is feeling like your employer values you and pays you what they think you're worth.
Indeed, and now we get into a whole other aspect of human psychology. The literature on this is quite interesting; studies show that people will turn down deals that are unambiguously advantageous to them in order to prevent someone else from getting an "unfair" advantage. -- Eric
This is the case for the candidates who are looking for the best project, with good pay, anyway. Some people are just looking for the best rate, regardless of the job. But surely these aren't the people MS are interested in?
In addition to the last comment, I think to address employers' worry that stating a salary range on the job ad would cause some people to not apply before giving the job a chance, perhaps a good approach would be for the employer to bring the salary range up early-ish during the interview process. This way the candidate can have an idea of what they're looking at, and can look at where any offer is made in relation to the salary range to get a feel for what the employer thinks of their skills in relation to what they're looking for. If you tell someone the salary range, then think they're a good fit and offer them the maximum, the candidate can then be happy that you have recognised their skill, even if it's possible for them to find higher salaries elsewhere.
Now, Eric, what about what makes a candidate good for Microsoft DevDiv? What are the keys to work with you guys? I'm pretty sure that there's no simple answer, but what makes a guy stand out in the crowd for you?
First of all, in DevDiv we don't hire "for DevDiv". We hire for Microsoft first and foremost. An ideal candidate should be someone with the skills, learning ability and aptitude to work on anything from XBOX to Mac Office; we then hope that their best fit is in DevDiv. That said, people with a strong background in languages (either from academic pursuits or industry) stand out. -- Eric