3 Business Ideas: Experiment Often, Carefully, and Singly

business ideasWhat have you learned in the past year?  Jill Foster of WomenGrowBusiness.com asked me this question and posted my response here: 3 Business Ideas: Experiment Often, Carefully, and Singly.  You can read it there or below where I've re-posted it. ------

I started CareerCup to solve one part of software engineering interviews: preparation. Candidates who are interviewing with Microsoft, Google, Amazon, or other companies are historically under-prepared and consequently struggle to get hired. This hurts not only the candidates, but companies as well who can’t distinguish between bad candidates and poorly prepared candidates.

After launching CareerCup’s first (revenue generating) product in 2008, I spent the past year improving its products and services. In doing so, I’ve learned the following insights:

1. Be careful about your time is spent. We all want to believe that we’re the best at anything, but sometimes we’re not. And, even if we are, not all jobs are worth our time. I recognize more and more that the old saying “if you want to do something right, you have to do it yourself” just isn’t true.

I now have some fantastic people working for me in the Philippines, India and in the US to write, manage customer support, and do development. With their help, I’ve managed to finish a technical interviewing book, software engineering interview video, and a technical recruiting service. I couldn’t do it without them!

2. Experiment often, carefully, and singly.

While I fully encourage people to research ideas thoroughly, research is only going to sell you so much. Sometimes, you just have to make the leap and experiment with an idea. Experiment often.

That said, look closely at how you’re judging the results of an experiment. Are you looking at revenue, or conversions? Depending on your approach to sales, this could be a big difference. Experiment carefully.

When experimenting, only run one experiment at a time. Yes, yes, I know you have a million ideas and you want to dive into all at once, but patience here will pay off. If you run three experiments at once, how will you ever know which one made the difference, and how much? Experiment singly.

And, if you want to be super advanced, look into standard error. A little bit of a statistics can help you understand what’s random and what’s real.

3. Be organized.

I feel like entrepreneurs are inherently disorganized – we’re always in such a rush to jump into things that we can get overwhelmed.

A bit of organization can reduce your stress by clearly outlining what you have to do. It gets rid of the nagging “Oh my god I have so much to do” feeling and lets you react properly. Maybe you’ll realize that you don’t have quite as much work as you thought, or maybe you’ll realize that you simply have to reassign some of the work.

Either way, you’ll feel better.

I maintain a to-do list with what I have to do (I use Remember The Milk, or whatever works for you). For paperwork, little details, filing expenses and such, I let the “forward” button handle that (that is, I forward things to my assistants to handle). And, I try to respond to emails instantly – you’ll have to do it eventually anyway, so the sooner you get it out of the way, the less time for which it’ll be hanging over your head.

Outsourcing Your Life in 8 Easy Steps

Since discovering the wonder of outsourcing nine months ago, in October 2008, I've outsourced approximately 300 hours. That's 300 hours that I got to spend reading or playing (or working...) while various assistants re-formatted an e-book, researched traffic stats for competing sites, scheduled apartment visits, got price quotes for vacation rentals, designed posters for an upcoming party, performed bookkeeping work, handled support requests, and wrote software. All for a mere $3.50 / hour. (Slave wages? Hardly.)

Life post-outsourcing is much less stressful. Here's how you can get in on the action:

1. Understand what tasks you need help with: Spend three days figuring what you want. Each time you spend more than 15 minutes on a task, write it down on a list. At the end of the three days, go through your list. Which of these could you hire someone else to do?

2. Categorize the most important skills: What are the core skills that your tasks require? Photo editing, excel, etc? Is there particular software that your assistant needs? How good does the candidate's English need to be?

3. Post a job opening: I use odesk.com for finding outsourced assistants, because I love its transparency. I can see how many other jobs a candidate has (will they be too busy for me?), how much they've been paid (are they trying to overcharge me?), and their scores on a number of odesk-supplied tests. I post a suggested rate, and candidates respond with their own bid. Job applicants usually apply within minutes of posting a job opening.

  • Note: You might expect that if you post an expected wage of $7 / hour, no one will bid less than that. I haven't found that to be the case. Because you can see a candidate's prior wages, a person who's previously been paid $2 / hour has a hard time requesting $7. Furthermore, andidates are competing with each other to get each position, so they need to post competitive wages.

