1. Why am I doing this?

    Because sharing information helps developers solve two problems.

    1. Too many talented developers cannot interview worth shit. I cannot change the way companies conduct their interviews, but I can help good programmers become better interviewees.

    2.Too many talented developers are taken advantage of because they do not know their market value. For example, one of my friends is a level 4 engineer at Google in Mountain View and only making 115k base. How did he end up with a signifcantly lower wage than his peers? Because he told Google his absymally low salary at his previous job before joining.

  2. Be positive. Be enthuisastic. Be likeable.

    Let's be honest, people hire who they like. An interviewer's preception of your technical skills will be influenced by how much he likes you. The halo effect is real.

  3. Learn to negotiate with your recruiter.

    Are you happy taking a paycut? Why don't we just taken 10k off of your salary. When you refuse to negotiate this is essentially what happens because companies never give you their best offer on the first try. Read this article if you are still unconvinced on negotiating. It teaches a few basic principles. Watch this video to gain some insight. And buy this MBA requried reading to become a champion negotiator.
    In our experience, companies will say a lot of things that are not 100% true: "We don't negotiate." "This is our best offer." "Your offer expires in three days." And some in-house recruiters will try to walk all over you. Which is okay because because everything is fair in love and war and salary negotiations.
    But there are a few times when you won't be able to negotiate. For example, you are a college hire joining a large corporation and you do not have any other offers.

  4. How much money should I ask for (after I have been given an offer in writing with compensation details because only an idiot would negotiatie salary beforehand)?

    At first I was reluctant to share compensation details because a company's offer is their private information. Then after a few more offers rolled in I realized all of the companies knew exactly how much each other was offering. They all gave me the same numbers. This included companies whose recruiters said, "Our HR department is too small to know what others are paying. Can you please help us out by telling us your current salary and expected salary?"

    I compared my offers with friends and concluded a mid level (non-senior, not college hire) dev should make at least 135k for base salary and enough stocks and bonuses to surpass 200k per year. This is for Seattle as of spring 2014. However I followed my heart and accepted a slightly lower offer to join a start up.

    Caveat: never believe any compensation numbers you read online or hear in person. People brag and exaggerate. Engineers lie to recruiters, recruiters lie to engineers, recruiters lie to other recruiters, and engineers lie to each other. I only believe numbers when I 1) see an offer letter, 2) see a pay stub, or 3) hear multiple people with the same job title tell me identical numbers.

    Update: I love this article!

  5. Not all big O are equal.

    I learned this the hard way. Interviewers prefer clean and optimal solutions. A solution can have best big O complexity and still be inefficient. For example, a linear solution that traverses a for loop more times than needed.

  6. Syntax is important.

    There are plenty of people who says syntax doesn't matter. But I met enough people who would aggressively chastised me for missing a semi-conlon. This means there are: people who vocally care about syntax, people who won't say anything but still care about it, and people who clain they don't care but probably do on a sub-conscious level. So just always write code that compiles. It's not hard.

  7. Schedule your interviews smartly.

    Try to pack them together so you can hold multiple offers at the same time. And it helps to stay in tip-top interviewing shape. On the other hand, doing too many in a row is mentally and emotionally exhausting. Brag alert: I did 4 onsites in consecutive days. I don't think it was a coincidence that I got offers from the first two companies and rejected by the last two.

  8. Diversity does not exist in our field.

    Of the 50 people who interviewed me, only four were women. I did not see a single black or hispanic person. And for some odd reason I only had one Indian interviewer.

  9. Answer your questions with confidence and look like you know what you are doing.

    Companies want to hire winner. Do winners get nervous and use a shakey voice?

    Whenever I get stuck I try not to look defeated
    or bewildered.
    Instead I look like a pup ready to take on the world!