# Dave Thomas - Simplicity: Sustainable, Humane, and Effective Software Development (Highlights)

## Metadata
**Review**:: [readwise.io](https://readwise.io/bookreview/57110754)
**Source**:: #from/readwise #from/zotero
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[Dave Thomas]]
**Full Title**:: Simplicity: Sustainable, Humane, and Effective Software Development
**Category**:: #books #readwise/books
**Category Icon**:: 📚
**Highlighted**:: [[2025-12-27]]
**Created**:: [[2025-12-27]]
## Highlights
### CHAPTER 1 An Approach to Simplicity
- The more you make yourself orient (recognize complexity), step (try an experiment), and learn (adjust what you do), the less you’ll have to remember to do it going forward. It’ll be just like driving: something you do without having to think which pedal does what. ([Page 2](zotero://open-pdf/library/items/6SHMIMSU?page=12&annotation=CQTXGCYC)) ^970221882
- Orient, Step, Learn ([Page 2](zotero://open-pdf/library/items/6SHMIMSU?page=12&annotation=BK6YJH76)) ^970221883
### CHAPTER 2 Lose Weight Now...
### CHAPTER 3 Simplify Your Projects
- If you spend more time maintaining your framework than your code, maybe the framework’s not helping ([Page 24](zotero://open-pdf/library/items/6SHMIMSU?page=23&annotation=L8AWNNFX)) ^970221886
- Instead, choose a framework that’s been around—and stable—for a while. Choose a framework that has the fewest features that still does what you need it to do. ([Page 24](zotero://open-pdf/library/items/6SHMIMSU?page=23&annotation=BWYMBJPJ)) ^970221887
- Very occasionally, organizing a team as a kind of human event-handling system is the correct thing to do. But it should not be the default behavior. Instead, look for ways of decoupling these events, letting people poll for things they can do, rather than being forced. ([Page 31](zotero://open-pdf/library/items/6SHMIMSU?page=30&annotation=E2SIRA4A)) ^970221888
- ```
const transform = [
(shape) => scale(shape, 0.5),
(shape) => rotate(shape, -5),
(shape) => skew(shape, 0.1),
]
``` (Page 41) ^970221889
- If you’ve arranged a meeting, then it’s your responsibility to make sure that everyone gets value from it, and that means that you’re going to have to guide things along. ([Page 43](zotero://open-pdf/library/items/6SHMIMSU?page=42&annotation=BBCR572V)) ^970221890
### CHAPTER 4 Automate All the Things
- Every few months the department plays musical chairs, moving one developer from each team to another. This obviously spreads knowledge. ([Page 52](zotero://open-pdf/library/items/6SHMIMSU?page=51&annotation=JGFEC3PD)) ^970221892
- Merge several teams for a day and have them mob code a solution to one of the more general problems they need to solve: improving logging, speeding up the build, updating libraries, or whatever. ([Page 52](zotero://open-pdf/library/items/6SHMIMSU?page=51&annotation=KCUE4WA6)) ^970221893
- A couple of teams I contacted set aside a half day a week for non-project work. They encourage people to pair, where one person in the pair instigates the project and the second person wants to learn about it. ([Page 53](zotero://open-pdf/library/items/6SHMIMSU?page=52&annotation=XEJCL97K)) ^970221894
- About once a week during development I’ll reset my remote machine back to its bare state—an OS and an SSH key—and make sure I can still get the app running using the deployment command. ([Page 61](zotero://open-pdf/library/items/6SHMIMSU?page=67&annotation=SG7IMEHD)) ^970221895
### CHAPTER 5
- So set aside time for research. It might be 20 minutes a day, or three hours one evening—whatever fits with your life and the way you learn. ([Page 72](zotero://open-pdf/library/items/6SHMIMSU?page=78&annotation=R9S59FY8)) ^970221897
- Although I try to focus my research on practical things, I also give myself time to do things just for the hell of it. ([Page 72](zotero://open-pdf/library/items/6SHMIMSU?page=78&annotation=Q79ILS4T)) ^970221898
- Try to make two lists, each three items long. The first is the list of things that you really should know more about; the second is the list of things you’re curious about. ([Page 73](zotero://open-pdf/library/items/6SHMIMSU?page=79&annotation=FPTYNHGC)) ^970221899
- This is where dedicating time to research pays off. I know that I’ll be able to play with all these new things during that time, which makes working with the familiar the rest of the time easier to bear. ([Page 74](zotero://open-pdf/library/items/6SHMIMSU?page=80&annotation=RUGCCN3H)) ^970221900
### CHAPTER 6 Soft Skills
#### Practice 16 Disagreements Are Not Zero-Sum Games
- This approach is called dialectical reasoning. It assumes there are elements of truth in both sides of an opinion, and it emphasizes the benefits of trying to synthesize something new and bigger from them. ([Page 80](zotero://open-pdf/library/items/6SHMIMSU?page=84&annotation=LYCEHHD9)) ^970221903
- Your mission is not to prove you’re correct or that the other person is wrong. Instead, you are trying to find out which parts of each of your positions have merit and from that synthesize a new understanding that’s better than the two original ones. ([Page 80](zotero://open-pdf/library/items/6SHMIMSU?page=84&annotation=87CQHQXD)) ^970221904
#### Practice 17 Work On Your Empathy
- So my personal exercise, which I recommend to you if you’re like me, is to make the transaction secondary to the overall interaction. Make time for the person and not just for the information. Try not to look like you want to rush off to put out the next fire—enjoy being with another human for a few minutes. ([Page 83](zotero://open-pdf/library/items/6SHMIMSU?page=87&annotation=JYNR8PFG)) ^970221906
- Another trick is to have some generic questions you can use to get them chatting. They call it small talk, but it’s really the glue that binds tribes together. All it takes is taking the time to listen. ([Page 83](zotero://open-pdf/library/items/6SHMIMSU?page=87&annotation=6R7UQUVT)) ^970221907
- Don’t assume people know how you feel; tell them ([Page 84](zotero://open-pdf/library/items/6SHMIMSU?page=88&annotation=KL2XH686)) ^970221908
- If you find yourself in a situation where you are scoring points by showing off your godlike knowledge of something, change the rules. The new game is that you score whenever you get the other person to understand a point you’re making well enough that they paraphrase it back to you. ([Page 85](zotero://open-pdf/library/items/6SHMIMSU?page=89&annotation=4GTU8SAC)) ^970221909
- Treat others the way you’d hope they would treat you. ([Page 85](zotero://open-pdf/library/items/6SHMIMSU?page=89&annotation=N38AYP7Q)) ^970221910
#### Practice 18 Have Empathy for Things
- He didn’t fight the boat, trying to bend it to his will. Instead, he felt the boat and came to an agreement with it. He had empathy, used less energy, and the boat ran faster and more smoothly. He made sailing simple. ([Page 87](zotero://open-pdf/library/items/6SHMIMSU?page=91&annotation=Z4R9VWGT)) ^970221912
- The next time you feel strange, when things feel a little off, try not to shrug it off. Instead, examine that feeling. What were you doing when it started? What is it making you feel? ([Page 89](zotero://open-pdf/library/items/6SHMIMSU?page=93&annotation=BFX9F5LW)) ^970221913
#### Practice 19 Spin a Story
- A good analogy illustrates what you need to communicate in a language that speaks to your listener. ([Page 91](zotero://open-pdf/library/items/6SHMIMSU?page=95&annotation=EHA32ECX)) ^970221915
- For this reason, you should probably only use this technique if you and your listener share common backgrounds. ([Page 92](zotero://open-pdf/library/items/6SHMIMSU?page=96&annotation=3LKCFZVM)) ^970221916
- When we come up with stories to explain unfamiliar concepts, what we’re really doing is seeing the situation from the other person’s perspective. ([Page 93](zotero://open-pdf/library/items/6SHMIMSU?page=97&annotation=A9INWWAS)) ^970221917
- But I’ve also found it useful to spend a few minutes trying to come up with an analogy for the problem I’m trying to solve. Once I’m thinking in the domain of the story, I might see how those fictional objects might interact to achieve their (fictional) outcome. ([Page 96](zotero://open-pdf/library/items/6SHMIMSU?page=100&annotation=AF9WVHG4)) ^970221918
Connect new problem with the existing knowledge base.
### CHAPTER 7 Data Driven
- The benefit of this is clear: data is easier to work with than code. It’s easier to reason about, easier to manipulate, and easier to change. ([Page 99](zotero://open-pdf/library/items/6SHMIMSU?page=103&annotation=2NEXAY4Q)) ^970221920
- For real control, we can turn to state machines; they’re not as complicated as people make them out to be, and they’re a great way of turning deeply nested code into nice linear chunks. ([Page 100](zotero://open-pdf/library/items/6SHMIMSU?page=104&annotation=8BE839SQ)) ^970221921
- You don’t need complex libraries or long-winded pattern-based approaches when you need a state machine. All you need is a lookup table. ([Page 110](zotero://open-pdf/library/items/6SHMIMSU?page=114&annotation=3X3TTEBF)) ^970221922
### CHAPTER 8 Down at the Codeface
#### Practice 23 No Comment
- Actually, there’s one more reason, and it’s probably the one I use the most. I like to use comments to help clarify and break up the structure of my code. ([Page 116](zotero://open-pdf/library/items/6SHMIMSU?page=120&annotation=YMPG63F8)) ^970221925
- If your code needs comments for any other reason, the chances are it’s the code’s fault. ([Page 116](zotero://open-pdf/library/items/6SHMIMSU?page=120&annotation=2HQUQPW4)) ^970221926
#### Practice 29 Keep It Local
- Are you working in an environment where code is split across multiple files by convention? Would things break if you tried starting with everything in a single file? ([Page 127](zotero://open-pdf/library/items/6SHMIMSU?page=131&annotation=SXP3WZIS)) ^970221928
### CHAPTER 9 Outroduction
- S reflects the problem more directly than C ([Page 129](zotero://open-pdf/library/items/6SHMIMSU?page=132&annotation=TPWH3N3N)) ^970221930
- Simplicity is the essence of clarity, minimalism, and ease. It means stripping away the unnecessary to reveal what truly matters. ([Page 130](zotero://open-pdf/library/items/6SHMIMSU?page=133&annotation=WPVIVK2T)) ^970221931
- Simplicity is not simple—it’s intentional, refined, and effective. It brings peace, efficiency, and elegance. ([Page 130](zotero://open-pdf/library/items/6SHMIMSU?page=133&annotation=RLIFZU38)) ^970221932