4. Interview via Instant Message (or Skype): I conduct my interviews over instant messenger. For an assistant, I'll usually ask the following questions:

  • What times of day are you available to work?
  • Are you available on the weekends as well?
  • Can you make phone calls, if needed, through Skype?
  • How much experience do you have with excel and photoshop?
  • [After providing a link to a recent news article] To better assess your English skills, could you please read the following article and provide a short (4 - 5) sentence summary?

You'll notice that my questions are very simple. Why? Because I don't think you can truly assess someone's capability without hiring them. So, I look for their English capability, confirm that they have the requisite software and skills, and then I hire them to test them out.

5. Hire Several, and Look for Quality not Price: You won't know how good a candidate is until they actually attempt a task and most, frankly, aren't very good. Hire several people, try them out, and then narrow it down to the best.

  • Don't automatically go for the cheapest. Suppose you have a $2 / hour and a $5 / hour candidate applying. If you have to spend even 20 minutes more time correcting the cheaper employee, it may be not worth it. Hire for quality, not price.

6. Clarify Expectations: Do you want an employee to make their own decisions? Or would you prefer that check with you first to see what to do?

7. Let Go of the Bad, Hold on to the Good: Some candidates won't be very good, but that's why you hired more than one. Let go of someone if they just aren't cutting it, but fight to hold on to the best. A good assistant is well worth it.

8. Go For It! Your new assistant will report his or her time to odesk.com, usually automatically using odesk's software (this software takes screenshots of their computer randomly while they're working, to ensure that their time reports are honest). Odesk will then charge you each week, giving you a short window of time to contest any charges. You can either IM or email tasks to your assistants. Note that both you and your assistants will be reviewed when you close the assignment, so it's in both people's interest to treat each other fairly.

Questions? Post them in the comments or email me.

Think Less, Experiment More: 5 Lessons on Entrepreneurship

A guest blog post I wrote for Women Grow Business:

Working for Microsoft, Google and Apple, I not only became a better engineer - I became a better entrepreneur. Their successes and failures, encapsulated in these five lessons, provided me with invaluable instruction in how to build a company and effectively compete.

#1. Build a large network. The “Biggies,” as I like to call them, have an unfair advantage: they have a network of literally thousands of experts. At Apple, I worked with some of the industry’s best designers. Microsoft has people who specialize in every conceivable role. At Google, I could walk down the hall and speak with the inventors of revolutionary technologies.

To compete with the biggies, you’ll need a network of your own. Get out to those start-up happy hours. Grab business cards. Set up coffee and lunch chats. And be open - you never know who might come in handy.

In Defense of Outsourcing

As I've mentioned before, I've started outsourcing. A lot. Most of the outsourcing goes to an (awesome) assistant in the Philippines, who does everything from online research to document editing. She's great, and she's quite literally changed my approach to working. Although most people are merely intrigued by my hiring a remote assistant, a surprising number tell me that it's unethical, supplying one of these reasons:

Exploitation: "You're only hiring someone from because they're cheap. You're not even paying them minimum wage!"

While it's true that some people I hire are paid well below US minimum wage (you can find assistants for as little as $1.50 per hour, though mine are paid considerably more), it's hardly exploiting them. I do believe that employees should be paid a livable wage, but that means a livable wage for their country, not for the US.

It's surprising to me that so many people would complain about this, when we're all perfectly accustomed to salary adjustments based on cost of living. For example, Microsoft pays California employees 15% more for the same work than they do the Seattle employees. Likewise, they no doubt pay their India employees considerably less. Exploitative? Of course not.

Now, I'm not an expert in economics, but I would guess that, far from being exploitative, outsourcing is quite good for the target areas. You're providing the people with work. Doesn't that boost their economy? Isn't that good?

Protectionism: "What about the US? You should be hiring US workers!"

Most outsourcing-supporting respond with the following: 1) "By outsourcing to India / Philippines / another country, we can expand our company and eventually hire more Americans." I don't know in which cases this argument is true, but I can certainly say that it's been true in my case. The outsourced workers I've hired have been the reason that I've been able to generate revenue for CareerCup. It simply would not have been possible without them. This revenue, in turn, enables me to hire Americans for things that do need to be done in the US. 2) "Welcome to a global world. If you don't operate efficiently, your competitors - who may not be American - will simply out perform you." This is possibly the most compelling argument. A business has an obligation to its shareholders to operate efficiently. If it doesn't operate efficiently, another company will. And then, if that happens, how have we helped the US?

