Layers in software: from data to value

Then Back in the 2000s, we wrote applications in layers. Presentation layer, client, data transfer, API, business logic, data access, database. We maintained strict separation bet ween these layers, even though every new feature changed all of them. Teams organized around these layers. Front end, back end, DBAs. Layers crisscrossed the flow of data. Responsibility …

Read moreLayers in software: from data to value

Code and Coders: components of the sociotechnical system

TL;DR: Study all the interactions between people, code, and our mental models; gather data and we can make real improvements instead of guessing in our retros. Software is hard to change. Even when it’s clean, well-factored, and everyone working on it is sharp and nice. Why? Consider a software team and its software. It’s a …

Read moreCode and Coders: components of the sociotechnical system

Tradeoffs in Coordination Among Teams

The other day in Budapest, Jez Humble and I wondered, what is the CAP theorem for teams? In distributed database systems, the CAP theorem says: choose two of Consistency, Availability, and Partitioning — and you must choose Partitioning. Consider a system for building software together. Unless the software is built by exactly one person, we …

Read moreTradeoffs in Coordination Among Teams

Patterns and details

Christopher Alexander, the architect who wrote the ORIGINAL original patterns book, contributed a forward to Patterns in Software. He reports that in the years since Patterns in Architecture “We have begun to make buildings which really do have the quality I sought for all those year… This has come about in large part because, since …

Read morePatterns and details

Post-agile: microservices and heads-up development

Notes from Craft Conference 2015, Budapest. Craft conference was all about microservices this year.[1] Yet, it was about so much more at the same time — even when it was talking about microservices. lobby of the venue. Very cool, and always packed Dan and I went on about microservices in our opening keynote,[2] about how it’s not …

Read morePost-agile: microservices and heads-up development

The opposite of simple is not complex

Studying biology or economics, one finds organisms, ecosystems, and economies that are more than the sum of their parts. Somehow many interacting agents with limited information produce increasing organization, creating amazing complexity out of relatively simple components. In computing, if we want to harvest this potential for surprise, see results this interesting, we have to …

Read moreThe opposite of simple is not complex