Sign of a premature generalization is lack of pain when trying to progress

If you didn’t feel at least a bit of pain when adding new functionality, implementing process or introducing a tool, most probably you already prematurely generalized. Empiricism assumes some pain because it’s based on learning, not speculation.

»
Author's profile picture Dragan Stepanović

One word to cut the batch size

There’s a difference between:
“We’re not saying we’re not going to do this thing”
and
“We’re just saying we’re not going to do this thing now“.

»
Author's profile picture Dragan Stepanović

Slow tests can help you find a way to deliver value sooner

Test execution time can tell you a lot about design of your service. If you have a bunch of domain logic in the parts of the service where it shouldn’t be (controllers, repositories, external gateways or any adapter of that sort), your tests have to spin up a mock MVC or embedded database or stub service in order to test it. The more logic you have in these parts of the app, the more tests you’ll have against them, the slower the test suite.

»
Author's profile picture Dragan Stepanović

Cut the batch size instead of increasing WIP

When faced with pressure, teams should cut the batch size instead of pulling in more stuff and increasing the WIP (as is most often the case).

»
Author's profile picture Dragan Stepanović

Most of the time is spent waiting in queues, not processing

»
Author's profile picture Dragan Stepanović

Having problems with system reliability?

Try with more aggressive timeouts, use circuit breakers and bulkheads.

»
Author's profile picture Dragan Stepanović

Build quality in by reducing inventory

Reducing inventory accelerates the feedback, so THE way to build quality in is to reduce the inventory and thus shorten the feedback loop.

»
Author's profile picture Dragan Stepanović

High demand and low predictability incentivizes the system for big batches

Same scene in Berlin U-Bahn (metro) this morning.

»
Author's profile picture Dragan Stepanović

#NoEvents

In systems with very short feedback loops there are almost no events. Everything seems to be boring. The longer the feedback loop, the more pressure builds up with time elapsed, the greater the sense of relief and achievement this produces on emotional level when the feedback loop is closed (marking an event that has just happened in the system). Ironically enough, watching for moments of relief and achievement says a lot about existence of events that are too big, which in turn reflects the existence of too long feedback loops.

»
Author's profile picture Dragan Stepanović

Enabling constraint for incremental development

Committing code very often and deploying to production with every commit is enabling constraint for getting better at incremental development, one of the most overlooked skills in software development.

»
Author's profile picture Dragan Stepanović