Profile Picture

Legibility in Software Engineering

August 28th, 2021

The central concept in James C. Scott’s Seeing Like a State is legibility, and how states’ desire to make their societies more legible often leads to disaster. Others have detailed the main points of Seeing Like a State far better than I could—please start with those three if you’re not familiar (or just read the book, which is excellent!)

If you didn’t read any of those, here’s a brief overview of legibility:

There are clear parallels between legibility in states and legibility in software companies. First and perhaps most obvious are the tools of the program manager, like Gantt charts, sprint points, and code velocity metrics. The program manager creates legibility for themselves and leaders by imposing structure on the development process of individual engineers. Engineers are often treated as interchangeable, chess pieces that can be swapped between tickets depending on priority.

Like all abstractions, this one is leaky. Software engineering is fundamentally complex and opaque: no engineer can perfectly predict how long a project will take. It’s so bad, in fact, that common advice to engineers is to double your true estimate, and Agile best practice is to abstract estimations into time-unitless “points” or “T-shirt sizes”. Taken to an extreme, organizational tools like the above can create strange incentives, busy work, and a poor engineering culture.

Leveling systems are another way that companies create legibility in engineering organizations. Of course, leveling is important! But it can become farcical—engineers at FAANG companies spend weeks or even months writing promotion packets and Amazon managers are judged on whether they can stack-rank and fire their “bottom 6%”.

The lesson in software engineering is the same that Scott imparts in Seeing Like a State. Legibility isn’t inherently bad—things get out of hand when leaders reject the complexities of reality and attempt to substitute their own, “rational”, simpler vision.

Enjoyed this post? Follow me on Twitter for more content like this. Or, subscribe to my email newsletter to get new articles delivered straight to your inbox!

Related Posts

Listen More
Monotonic Last Modified Columns in Postgres
Seamless Migration Squashing for EF Core 6 Migration Bundles
Scroll to top