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!
One big red flag for me is the use of specific products (i.e., ADO.NET connections to Oracle are not *that* different than to any other db) and overly-specific technologies.
Another red flag is the location. Really. Headhunters have a tendency to believe all of Michigan is right next to Detroit...
As far as what I find attractive in a developer team, the single most important aspect is a high degree of autonomy. Agile may be nice, but out of all the job postings emphasizing agile methodologies, not a single position actually had anything to do with agile (it was just used as a buzzword, maybe?). But autonomy is important - I'd at least want to participate in the technological decisions (in my current job, I get to make them all).
To answer an unspoken question ("Why can't we find more employees?"), here's a few facts:
1) In the current economic climate, people are leaving cities and moving into the country.
2) The housing market in Seattle is still incredibly high. My $100K house here would cost ~$750K there. So it's very difficult for people like me to move into your area unless you offer like a half-mil hiring bonus. Right.
So, I think there's an additional factor to consider there.
Background: I'm new (5 years dev experience) to the industry but I've programmed for over 15 years.
What gets my attention:
Long descriptions! If your job posting contains less detail than my resume maybe you should try harder.
Is it interesting work? Will I get to work with skilled people? Is it good pay and how long will positions / projects last? What team will I be working on and what have they done in the past? I rarely see any of this on a job posting and when I do I almost always apply. If you answer these questions fully that's what makes me jump to apply. If I match all the job skill requirements that just means I can ask for a higher starting salary.
"technology vomit" - As others have mentioned this is an instant next. The call back rate on these job postings are so incredibly low I don't even try to apply to them.
Micro Requirements - Similar to "technology vomit", Don't expect me to be familiar with something that can be learned in a few months. If I see a lot of "prefer people familiar with X technology" I move on. This means you're looking for the perfect candidate that you will never find and that isn't me and/or you don't really know what you need.
Obsolete Technology - If you're still using Visual Basic (doesn't apply here but you get the idea) what other obsolete technologies are you using?
Bureaucracy - Sometimes this is associated with a company and sometimes it is visible in the job posting. Can I tell if the job posting was written by a professional writer or a dev. This seems little but it gives hints as to if I am going to be micromanaged or killed slowly in long meetings.
Developer tools sounds interesting but without details it's hard to say. My assumption is that everyone on the developer tools team is interested in challenging work. Who really enjoys whac-a-mole programming anyway?
I graduated about a year and a half ago, but I remember exactly what I was looking for when searching for a job. I wanted to know the team size I would be working on specifically because it was my goal to find a medium size team. I asked about this specifically for every company I interviewed with and even some follow up questions to make sure they knew I was asking "how many people have the same job I have" and now, how many IT people do you employ? I also do not like switching jobs often (meaning the kind where you start over with learning a new code base) and so I would always ask questions about the projects the team is currently working on, what technologies they were built on and what kind of goals they were working for with those projects.
Most of those things probably do not belong on job listing, but I was particularly drawn to anything specific that sounded like a developer wrote it. I remember a listing I jumped to apply for when it said developing a system which tracks alien activity in the United States (not space aliens, but non-citizens). That caught my eye as something I would be interested in, and so I looked deeper. My eyes glaze right past listings for "web developer" all the time even though that is what I want to be doing because it is not nearly specific enough to catch my attention. I have looked at 1000 listings for web developer that ended up being some mom and pop shop looking for someone to make them a website for $500. That is not what I want to be doing, so I stopped looking at those a long time ago.
I won't reiterate the above complaints about "technology vomit" (a term I am going to immediately adopt, btw).
One of the things I look for in a job typically isn't covered in job postings, and I wish that it were: autonomy. I'd like to know how much freedom of action I have to get my work done. However, I can usually get to it through a few questions during the interview.
How hard is it to install a new piece of free or open-source software on my dev box?
If the team decides it needs a new tool, how hard is it to get?
How much control do I have over my work schedule.
Around here, it's typically: hard, not very hard, lots. As for the first item: it is hard to use open-source tools because of the danger of some legally-vague, insufficiently-tested-by-courts license whereby I use this tool to reformat my source code once, and suddenly we're legally required to ship the source code for Office. Or I look at the source code for this code reformatting tool, and suddenly if someone else in the next building makes an even vaguely similar reformatting, we've violated a patent. Or whatever. It is a legal minefield that we do not want to step into. -- Eric
If those things are hard to do, I've found that the company is far too restrictive for me to be successful there. Others may thrive in that environment, just not me.
As for things that would get me to apply for a job, working for Eric Lippert would definitely be one of them.
Thanks, that's a nice thing to say. Just to be clear, no one works for me, only with me. Microsoft has two tracks for advancing as a developer: technical, and managerial. I am firmly in the technical track, so I'll never have reports. -- Eric
As a developer, I tend not to read job postings on career sites. I'm more open to people who contact me, rather than the other way around; especially if its contacts who know me, or know someone I know.
WRT developer tools positions, the major opportunity is having input into the design (and implementation, but especially design) of abstractions and abstraction-building tools that can make life for end-user developers easier, or even one's own life as a developer easier.
WRT developer tools at MS in particular, there's a problem: MS is particularly focused on developer tools that make writing the kinds of software that MS writes easier. They are not as strong WRT tools for web applications, or tools for targeting other platforms, or even tools that don't necessarily integrate with SQL server, IIS, integrated authentication, etc. etc. I feel that the strategy tax where MS is involved is substantial and burdensome, and badly impacts MS's DevDiv's creativity for producing tools developers actually need, rather than what MS biz mgmt thinks it needs in order to shift more server licenses.
@Eric - You are, of course, able to describe how things really are inside MS. I'm only describing how I perceive them from outside - even though I'm wrong, it might be relevant when trying to get inside the mind of a potential new hire.
I look at things like RicoM's disappearance shortly after making a presentation on November about how good VS2010B2's performance was, and I imagine the processes which took most of a decade to stop F10-help being a 10-second blocking wait which gave you the wrong help and I click on a Connect link and wait for my browser to timeout after a specious security warning which after a retry gets me an off-hand one-line dismissal by someone who doesn't even really speak English of a bug report which took an hour to create. And then I wonder why .NET 3.6 had to be called .NET 3.5 SP1 RTM, and then I think 'would I be enjoying coffee and biscuits with Anders once a week as a member of the golden C# circle, or would I be weeping with frustration as my attempts to fix any one of these trivial problems were ground under the heels of a thousand committees and middle managers, any one of them waiting to shaft me in some annual review process if I got too lippy?"
MS may well not be like that at all, and if it is, it's certainly not your fault and you can't fix it. But I'd be surprised if some of your potential applicants aren't wondering some of the same things, and that a vital role of your job advertisement might be to communicate "we're not as bad as we sometimes look" to potential employees. Alternatively, you might consider that I've run my own company for years, am completely unemployable and know nothing about either recruitment or MS :-)
I also get frustrated by the unreasonable (and usually irrational) technology requirements in most postings. How long has the .NET 4 beta been available? Because I'm pretty sure I'm going to see requirements for 5+ years w/.NET 4 in the coming months, alongside the "obvious" related requirements of ASP, PHP, XSLT, VB, C, and Fortran, all for a junior developer role paying 45K.
I've had my eye on the (depressing) job market for a while. I need to bite the bullet and move to a better market, but as for now I keep telling the local recruiters that I'm looking for a team environment. In my present role and really for my entire time as a programmer (although this current job is my first 100% development position), I've been the only guy on the "team." I enjoy learning new things and exchanging ideas, because I feel it makes me a better programmer when I can not only be assisted but also assist somebody else, and right now I get that fill from blogs such as this one (which pits me as the assistee) and on forums (where I mostly play the role of the assister).
The other downside of my present job is that we work on websites for other mostly local companies and we tend to go from job to job in rapid fashion. I like to laugh when people bring up agile and test driven development and having shippable code every 2-4 weeks. Most of the projects I work on have to be completed in less time than that! There are a few that keep me busy for longer, and then there are clients that are constantly wanting to add new functionality to their websites, but many of the projects I get are 20-40 *hour* projects that, frankly, do not often challenge my intellectual curiousity enough.
The positive about working here is that I have learned a lot on my own and have gone from somebody who probably was woefully underqualified to be the only guy on the team to someone who, I think, is pretty darn good at what he does. But the growth potential is limited since the projects aren't that diverse and there's only so much you can do for smallish local companies anyway (or only so much they can afford).
Anyway, I can see this doesn't really help you, it's more of a venting session! I guess the takeaway is be accurate with your requirements and provide challenging work (which I'm sure isn't a problem for Microsoft).
I've been playing with programing languages since I was 13 years old. Later at age of 17, I've started working as an intern on the IT department of a mid-size company on their ERP (VB6 and ASP). Since then I've been working with .NET and C#, and I still take time to read and learn every day. I'm comfortable with C#, C++ and F#, as well as COM, COM+ and other scary things in Windows eco-system. Took my MCPD exams without even studying. Every company I entered told me I'm a good professional.
But still, what keeps me from taking an interview at Microsoft Developers Division is the high expectations that the company has on the candidates. I'm a normal guy, which works 42.5h/week and is a passionated developer. I'm not someone who eats algebra and spits assembler. That's why I don't waste your time.
Besides that, it looks like a really good place to work.
BTW, I'm 23. Forgot to mention that.
Things that catch my eye in a GOOD way:
- Posting mentions modern technology, but not in an alphabet-soup manner. I'm looking for positions where I can stay current and explore new things during the day, in _addition to_ the learning I do on the side.
- Posting indicates, to some degree, the team culture that exists. Would I be working with smart, energized people that share my passion for technology? Or is it a place where developers go to die? Is there an organizational commitment to continuous improvement, or is the goal to just get things "good enough"?
- Posting indicates I would do more than write code 100% of the time. Software engineering is my passion, but I am also talented in (and enjoy) DB design, performance profiling, data analysis, marketing, front-end UI and the occasionally forensic troubleshooting session. I want my primary job to be programming, but I want to add value to my team in other ways as well.
- Telecommuting is always a plus for those of us that don't live near a "tech mecca".
Things that catch my eye in a BAD way:
- Posting indicates a poor level of understanding of the position. If the posting and interview are run by a non-technical person, how will they know how to value me relative to my peers? How likely is it that they've done a good job of hiring the sorts of people I want to work with (see above)?
- Posting indicates the company is looking for "hands on a keyboard". I want to be encouraged to provide thought leadership, I don't want to be a cog in a wheel.
- Posting is devoid of personality. I don't need to work at a dot-com-boom era office with air hockey tables and nerf bullets flying everywhere, but I _do_ need to work somewhere with a soul. A good posting has a touch of marketing spin to it.
- Posting indicates the company is slow to adopt new tech. I don't care what the salary is, I'm not interested in any position doing .NET 1.1 development in 2010... staying current can be a competitive advantage, especially when it comes to attracting and keeping talent, and any company that doesn't see that is no place for me.
I would LOVE to work on a developer tools team.
I've always enjoyed writing application frameworks more than the applications themselves. I'm much happier working on tooling and infrastructure than feature cases, and developers are much more interesting users than the traditional cubicle dweller!
Playing to trends:
"Ninja coder" / "Guru" / "Thinks Outside the Box"
These are red flags. You're Microsoft. I already want to work for you. Your reputation as a work environment alone makes me want to work for you.
Second red flag sometimes is that your reputation could keep me from applying. I don't know if I'm even good enough to work for Microsoft. There's a level of Software developer that could conceivably work for MSFT, but not have the confidence necessary to even try -- because of the reputation that Microsoft only hires the best. Only fools believe they are the best. I know I'm not the best (or anywhere near the top), so why go through the anguish of being rejected by MSFT?
A bit OT, but... a dream of mine would be to work in the Windows Division as software developer, because I do like low-level stuff (e.g. the layers when the software meets the hardware, etc.) and C/C++.
Moreover, I think that Windows Division produced powerful tools like WinDBG as well.
It's gonna be very interesting and technically rewarding job!
Do you know if Windows Division has the same "hiring problems" of Developer Division?
Any suggestion for someone wanting to enter Windows Division as software developer?
...and what kind of questions are typically asked in the phone interview screening phase?
Thanks a lot!!
...and keep your very good work with C# and this blog.
Personally, I'd like to see more job posting's from the team/peers who are doing the hiring. I get the feeling that the majority of job listings out there are cookie cutter blurbs by HR that mostly regurgitate a set of required skills. When I'm screening resumes and see, "Objective/Purpose: Detail oriented, self motivated programmer seeks job to provide value," it doesn't bode well for you. Similarly, if I'm browsing jobs and see, "Fortune 500 company seeks detail oriented, self motivated programmer to work on exciting new projects," it just doesn't do much for me.
I care about the specifics of the job I'm working on and the team I'm working with. Give me some concrete information and a sense I'm reading something from a person looking to hire a person, not a corporation hiring another nameless worker bee. If I can identify with you and the work you're doing there's a much greater chance I'll be interested.
As to finding developers for developer tools, maybe try the appropriate blogs. Dev's reading these blogs are probably already have something going for them and theyre already interested in the subject matter. Personally, I don't mind the occasional post about a job opening from the blogger I'm following.
On another note, the Microsoft career site is clunky. Huge lists of jobs with titles that are too full of vague acronyms. "SDEII(707719 -External)." The site is rather slow for clicking into every one of these. I haven't really browsed the site in quite a while but I also remember seeing what appeared to be internal Microsoft acronyms used within the job details as well.
"On another note, the Microsoft career site is clunky. Huge lists of jobs with titles that are too full of vague acronyms. "SDEII(707719 -External)." "
That is indeed true of many large organizations (and true of one I worked for before my current job). Job names that might have meaning as far as internal candidates are concerned (at least you might hope someone internal would know what the titles mean and/or compare to other roles), but are too cryptic for a public job site.
Eric, I posted a response to this post on my blog: http://blog.yapb.net/post/2010/03/01/Attracting-Talent-A-Response-to-Eric-Lippert.aspx My comments would be too long to fully post here.