Fragments: April 14
Martin Fowler discusses AI's impact on programming, the virtue of laziness in software development, and the risk of losing abstraction skills.
Martin Fowler discusses AI's impact on programming, the virtue of laziness in software development, and the risk of losing abstraction skills.
Explores Larry Wall's programmer virtues, focusing on laziness as a driver for abstraction and the impact of LLMs on modern software development.
Challenges the notion that clean code practices always improve velocity, arguing that unnecessary abstractions can slow development.
Explores the unpredictable second-order effects of AI evolution, focusing on how AI coding tools may reshape developer choices and business models.
A weekly collection of curated articles on software architecture, development, DevOps, code quality, and tech leadership.
A conversation on how LLMs help shape software abstractions and manage cognitive load in building systems that survive change.
Explores Abstraction of Thought (AoT), a structured reasoning method that uses multiple abstraction levels to improve AI reasoning beyond linear Chain-of-Thought approaches.
Armin Ronacher discusses challenges in AI agent design, including abstraction issues, testing difficulties, and API synchronization problems.
A developer shares lessons on building AI agents, discussing SDK abstractions, caching, reinforcement, and tooling challenges.
A podcast episode discussing best practices for migrating test automation frameworks, focusing on abstraction layers and AI assistance.
Martin Fowler argues that LLMs represent a fundamental shift in software development, comparable to the move from assembler to high-level languages.
Explores common pitfalls in software abstraction like DRY misuse, lasagna code, and util files, offering advice for scalable design.
The article critiques the DRY principle, explaining how its overzealous application can lead to complex, hard-to-maintain code and bad abstractions.
A critique of over-engineering in software development, arguing that excessive abstraction can create complex, unmaintainable code.
Explains how to use protocol-oriented programming in Swift to design flexible applications by focusing on what entities can do rather than what they are.
Explains the 'No Duplication' rule in software design, detailing its benefits for maintainability and enabling change.
Explains how to use Rust's Newtype pattern to safely abstract file name extraction from paths, replacing error-prone code.
Explores the true definition of a 'class' in programming, critiquing Java/C# overreach and distinguishing classes from namespaces.
Explains the key differences between abstraction and encapsulation, two fundamental object-oriented programming concepts.
Principles for designing and maintaining clean, modular core APIs in research software libraries, focusing on deep learning and experimental code.