In addition to those two points, however, I'd like to make a third: 3) Why are Americans so important? Why is hiring an American inherently "better" (ethically speaking) than a hiring someone from India? Are we not all people? In fact, I could very well argue the opposite: supporting a person in a poorer country, whose children may struggle to eat or to get an education, is more ethical than hiring a comparatively wealthy American. (I'm not saying that that's true; I'm merely arguing that the reverse isn't necessarily true either.)

Suffice to say... I feel perfectly at easy with my decision to outsource. I've employed some extraordinarily talented people and rewarded them well for their work. I understand that there's an awful lot I don't understand about globalization, so perhaps someone will open my eyes to some horrible truths. Until that day, though, I will continue to use outsourced workers to build and expand new projects.

TechCrunch: "Why Google Employees Quit"

Last week, TechCrunch re-posted snippets from an email list for former googlers. This article was set up to make an obvious conclusion: Google is not the fairy tale land of employment. Wait, wait, you mean not everyone loves their job at Google? Shocking! A logical person might point out that what one person loves another person hates and thus, it is physically impossible to have a large company where everyone loves their job.

That being said, allow me to make a few points: 1) Former Googlers are not representative of Googlers. Imagine if you set up a group for ex-New Yorkers, and then asked why they left New York. You'll probably get an usual number of negative complaints. That doesn't mean that most people hate New York.

Likewise, TechCrunch didn't ask Googlers whether or not they liked their jobs - they took a thread from a list of former googlers. That is, people who didn't love Google enough to stay, for whatever reason. So, you're already starting with a list of people whose feelings towards the company skew usually negative.

2) The Email Thread is not representative of Former Googlers People love complaining, particularly those who feel that they have been wronged in some way. If you start an email thread with the question "Why'd you leave Google," you're opening the floodgates for those who hated Google. People like me, who genuinely enjoyed their experience at Google, will stay silent. People like complaining more than praising.

3) TechCrunch was unethical in releasing the (first) names of the posters. Though TechCrunch hid the last names of the posters, they released the first names. If your name is Bob or Mike, your secret might be safe. But, what if your name is "Gayle", or one of the many ethnic or unusual names? Then they might as well have released your full name. Releasing people's names added nothing to the article, but embarrassed - or potentially hurt the careers of - the posters.

4) Almost everyone at Google does like their job. When I left Google, people were surprised. Everyone (or virtually everyone) likes it there. No one came to me and said "yeah, I want to leave too. I hate it here!" I did have several people admit to me that they were thinking about leaving as well. But, in every one of those cases, they said that they liked it, but wanted to go to a smaller company or to a different role.

5) Why I liked Google (and why I left) I had a great team. I liked our project. I liked my manager. I was working on cool, interesting stuff.

Google is, in my opinion, the best place to be an engineer. Engineers are given more authority than I've seen at any other company. If you want to work on something new, there's lots of other projects that you can easily switch to. You can work on your own personal pet project 20% of time. How many other companies let you do that?

For my 20% project, I got to teach two courses at University of Washington. It was an enormous time investment, but I loved teaching. I've kept in touch with many of my former students, and it's amazing to see them to become fantastic engineers at Google, Microsoft and Amazon. I really appreciate both Google and UW giving me that opportunity.

Despite Google being a great place to be engineer, I realized that I didn't want to be an engineer anymore. Ironically, the fact that I was so happy with everything about my job at Google made it the decision easier. After all, if everything was right about the job (team, manager, project) and you're still not excited, the issue is probably the job itself.

Though I liked coding and considered myself fairly good at it, I wanted learn a little more about business: sales, marketing, product design, finance, accounting, etc. Google is a great place, but it's not the place to learn those skills. I felt I could only get that education at a start-up, so I left.

Top 10 Best Microsoft Interview Questions


As the founder of CareerCup, the web's largest source for technical interview questions, I have over 500 Microsoft Interview Questions at my disposal, with more added every day. Everyday people ask me what they should study before their Microsoft interview.

