"Simple Made Easy" - Rich Hickey (2011)
Strange Loop ConferenceYouTube ↗
Further reading 4
Why does testing a business rule need a database? →Separate who qualifies for a reminder from whether the reminder can be delivered.What does a module promise its callers? →Try replacing a module whose callers rely on its incidental return order. Start with what the interface says, then trace the decisions it hides and the behaviors people have learned to expect.This video helps answer · Which choices should an API leave out?Does splitting code actually split its dependencies? →Start with a rule that sends an email. Separate deciding from doing, then inspect layers, objects and abstractions: which parts must still change together when the rule changes?This video helps answer · Where should a business rule end?Can one record tell you both now and then? →Two reads disagree. First ask which moment each value describes, then who can change it. Keeping history and coordinating writes solve different problems.This video helps answer · Can a later update invalidate an earlier fact?
Caption notes
Familiar tools feel easy, but the systems they produce can still entangle concerns. Look at dependencies, state and control flow to judge simplicity.
Original passages · 6
We have to start assessing our constructs based around the artifacts,don't associate simplicity with partitioning and stratification, right?a true functional interface, same input, same output.I'll just size my thread pool to be the number of cores.start seeing interconnections between things that could be independentHaving state in your program is never simple, right?