The logo of
← Go back

Cannonball Into Complexity

— By Sebastian Ruhleder

Whenever I play around with a new framework or library, I'm always excited when I can get a small prototype up and running quickly. Most frameworks do an excellent job of feeding users bite-sized pieces: a trail of breadcrumbs they can follow, easing them into more advanced topics piece by piece.

Lately, I've realized that I crave this quick hit of dopamine so much that I tend to shy away from engaging more deeply with frameworks and move on to others quickly. The sugar high of a small prototype fascinates me but inevitably leaves me feeling empty. As alluring as simplicity is, complexity can be a good teacher, and avoiding it is more detrimental than we might think.

When faced with complexity, we often assume the developers used the wrong abstractions. Everything is just so convoluted. We assume the only reasonable explanation is the developer's lack of understanding, only to find out we didn't understand the problem ourselves. This is a valuable insight. Discovering our own bias to judge prematurely, to blame prematurely, to voice criticism prematurely is humbling. It cautions us to think more carefully about the complex problems we are facing ourselves.

Complexity can also teach us how to find good abstractions, how to split a framework into coherent modules, and how to use sensible defaults. The way elegant but complex frameworks solve problems can teach us how to break things down. We are inspired by simplicity in complex environments and strive to recreate this simplicity on our own. We even learn from other developers' mistakes; seeing a better abstraction or a more sensible split of modules or defaults strengthens our confidence in our own abilities.

So, from time to time, cannonball into complexity. Don't shy away from reading the documentation. Don't wish for easy examples. Try to get comfortable in the presence of complexity. Navigating unfamiliar terrain will leave you with a sense of accomplishment and progress. It will make you a better developer, not despite but because it's hard.