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 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.
As a project lead and senior developer at Atomic Object, I help customers with all phases of a project from user research, through design and architecture, to implementation and release. My approach to projects is to aim for an ideal balance between user needs, business goals, financial demands, and technical constraints.
I started at Atomic in 2006, after earning degrees in math and computer science, from Grand Valley. I graduated cum laude and was recognized as one of two outstanding computer science students in my graduating class. Since that time, I've been a part of over a dozen projects including web, mobile, desktop, and cloud.
Core to my development philosophy is the belief that a software codebase provides the most value when it is expressed in terms of a precise understanding of the business domain. This enables a product to change in response to evolving realities and scale in functionality beyond what was originally envisioned. In recent years, pursuing this ideal has led me to continually hone my approach to the practice of software abstraction and fueled my interest in programming language paradigms that provide more natural ways to express intent.
Following these interests, I started Detroit Lambda Lounge in 2012 to focus on big ideas in software development – languages, paradigms, and perspectives that can provide new insight into how to develop software. In addition to DLL, I speak regularly at conferences and user groups.