Post

> Pragmatism is more important than 'purity' This is only true because most written code is throwaway code. Startup code, for example, should be pragmatic. The longer the timescale, though, the more that "purity" wins out. Preferring the higher bar of "purity" is simply "wanting your work to last"

Most of the technologies and design decisions that are “purer” have a steeper learning curve or implementation cost but also get you guarantees that result in fewer problems on longer timescales. Examples of this off the top of my head are Nix, functional languages with immutable data and typing,…

not resorting to headless browser testing, strictly reducing dependencies, TDD, making your database the sole source of truth/state (which then necessitates things like storing binary data in it instead of S3), defining constraints at both the database level as well as in your app code (which then…

…necessitates thinking carefully about your deletion strategy), making your local dev environment able to replicate production as much as possible (so for example, if you only use varnish cache in production but can’t do it locally, you are asking to be handed caching bugs you can only fix in prod)