Tom works as a backend developer at SoundCloud, aiming every day to reduce complexity and increase flexibility in a big giant Rails codebase. He also teaches people to program as a RailsGirls coach in Berlin and wishes quite often that he were a Latin teacher instead.
This talk makes the following observations/arguments:
I'll look at the implications this situation has for object-oriented design, arguing that it is nigh impossible to evolve a pure object-oriented design given these constraints. We'll look at both ends of the problem: an attempt to create an object-oriented architecture while embracing statelessness (Model 2 architectures such as Rails), and an attempt to bend HTTP to the will of the programmer by avoiding statelessness (continuation-based web servers such as Seaside). We'll look at the characteristics of the design under each model, and talk about their strengths and their weaknesses.
Given that we're more familiar with Model 2 architectures than continuation-based architectures, we'll also take a look at some ways of finessing the problems identified. This may include an ill-advised attempt to argue for the utility of Inversion of Control/Dependency Injection containers.