Home avatar

Organizations Are Hard Because Humans Are Hard

Weekend reflection: it’s surprisingly difficult to grasp how an organisation (especially a large one) truly works.

Every company begins as a small group of people with fluid dynamics. Early on, structure follows culture. Norms are shaped by how people collaborate, make decisions, and navigate ambiguity together. But then something shifts. Power dynamics begin to form, roles become formalised, processes start to solidify. Structure takes hold, and gradually, culture starts to follow it.

Accountability Means Ownership, Not Blame

If everyone’s accountable, then no one is!

This is a common objection I hear when discussing social programming practices like mob programming or pair programming.

The argument often goes that accountability only works when one person is clearly responsible. If everyone shares responsibility, then it’s as if no one owns the outcome. That is, however, a fundamental misunderstanding of what accountability actually means.

Accountability is not the same as blame. Blame is about finding fault. It’s reactive and usually involves assigning responsibility in a way that focuses on punishment or correction.

We Can Never Skip Quality

We can never skip quality.

I keep seeing engineers advocate for a so-called “start-up mode” where shipping fast means cutting corners and dealing with quality later. This is what Robert Martin described as The Start-Up Trap, a fallacy that mistakes recklessness for speed.

Technical debt is not about skipping discipline. It is not an excuse to be sloppy. Rapid iteration means delivering with a limited understanding, consciously incurring that debt, discovering, learning, and paying that debt down. It does not mean sacrificing the integrity of our code. Technical debt is an agile operating model, not a problem. Neglecting it becomes the problem.

Make The Vampires Feel Welcome

One of the best articles I’ve read in a long time, and it’s refreshing to see that it comes from a C-level executive. It resonates deeply.

Too often, people working in technical fields have to fight against an ingrained tendency to create internal divisions. Whether intentional or not, this segregation distances those who build from those who strategise and reinforces an unhealthy separation.

Perhaps it stems from the fact that not many understand the language engineers speak. As a result, technical teams are frequently perceived as outsiders, mere executors of someone else’s ideas rather than valuable contributors to the business vision.

How Much Are You Part of the Problem?

I see a recurring pattern in many companies. Managers complain that their teams are “immature” and that developers “just execute” instead of thinking critically. But let’s take a closer look and we will often find that these same managers create the very behaviours they criticise.

Large companies love command-and-control structures, and the result is a self-reinforcing feedback loop. Managers treat developers as mere executors. Developers behave as expected and focus only on execution. Then managers complain that developers lack ownership. But we do not build ownership by imposing control.

A Tiny Sliver of Crystal...

Imagine a tiny sliver of crystal, vibrating millions of times per second. Each oscillation sends a pulse, tiny bursts of electricity that ripple through a network of pathways, setting everything in motion.

Numbers shift from one place to another, stored briefly, altered, and sent elsewhere. Tiny switches flip open and closed in perfect synchronisation, following a meticulously crafted sequence. Gradually, patterns emerge: shapes, words, entire worlds forming from pure logic.