So, without further ado, I present the the Top 10 Best Microsoft Interview Questions:

Microsoft Interview Question #10 Given two nodes in a binary tree, find the first common parent node. You are not allowed to store any nodes in a data structure.

Microsoft Interview Question #9 Simulate a 7 sided die using a 5 sided die.

Microsoft Interview Question #8 How long would it take to sort 1 billion numbers?

Microsoft Interview Question #7 Given two sets of objects, S1 and S2, write an algorithm to determine their subset relationship. Eg, which of the following is true: C1 is a subset of C2, C2 is a subset of C1, C1 equals C2, or none of these?

Microsoft Interview Question #6 Given a value in a binary search tree, print all the paths (starting from the root or any other node) which sum up to that value.

Microsoft Interview Question #5 Imagine there is a square matrix with n x n cells. Each cell is either filled with a black pixel or a white pixel. Design an algorithm to find the maximum subsquare such that all four borders are filled with black pixels.

Microsoft Interview Question #4 How would you divide an integer array into 2 sub-arrays such that their averages were equal?

Microsoft Interview Question #3 Given two binary trees T1 and T2 which store character data, write an algorithm to decide whether T2 is a subtree of T1. T1 has millions of nodes and T2 has hundreds of nodes, and each may have duplicates.

Microsoft Interview Question #2 Implement boggle: Given an NxN matrix, print a list of all words that appear in the matrix. To find a word, you can move left, right, up or down, as long as you do not use the same letter twice. For example, if the matrix were: W A D R You could find the words: WAR, WARD, DRAW and RAW Microsoft Interview Question #1 Design a webcrawler.

Teaching & 20% Time

When I joined Google last year, I was simultaneously thrilled to be building innovative applications and bummed to be leaving behind my college years. No, I'm not talking about dorm life and late night pizza runs - I'm talking about teaching. I started teaching as a Sophomore at the University of Pennsylvania and loved every minute of it. At first it was leading smaller sections of a larger lecture, but I later created the curriculum for a new course titled Software Design and Development and taught this in my final two years. As graduation neared, I toyed with two career choices: teacher and software engineer. I loved both but, since I had to pick just one, I decided to join Google as a Software Engineer.

Once I joined Google though, I realized that I didn't have to pick just one: I could do both! Google's 20% Time allows engineers to spend 20% of their time working on something outside of their main project. Long story made short, that's how I wound up teaching Software Design and Development at the University of Washington in Spring 2006.

Thirteen freshman and sophomores spent the quarter learning how to design and implement large software projects. Each project involved a graphical user interface, although the priciples and techniques learned would apply to a variety of topics.

In the final four weeks of the course, students had the opportunity to build any application of their choosing. These projects clearly reflected each student's individual passions and strengths - which, being college students, meant music, games, pictures, and chat.

Andrea Parkhill, a drama major who was interested in both music and computer science, wrote MelodyScript, an application which allows the user to compose music by adding notes to a musical staff. Alan Fineberg's project had some similarities, but his was specifically focused on generating music loops. Andy Peck, however, created an application which would enable users to search their music collections and create playlists based on a variety of categories.

Julia Schwarz, a sophomore who excelled in user interface design (and in a number of other areas), created a beautiful chat client that allowed Tablet PC users to chat with hand-written text and drawings. Nathan Weizenbaum's application also supported chatting, but was instead focused on collaborative drawing of images (complete with layers, history, and all that fun stuff!). Alyssa Harding also did something image related, but her application instead acted as a photo organizer and uploader.

The popularity of arcade-style games is never a surprise: Daniel Suskin wrote Pacman, Paul Beck wrote Bejeweled, Peter Beckfield wrote Snakes, and Peter Miller wrote a networked 2 player version of Tetris.

The final three students, Cosmin Barsan, Dayne Wagner and Eli Williams, implemented a file encryption application, a peer-to-peer file synchronizer, and a personal calendar, respectively.

While students were pushed to design applications with a clear user interface and clean, well-written code, they were still offered the opportunity to design and implementation an application that matched their passions. For me, however, this course offered me the opportunity to merge my passion for teaching with my passion for software development. I thought when I graduated from school that I had to pick one or the other - I never would have thought that I could pick both!