The Cardinal Sin

There are lots of ways to fail. There are plenty of ways to annoy and frustrate your coworkers. And I’m not saying that these are small change, but there’s one sin that’s usually pretty easy to spot and almost always an indication of future failure. And yet, we sometimes let these people onto our teams […]

Kihon, Kata, and Kumite

In a recent post, I spent a couple of paragraphs describing how you might help a new manager learn how to manage people, and came up with a combination of incredibly banal advice (“buy donuts!”) and vague and unhelpful handwaving (“people are different”). This bothered me, so I wanted to sit down and attack the […]

Managing managers

For the past couple of years, I’ve split my time between managing individual contributors and technical managers. This is my first time doing the latter, and while I can’t claim deep experience, I’ve learned a lot, and thought I’d put down my personal, highly idiosyncratic, in-no-way universal take on the subject. Think of it as […]

How to Fail

In a previous post, I talked about what it was that stars did differently, and how it didn’t require either 80 hour weeks or incredible genius to shine. But there’s another side to this, and one that doesn’t get as much air time. Everyone wants to know how to be a big success, but the […]

Status Reports

This is a blog post about status reports. Yep. And I’m not going to lie to you – the fact that I find this interesting enough to write about is simultaneously disturbing, disappointing, and unpleasantly enlightening. I’m not proud, but it was something I was thinking about, and I thought I’d share. You see, I’d […]

Message in a Bottle

I imagine him sitting on a plush couch, or possibly standing, a newborn snuggling up against his shoulder. His eyes are closed, he is humming softly, unconsciously making endless tiny adjustments as the infant shifts. It’s 1970, and he doesn’t have a beard yet, though his sideburns lightly tickle the baby’s face. He makes little […]

Hard Problems

I interview a lot of software engineers, and people (especially college seniors) frequently tell me that they want to work on “hard problems.” When I ask them what they mean, they generally talk vaguely about doing something algorithmically challenging on the back-end, maybe related to machine learning, natural language processing, or big data. They don’t […]

Learn on someone else’s dime

Fortune favors the prepared mind. – Louis Pasteur Startups are hard. Long hours, anxiety over whether you’re wasting your time and savings, the rollercoaster of doubt, hope, crushing disappointment, and incredible possibility. The worst of it is feeling that you’re unprepared, that you’re wasting time on technical (or business) decisions that turn out to be […]

An elegant data type for a more civilized age

In a recent blog post, I recommended that you learn C++ for the deep understanding you’ll get of every other language you ever use. One of the key points is an understanding of how much it costs to create and manage an object, and how that affects the modern trend of deprecating primitives. In Ruby, […]