| Subscribe via RSS

Seattle Times Article: Google vs Microsoft

The front page of the Seattle Times today featured an article on me (and some other people) in reference to employees leaving Microsoft to go to Google. After three internships at Microsoft and a two year stint as a Microsoft campus representative, why didn't I go to Microsoft?

I went to Penn's career fair yesterday representing Google and that seemed to be the popular question there as well. I guess most people just assumed that I'd go back to Microsoft.

So what happened?

It wasn't a clear cut decision. My offers at Microsoft were from Mobile Devices and Windows Media Player, and I was really excited about Mobile Devices. At Google, I didn't know what I would be working on, and I'm not that interested in server-side or web programming.

But, there were lots of little things that made me lean away from Microsoft:

  • I wanted to do some feature design work, and Google lets developers help drive the product. At Microsoft, while developers can be "in the feedback loop," they're not driving the product - they're just giving occasional feedback. No, it's not the same thing. The PMs at Microsoft do all the design. Yes, there are some group that are very technical (aka, compilers) that are more dev driven, but those aren't groups I'm interested in.

  • I'd been getting this vibe from people that Microsoft's culture was changing... for the worse

  • Microsoft, in my experience, seemed to take a "good enough" approach rather than truly driving for excellence. I didn't really recognize this until I went to Apple and I saw the contrast between the two attitudes. Apple really seemed driven towards perfection, where Microsoft would shrug its shoulders and say "eh, good enough." Google's attitude, although I had never worked there, seemed more similar to Apple's.

  • Microsoft was cutting back on benefits whereas Google seemed to be expanding their benefits. Sure, maybe Google will change, but there's nothing holding me to stay at Google forever if it does.

  • My last summer at Microsoft just wasn't much fun. I didn't exactly have the best manager, and I just wasn't that into the product I was working on. While that may not have been representative of Microsoft, I can't say that didn't make Microsoft a little less glamorous in my eyes.

  • Microsoft didn't really seem to work together as a company; instead, it seemed to have a "not my team, not my problem attitude."

  • How many products are Microsoft do people say are just "awesome?" Not that every product is bad - I'm not one of those people that sits and complains about Windows. But really, how many products are customers really excited about? Xbox, maybe. What else? If your customers aren't excited about what you're doing, will you be?

  • And finally, let's face it: it's nice not working for the "evil" empire. Microsoft is a monopoly - maybe not in the technical sense of the word (it's debatable), but in the sense of it making it damn tough for anyone to enter the industry because Microsoft can always bundle software. It's nice working for a company that you can really feel good about - and that actively remembers to not be "evil."


So those were all the little things that were going on in my head when I was debating the offers. I guess what it comes down to is that once I spent sometime at Apple, I realized that Microsoft is not as great as it seems.

Meanwhile, Google had these great things about it: the 20% time projects (engineers are encouraged to spend 20% of their time on a different project), free lunch, different locations, etc.

For some reason though, it still wasn't clear cut. I really was seriously considering the Mobile Devices offer. In the end though, I realized that I was simply more excited about Google, and nothing Microsoft could offer me could make up for being excited about your job.

Googlage

I think I shall coin a new term: "Googlage." A 'Googlage' is a Google query term that leads you to a particular website. To be reasonably called a 'Googlage,' the page in question should be listed on the first page of results. From there, you have Level 1, 2, ... Googlages, which refer to the ranking of the results.

Now that we have the definition covered, I've been trying to find my favorite Googlage for my site. The best one I've found so far is talk to gayle, although google gayle has a nice alliteration to it. I'm still trying to find a good one that doesn't have my name in it. C# LaTeX Render used to be a Level 4 Googlage (which was interesting when I just happened to stumble across my own resume in a search), but sadly, it has falled down to Level 9.

Anyone find any good googlages?

Computer Science Curriculums: Practical or Theoretical

Inevitably, I find myself involved in discussions about what makes a good Computer Science curriculum, and there tend to be differing opinions as to whether a more theoretical curriculum or a more practical curriculum is better.

My university, The University of Pennsylvania, leaned very heavily to the theoretical side. Out of the 15 requires computer science courses, only one required any significant programming after freshman year (Operating Systems). Sure, you have electives and your senior project, but very few electives even have programming. In my mind, it's embarrassing for students to graduate without really knowing how to write code. Like so many other universities, Penn feels that theoretical skills were more important, as pratical skills become quickly outdated.

I happen to disagee somewhat, but let me start out by stating that you should maximize the following things in designing a curriculum:

  • Long-term value (7+ years after graduation)

  • Short-term value (present day to 7 years after graduation)

  • Student interest



Long-term value:
Theory certainly holds long-term value - after all, languages change, theory stays true. But does that make theory inherently uber-useful? Most engineering students, even if they start off in a technical position, eventually move on to less-technical roles where they won't need to know the details of P vs NP. What does hold long term value? Learning to push yourself, stretch your mind, and critically analyse problems. Both theoretical work and practical work can do that.

Short-term value: Short-term value is a little bit easier question to answer: projects. Projects teach design skills, planning skills, team working skills, critical thinking, etc which you will need throughout your life. Furthermore, they can actually be a way of applying ideas from theoretical courses. Use projects to reinforce you short-term skills (security, c, c++, user interface design, embedded systems, etc) and you will have both short-term and long-term benefits.

Student interest: Not only do students learn more in courses that they're interested in, but students are more likely to independently seek out knowledge outside of that course. Teach to a student's interest and they'll learn more in the long run than you could possibly teach them in that course. Many students (no, not all) feel a much great sense of accomplishment by creating an actual GUI application versus figuring out some proof. In fact, Unlocking the Clubhouse argues that women, in particular, tend to be more interested when they're doing GUI development. GUI development done with .NET (or Cocoa) is incredibly easy. If you just teach students a little bit, there's a good chance they'll continue to write more and more apps because it comes in handy.

So how would I design a computer science curriculum?
First year: Programming languages - probably Java, but at some point do some .NET GUI development. Not for the whole semester - just a bit of it to plant "seeds" where students can start doing development on their own.
Second year: Course on software engineering. Additionally, start teaching things like security, algorithms, architecture, etc. All classes should have projects where programming is required in them. This year should have more theory than the first year.
Third year: Shift a bit more towards theory. Require some sort of "junior-project" where students work individually for an entire semester on a project of their choosing
Fourth year: Full-year senior project, plus theory courses.

Oh, and all students should have to learn how to write well. Require writing courses of any kind.