Code Readability vs. Mathematical Notation
Description
This image is a screenshot of a tweet from the user Nat 'superstar' Alison (@tesseralis). The tweet humorously contrasts the coding practices of programmers with those of mathematicians regarding naming conventions. It reads: 'programmers: nooooo you have to give your variables descriptive names' followed by 'mathematicians: haha function go f(r,r,r,r,r,r,r,r,r)'. The profile picture shows a person in a striped shirt, and the tweet is dated May 10, 2020. The joke leverages the 'haha X go brrr' meme format to highlight the tension between software engineering's emphasis on long-term readability and maintainability (using self-documenting names like 'customerAddress') and the mathematical tradition of using concise, single-letter variables where context is king, making formulas compact but often impenetrable to outsiders
Comments
7Comment deleted
A mathematician's idea of self-documenting code is just citing the 198-page paper it's based on in a comment
Math: f(r,r,r) → ℝ; code-review bot: “Too vague - rename r to regionallyAdjustedRecurringRevenueRate,” instantly pushing the file past the 120-column limit the same bot enforces
After 20 years in the industry, I've finally accepted that the mathematician who wrote our core algorithm with variables named 'a', 'b', and 'c' has job security forever - nobody else can understand it well enough to replace it, including the AI code assistants
This perfectly captures the eternal tension between 'code is read more than written' and 'but the proof is so elegant!' Meanwhile, senior engineers know the real nightmare isn't f(r,r,r,r,r,r,r,r,r,r,r) - it's inheriting a codebase where someone thought 'data', 'data2', 'dataFinal', 'dataFinalActual', and 'dataFinalActualThisTime' were descriptive names. At least mathematicians are consistently cryptic
Mathematicians optimize for LaTeX column width; we optimize for 3am MTTC - mean time to comprehension
Productionizing research: the API is f(r,r,r,r,r,r,r,r,r,r). Sprint 1 is adding types and named params; sprint 2 is the postmortem for swapping r5 (rate) with r6 (radius)
Mathematicians drop 'f(r,r,r)' in the PR; six months later, it's your 'temp_radius_preprocessed' haunting the oncall rotation