







How insights from cognitive science and social psychology explain why software knowledge is so hard to preserve
Habits of High-Functioning Teams
I often struggle to explain what it means to be part of a high-functioning software team. Sure, there are mountains of literature, and an entire genre of LinkedIn thought leadership that professes all kinds of guidelines and heuristics about what makes teams work, but in my experience, it’s hard to internalize these ideas and follow someone else’s model if you’ve never seen what good looks like.
Software Design is Knowledge Building
The product of software development is not code but a mental model, a theory: a specific way of explaining the world.

Programming as Theory Building: Why Senior Developers Are More Valuable Than Ever
Peter Naur's 1985 theory of programming explains why experience matters more in the age of AI-generated code

The Economics of Software Teams: Why Most Engineering Organizations Are Flying Blind
A breakdown of what software development teams actually cost, what they need to generate to be financially viable, and why most organizations have no visibility into either number.


Laws of Software Engineering
A collection of principles and patterns that shape software systems, teams, and decisions.

The Social Physics of Conversation: Why Communication Patterns Matter
Discover how communication patterns shape team performance, innovation, and collective intelligence. Learn why idea flow matters more than talent alone.
We should rethink how we teach people to code | deadSimpleTech
It's fair to say that the tech industry at the moment is not in a good place. Software engineers tend to be detached, demotivated and unwilling to care much about the work they're doing beyond their paycheck. Code quality is poor on the whole, made worse by the current spate of vibe coding and whatever other febrile ideas come out of Sam Altman's brain. Much of the software that we write is either useless or actively hurts people. And the talented, creative people that we most need in the industry are pushed to the margins of it.

remember
For groups The final step in organizing group conversations about computer use is to commit to remembering what has been said before. And to say it again....

How teams build – Linear
AI usage patterns in software teams: who is adopting AI, how it reshapes where teams spend their time, and how much more they ship.

Peopleware: productive projects and teams
Demarco and Lister demonstrate that the major issues of…

Reflections of an "Old" Programmer - Ben Northrop
Framing our programming careers in terms of knowledge accumulation and decay can yield some interesting insights.
Redundancy Protects Human Collaborations from Failure
In the name of efficiency, organizations and governments around the world are increasingly trimming redundancy---personnel or overlapping capabilities beyond what routine operations require. Drawing on distributed computing and cognitive science, we challenge this view. Using queueing simulations and a preregistered multiplayer experiment (N = 832 in 187 teams of 3–6), we show that redundancy improves performance through two distinct routes. Adding collaborators to a team improves resilience, with larger teams completing more tasks when members became temporarily unable to contribute. Giving team members overlapping capabilities also improved efficiency, with teams in which collaborators could perform multiple roles completing substantially more work. These findings suggest that efforts to improve short-term efficiency by reducing redundancy may come at a cost, quietly eroding a team’s capacity to withstand unexpected failures.
The Psychology of a Billion-Dollar Enterprise App: Why Is Slack So Habit-Forming?
Slack isn’t just another office collaboration app. The company has been called, “the fastest-growing workplace software ever.” Recent press…

Value Pairs: A New Way of Approaching Product Development
How AI-enabled teams can change how we think about product development
Developers spend most of their time figuring the system out
I am often asked what I mean when I say that developers spend most of their time figuring the system out. Let’s unpack the statement.