Scales of cities, scales of software An Article by Linus the Sephist linus.coffee American cities seem like a product of industrial processes where older European cities seem like a product of human processes. This is because most American cities were built after and alongside the car and the industrial revolution – the design of cities took into account what was easily possible, and that guided the shape and scale of everything. Software has similar analogues. There are software codebases that feel much more industrially generated than hand written, and they’re usually written in automation-rich environments fitting into frameworks and other orchestrating code. …But despite the availability of cars, I still much prefer the scale and ambiance of European, human-scale cities, because ultimately cities are places humans must inhabit and understand. In the same way, I still much prefer the scale and ambiance of hand-written codebases even in the presence of heavy programming tooling, because ultimately codebases are places humans must inhabit. urbanismsoftwarescaleindustry
evermore, and other beautiful things An Article by Linus the Sephist linus.coffee If all evidence of civilization on Earth was destroyed, and humans had to re-build society from the ground up, what would be different? Feynman reckons that pivotal scientific moments, like the discovery of the atom, will still happen in the same way. Perhaps mathematics will be similarly rediscovered. Someone told me once in response to this question, no artwork would ever be recreated. The art we create – music, stories, dance, film – isn’t a fundamental element of the universe, or even of humanity. It’s unique to each artist. If you choose to create art, you leave something in the world that has never had a chance to exist before, and will never again have a chance to exist. There will never be another Beatles or Studio Ghibli or Picasso. Art, in its infinite variations of originality, is cosmically unique in a way the sciences will never be. Art immortalizes human experiences that would otherwise vanish in time. artsciencehumanitysociety
Deadlines are bullshit An Article contrariantruth.substack.com In software development deadlines are a necessary evil. It is important to understand when they are necessary, and it is important to understand why they are evil. External vs. internal deadlinesWhy are internal deadlines evil?Engineers who love their work Hofstadter's LawThe Thing-deadline calculusNever enough timeDriving engineers to an arbitrary date is a value destroying mistake bureaucracysoftwareprocesswork
External vs. internal deadlines When are deadlines necessary? Contractual obligations Technical liabilities (e.g., dependency EOL) Compliance, government, investors, and other external stakeholders What do all of these deadlines have in common? They are all important. They are all deadlines that cannot be missed. They are all external. When are deadlines evil? Your manager says you have a deadline Your software development methodology says you have deadlines What do all of these deadlines have in common? None of them are important. They are arbitrary. They are all internal. They are all bullshit.
Why are internal deadlines evil? Estimation: When estimating engineering work a substantial time investment is required by an engineer in order to get an accurate estimate. Misaligned Incentives: There is an incentive to lie and give estimates much longer than the feature is truly expected to take. Low Morale: Deadlines are likely to be missed often. Repeated failure has a cost to the morale of the team. Micromanagement: Deadlines are wielded by middle managers as a whip to harass and annoy engineers working on features. High Stress: When engineers feel the pressure of other stakeholders holding deadlines over their heads it creates an environment of high stress. High Turnover: On teams with high turnover rates the best engineers have an easy time finding new work and leave quickly, the worst engineers have a difficult time finding work and remain. This selects for a lower quality team over time.
Engineers who love their work The resolution is simple. Never have internal deadlines. Operate on a prioritized and ordered list of features. Estimate only when necessary to prioritize and do so in a t-shirt sizing way. Trust your engineers and they will begin to love their work. Engineers who love their work are happy and productive. Building is never a straight line