Month: December 2017
Synopsis: a solution and its code should clearly communicate strong opinions about how it is structured, where things belong, and how things are done. Should be obvious where things fit and cause noticeable friction when people try and do things "off the rails". Important for large teams to cooperate.
Often you need to manipulate a data structure without knowing it's shape at compile time, for example when authoring classes that expose generic interfaces or dealing with data described by runtime metadata (database schema, JSON files etc.).