Thursday, November 28, 2013


In life, there are some things where no matter how hard you try, it may or may not work out the way you want. I went through this once before, when I was 24. My mom was very ill, and I thought for many months that I was going to lose her. She went into the ER a couple weeks before Google's IPO. People sometimes ask with a touch of envy what it was like to be at Google pre-IPO and during the IPO. The answer is that I don't really remember the atmosphere during that period, because it was so overshadowed by my fervent wish that my mom could recover. Things felt very bleak at the time.

I made a vow back then. I vowed that if she recovered, I would be completely grateful. It felt like a stretch to even ask for that in my mind. It felt like I was overreaching. It was hard to see a way through the darkness.

But she recovered, pretty much fully. 96%. Some doctor threw out that number, and it's what I've been using. That's more than good enough. For a year after the whole ordeal, I was grateful all the time. I was probably really pleasant to be around, because I was continually happy. After a year, the gratitude gradually started to fade. I wrote myself emails to be delivered on a future date using a special service, reminding myself to be grateful. I just received one of the emails a few months ago.

Today I am sitting in my childhood bedroom in my parents' home in Las Vegas. They have lived in the same house for 22 years. My mom cooked me dumplings last night, and noodles.

I have forgotten how to be grateful. I tried. I kept a gratitude journal last year where I wrote down 3 things daily that I was grateful for. I made dozens of entries. It felt forced.

It's different to logically think up something to be grateful for and write it down, vs feel it intuitively deep into your bones, 24-7. I think sometimes life threatens to take things away, so that you appreciate what you have.

Thursday, November 07, 2013

"careless" employees

Recently a friend said to me, "My remote engineer contractors aren't committed enough.  They say they'll get a feature finished by the end of the week, but they don't finish in time!  How can I get them to be more committed?"

Another friend said, "My engineers in China are not invested.  They're not detail-oriented.  Our error rate on the site is insanely high.  The engineers just do a half-assed job.  I wish I could hire engineers who care more."

A third person said, "My engineer is too young and isn't careful.  He doesn't check his work.  He lets serious bugs get onto the site."

In all 3 cases, after hearing about how these engineers are careless, I had this exchange:

Me: "Do you do code reviews?"

Friend: "No."  (except first friend who does them retroactively after the code is already checked in)

Me: "Do you send out technical designs for review, before you start coding?"

Friend: "No."

Me: "Do you have unittests to catch the regressions?"

Friend: "No, we barely have time to develop the features.  We don't have time to write automated tests."

Me: "Do you have manual QA?"

Friend: "No.  I try to test the site when I have time."

Me: "Do you have a standup every morning, so that you know about schedule delays after at most one day?"

Friend: "No.  We're such a small team.  It seems overkill."

Why, why, why would people expect to get great results if they flout all the best-practices that have developed over the past 20 years?  And then blame the poor engineer?

Let's say I ask an architect to build a house.  But because his hourly rate is expensive, he's not allowed to make a blueprint first, or build a small-scale replica, or to spend time holding discussions with subcontractors.  Every minute needs to be spent doing hands-on work on the house.  The house ends up being completed late due to re-work, and after being finished, it has all sorts of problems.  Do I blame the architect?