CareerCup

I'll admit, it's been a long time coming, but it's here. CareerCup has finally launched. Yes, that means good-bye to glaak.com/interviews. It's been fun, but we had to say goodbye to it someday - too much stuff up there, and it just didn't scale :-(.

CareerCup is even bigger and better. Here are just a few of the things it can do:

  • Technical Interview Questions: Yep, all the same questions - and responses are there from before!
  • Grouping by Categories: Questions can now be tagged as "Coding", "Algorithms", etc. This helps you more efficiently find relevant questions.
  • General Questions and Comments: There's now a section just for all the general comments (or questions) about someone's experience
  • Shout-Outs for Help: No more adding a comment just to say "can someone help me?" Instead, click the "Shout-out for Help" link next to any question and the question will be added to a special Shout-Outs for Help Page
  • Question of the Day: Each day, one question will be advertised as the Question of the Day. See a question you think would be a good match for that? You can click to suggest it for Question of the Day
  • Add a Question: Instead of having to add your questions all at once (which I think confused people), you now just add a single question (but you can add as many as you want
  • Message Board: A messageboard for all your general thoughts or questions (What are the best courses to take in college to get a job? How can you improve your resume?, etc)
  • Blog: What site would be complete without a blog? Right now I've dispensed a few pieces of advice on it: how to prepare a resume, and how to decline offers politely. Got something you want to write? Let me know!
  • Job Search: Employers can post their job descriptions, and you can post your resume.
  • User Accounts: You can now register an account which allows you to do all sorts of things. Employers can contact you, you can post your resume, etc. We even show stats about how much people have liked your questions and comments, to show off just how smart you are!
  • Rate Questions: You can now rate questions as "Love It!" or "Hate It!" (or mark something as spam).
  • Send Mail: You can send private mail to users. This will also be a way for employers to contact you.
  • Favorites: Track your favorite questions with the click of a button, and receive an email whenever someone comments on them.

I think this is a great improvement over the old site in many ways, but I know it's far from perfect. Play around with it and let me know what you think by reporting bugs. I especially want to hear from those who were familiar with glaak.com/interviews and think that that site (even if in some small, minute way) was better.

Happy Interviewing!

Lego Logos

A lot of people ask me what it's like to work at Google. Instead of using the same old words like "it's a lot of fun", here's a little snippet from the Google Talk Blog


There's only so much silly putty you can play with before you start finding globs of red goo under your fingernails, in your keyboard and caked into the carpet. You realize, then, that's it's time to find new toys.

Of all toys, are there any more Googley than Legos? Not only does the color scheme for lego bricks match Google's own red, yellow, green and blue, but legos were also used in the initial Google computers. Even the Google booth at the lego theme.

So, software engineers Bob Day, Sean Egan and I set off for the Lego Store in Bellevue, WA. Yes, that's right - an entire store dedicated to legos - and it's every bit as good as it sounds.

Naturally, we head straight for the moving parts: wheels, axles, hinges, and doors. We emerge one hour later, armed with a large pre-packaged set of assorted legos (for the basics), and two hand-picked cups (for the moving parts and specialty items).



Back in our office, Sean and I debate what to build and decide on a Google logo constructed entirely out of legos. The tricky part here is creating the curvature of uppercase and lowercase G's. I get to work on the two G's while Sean focuses on the two O's, the L and the E. A few clicks and snaps later, we're almost there:

One minor detail: for a proper Google logo, the lower case 'G' needs to hang below the rest of the characters. There's just one way to solve this: elevate the rest of the letters (and put a lego man beneath it, just for fun).

What was next on our list? Google Talk! You see, a Googler's work is never done...

BlackBoxJobs.com

About a year ago, I put up a page of the technical interview questions I had been asked, which shortly found its way to http://www.glaak.com/interviews . It's grown a lot since then, with new questions from friends and helpful readers. I've gotten a lot of great feedback about the site, and I'm pleased to say that I will be moving the page onto its own url which it rightfully deserves: BlackBoxJobs.com.

BlackBoxJobs.com is up and running, but I think it still has a little ways to go before I feel comfortable redirecting traffic over there. To get there, I'd like to know: what do you think?

Here's what's different about the new site

  • Improved organization: Instead of throwing all the content up on one page, it's broken up across multiple pages. As we get more questions, this'll help it scale more.
  • Grouping by Question Type: Now, you can view just the coding questions, just the algorithm questions, etc
  • Message Board: A message board / forum for asking questions about the job search process.
  • Blog: Only two entries right now, but more to come! (Want me to write about something? Let me know)
  • Shout-outs for Help: A link you can click that'll flag this question as needing help. This'll advertise to people that this is a tough question and someone wants some hints
  • Question of the Day: Each day, one question will be advertised as the Question of the Day. See a question you think would be a good match for that? You can click to suggest it for Question of the Day
  • Add a Question: Previously, you could only add questions in bulk. Now, you can add a single question. I hope that this'll encourage more people to add questions, but it may take away value in that you can't see all the questions that someone got in a particular interview. What do you think? Is this a good move?
  • BlackBoxJobs: The name is a reference to this idea of "Black Box" where you can't see what's inside. I'll be honest - I'm not thrilled with the name. Got any ideas for a different name? (It would, of course, needs its own .com address - that's my main criteria). Seriously, any ideas for other names?

So, lots of changes. Please, check out the site and let me know what you think. How is it better / worse than the previous site? Any new features that you'd love to see? Any and all feedback is welcomed :-)

Women in Computer Science

Being a woman in computer science, I can't deny that I've seen some sexism over the years. Not the blatant "you can't do this" sexism that was prevalent thirty years ago, but rather subtle assumptions from people within the industry.

I've noticed, for example, that if I say that I work for Google and a male friend says he works for Microsoft (most of my friends in Seattle work for Microsoft), someone is much more likely to ask me what my position is - that is if they haven't just assumed outright that I'm in HR or marketing. When I say I'm a Software Engineer, many people are visibly shocked and almost skeptical.

A few months back, I went to an event where all of the 16 guys there happened to work for either Microsoft or Amazon. Guy #1 says to me after introducing himself, "So I assume you don't work for Microsoft." Guy #2 says "It must be great for you to meet all these techies... at least you have someone fix your computer." Guy #3 proceeds to explain to me what "beta" means. Thanks, boys, but I work for Google, I can fix my own computer, and I know all about "beta" ;-).

In truth, I really don't get offended by this kind of sexism; statistically, women in the US are much less likely to go into engineering and it would be difficult for anyone to be blind to this. The question is, why are there so few women in Computer Science and what can we do to change it? Actually, let's start with this: is the percentage of women in Computer Science that low (given our society, the times, etc)?

The Male / Female Ratio in Computer Science

I believe Computer Science is currently around 15% female. That figure alone doesn't worry me (hey, times change, it'll grow, right?). The problem is that the number has actually declined since 1980. Yikes.

Furthermore, I've been told by several people that parts of asia actually have very close to a 50/50 ratio. Why does the US lag so much?

Additionally, recall that fields such as medicine and law were at one point in time a male dominated field, but now have at least as many women as men - if not more.

So while things have gotten better in other fields or in other countries, it seems to have gotten worse within the US. So, yes, there is a problem... and time isn't just magically fixing it.

Why Aren't Women Drawn into Computer Science

This is a big question with many possible answers, but one important one is that women tend to be drawn to more social fields. From a young age, girls are taught to work together whereas it's seen as more "ok" for a boy to show off. As girls get older, it's almost difficult for them not to be social. Think of the uber-nerdy anti-social guys you know: how many women are equally anti-social? I can't think of a single one. Computer Science has an impression of cube monkey staring at their computer all days, and, if you're lucky, talking to those uber-nerdy engineers. That's just not that attractive of an industry to women who emphasize social interaction.

What can we do to change it?

Wish I knew... here are a few of my thoughts though with respect to this:

  • Women in Computer Science clubs: I'm honestly not sure how I feel about those clubs. Personally, they're not for me. I don't feel any need for this support network, and I worry that they promote a victim mentality to both to the women in the clubs as well as to men. But, perhaps if other women need this support network, then ok...
  • Developing an awareness of subtle sexism: Just because it's statistically true that a woman you meet is less likely to be an engineer doesn't mean that it's ok to make that assumption. While I'm not personally offended by these assumptions - I actually think it's somewhat amusing - it does affect the way you view women in the field. If you look at a woman and assume she's not an engineer, then you're more likely to assume that female engineer is less technical... and that's where the problem is. But, if you can consciously recognize that you make this assumption, it's easier to overcome it.
  • Turn it social: If women are less interested in computer science because it's less social, make it a more social field in college. Encourage students to work together and set up study groups for freshmen. Create social activities that people want to go to so that students meet each other. Assign team projects where different teams need to work together (for example, defining common protocols). Turn it into a social field.

Does being female hurt you in Computer Science?

There are pluses and minus. Sure, more people will know who you are, but people know you for the wrong reasons. It's probably easier to get an interview, but probably tougher to get the job (it's tougher to convince someone that you're technical if you're female). I'm not really sure how it all evens out, but here's what I will say:

Everyone will be judged prematurely for something. If it's not your gender, it's your race. If it's not your race, it's your sexual orientation, how you dress, what school you went to, what degrees you have, how much money you have, etc. At the end of the day, does it really matter what people are judging you for? Everyone's going to face prejudice; you just have to learn to shrug your shoulders and develop a thick skin.

Google and Open Source - and my crowded office

So about a month ago, this guy walks into my office and actually starts to do "work." It was my office first, dammit. I've been wondering who this guy he is thinking that he can just destroy my nice, peaceful, solitary office. Turns out that he's Sean Egan, the lead developer on gaim . Yeah, like that makes it ok.

What's he doing at Google? Mostly ping pong, some foosball, and occasionally he's doing some work on integrating voice into Gaim. Well, at least he's good in one of those three areas. ;-)

Speaking of open source goodness, Adium 0.85 just launched and it includes some work that I did to make it as easy as possible for users to use Google Talk from other clients. Now, I ask you - how many companies would actually encourage employees to spend their time helping third-party clients as opposed to trying to break them?

Once again, Google has re-affirmed its commitment to open source.

Oh, and this also means that I have had code from both Google and Apple (iChat) ship before my code at Microsoft... despite having been at Microsoft first. (Sorry, I just can't resist making little cracks about microsoft sometimes).

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.

I lied. Google talk is real. :-)

I lied. Google Talk does exist. Oh, and now that that's out in the open, guess what team I'm on? ;-)

Joe Beda (eightypercent.net) is also on the team and has more info on his website.

So I know what you're saying: do we really need another IM client? Google Talk is using the Jabber protocol, which is an open source protocol. Trillian, Gaim, iChat, etc can all connect to the Google service, since they support Jabber. So, different client, but an established, existing protocol.

What is Jabber? The way I always explain it to people is that Jabber is analogous to the IMAP or POP3 protocol. It's not an application, or a service - it's just a protocol. Much like Outlook / Eudora can connect to the seas.upenn.edu server using the POP3/IMAP protocols, the Google Talk / Gaim / Trillian / iChat client connects to the Google Talk server using the Jabber protocol. Open source goodness. :-)

And a screenshot:

Noogling

I am officially a Noogler: today was my first day at Google. I'm in Mountain View, CA at the headquarters for a week, and go up to Kirkland next week where I'll be working. No word on what I'll be working on :-)

Contest Winners

Well, the Xtreme.NET Challenge was a great success. Here are the winners:

1st: David Siegel, MailAssist

2nd: Wesley & Brandon Rosenblum, KnowtionNet

3rd: Matt Jones, FTP Studio

Finalists:

Jeremy Pfund, Chess Express

Ashfaq Rahman, QI

Chung-tah Tsao, Quattro

David, Matt and Jeremy were my students in cse099 this semester, and Wesley was my student last year. Go ahead, look at the other cse099 projects - some are them are pretty cool (LaTeX chat client, anyone?). I'm so proud of my kiddies :-)