RSSAmplifier

Blog

George Fairbanks

George Fairbanks' home page

georgefairbanks.comRSS feed ↗10 posts

Latest posts

IEEE Software - The Pragmatic Designer: Stable Code from Stable Problems

This column was published in IEEE Software, The Pragmatic Designer column, May-June 2026, Vol 43, number 3. ABSTRACT: Lehman’s Laws distinguish between stable S-type and volatile E-type code. Developers can decompose unique problems methodically by seeking standard sub-problems, which reduces complexity and boosts productivity. This illuminates the nature of software engineering, which is needed…

IEEE Software - The Pragmatic Designer: AI Tools Make Design Skills More Important than Ever

This column was published in IEEE Software, The Pragmatic Designer column, Mar-Apr 2026, Vol 43, number 2. ABSTRACT: As GenAI tools handle more routine programming tasks, the software developer’s responsibilities shift to supervising these tools. Accordingly, the software developer’s success will depend on a skillset that emphasizes reading, critiquing, and modifying code rather than writing…

Four Years of the Google School of Software Engineering (SWEdu)

Delivered at the S3D Distinguished Speaker Series, Carnegie Mellon University, 17 September 2025. Introduced by David Garlan. Here are the slides.

IEEE Software - The Pragmatic Designer: Build Stable Triangles

This column was published in IEEE Software, The Pragmatic Designer column, November-December 2025, Vol 42, number 6. ABSTRACT: By adding a short, clear specification to an implementation and tests, developers build a stable unit: a stable triangle. Each leg can be analyzed, letting developers catch bugs and improve quality. They are a partial antidote to rising complexity and encourage edits in…

IEEE Software - The Pragmatic Designer: Programming as Extended Cognition

This column was published in IEEE Software, The Pragmatic Designer column, September-October 2025, Vol 42, number 5. ABSTRACT: Programming is an example of extended cognition: A developer’s ability to program is enhanced by source code that is a suitable external representation and by tools to manipulate it. When structures are aligned between mind and code, they can be swapped in and out like…

IEEE Software - The Pragmatic Designer: Steering Software Qualities

This column was published in IEEE Software, The Pragmatic Designer column, July-August 2025, Vol 42, number 4. ABSTRACT: Developers want to steer the quality attributes in their system. For example, they want to keep latency low, security high, and the code maintainable. To achieve this, they typically roll up their sleeves and get to work rather than deliberately employing design techniques that…

IEEE Software - The Pragmatic Designer: Software Architecture Is a Set of Abstractions

This column was published in IEEE Software, The Pragmatic Designer column, July-August 2023, Vol 40, number 4. ABSTRACT: Software architecture is a set of abstractions that helps you reason about the software you plan to build, or have already built. Our field has had small abstractions for a long time now, but it has taken decades to accumulate larger abstractions, including quality attributes,…

IEEE Software - The Pragmatic Designer: Fix Technical Debt with Virtuous Cycles

This column was published in IEEE Software, The Pragmatic Designer column, March-April 2023, Vol 40, number 2. ABSTRACT: In recent years, teams have found it easy to quickly deliver a working system, but increasingly hard to deliver new features because of tech debt. Tech debt arises from what teams do – and more importantly, what they don’t do – each day. Teams can use virtuous cycles to produce…

IEEE Software - The Pragmatic Designer: Two Kinds of Iteration

This column was published in IEEE Software, The Pragmatic Designer column, January-February 2022, Vol 39, number 1. ABSTRACT: There are two kinds of iteration, but they are commonly conflated. The first is the evolution of a design and its implementation to become more suitable over time: design-focused iteration (DFI). The second is the evolution of an artifact (like code) to become more suitable…

IEEE Software - The Pragmatic Designer: Garbage Collect Your Technical Debt

This column was published in IEEE Software, The Pragmatic Designer column, September-October 2021, Vol 38, number 5. ABSTRACT: The iterative process that a team follows is a bit like a garbage collection algorithm, and we can compare software development processes like we can any algorithm. A process can help developers do two things: clean up tech debt after it exists, or avoid creating it. When…