# Systems research is necessary when a system is not modular [[Modularization allows different groups to work on different pieces]] in an uncoordinated way. When you have good interfaces ([[Modularization requires legible interfaces]]) changes in one component don’t require adjusting any other component. However, many systems aren’t modular. They’re a disgusting mess of interconnected dependencies. In this case, the contrapositive holds: poor modularity and leaky interfaces mean that in order to improve the entire system, *changes in one component require adjusting all the other components.* Propagating these changes doesn’t improve the other components and is often painstaking or boring: imagine needing to go through and change the output type of every function in an entire library. If the original change is a clear win for the system, it’s straightforward to justify the work of propagating it to the rest of the system. But when you’re doing research, you don’t actually know what the outcome of the change is going to be until you propagate it. As a result, you end up needing to propagate *many* changes, many of which don’t actually work out. This experimental system-adjusting is [[Systems Research]]. (Note that the repeated change-propagation doesn’t just require a lot of labor, but it’s the sort that isn’t high-status, publishable, or lucrative. [[Systems research requires a lot of work that is expensive and uninteresting]]. ) ### Related * [[Modularization enables pieces to be used in many different technologies]] * [[Modularization enables the higher level technology to improve continuously even if pieces improve discretely]] * <!-- #evergreen --> [Web URL for this note](http://notes.benjaminreinhardt.com/Systems+research+is+necessary+when+a+system+is+not+modular) [Comment on this note](http://via.hypothes.is/http://notes.benjaminreinhardt.com/Systems+research+is+necessary+when+a+system+is+not+modular)