An exploration of the boundaries between pieces of code, including: isolated testing, behavior vs. data, mutation vs. immutability, how data shape affords parallelism, transforming interface dependencies into data dependencies, and what it might look like to build systems using all of these to guide the boundaries between objects and components.
This talk will explore the boundaries between pieces of code in depth. We'll start with the idea of isolated testing—mocking everything except the class under test. We'll examine the drawbacks of that method, asking how we might fix them without losing the benefits. This will lead us to a discussion of behavior vs. data, mutation vs. immutability, how data shape affords parallelism, transforming interface dependencies into data dependencies, and what it might look like to build systems using all of these to guide the boundaries between objects and components.