They ask us for quality. What is “quality”? “Well, free of defects.” (Oh it’s a lot more than that.) What is a “defect”? “Well, when it doesn’t work like we expect it to. Like we agreed it should.” Trust me, you didn’t specify how it works. That’s my job, as a developer. To organize all … Read moreOne Secret to Quality Software
When you have a common piece of functionality to share between two apps, do you make a library for them to share, or break out a service? The biggest difference between publishing a library or operating a service is: who controls the pace of change. If you publish a library for people to use, you … Read moreLibrary vs service: who controls change?
Avdi Grimm describes how the book Vehicles illustrates how simple parts can compose a very complex system. Another example is Conway’s Game of Life: a nice organized grid, uniform time steps, and four tiny rules. These simple pieces combine to make all kinds of wild patterns, and even look alive! These systems are complex: hard … Read moreFrom complicated to complex
Developers have a love-hate relationship with code re-use. As in, we used to love it. We love our code and we want it to run everywhere and help everyone. We want to get faster with time by harnessing the work of our former selves.And yet, we come to hate it. Reuse means dependencies. It means … Read moreReuse
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
Notes from Craft Conference 2015, Budapest. Craft conference was all about microservices this year. 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, about how it’s not … Read morePost-agile: microservices and heads-up development
To avoid duplication of effort, we can build software uniformly. Everything in one monolithic system or (if that gets unwieldy) in services that follow the same conventions, in the same language, developed with uniform processes, released at the same time, connecting to the same database. That may avoid duplication, but it doesn’t make great software. … Read moreMicroservices, Microbusinesses