You can go to the bathroom whenever you want at Microsoft
microspotting.com
microspotting.com
Say what you will about IE (Zeke is apparently lead on the project), Microsoft actually does have a lot of good software developers working there. I can't imagine someone would rise to a lead role on a major product like IE without being pretty damned good. And, there probably is something to hiring really passionate people over someone with a lot of qualification who could take it or leave it...companies like Google that weed out first based on school and grades, might just be missing out on a huge class of talent.
I can think of a few well-known examples of this (jwz, most of the 8-bit game developers, John Carmack, etc.). Not to say the guy responsible for IE is necessarily in that class...but, nonetheless, there's an awful lot of great developers who never went to a good school for CS.
He became one of their developers and the lead developer at multiple other firms, including two he co-founded with me.
I should add that while he hasn't finished his "top tier" undergrad degree, he's very close.
He got hired at Google relatively recently (~2 years back) and is rising through the ranks.
It's my understanding that that's about the point in time when the hiring bar started rising, and the focus on top-tier schools became prominent, at Google. My information could be colored by the people I talk to (who are mostly on the OSO side of Google rather than engineering), but as far as I know, it's been a definite trend. I also know several people who left Google over the past two years, either to go back to school or to pursue other interests, but now very likely wouldn't get a job there due to the changing hiring policies.
I thought it was the opposite. Google always emphasized GPA and where you went to school. They loosened things up quite a bit during their great hiring sprees of 2006-2007.
Maybe recently they've reverted to their old policies because they hired so many duds during that time period.
The one thing we all had in common was prior work experience and a passion for computers. I don't think you can get hired at Google with neither the degree nor experience - but then, should you be able to?
The fact of the matter is that if you can get through the interview questions and appear to "fit" the culture, you probably stand a decent chance. Top tier schools help, but that's probably more a fact of the school having a big name and the brand of the school being more prized. Otherwise, they never would have even looked at me as an intern, much less an actual hire.
If this is true, this is disempowering to Google for 2 reasons:
1. Many potential superstars simply never get the opportunity to go to a "top-tier school".
2. In applicability to real world requirements, the difference between a "top-tier school" and a second level school is negligible. That is, if there was a scale of what was important from 1 to 100, with 100 as a total super star, then a top-tier school would make you a 10 instead of a 9. Big deal.
Ummm, there is a huge difference between a 9 and a 10. The horse that wins the race by a nose wins 10 times more prize money than the second place horse. Was the 1st place horse 10 times faster? 10 times stronger? No, he was a nose faster - and it made a huge difference.
Think about this in terms of search engines. are Googles search results 10 times better than Yahoo. Absolutely not, but they are a nose better and thats why we all use Google.
In thinking back on the most effective developers I've ever known, there's a pretty wide range of backgrounds. Though I guess most of them do have some sort of university degree, not all of them were in CS and most were not top-tier schools.
I can say with confidence that I've known serious over-achievers in school who went on to become non-achievers in life, and vice versa. In other words, I'm not sure that what school someone attended is a good indicator of their ability or their enthusiasm for the work. The more top-tier school alumni I meet, the less confidence I have in the predictive value of that data point vs. other data points.
I have worked in finance, and I am currently working on my Master's degree in financial engineering. A lot of finance-oriented companies highly value their code. Now, yes, there are projects like QuantLib someone can contribute to, but if you someone was hired directly out of school and had never contributed to Open Source, chances are you aren't going to find any Open Source projects associated with that person. That person's employer probably doesn't allow it. With that said, the other case may be that they simply don't have the time to work on anything outside of work. Again, Wall Street is like this.
Learning can take many, many forms, in all kinds of different backgrounds, because it is constructed by the individual attaching meaning to his experiences.
It is unfortunate that this happens, but projects like the OLPC is bringing constructionism(Seymour Papert's theory, based on constructivism). Lets hope we move to a deschooled society sooner than later.
Passion for the topic is very important because a lot of what we do for a living is un-charted, un-mapped territory. The passion is required to get past mediocre.
I am a self-taught programmer. I tried to learn in school but my mind wasn't quite molded to the way programming teachers taught back then (1985-ish). So years later I re-visited programming on my own after DOS 6.0 and Windows 3.1 came out.
I got the bug and eventually became a professional. I now work on a large magnificent software library used by millions of people whether they know it or not (I won't say what it is).
I consider it a privilege and part of the journey to work with passionate, self-taught people who paved the way.
There would be a lot of empty seats without superstars if we only accepted Ivy types or excluded the self-taught.
I just couldn't be in this field if that were the case.
I'm self-taught too, and so is the best programmer I know by a long way (not me, I suck).
The guy I went to uni with who did CS to completion? He's writing printer drivers for Canon. And hell, good for him. He's got a nice apartment, he has nice dinner parties, he has a nice wife. Good for him!
But all the entrepreneurial types I know are self-taught.
9 our of 10 business fail, so the vast majority of entrepreneur suck big time. But of those that succeed people who work better under self direction are over represented because those who exceed even when managed are also currently busy succeeding.
I know plenty of successful entrepreneurs who had long and successful careers in corporate America.
I know plenty of brilliant hackers who bailed on school because everyone there was hopelessly behind them.
I know plenty of brilliant hacker who graduated from MIT.
I also know a few MIT engineers who make me wonder how the hell they got through MIT. Not only do they suck in the real world but they are also lacking some very basic academic concepts. Did they forget them, did they ever learn them? Who knows.
Life is full of personal anecdotes.
First of all, all good programmers have the ability to teach themselves, because this is the definition of a good programmer. People who stick with what they knew three years ago are obsolete.
So the question is whether the pure autodidact strategy is a good idea. It isn't. There are far, far more failed or incompetent self-taught programmers than there are failed CS students. Observe the "Teach yourself X in Y days" bookshelf and the kind of programmer they produce. Could they have sucked less with better instruction? We'll never know.
Also, the stuff you learn on the job is nothing like the depth of knowledge you get from taking a real course. The rule of thumb is that 3 years on the job equals one year of university. And I find that to be about right. After more than 10 years of doing this professionally, I'm vaguely the equal of a really good Stanford grad. I have many more tricks up my sleeve, but they know a few things very very well. Passion works up to a point, but part of the job is also learning the really boring stuff that nobody likes.
So yeah, I do think I'm maybe more "original" just by dint of having a different background. But there are penalties for that too.
For me it's an anti-pattern that shows that such people lack a critical bit of intelligence and vision.
It's also a modern example of the Maginot Line fallacy.
Out of curiosity, how would you thin the applicant herd? Say you have 10,000 resumes sitting on your desk for a CS job. You can't read them all so you need to set a few automatable/arbitrary rules to get the pile down to 50 or so. What rules do you use? Years of experience? Google HR can't take the time to get to know 10,000 people.
What Google does is incredibly imperfect, but to trim their resume flow down to a smaller number they haven't made a terrible choice. What's a better one?
I've tried to figure it out every time I've had to hire someone. The best luck I've had is with prior knowledge of the person (worked with them in the past, knew them from an Open Source project, etc.). I'm suspicious of the network hiring process, though, as it seems to narrow the pool too much, and certainly doesn't scale. I think it can also bring about quality degradation over time as people bring in people they like rather than people that are the best.
I just have a sneaking suspicion that some of the things that Google does wrong could possibly be attributed to hiring predominantly from the "teacher's pet" archetype.
Keep in mind this guy started in tech support. When you describe Google as requiring a "top-tier degree" you are thinking of software engineer positions. If you want to get a job at Google doing tech support, or working in a datacenter, the hiring bar is lower.
So, maybe Zeke is an exception at Microsoft, too, and this really is just some straight up astroturfing. I'm sure one could easily find a few dozen team leads at Google that don't sport a fancy degree. But, if Microsoft doesn't actually want to hire more people like Zeke, it seems like a poor choice of story to tell.
Mind you, it took him a pretty long time to do so, and lots of things could have gone wrong on the way, but its definitely possible.
Of course, that might not get you into a software engineer position at Microsoft anymore, either.
"If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials, and it will give you a deeper understanding of the field, but if you don't enjoy school, you can (with some dedication) get similar experience on the job. In any case, book learning alone won't be enough. "Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter" says Eric Raymond, author of The New Hacker's Dictionary. One of the best programmers I ever hired had only a High School degree; he's produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub."
It's definitely an uphill battle if you don't have a CS degree from a top college. I will be the first to admit that having a top university on my resume made it significantly easier to get hired. Remember that, with the sheer volume of resumes that these companies get, it's impossible to interview everyone. I did a lot of phone screens, and of the people with exceptional resumes, about 90% weren't that impressive when you talked to them on the phone. It just wasn't possible to talk to everyone.
If you don't have a degree but are an exceptional programmer, getting a job at a top software company is going to take a lot more perseverance, but it is definitely doable. However, in most cases it's probably going to take more effort than just figuring out how to get the degree.
I can't find any mention of it on the Microsoft jobs site. Maybe it's become a casualty of the recession. From what I can tell it started around 2006, so it would not have affected Zeke.
Berkeley used to have a "computer science re-entry program" aimed specifically at people who wanted to go to graduate school in CS but who had a degree in something other than CS, like, say music or history or whatever. The idea was to take people, then help them learn what they needed to know in a year or two, and finally help them navigate the grad school admissions process. A secondary goal was to increase the number of women and minorities in CS grad school. This worked well from what I understand, but a combination of funding cuts and Prop 209 killed it. http://portal.acm.org/citation.cfm?id=1008940
When I was in university I was doing a cross-discipline degree in mechanical and electrical engineering. Not your usual hacker program to say the least. I, however, coded like mad in my spare time (and have since primary school), and even found ways to incorporate a lot of software into the decidedly mechanically-slanted work I did in school.
I worked at numerous software companies during this time as an intern - Apple, Amazon, and a couple of smaller ones people have no doubt never heard of :) They seemed to like the work I did as well, since all of them invited me back for a second go.
Google, however, never touched me. I applied to their dev positions again and again (for internship and full-time) and never got a peep back except the occasional "you don't fit anything we have right now, but thanks!" message. I even got recommended by someone who worked there, and that was still no dice.
I also noticed that, despite the number of interns Google was hiring from my school, almost all of them were CS students, very few engineering students, and certainly none outside of the traditional computer engineering departments.
In the end, near graduation, I was courted by Microsoft, Amazon, and a few smaller companies, and Google still hasn't given me a dev interview ever :P
After all, who hasn't wondered whether IE wasn't written by an errant gas station attendant who just wandered into the MSFT offices to use the bathroom?
You're wrong. Let me add one more anecdote: I know someone who dropped out of a second- or third-tier tech school after five years of moderate GPA, in 2000. He started work at Google three months ago. Yes, in engineering.
From the looks of this thing, I am guessing that Microsoft is losing all the best hires to google and startups, and they're hoping to reverse the trend. Seems kind of par for the course, doesn't it?
Look, why is it so strange that Microsoft has a blog profiling people around the company who like their jobs? Are we supposed to cut ourselves every morning because we work for the "evil empire"? I don't understand why you think the site is somehow ridiculous, evil or insane. You know, of the 90,000+ people Microsoft employs, most of them actually like what they do.
Astroturfing implies that something is not true. Are you seriously arguing that people who work for Microsoft cannot possibly actually enjoy it?
The reason this site looks fishy is because it is pretty far from the way Microsoft usually presents itself. This blog seems to be going out of its way to find people who don't look like typical Microsoft employees, the interviewer asks them non-Microsoft questions, and so on. It's trying way too hard to present Microsoft as being a place that employs cool, edgy people.
Not at all! Astroturfing is not about lying, it's about creating a false impression of disinterested third party opinions, when the whole thing is controlled by an interested party.
This site straddles the line. They're not hiding their MS affiliation, but they're not drawing attention to it either. The suggestion is that there's this cute emo girl who wanders the halls of Microsoft because she just loves being around guys like this. Let's face it, having a girl like this be fascinated with the details of our work probably ranks pretty high on (male, heterosexual) hacker fantasies. And that was the whole point.
Furthermore the probably astroturfed comments also give us a false impression that other people think MS developers are pretty rad.
I honestly did have to check whois. When I first saw this, I thought it was someone making fun of Microsoft.
The ironic thing is, if it had been a parody, I'd have killed it, because it was (or would have been) so heavy handed. But since it's really from Microsoft, it's on-topic, because it's an interesting data point about how completely the company has lost its way.
It goes back many years:
http://video.google.com/videoplay?docid=7107499611244156089
http://www.youtube.com/watch?v=EZvhPGXrg0g
http://www.youtube.com/watch?v=4A_Kkb9w5bw
They're all pretty uncomfortable to watch, and are like a parody of someone trying to be funny.
However, I don't think Microsoft not getting it is sufficient reason for us to ignore them. They've done something really right somewhere along the way. I'm not sure exactly what it was, or if they're still doing it, but perhaps staring at it from multiple angles will help figure it out.
A university education demonstrates a commitment to studying for a reasonable period of time, which in itself is something valuable, however, anyone that has had more than a decade of industry relevant experience is self taught. After that time, what you learned in school pales into insignificance compared with what you (hopefully) have learned on the job (and in side projects).
The computing landscape changes every decade or so. The last one has seen dynamic languages come to the forefront and be actually used outside of school projects. And of course web development is completely new. It bought with it an entirely new sense of scale (think of Facebook's image serving needs, or Google's pagerank number matrix math)
I'm glad for Zeke and I'm glad for MSFT that they have hiring criteria that make sense. People have wrongly in my opinion written them off in favor of the new hotness (GOOG), but I am a little reluctant to be so hasty. While its true that I haven't used (or needed) a MSFT product for a while, I am also not naive enough to realize that a software developer in San Francisco isn't really typical of a computer user, when averaged over the globe.
Oh and PS: You might notice that I use all manner of social media sites like Flickr and YouTube on Microspotting. You might notice that I publish the site using an open source content management system. Before you get all “ZOMG, TRAITOROUS MICROSOFTIE!!!11!1!!” understand this: I don’t buy into the idea that working at Microsoft means you can’t use competitors’ tools. In fact, I think that’s the best way to stay in touch with a constantly shifting, super exciting industry. I’m a Web 2.0 geek, so I use whatever tools interest me at the moment — regardless of who makes them. Working at Microsoft does not equal flunky.
I have been told that Microsoft employees are discouraged (perhaps even forbidden) from contributing to Free Software projects. Can you refute this?
That said, if you work on IE in your day job and want to contribute to Firefox on the weekends, that wouldn't fly for obvious reasons.
Contributing to Microsoft-owned open source projects is acceptable, in some cases. A small number of products are run in an open-source manner within Microsoft, and actively recruit contributers inside the company.
I don't want to talk too much about internal policy -- I'm sure the legal office (LCA) wouldn't appreciate me pontificating about how cracked-out I think their opinions on F/OSS are -- but in general, 'forbidden' would be a good description, both for contributing and just reading code. There are exceptions, but they have to go up several levels of management and be directly work-related to be approved. (I think MSR is a different world, though.)
Honestly, most devs I know are too slammed with work as it is to keep up with a large-scale F/OSS project after hours. Every once in a while you get enough of a breather+motivation do small hobby projects and keep up with new technology.
The F/OSS restriction is the #1 thing I don't like about my job, but honestly, it's about the only thing.
Just saying.
The point of this article is not the way you learn to program. The point is how the company attracted someone and inspired him to fullfill his potential, and in the end be a true asset to the company. The right to go to the toilet whenever you want is just a simple simbol for a good working environment. A song of a caged nightingale is never his best.
1) IE is a REALLY stable/reliable piece of software. I don't think IEs failings are remotely technical. They are the strategic choices they made. 2) This guy is an high-level engineer. At Microsoft, I believe that gives him a seat at the table in terms strategic decisions, but it's a big table.
Edit: I don't mean to offend people in this community working for Microsoft. But this is one of the best example of why I hate marketing.
Visiting the website convinced me even more that using the open-source LAMP stack and an open-source CMS is easier than using Microsoft technologies. Even if you don't consider the additional costs because they would have been used their own products.
Had a CS degree?
If you cannot get a job where you can go to the bathroom whenever you want, here's a tip: switch countries, because the one you are in is fucked.
Fuck CS college degrees, they're worthless--give me the autodidact guy who learned it all on his own anyday. And no, I'm not some guy who doesn't know CS--anyone want me to hand-hold you through the steps to derive the existence of NP-Complete problems in Cooke's original proof? Or how about let's implement a red-black tree entirely from memorizing the algorithm?
Odd that Microsoft's culture has always followed the hacker ethos, caring only about how smart and capable you are to let you work for them, yet all of their software is crap, while Google will only stoop to maybe consider you if you have a CS degree from Stanford. Whether Google's software is all crap too, we need another 3-5 years to settle that decision.
There's nothing wrong with self-taught. Many great scientists and inventors have been self-taught (eg Michael Faraday).
Also, I'm the opposite of his guy. I went to Oxford. Studied mathematics and computer science and stayed and got a doctorate. I would suck at leading IE development.
As a hiring manager I look at what people can do, and then I look at their education. I do this becausesome of the best engineers I've worked with majored in non-CS/EE.
BTW I am hiring Java developers in London.
I couldn't resist though. after all the hundreds of hours I've spent dealing with IE related issues, the lead dev learned CS on the bus. It's just too poetic.
The web development world is basically the Wild West. There aren't really any rules. The standards we do have can be vague or incomplete. At some point you find yourself making the decision to follow web developers' intent instead of a so-called standard.
Pile on top of that a desire on Microsoft's part to take every opportunity to keep people on the Windows platform and you've got a recipe for disaster for anyone who has to support multiple browsers. I don't think there's any group of developers that could produce something in that kind of environment that we would be happy with.
I was frustrated by all the wasted effort,
so I decided
to uncancel my small part of the project.
I had been paid to do a job,
and I wanted to finish it.
My electronic badge
still opened Apple's doors,
so I just kept showing up.
http://www.pacifict.com/Story/Ultimately, everybody is a self-taught programmer. I can't teach you how to program any more than I can teach you how to walk. Programming is one of those things you have to do in order to learn.
I guess that's because I was learning CS by reading books in my parents' basement instead of on a bus, right?
Which is what university does. Picks the books. Then tests to see if you really read and understood the material. Plus you can go to lectures if you like to have the prof explain what's in the textbook with notes and examples on the blackboard.
I have a degree but low tolerance for the academic environment (nothing wrong with it, just doesn't suit my personality).
That said, I think I've met a few self-taught programmers during my career that read the wrong books, or more correctly never read the right books (since wrong books are just an opportunity cost). Some are great technicians but will never be engineers. Some have massive blindspots in their knowledge.
Some of the textbooks I read in university I would have never read on my own. So university forced me to read them via degree requirements. Not knowing some of that stuff would have been a handicap at times.
So there's university education for you in a nutshell: forcing you to read books you didn't want to so you'll know a few things you otherwise wouldn't have. Totally worth the four years and big bucks.
You learn programming from code.