Technical taste is different from technical skill. You can be technically strong but have bad taste, or technically weak with good taste. Like taste in general, technical taste sometimes runs ahead of your ability: just like you can tell good food from bad without being able to cook, you can know what kind of software you like before you’ve got the ability to build it. You can develop technical ability by study and repetition, but good taste is developed in a more mysterious way. Here are some indicators of software taste: What kind of code “looks good” to you? What kind of code “looks ugly”? Which design decisions you feel really good about, and which ones are just fine? Which software problems really bother you, to the point where you’re worrying about them outside of work? Which problems can you just brush off? I think taste is the ability to adopt the set of engineering values that fit your current project. Why taste is different from skill Aren’t the indicators above just a part of skill? For instance, doesn’t code look good if it’s good code? I don’t think so. Let’s take an example. Personally, I feel like code that uses map and filter looks nicer than using a for loop. It’s tempting to think that this is a case of me being straightforwardly correct about a point of engineering. For instance, map and filter typically involve pure functions, which are easier to reason about, and they avoid an entire class of off-by-one iterator bugs. It feels to me like this isn’t a matter of taste, but a case where I’m right and other engineers are wrong. But of course it’s more complicated than that. Languages like Golang don’t contain map and filter at all, for principled reasons. Iterating with a for loop is easier to reason about from a performance perspective, and is more straightforward to extend to other iteration strategies (like taking two items at a time). I don’t care about these reasons as much as I care about the reasons in favour of map and filter - that’s why I ...
First seen: 2025-09-29 07:30
Last seen: 2025-09-29 23:35