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 an overview of technical debt, explaining how to recognize it, how to prevent or reduce it, and how come we see so much of it. Many so-called best practices today, are, in fact, technical debt factories. The reason we have so much of it is that we eagerly create it at earlier stages of an organization and fail to alter our approaches soon enough when the organization matures, and these early practices which were “investment” become “debt.” Robert discusses many of these practices.
One of these is microservices—often undertaken as a technique for increasing agility, at the cost of manufacturing tech debt. Robert details common methods for avoiding increasing the tech debt burden by deploying microservices.
Robert explores two primary themes that apply to multiple software methods. The first is the principle of parsimony, which dates back to the ancient Greeks but was popularized more recently by the 12th century theologian William of Ockham. The second theme is the doctrine of immutability. This idea, too, flowered during the Middle Ages and is enjoying a renaissance today with the rise of functional programming languages. Robert dives into both of these ideas as they apply to data types, programming languages, network protocols, software dependencies, configuration management, and more.
Robert (r0ml) Lefkowitz is a frequent speaker on the intersection of software and literacy. Previously, he was a CTO at a fintech startup and held senior technology positions in the telecommunications and financial industries. He’s a distinguished engineer of the ACM.
©2019, O'Reilly Media, Inc. • (800) 889-8969 or (707) 827-7019 • Monday-Friday 7:30am-5pm PT • All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners. • firstname.lastname@example.org