







A collection of principles and patterns that shape software systems, teams, and decisions.
Conway's Law | Laws of Software Engineering
Organizations design systems that mirror their own communication structure.

You can't design software you don't work on
Only the engineers who work on a large software system can meaningfully participate in the design process. That’s because you cannot do good software design without an intimate understanding of the concrete details of the system. In other words, generic software design advice is typically useless for most practical software design problems.

Writing about Agentic Engineering Patterns
I’ve started a new project to collect and document Agentic Engineering Patterns—coding practices and patterns to help get the best results out of this new era of coding agent development …

Agentic manual testing - Agentic Engineering Patterns
Agentic manual testing - Agentic Engineering Patterns
AI should help us produce better code - Agentic Engineering Patterns
AI should help us produce better code - Agentic Engineering Patterns
Anti-patterns: things to avoid - Agentic Engineering Patterns
Anti-patterns: things to avoid - Agentic Engineering Patterns
Harness engineering: leveraging Codex in an agent-first world
By Ryan Lopopolo, Member of the Technical Staff

Programming (with AI agents) as theory building
Back in 1985, computer scientist Peter Naur wrote “Programming as Theory Building”. According to Naur - and I agree with him - the core output of software engineers is not the program itself, but the theory of how the program works. In other words, the knowledge inside the engineer’s mind is the primary artifact of engineering work, and the actual software is merely a by-product of that.

Agentic Engineering Patterns - Simon Willison's Weblog
Patterns for getting the best results out of coding agents like Claude Code and OpenAI Codex. See my introduction for more on this project.
Writing code is cheap now - Agentic Engineering Patterns - Simon Willison's Weblog
The biggest challenge in adopting agentic engineering practices is getting comfortable with the consequences of the fact that writing code is cheap now.
obra/superpowers
An agentic skills framework & software development methodology that works.
You have to know how to drive the car
There are lots of different ways to be a software engineer. You can grind out code for twelve hours a day to make the world a better place. You can focus on glue work: process-based work that makes everyone around you more successful. You can join the conversation with your product manager and designer colleagues to influence what gets built, not just how it gets built. You can climb the ladder to staff engineer and above, or you can take it easy and focus on your hobbies. But whichever of these you choose, you have to know how tech companies work.

The New Software Lifecycle
I co-wrote a Google whitepaper about how AI is changing the software lifecycle. I'm not going to summarize the whole thing. Instead, here are the handful of ...

Large tech companies don't need heroes
Large tech companies operate via systems. What that means is that the main outcomes - up to and including the overall success or failure of the company - are driven by a complex network of processes and incentives. These systems are outside the control of any particular person. Like the parts of a large codebase, they have accumulated and co-evolved over time, instead of being designed from scratch.

What Functional Programmers Get Wrong About Systems - Ian Duncan
Type systems verify properties of programs. Production correctness is a property of systems. The gap between these is where the interesting failures live.
All you need is links
When Tim Berners Lee talks about how he designed the web, he uses an analogy from physics, describing his process as a quest to find “fundamental laws” which can generate a desired system:
