Wednesday, April 16, 2008

Listening while coding

I sometimes get on these kicks where I can only work while listening to music. Other times I need silence. Lately, I'm in an unusual situation where I'm getting my best work done listening to This American Life episodes. I only recently learned about this wonderful radio show, but in the past 3 weeks I've logged well over 50 hours listening to one program after another. They have archives for the past 10 years that you can stream for free. There are tons of really interesting programs and somehow you can listen and code at the same time. Definitely worth checking out.

Monday, April 14, 2008

On interviewees' questions...

I do a lot of interviews these days and I'm always amazed at how much trouble people have asking questions. There are lots of good questions you can ask, and several bad ones. For a brief discussion of this (and a fantastic book about managing software engineers) check out Managing Humans.

Here are some bad questions (often asked by otherwise good candidates):
  • What exactly does this company/office/group do? [you should know this and so this really reflects badly]
  • How well did I do? [no way... you didn't just ask this... I don't believe it... ugh... most likely this means you did badly - if not you just lost several points]
  • How can I do better in the next interview? [are you serious? never ask this]
  • Anything about money [unless maybe you're talking to an HR person, which if I'm interviewing you, you're not]
  • I can't think of anything [nothing? nothing at all? really? you know you might have this job for the next 5-10 years; it could be thousands of hours of your life; it might keep you up at night from time to time; it might be the job you've always wanted; it might be the best decision of your life; it might be the worst decision of your life; are you sure there's nothing you want to know? really?!?!]
For me it's very simple. Ask two questions to each interviewer. Clear, concise, insightful questions. I find it easiest to ask one question about the job or a specific project/product and one about the company. And what's a good question to ask about each one? How do you know? You research it in advance! Know what your company does, come with an idea about what your job might be, and find things that interest you in these areas to ask about. If there's nothing that this company does that really interests you, you don't want to be there... really you don't.

Interviewees' questions don't make or break the interview - their answers do. Still, interviewers (especially if they're developers/engineers/etc.) like to know that their potential coworker has interesting things to say and shows some interest in what's going on. Think about it - this is probably what we want to do and we're here doing it. At least pretend you're interested.

But of course if you're just pretending... we'll know.

Saturday, September 1, 2007

Admitting mistakes

Yes, I was wrong.

In a previous post, I argued that you should clear out your inbox in the morning, evening, etc. Recently, I finished reading "The 4-Hour Workweek" (yes four) by Timothy Ferriss. Highly recommended, despite some obvious issues with his methods.

One excellent recommendation he makes is essentially this: "Do not clear out your inbox first thing in the morning." Why? Because you should have a plan for what to get done that day and clearing out your inbox does two things: 1) it takes time. often lots of time. and the morning is (for lots of people) the best time to get things done because other distractions are minimal and 2) it inevitably changes your priorities for the day. The second is the key here. I used to wake up in the morning thinking: "today I need to do this, this, and this". Then I would read my email and someone would say "can you do this for me? it shouldn't take long" and another would say "we should really do this. how soon can it be ready?" and "it would be great if we could do this today". Suddenly the 3 tasks I had in mind are replaced by other tasks (often less important) that I feel obliged to do today. So, nothing I want to get done gets done.

Over the past month I've followed Timothy's advice and not checked email until about 10am. By this point I've already got about 2 hours of work done on the tasks I really want done. In lots of cases, my work is half done by this point. Now the distractions begin, but I have about 6 hours left in my day and much of my work is already done.

This has really improved my productivity and made me feel a lot better about getting the tasks I really want done done. Recommended.

Wednesday, July 11, 2007

Embracing the present

It's been a while, I admit. But this time has been very productive. I got married and enjoyed a two-week honeymoon in the Greek Islands. Things were and are vey good.

Now I'm back in Waterloo and taking on more responsibilities at work than ever before. What does this mean? Three things:

1) More meetings - an unavoidable plague as old as work itself

2) More email - and thus more and more semi-involvement in things I really shouldn't allow to distract me

3) More mobility - in my case meaning the need to embrace technologies that I, for obvious reasons, should be using. In fact, this post is being entirely prepared on my new Blackberry Curve, not because I need to (my laptop's sitting right next to me) but so that when the time comes that I actually need to accomplish tasks like this in an airport, on a bus, or in a meeting (see #1 above), I'll be ready.

I would like to address all three of these points, but I have to say typing on this keyboard is painful beyond my wildest expectations, so let's just talk about #2. How do you/I deal with a big increase in email?

My current strategy has got me pretty far but is starting to buckle under the weight. It goes like this:

1) Keep the inbox clean. I use Gmail filters to apply labels to any mail from a mailing list. (Nearly) every mailing list has its own label, so I'm up to about 30 now. But the nice thing about this is I can always see unread counts for every mailing list. A clean inbox is a happy inbox. Personally, if after sorting through my mail there are still more than five items in my inbox (meaning I've read them but have to respond) I get nervous. I sleep well when the count is about 2.

2) Keep label unread counts near zero. This way I can easily scan which lists had recent activity. Then I go through my labels in decreasing importance/relevance to me until I've spent more than 5 minutes. After this point, I mark all the rest as read and get back to "real" work. It's possible that I would miss some things this way, but to my knowledge it hasn't happened yet.

3) Sort out all email at end of day and beginning of day. If I don't do this, email piles up so badly in between that just opening my inbox makes me depressed.

The real question for me is how to do #3. My ideal situation would be to get a treadmill, a wireless mouse, and a giant projection screen so I could read while exercising (which I absolutely can not do on a normal sized screen). Unfortunately, I'm not there yet. I just suffer through with my laptop while half-watching Hell's Kitchen.

I really do have more to say here, but my fingers are absolutely killing me.

Saturday, April 28, 2007

Hiring at an "Insane" Pace

Google wants to grow. Some would call the growth plan aggressive, others call it insane. I prefer to think of it as ambitious. While the exact numbers are sometimes tough to come by, you can get some approximate numbers on many websites. Take for example, the numbers here. If these numbers are to be believed, Google grew at a rate of 100% per year for the past two years. For a company with several thousand employees, this is pretty good. The growth rates show Google passing Microsoft by 2010. Of course, it's very unlikely that the growth rates can be sustained. But we want them to be.

First, it's clear that we could hit these goals in the short term. We get many, many, many resumes a day. In fact, if we hired everyone that applied, we could probably double in one day. Is this a good idea? Probably not. Clearly, many of the applicants would not be qualified, meaning we would not necessarily get much production from many of the hires. Worse, many of the hires may not be "Googley". I personally believe that this is the most dangerous hire to make.

This deserves more attention, because I haven't seen enough focus placed on this in any other company. Anyone who does not fit the culture of their group, office, or company is very damaging. For example, when I interview someone, the only attribute of a candidate that essentially guarantees an unfavourable review (from me) is arrogance. Don't get me wrong - some people are absolute superstars and they should be confident and proud. But Google is full of smart people, many whom were at the top of their class and were suffocating in school or in other work environments. I don't care who you are, you're applying for a company that employs Vint Cerf. This guarantees one thing - no matter who you are, you will no longer be the smartest person in your company. This is a good thing! This is (or should be) why you want to be here.

Google offers lots of benefits. Everyone's seen the cafeterias, the massage chairs, the gyms, the prestigious visitors, the big monitors... whatever you consider a benefit - Google probably offers it free. But this is not why people want to work for Google. They want to work there because some of the greatest minds in the world are there. People at Google solve interesting problems in interesting ways, because some very smart people are bouncing ideas off even smarter people. If you were in the top 1% of your class, this is probably the exact environment you've been dying for all these years.

Okay, enough of that... Back to the matter at hand. How can you possibly sustain this growth rate (intelligently):

1) Don't lower your standards. Google has lots of smart people now and these people love working with/for other smart people. It's extremely valuable to know that (nearly) every line of code you will come in contact with was written by someone you can trust. There's nothing more frustrating than struggling with code, or a person, or a group that you don't think you can trust. This means you need to believe that everyone in the company knows how to identify, formulate, and solve problems intelligently.

2) Get a lot of referrals. Referrals are (and have always been) the best source of potential candidates. It's often the case that good, smart people know other good, smart people. They may be former classmates, co-workers, friends, anything. There are clear advantages to these people. For one, they probably come with positive comments and information, before you even interview them. Second, they have some attachment to the company, however small, through their referrer. Third, they often consider referrals flattering. I think lots of people would be happier having a company that wants to woo them, as opposed to having to seek out companies to sell themselves to.

3) Get a lot of resumes. No matter how many people you have, they aren't connected to everyone. Always allow people to apply directly and be diligent about finding the best resumes as they arrive. This bring us to...

4) Filter aggressively. This may seem cruel, but is very important. Interviewing a candidate is very expensive. A phone interview is not as expensive, but still requires anywhere from 30 minutes to 2 hours for someone to prepare for the interview, conduct it, and write feedback. It's frustrating (and sometimes even depressing) for an employee to interview candidate after candidate that is clearly not qualified. This means you want to get to the point where most (or ideally all) candidates that you contact have some reasonable chance of succeeding. This is important because it reduces the strain that the hiring process places on existing employees. Perhaps even more important is that it reduces the negative impact on unsuccessful hires. This brings us to...

5) Try to make the process pleasant. Not everyone is going to get hired. This is a fact at any company. And in a company with a very selective interview process like Google, most people will not get hired. Or at least, they will not get hired on their first try. Not getting hired sucks. You can find many blog posts on the web about people who were mad about not getting hired. They blame the interviewer, the company, the weather, anything. This reflects badly on the company and fosters an unpleasant image of the company's hiring process. There are two important scenarios here: 1. If someone does not get hired (but nearly did), you want them to want to try again. Make sure they enjoy their process, get them excited about working for your company, and encourage them to try again. In a commitee-based hiring process (like many companies, including Google, use), if you nearly get hired this time, you may get hired next time. Companies strive for consistency in the process (and this is especially true of Google), but the process is never precise enough to always make the right call on cases which are not clear-cut. The process should always work for the superstars (the top, say 20-30% of your hires) and the definite not-hires, but in a competitive hiring environment (like Google's) the other 70-80% of the current employees are probably "borderline hires". By this, I mean, for example, that if they went through the same type of interview process 10 times, at least one or two of those times, they would not pass. If this represents the majority of your current employees, it will likely also make up the majority of your future employees. Protect this resource! 2. If someone does not get hired because they are clearly unqualified, you want them to enjoy their process but accept that this is not the job for them. There are many smart people, who simply apply for the wrong job. We want them to enjoy the process (even if they didn't do that well) and understand that it's not that they're not smart, but simply that this is not the job for them. Keep them in good spirits and thinking positive about your company and how you treated them. They might have friends that are a perfect fit and you don't want to lose them.

6) Hire everywhere. This is obvious, but is key. If you can set up offices all over do it. If not, travel everywhere to find the best people. Seek them out and bring them in. This subject doesn't get me as passionate as (5) though, so let's leave it there.

I spent the most time talking about point (5) and there's a good reason for this. This is the one thing companies seem to worry the least about. Lots of people leave their interview unhappy. And when they don't get hired, they carry around a grudge. Your company does not want people carrying grudges around. The tech sector is large, but the clique of top people in the tech sector is small. Part of staying on good terms with these cliques is keeping everybody as happy as possible, whether things go well or badly for them.

If you take nothing else away from this, take this one thing that I now firmly believe is essential to growing quickly and effectively: be good to both the hires and the passes.

Wednesday, April 4, 2007

Review of "The Tipping Point"

Finished reading Malcolm Gladwell's "The Tipping Point". This is quite an interesting book, but I can't say there were too many new insights here.

The basic idea here is pretty simple: small things (or several small things) can lead to epidemics. He gives many examples including crime waves, diseases, fashion, TV shows, etc. He uses this to motivate word-of-mouth marketing. This comes down to the Mavens (well-informed, early adopters, trusted by others for advice), Connectors (who communicate effortlessly with others in many different walks of life - experts in "weak relationships"), and Salesmen (who can sell anything to anyone anytime). To simplify all his arguments: win favour with the Mavens; facilitate communication with the connectors; wait for the salesmen to make you rich.

The book is worth a read, but don't expect any answers. Yes, everyone wants word-of-mouth (or "viral") marketing. Everyone wants their new website to be the next YouTube. But I'm telling you right now, it won't happen. Or it probably won't. You want to be in the 0.001% and so do I. Right now, we're not. And we might as well get used to it.

Everything the author says about how products "tip" (i.e., go from relative unknowns to huge money makers) is believable; however, as the book says, you can't force this process. Any attempt at viral marketing comes off as phony. So although you want this, and in a sense you need it; if you're thinking about trying to make this happen, you should probably forget it. Know that many, many people have failed before you. Think hard about all the issues that can come from this and make sure you avoid them.

There's so much to say on this topic that I will certainly come back to it later. For now, let's just say that mastering viral marketing is like finding the holy grail, and your chances of achieving it are about as slim.

Saturday, March 31, 2007

Google Beyond Waterloo

As Google grows, it helps to get out and visit new people and new offices around the world. Travel is a small part of my job, but I'm always up for it. In the last couple of months, I was in London (England) for one week and California for another. There's nothing like drinking pints of English beer in a real British pub. And visiting California (at +20c) during a Waterloo winter (at -20c) is not too bad either. The plan is to visit as many Google offices as I can find excuses for. Next stop: New York. Or Montreal. Or Hong Kong. Or Sydney, Australia. Or Sao Paulo. Or Bangalore . Or Dublin. Or Munich. Or Istanbul. Or wherever Google opened a new office this week.