Why does a developer read philosophy?
Because both jobs are the same activity: finding the assumption underneath the thing everyone agrees on, and checking whether it holds.
01Abstraction
Philosophy asks
What is essential?
Engineering asks
What can we remove?
An abstraction that keeps everything is a copy.
Two ways of asking which properties survive when you stop looking at the particular case. Keep too much and you have duplicated the thing; drop the wrong part and it leaks. Choosing correctly is a judgement about essence, whatever we call it in the standup.
02Systems
Philosophy asks
How do concepts depend on each other?
Engineering asks
How do components depend on each other?
The content is in the edges, not the nodes.
You can understand every service in a system and still not understand the system, for the same reason you can define every term in an argument and still miss what it commits you to. Both disciplines spend most of their time on the arrows.
03Debugging
Philosophy asks
Which of my beliefs is doing the damage?
Engineering asks
Which of my assumptions is false?
A bug is an assumption made visible.
The program has been telling the truth the whole time; the surprise is entirely on your side. Philosophy does the same trick more slowly and with worse tooling. Both go faster once you accept that the thing you are most certain about is the most promising suspect.
Cited in docs/SOURCES.md as neti-neti.
04Identity
Philosophy asks
What makes a person the same person over time?
Engineering asks
What makes this the same record after every field has changed?
Theseus's ship, with a foreign key constraint.
Software has state; people have memory; both are rewritten continuously and both insist on continuity anyway. A primary key is a decision about what would have to change before this stopped being the same thing, which is the oldest question in the subject, answered in DDL.
05Control
Philosophy asks
What is actually up to me?
Engineering asks
What is inside the boundary of this system?
You cannot stop a token being stolen. You can make using it announce itself.
Epictetus opens the Enchiridion by dividing the world in two, and it is the one Stoic move that survives translation into software without embarrassment. The network is not up to you. Your retry policy, your timeouts and your behaviour at 3am are.
Cited in docs/SOURCES.md as stoic.
06Observation
Philosophy asks
Can the observer be observed?
Engineering asks
What is watching the thing that watches?
The alerting pipeline fails as silently as the service it watches.
Vedanta calls the witness sākṣin and points out that you can never get behind it: whatever you observe is, by that fact, not the observer. Monitoring inherits the same regress, minus the serenity, and something still has to notice.
Cited in docs/SOURCES.md as sakshi.