What David Farley Teaches About Modern Software Engineering and TDD
The article traces David Farley's pioneering use of automation and continuous integration, his role in the Agile Manifesto, the impact of his books "Continuous Delivery" and "Modern Software Engineering", and his advocacy of Test‑Driven Development as a practical way to overcome bureaucratic software engineering pitfalls.
In 1991, while working at General Electric on a C++ project, David Farley wrote many automation scripts in Shell, implementing early continuous integration practices that foreshadowed later Agile ideas.
The Agile Manifesto was formally published at the 2001 Snowbird conference, and Farley, then at ThoughtWorks—a strong advocate of Agile—had the opportunity to further refine his theories through practice.
Farley later co‑authored the award‑winning book Continuous Delivery with Jez Humble, which won the 2011 Jolt Award, and subsequently wrote Modern Software Engineering , summarizing over a decade of experience.
In 2011 he joined LMAX, a fintech firm, where he built a low‑latency, high‑throughput online trading platform that became one of the world’s fastest financial systems, applying Agile principles at scale.
After leaving LMAX in 2016, Farley became an independent consultant, helping organizations adopt Agile practices and encapsulating his insights in Modern Software Engineering .
He explains that traditional software engineering suffers from bureaucratic inertia, citing Conway’s Law: an organization’s communication structure is reflected in its system architecture, which leads hierarchical companies to favor waterfall models.
Waterfall’s rigid phase‑gates create high change‑costs, blame‑shifting, and resistance to feedback; Agile instead demands clear goals, scientific‑empirical methods, and a focus on delivering business value.
Farley promotes Test‑Driven Development (TDD) as an “Agile magic weapon,” describing the red‑green‑refactor cycle: write a failing test (red), write just enough code to pass (green), then refactor for clarity and elegance (refactor), always advancing one small function at a time.
He illustrates common code “smells”—the so‑called “big mud ball”—and shows how separating concerns and applying TDD can decouple business logic from storage details, improving modularity and testability.
Ultimately, Farley argues that software development is a learning process: incremental, feedback‑driven, experimental, and aimed at delivering tangible business value rather than exhaustive documentation.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
