Why Is Cloud Infrastructure So Complicated?

Most modern software teams have no choice but to spend a lot of effort on their infrastructure, often spinning up entire teams to do so (and sometimes placing their best engineers on those teams). How did cloud infrastructure get so complicated? Why is AWS such a hot mess of insane configurability and complexity? I ponderContinue reading “Why Is Cloud Infrastructure So Complicated?”

Why All Engineers Must Understand Management: The View from Both Ladders

Something interesting has been happening as I’ve been trying to write more about engineering management. When I wrote advice about micromanaging for managers, a few friends asked me about how to deal with their (micro)manager, so I wrote about how to handle your manager. The latter piece seemed to be a lot more useful. IContinue reading “Why All Engineers Must Understand Management: The View from Both Ladders”

“VC Brain”—Dissecting Investor Behavior

Why do so many Venture Capitalists act like assholes? They don’t respond to your email, even though they promised to. When they do, it’s incredibly terse and lacking in punctuation and capitalization (turns out, they only like one type of “capitalization”, the one that sits on tables). Sometimes they ghost you. If you pitch them,Continue reading ““VC Brain”—Dissecting Investor Behavior”

Disagree and Commit And Prove Yourself Wrong

One management principle I’ve found really powerful is “disagree and commit”, but I’ve often found that it can be easily misapplied. Let’s first define what the disagree and commit principle is. Here’s Jeff Bezos in Amazon’s 2016 Letter to Shareholders describing the idea: Use the phrase “disagree and commit.” This phrase will save a lotContinue reading “Disagree and Commit And Prove Yourself Wrong”

Product/Culture Duality

At many startups, culture happens organically. It’s just built around the personalities and values of the founders and early team. But anyone who has built a company before learns a pretty vital lesson: culture is important, and when something is that important you have to be intentional about it. We wanted to build a companyContinue reading “Product/Culture Duality”

Organizational Psychologist vs. Organizational Mechanic

When a team or company is not functioning as it should, two types of problem-solvers often emerge. The organizational psychologist tries to debug the culture. The organizational mechanic tries to debug the process. The mechanic asks what meetings or what documentation is missing. Organizational mechanics love “reviews” (meetings that force decisions to be made). WhenContinue reading “Organizational Psychologist vs. Organizational Mechanic”

Using Systems Thinking to Understand Personal Finance

I always struggled with double-entry accounting, even after I got an MBA. I could do it and mostly memorized my way through a lot of the jargon, but it wasn’t until I took a systems view to accounting that I really understood the mechanics of how things worked. I figured I’d share some thoughts aboutContinue reading “Using Systems Thinking to Understand Personal Finance”

A Small Difference in Developer Productivity Can Amplify Over Time

Small differences in the productivity of software developers on a team can easily magnify themselves over time. On many software teams, one engineer seems significantly faster than the others. Now, in some cases, it’s because that engineer is cutting corners left and right. They get stuff done, but they cause damage. They’re a tactical tornado.Continue reading “A Small Difference in Developer Productivity Can Amplify Over Time”

Mission Tactics: When Under-Specifying is Good

On my product engineering teams, I under-specify product requirements by design. That is, the work that engineers are asked to do is always left a little ambiguous. I used to have a very naive view of how militaries made decisions. You had a formal chain-of-command, and detailed instructions were passed down that chain and implemented,Continue reading “Mission Tactics: When Under-Specifying is Good”

Good Architecture: Data Model vs. Data Flow

Most architectural mistakes I’ve seen in software stem from a mistake either in the domain model or the data flow. Understanding what each of those two things is, how to do them both well, and how to balance the tensions between them is an essential skill every developer should invest in. Let’s use an exampleContinue reading “Good Architecture: Data Model vs. Data Flow”