Sustaining productivity in a software project requires more than clean syntax and efficient process. It requires clear ideas.
Well-abstracted software is flexible in ways its business domain can take advantage of. It enables a sustained, or even accelerated, development pace over the course of a project. Poorly abstracted software tends to calcify, with each new feature being more difficult to the add than the previous.
Unfortunately, there aren't many tools to directly guide effective abstraction. Refactoring and code smells are too code-centric. Processes such as Domain-Driven Development focus too narrowly on business domain modeling, which is important, but too focused.
In this talk, Drew Colthorp will attempt to describe how many of the best developers already abstract in software projects. The goal is to provide a vocabulary and framework to facilitate effective discussions about abstraction decisions with colleagues and team members.