A collection of memories, stories, writings, aphorisms, and guiding principles from the computing trades
This is a curated list of various works about and related to the computing trades. This is not programmer specific, though I am a programmer so it may lean that way. The goal of this document is to collect those things which illuminate the culture at the time; have materially influenced the way we think, work, and interact; or could shift the way we look, think, or work as a group.
This is a glimmer of what I imagine thick culture might look like.
- The Abuse of Design Patterns in writing a Hello World Program
- Taking design patterns to the extreme, creating a Hello World program in Java -- This is a great one for highlighting that patterns are not always the answer
- Das Blinkenlights
- The story of a faux-German sign posted to warn people to leave the computers in a supercomputing center alone
- Fizz-buzz in TypeScript
- Extracting the pure TypeScript part of TypeScript, and building FizzBuzz with an abuse of the type system
- The Origins of Opera and the Future of Programming
- The camerata, symmathesy, and the continuous discovery of software as a sociotechnical system
- A Story About 'Magic'
- One of my favorite stories about technical oddities and electronics
- Thick and Thin Culture
- A reflection on what "geek culture" looks like and what it could be
- Efficiency is the Enemy
- A discussion of why being less efficient is more efficient
- Veritasium - Khan Academy and the Effectiveness of Science Videos
- A video about discomfort of learning, and combating misconceptions around an idea
Brooks' Law
[...] Adding manpower to a late software project makes it later
Conway's Law
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.
Dijkstra on Abstraction
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise
Gall's Law
A complex system that works is invariably found to have evolved from a simple system that worked.
Goodhart's Law
When a measure becomes a target, it ceases to be a good measure.
Greenspun's tenth rule
Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
Gregor's Law
Excessive complexity is nature’s punishment for organizations that are unable to make decisions.
Hofstadter's Law
It always takes longer than you expect, even when you take into account Hofstadter's law.
Kernighan's Lever
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
Law of Demeter (link)
Principle of Least Privilege (link)
Principle of Least Astonishment
If a necessary feature has a high astonishment factor, it may be necessary to redesign the feature.
- The Cathedral & the Bazaar
- Reflections on the Open Source community, and the benefits which come from open source software
- The Mythical Man Month
- The famous book by Fred Brooks about his experience in the software industry
- A People's History of Computing in the United States
- A look at the democratization of programmable computing in the United States
- Peopleware
- Discussions on things that make for a better, or worse technical worker environment
- The Psychology of Computer Programming
- An analysis of computer programmers, programming languages, and how they function together in the world of software development
To contribute to this list, please visit the contributing document.
Licensed under Creative Commons: