Packages over processes - David Oliver

Languages sport nice abstractions: Type systems, modules, functions, classes, package managers, database integrations, etc. We can catch mistakes easily through the type system, automated tests, local manual testing, and code review. On the other hand, with processes (like APIs), everything happens through interprocess communication. Many mistakes are caught late because we can't surface them until we interact with the other process. Moreover, for proprietary stuff, the API is a black box: We can't see what's going on, and we can't debug it directly. We can simulate what it'll do in our automated tests with fake data, but the data is expensive to maintain and doesn't give us much confidence. We still need to follow up with manual tests against the API before releasing anything significant, and that's before accounting for added setup costs and the overhead of learning new tooling, all of which cost time.


This is a companion discussion topic for the original entry at https://www.doliver.org//articles/packages-over-processes