This document discusses using protocols and view models to configure table view cells in Swift. It presents a problem with directly configuring cells and proposes using protocols to define cell configuration. Protocol extensions are used to provide default values. View models conform to these protocols to provide the data and behavior for configuring cells. This allows separating data, UI, and logic concerns to make the code more reusable, testable and maintainable.