-
Grokking Simplicity (how to write cleaner and simpler software using functional thinking, demonstrated in JavaScript)
-
Thinking in Systems: A Primer by Donella H. “Dana” Meadows (1993)
A System is something that’s greater than the sum of its parts, usually contains feedback loops and often behaves unintuitively. The following can all be understood as systems: a room with a thermostat, a bathtub with an in- and outlet, ecosystems in biology, population dynamics, depletion of non-renewable resources, organizations (e.g. companies), economies, and many more.
It is remarkable that Dana is able to explain with such clarity such systems concepts of stocks, flows, feedback, time delays, resilience, bounded rationality [, leverage points], and system boundaries and to illustrate each one with multiple informative examples. – Bill Moomaw## Space
-
Managing Humans (Good and light-hearted read for programmers becoming managers the first time.)
- Making illegal states unrepresentable (see e.g. use sum types and React: Choosing the State Structure)
- Parse, don't validate
- first half of Out of the Tar Pit
- Event Sourcing is Hard
- Are we really engineers?
- Systems design explains the world: volume 1
- How complex systems fail
- haskell-beginners-2022 or the perhaps a bit outdated but used-to-be-excellent Learn You a Haskell
- Intro book: Programming in Haskell
- gotchas in practice: What I wish I knew when learning Haskell
- Typeclassopedia
- A list of Haskell articles on good design, good testing
- Category Theory for Programmers: Bartosz Milewski’s video lectures and textbook (online and as PDF).