Scarcity versus abundance mindsets in software design, and shipping rough prototypes early: https://breakingsmart.com/en/season-1/rough-consensus-and-maximal-interestingness/
Related Posts
On thinking of books like software, treating them as evolving artifacts, and URLs versus paper book publishers: https://cs.brown.edu/~sk/Memos/Books-as-Software/
Learning software development through playing and contributing to a MUD: https://tashian.com/articles/how-i-learned-to-program/
I'm a huge fan of Swift's 'Error Handling Rationale' design document: https://github.com/swiftlang/swift/blob/9315673c003875158852579bd1f33480cdec5461/docs/ErrorHandlingRationale.md#fundamentals
It carefully defines terminology and compares with other languages, so you can understand Swift's position and preference in the design space.