Orthogonality is a somewhat fancy, definitely mathematical word. But it’s a crucial property of good developer experiences. From programming languages to API design, orthogonality makes all the difference between experiences that “just work” and experiences that are frustrating.
What is Orthogonality? Orthogonality is a mathematical term that shows up in several mathematical fields. The most common one is geometry, where lines that are orthogonal are said to intersect at a 90 degree angle and be perpendicular.
I’ve had to pleasure of working on programming languages for several years, including helping design several features in one of them . I’ve always taken an interest into the often unquantifiable, squishy, touchy, feely-weely aspects of languages. Language design is interesting because it’s both technical and art-like. When you help design a language, you’ll straddle the world between extremely complex backwards compatibility issues and whether or not something “feels right”.
Every once in a while, somewhere on the internet some people get into a cycle of doomerism about F# and Microsoft. You can see a fun catalogue of this on Reddit but it comes up in the F# slack, discord, hacker news, and social media too.
All I can say is: ugh, come the fuck on.
Nobody invests in F# as much as Microsoft does First of all, anyone who has a bone to pick with Microsoft should take a close look at the high and consistent volume of code contributions over the years.
I attended my first Kubecon/CloudNativeCon and it was pretty cool. I hadn’t been to an in-person conference since before the COVID pandemic, so I really enjoyed getting out there and socializing with all kinds of folks. But I was kind of bothered by how much focus was spent on vendors and sponsors.
The vendor showcase (booths for all the sponsors) was enormous, on the first floor, and in the main building.
If a developer product is self-consistent and intuitive, it can get by with surprisingly little documentation.
Some (perhaps obvious) examples come to mind:
RESTful conventions in a web API Common flags and verbs in a command-line app (e.g., -v controls verbosity) Descriptive error messages with unique error codes Objectives developers have (e.g., get shopping cart data) have a single command or gesture But it can get much deeper than this: