- immutable data, pure functions, stateless objects/classes
- separation of mechanism and policy
- distinct understandings of why, what, and how
- thinking of code as maintaining rules or logic invariants
- knowing the 'factor' when refactoring (I prefer the verb factoring)
- getting better at naming and organizing things
- getting a feel for the 'shape' of a problem or solutions without distracting names of things
- fine-grain understanding of why things work or don't
e.g. transaction isolation + large nested transactions vs microservices
That last one came up in a discussion of alternate datastores like ScyllaDB or CockroachDB (which I really like). But the problem wasn't really a limit of sharded MySQL which works really well, but how transactions are scoped and different domains of data are being written into the same db with the same connection and tx.This kind of understanding lets you solve bigger problems with smaller solutions (i.e. less effort and risk).
http://lambdaway.free.fr/lambdawalks/?view=coding
http://lambdaway.free.fr/lambdawalks/?view=oops
http://lambdaway.free.fr/lambdawalks/?view=oops5
Thanks
On a Mac, I frequently use Spotlight- simple math, finding files, launching apps. (Yes, I’m familiar with Alfred…but I’m frequently switching computers and having something already installed is great).