Friends know me for having a broad and discerning palate. In recent years, I have realised that this quality of mine has been an endless stream of joy and that has enriched my day-to-day. I have also felt that many people don't draw from this stream enough.
What contributes to a stable, high-quality software product? I shall categorise it this way:
The mapping of abstractions and patterns to the problem.
Choice of tools and technologies.
Software discourse tends to be disproportionately focused on the latter. I find myself contributing to this skew as well. Perhaps it's because tools and technologies are more concrete and easy to talk about. It's also easy to get people worked up about it.
Yet tools and technologies only exist in service of the first category, which fundamentally capture the highest-value bits of a developer's job—concept mapping. Or making analogies. Pick whichever phrase that makes the most sense to you. I shall present a short motivating example for what I mean by concept-mapping.
Two archetypes of people capture my imagination. They could be placed on two ends of a spectrum. The first is the polymath—a person who has done a whole bunch of things to remarkable effect. By the standards of modernity, they have lived many lives.
It's an opinion that sounds unreasonable with insufficient context, but depending on a conditional or added context, makes sense. I've liked documenting these as they bring out nuances that are often missed by human brains which are fond of rigidly identifying with labels or fixed arrangements.
Here are a few fake contradictory opinions:
In Taleb's book, Skin In The Game:
I am, at the Fed level, libertarian; at the state level, Republican; at the local level, Democrat; and at the family and friends level, a socialist. If that saying doesn’t convince you of the fatuousness of left vs. right labels, nothing will.
In some contexts, I'd say breakfast is overhyped and inessential. In others, I'd also say breakfast is the best meal of the day, without it being a contradiction.
Traditionally, many programmers often pick a side between Vim and Emacs. I manage to aggravate most of these people because I use Emacs with Vim keymaps, and assert that Emacs, in fact, is a superior Vim.
To stir this pot more, I also don't particularly like Emacs and think that most people are better off not using it over mainstream IDEs. I use Emacs for specific reasons.
William Irvine, philosopher and advocate of Stoicism talks about how Stoics want to oppose negative emotions. Ironically, his recommended way to do this is to intentionally think negative thoughts:
A Stoic will “deal with” the things he can’t control not by worrying about them but by engaging in what I call negative visualization: he will spend time contemplating the bad things that can happen to him. He might, for example, allow himself to have a flickering thought about how much worse his life would be if he lost a loved one or friend.
It's seemingly contradictory, but makes perfect sense.