Above all else, our software must be correct. Since correctness can only be measured at a single point in time, we need our software to be changeable in order to maintain correctness through time. In order to change one part of the system without breaking anything else we need to be able to understand our […]
Category Archives: Framework
No One is Smart Enough
There’s a third aspect of being easy that I don’t think we think enough about, which is being near to our capabilities. And due to a combination of hubris and insecurity we never really talk about whether something is outside of our capabilities. It ends up that it’s not so embarrassing after all because we […]
Insert, Not Update
Database updates were creating huge performance problems for Facebook in their early years as they scaled up.
Nonlinearity, Convexity and Concavity
Many of the problems we encounter when trying to design systems that are maintainable long term are complications of combinatorial explosions. Combinatorial problems are a subset of the problems associated with Nonlinearity, which are the subject of Nassim Taleb’s outstanding book, Antifragile. If I throw at someone’s head a ten-pound stone, it will cause more […]
Application Developer vs. Computer Scientist
One of the most poorly understood problems we have in our industry is our failure to recognize that Application Developers and Computer Scientists are actual two entirely separate careers. Instead, we continue to refer to both of these as “Programmers” or “Software Engineers”. Because we don’t understand this difference, we continue to hire smart people […]
Talks On Software
If you want to learn how to be like Elon Musk, don’t read the book that Elon Musk wrote—read the books that Elon Musk read. I always tell my teams that if you want to be able to do what I can do then you should learn from the people I learn from.
Priorities in Software Development
This is a team exercise to address the problem of two smart people who can’t agree.
When Smart People Can’t Agree
Two of the smartest engineers on the team have locked horns over some design decision and they’re really going at it. I used to watch this sort of thing happen every week. (If I’m being honest, I usually was one of the guys arguing.) I thought about this phenomenon for a very long time. It […]