“The codebase should look like it was written by one person” and other lies

I’ve mentioned that its unproductive to adopt cultural values that don’t actually take a stance on an issue (with more than one plausible answer). “Be nice to your coworkers” isn’t a cultural value, because it doesn’t tell us how to make decisions; there’s no trade-off there. Nobody would suggest “let’s be mean to our coworkers” […]

We’re fast paced

By custom, all software engineer job postings in the US are required to include the phrase “must thrive in a fast-paced work environment”. This is usually not a bona fide qualification, but rather an advertisement (“we’re fast paced, so we hope you like that?”). The reasoning is sound: Engineers generally aren’t drawn to listings with […]

Example engineering team values

It’s generally a mistake to adopt values like “respect your customers.” True values involve trade-offs. Here’s my humble attempt to list a few reasonable ones for a potential engineering team. We should… Hire and pay for world class peopleHire economically Be togetherWork anywhere Emphasize qualityEmphasize speed Emphasize market share growthEmphasize profitability Be highly leveragedBe highly […]

Necessary but not sufficient

Many years ago, I read an interesting tidbit somewhere about raising capital for startups. There was a checklist of qualities that correlate with fundraising success (and ultimately startup success). The list went something like this: good team good market opportunity good traction good timing …and other bullet points of that nature. But the key takeaway […]

Break features for fun and profit

There is reassuringly steady progress in software development productivity. In only a few short years the pace of what is considered acceptable output in terms of development has changed pretty dramatically. The usual culprits are: faster hardware and networks, which lead to better programming languages, tools, and platforms, which produce better frameworks, libraries, services, and […]