Ever had this weird gut feeling that something is off in your code, but couldn’t put the finger on why? Are you starting your projects with the best intentions, following all best practices, and still feel like your architecture turns weird eventually?So far, I’ve held it at PyCon US 2025 in Pittsburgh, USA.Slides on SpeakerDeck.Design Pressure: The Invisible Hand That Shapes Your Code(Sorry for the literal throat-cleaning in the video – I lost my voice the night before and worked on fumes and Fisherman’s Friends.)Additional materialSome of the material was referred to directly in the talk but landed on the cutting floor due to time constraints.They all are highly recommended reading/watching for the topic of software design writ large, though.ArticlesTypes of Coupling by Ben OrensteinAttractive nuisances in software design by Paul GanssleDesigning with types: Making illegal states unrepresentable by Scott WlaschinThe Vietnam of Computer Science by Ted Neward (spoiler: it’s ORMs)Approximating Sum Types in Python with Pydantic by William WoodruffHow I Build by Adam MontgomeryDTOs & Mapping: The Good, the Bad, and the Excessive by Derek ComartinAn example of a conscious decision process on when to map data and reinforcing my point that it’s a trade-off.The Typestate Pattern in Rust by Cliff L. BiffleThis is about Rust, but the concept applies the same to any other language.What Color is Your Function?This article argues against async primitives in languages because it causes you to have two different types of functions that behave differently. I don’t fully agree, but I find it interesting to apply this logic to classes.Arguably, ORM classes and, to a much lesser degree, Pydantic classes, behave very differently than regular classes. Especially, because setting attributes implies I/O which complicates reasoning.In other words, you have to be aware what kind (color!) of class you’re dealing with when reading code.VideosBooksColophon & creditsThis post was made possible ...
First seen: 2025-05-25 14:44
Last seen: 2025-05-26 00:46