Engineering the Future of Software
Feb 25–26, 2018: Training
Feb 26–28, 2018: Tutorials & Conference
New York, NY

Technical debt: A master class

Robert Lefkowitz (Warby Parker)
10:45am–12:15pm Wednesday, February 28, 2018
Secondary topics:  Anti-Pattern, Best Practice
Average rating: ****.
(4.64, 11 ratings)

Who is this presentation for?

  • Enterprise architects, application architects, and principal engineers

Prerequisite knowledge

  • Experience writing and maintaining a large software project

What you'll learn

  • Understand technical debt and how to refactor like a boss, at both the system architecture level and the code level

Description

Technical debt is a funny thing. While the term attempts to make an analogy with financial debt, technical debt and financial debt have nothing in common. Instead, it’s the name we give engineering decisions we disagree with.

Robert Lefkowitz offers a overview of technical debt, explaining how to prevent or reduce it, when to increase it, and how to use refactoring to refinance it. Most so-called best practices today, are, in fact, technical debt (e.g., using a programming language that is “easier for the developer” (like Python) but which generates code that is slower for the user (when C++ would be faster). At the same time, the scale of an organization and the scale of a project alters the categorization of an engineering decision. In other words, whether a technology or technique is technical debt depends more on the size of the organization doing it than what specifically they are doing. Robert argues that technical debt is synonymous with good engineering practices.

Robert then explains why microservices have been shown to be an anti-pattern, discussing the reasons why microservices are attractive, and how their implementation typically generates more technical debt than it pays down (i.e., microservice implementations are tech debt refinancing). The best solution for dealing with this new debt is to stick with immutable microservices and functional microservices—microservices that do not have any persisted data.

Robert concludes by demonstrating how to reduce debt at the code level. Simply put, the fundamental maxim is “the less code the better.” And often, “less code” is also “less understandable code.” Robert explores the dynamics and trade-offs between these two and why “less understandable code” is the better answer.

Photo of Robert Lefkowitz

Robert Lefkowitz

Warby Parker

Robert “r0ml” Lefkowitz is the chief architect for software at Warby Parker. Previously, Robert was a software architect in the insurance, telecommunications, and finance industries. He is also a distinguished engineer of the ACM.