What Comes After SOLID? Seeking Holistic Software Quality

This talk was given at RailsConf 2017. For a pared-down text version of the talk, see this post. For the real thing, here’s the video:

And the slides:

Talk Description:

You care deeply about code quality and constantly strive to learn more. You devour books and blogs, watch conference talks, and practice code katas.

That’s excellent! But immaculately factored code and clean architecture alone won’t guarantee quality software.

As a developer, your job isn’t to write Good Code. It’s to deliver value for people. In that light, we’ll examine the effects of a host of popular coding practices. What do they accomplish? Where do they fall short?

We’ll set meaningful goals for well-rounded, high-quality software that solves important problems for real people.

Exercise from the talk:

Download the exercise as a PDF, Keynote, or PowerPoint file.

Talk Errata:

Reflecting afterwards, I noticed a few mistakes I made in the presentation, and would like to note them here:

  1. I confused Cyclomatic Complexity with the ABC (Assignments, Branching, and Conditionals) metric. Branching is very similar to cyclomatic complexity, but technically ABC is a software size metric, not a complexity metric, and it encompasses more than cyclomatic complexity.
  2. I mentioned Flay when I had intended to reference Flog; the former is a tool for locating duplication, while the latter is actually a measure of ABC in Ruby.
  3. Code Review is generally done after checking code into source control; the intention was that it’s done before code is moved into the main (master) branch of a central repository.