Fabulous Adventures In Coding
Eric Lippert is a principal developer on the C# compiler team. Learn more about Eric.
Today I want your insights, opinions and advice.
In any large organization over time people are going to move around within that organization, or leave it for various reasons, and therefore sometimes you need to bring in fresh new people to fill the gaps left by the attrition. Over my sixteen years in the Developer Division at Microsoft I’ve seen numerous understaffed teams working on great technology; it is almost always a struggle for them to find, attract and hire talented developers.
My two questions for all you professional developers reading this are:
(1) When you read a job posting on a career site, what are the things you look for when deciding whether you’re interested or not? Are there “red flags” that immediately make you unlikely to follow up? Are there more subtle indicators that discourage you? What encourages you?
(2) What would you find particularly attractive or unattractive about an opportunity to work on a developer tools team? (at Microsoft or elsewhere, though I am particularly interested in “at Microsoft”.)
Note that I am particularly interested in your opinions on software developer positions; if you have insights on attracting people to program management, quality assurance or user education positions I’m happy to hear them but I’m more interested in developer position factors today.
I certainly know what my answers are to those two questions, but I already work here and I might be atypical. I’m interested in what your answers are. Please leave comments!
When I'm at a career site, I want to see the company's name in a posting, not 'one of our large clients' or 'a large player in the communications industry.' Jobs for unspecified companies start at -25.
Most of all, I want to know that the team I'll be working with only spends its time on high-value features for which there is a demonstrable demand, and that the team has a way of judging when a release is done.
Practically, that means the team has to be using some form of agile / Scrum, because that's the only reliable way of defining and delivering software that I've seen. (I regard other successes as lucky accidents.) Postings that advertise an agile environment always pique my interest.
In answer to the first question, it sounds to me like you are asking for the things that would sway you one way or another if conditions were otherwise ideal. From that perspective, assuming that all conditions are perfect with regard to job location, commute time, amount of travel required, salary (if mentioned), as well as technologies and procedures used, I would personally be encouraged by signs that the company knows what they're doing, knows who they want and will provide a culture that will attempt to sustain that and retain good people.
In addition to things other people have said (technology vomit, established development methodologies), too many buzzwords or sentences that don't communicate useful information will give me the impression that they're trying to sound more important than they really, perhaps to mask a lack of clarity. Too many typographical or grammatical errors will tell me that they really didn't bother to check what they put out, which makes me wonder about the overall mentality of the company. These are definitely not huge things, but they will affect my perception of the company (as well as the job) in proportion to how often they occur.
Likewise, including information about the work environment and office culture is helpful; It allows me to picture what it might be like. Reading the sentence "developers have quiet areas to work and access to a library of books on a wide variety of subjects" pushes me more towards inquiring than hearing nothing at all or getting the impression that I'll be stuffed into a noisy cube farm with fifty other people.
The question of whether or not I will be in an environment where I can learn something or be challenged, or even just around people that I can learn from, is a big one, but that might end up being more of a company or team image thing than something that can be conveyed in a job description. The overall goal, though, is to make it sound like a good place to work. If it's unspecified, that leaves it up to my imagination and my knee-jerk impression of the place, so a job description needs to at least partly answer the question "why would I want to work there?" and not just "what tasks would I do?". I spend a good deal of time working, enjoying my job should not just be an "on a rare occasion" perk.
As for working specifically on developer tools, I think that description covers a little bit too much ground for my liking. It would encourage me to hear specific products that the existing team has put out or will be working on, as opposed to a vague tools-related description like "designing and developing the next wave of mission-critical and developer-centric applications" which doesn't end up telling me a whole lot.
I'm much more likely to say "Hey, I've heard of Project X, that sounds interesting" or "I'm interested in Field Z that Project X is a part of" and apply, instead of playing job roulette and hoping for the best. If things are vague, then who the company is will tend to play a larger role (if I know that Company Y does these five things and I'm only interested in one of them, I'm not as likely to investigate more seriously). Specificity is usually more of a help than a hindrance, I think.
Microsoft in particular gives me the impression that they could provide a good job, because of the tendency (perhaps perceived) to be more selective in hiring (meaning more people to learn from), and that there are a wide range of jobs and teams available that could be challenging. The size of the company is worrying (potential loss in flexibility, bureaucracy, whether my voice will be heard) but not a deal-breaker.
As far as usefulness of the job descriptions, say, on careers.microsoft.com, I like that they are generally very specific about the responsibilities and technologies, why they need somebody and for what purpose, but I dislike that they tell me nothing more than two paragraphs about it and say nothing of team size, culture or other non-technical things. Microsoft is a large company and so, as far as I can tell from the outside, these things could vary widely from location to location, or even from team to team. It's not even addressed, though, which I don't find particularly comforting. That gives me a "we need a cog for our machine" feel, not a "we value you as well as your skills and want you here" feel.
Thanks for asking, and I hope my long, rambling paragraphs will help in some way.
I never read job postings, but when someone calls and mentions a job, I ask: can I contribute something unique; can they contribute something unique; will my kids / the world / someone else I care about care about what I'm contributing?
If I'm going to spend my entire working life making someone that's very rich a bit richer, then I pass, because I've done that already.
So I guess to get someone interested in your positions, I'd explain:
what the person would need to do
what the person could gain
how they will "make a difference"
..and then forget about recruiters, because the signal/noise is too high. Go to professors for their students, conferences for their speakers, new projects in related spaces for their innovators. But I'm sure you know all this...so you have to decide whether it's something about the role / company that's holding you back (I think a few of the earlier comments covered that area well), or just bad luck - finding people takes time and can be frustrating. Don't compromise, though, or you'll have to live with that compromise for far too long.
'Tech vomit' on CVs & job posts exists because HR departments (internal & external) don't have the time (and skills) to shift through all the applicants to the required level, hence they try short-cutting the process.
Why is this?
I see it simply as the tech sector has grown so much in 25 years that the number of candidates is now becoming a hindrance.
1) If the job post can identify where applicant should be (in their career) without mention implementation details and explain where they are going to be in the future then it would interest me.
2) Chance to bug Eric about his opinions on LOTR and the 'odd' work question. Though it has to be said the thought of meeting\interview with you or your peers is a scary one.
Long list of requirements is Ok if company really needs it, as long as it is split into "mandatory" and "nice to have" skill lists.
I do not like vague job descriptions. I need to see what I will be doing at this position. "Writing software" is not sufficient explanation.
Your words about "developer tools team" are rather misleading. Usually, such teams make tools for internal purposes, or for very few highly trained people in a customer company. You are, on the other hand, make product for millions of customers. Those jobs have very different specifics.
What else would be important to me? Gifted team and intelligible team lead. Don't forget to mention: their team lead will be Eric Lippert!
I live in a small midest town & my family is pretty well rooted. Low crime rate, 10 min drive to work, etc. Job positions that I have seen prefer relocation vs remote.
What I look for...
1) A position that allows me to constantly create or re-create something broken anew and re-factor freely. There is nothing worse than maintaining or converting code that is riddled with every known anti-pattern ever invented. I derive joy from this profession when I'm allowed to be creative and enjoy the fruits of my labor with positive (and negative) feedback ASAP.
2) Being surrounded by mentors. Not just other employees who've been spinning code for N years longer, but social human beings that genuinely enjoy TEACHING other developers new tricks or giving constructive, mature criticism.
3) The fostering of a healthy work-life balance. I'm not 22 anymore. I have a wife and kids. Work is a distant 2nd place to that. If a job posting looks like it was meant for someone willing to work 80 hours because of un-realistic deadlines, I'll pass.
Unfortunately, job postings rarely illustrate any of the above qualities. You have to hear about these jobs via friends, family or just get lucky...
As for a developer tools position. If you could demonstrate in your job post what the dev would be allowed to create, how much they'd contribute, what they'd learn and emphasize the impact that their work would have on the community -- I'm sure you would spark some interest. Perhaps even a homework assignment on a small piece of related work would be a good way to filter out the candidates. I'm surprised more places don't do that. It'd be a great conversation piece in a follow-up interview.
I am not a developer myself, but I work in IT. What I heard from devs about super brilliant teams like yours is this: "These guys have too many stars in the team already. It will take me years to prove that I worth anything and even longer to get into decision-making."
It looks easier to get to a less famous team, but be able to drive design and make decisions.
Why I am afraid of working at Microsoft
1) I have been writing enterprise software for the last 10 years. I do not know what the O(n) is for algorithm x. I am extremely rusty on shifting bits or writing linked lists.
2) I am dedicated to my job. I work 45 hours a week but do not want to spend all day writing, blogging or twittering about software. I want to spend time with my family and little one. I give my 110% during those 45 hours.
3) Afraid of getting laid off or being "managed out" by MSFT managers (at least by the ones that are mentioned on Mini MSFT)
In general, to me the team I'll be working with is more important than what exactly I'll be working on (assuming it is at least a reasonably interesting project). I tend to read job postings first to decide if the problem sounds reasonably interesting (or for general job postings, decide if the company probably has interesting problems to work on). Beyond that, I try to get a feel for the company and the people I would get to work with there, so how stuffy/corporate the posting is likely has undue influence on my opinion. Other than that, I really don't worry about the specifics too much.
Related to your question (2), I can tell you why I chose to turn down an internship at Microsoft in the developer tools division - despite that being my first choice division to work in. The key reason was as a potential intern, after passing all the interviews all Microsoft could offer me was something within that division, but no specifics on project or team. The competing offer that I ended up going with, on the other hand, put me in touch with specific teams and let us chat, to make sure it would be a good fit. IIRC, Microsoft doesn't hire for specific positions for the most part, but for a temporary internship finding the right team the first time is important, since you generally only get one try.
(1) I would say autonomy, projects that require brushing up on new technologies/skills, and the ability to design/architect the overall solution in progressively complex projects are few things that I look in a potential opportunity. I work in a core dev tools team in a large company (not Microsoft), and the best part of my job is the initial phases of a new project when I am faced with whole bunch of unknowns. I find that quite exciting.
(2) I guess best part of working for a dev team is that your customers themselves are developers. I guess this is also a bad part, as your products do not see the light of the day as much as let's say end-user tools like a browser or a cool app.
You might be interested in how my company attracts developers. They almost only look for recent graduates (they grab them right from school). They don't care about experience. They also don't care what you learned at school. They'd even consider a Psychology major who's never programmed before. What they're looking for is the people who can think, who can learn new technologies quickly, and who care about doing a good job. In my job interview, one of my tasks was to write code in a language I've never even seen before.
That's a risky approach to take, and I doubt it'll work for your team (since you obviously need more experienced people), but it works very well for my company. And it attracts the best people because a job where you are required to spend some percentage of your time constantly learning new technologies sounds good; and it is good.
That said, I wish I could have worked on your time. I know I've applied to it more than once. But even if I was accepted today, I wouldn't leave my current job for it.
Specifically addressing applying for a job with Microsoft:
Similar to Andy White, I am afraid that I will fail a interview with Microsoft because my computer science fundamentals aren't as strong as some, as I've been working in application development since I left university.
As a result, I tell myself that I should study on data structures and algorithms before I apply. But its hard to do that when I'm already committed to supporting open source projects in my limited free time. That and I find it really difficult to resist playing with the latest framework or shiny new programming language. So the CS fundamentals study continually gets put off and I never feel ready to apply.
I wrote up my thoughts on this the last time I was job-hunting:
I have no idea what the problem is. Working in developer division is pretty much my dream job. It's my entirely self-serving hope that you'll still have a shortage of talent by the time I'm finished my degree.