Victus Spiritus


Where Imagination and Technology Collide

20 May 2010

Throughout our lives we rely on the technological designs of others. From baby formulas and clothing to transportation and education the world we live in is an extraordinary mashup of legacy and new technology. For the majority of tech we use, it's a process of adopting some one else's standards. We treat the majority of our world as a black box.

This is no different in the space of software. In fact due to complexity of organization we have an ever growing reliance on layers of software that we don't understand which knowingly or not inflict constraints on derivative work. We're constantly exploring other group's thought systems and mental constructs in order to accomplish tasks. And based on time restrictions we are forced in many cases to adopt "techno religions" without spending sufficient time understanding the nuances of previous design decisions.

c++ is killing me softly

In my work life as an engineer I've coded and recoded many thousands of lines of software, the majority of which is written in c++. I struggle to maintain consistency between several engineers working with the same source, and git has recently become a helpful tool for that task (if I can only get them to embrace it).

We are often stuck writing throw away customized interfaces and massaging data to conform to legacy software. I categorize this activity as painfully tedious. But this work's pain was only exasperated by needless restrictions and complications of the c++ language. On a regular basis I come to the conclusion that the folks in charge of designing the language standard don't use it for real problems.

The standard libraries for all their utility and potential processing speed are an obvious product of group think and feature bloat.
What's wrong with c++:

The root of this design disaster may be assembly or it may be group think, or the dreaded feature bloat. C++ may be the perfect language for some developers but I can't count myself among them. Still with many years of sunk costs, I'm bound to it as an unwilling servant (in my day job). Over time as a painter is affected by their brush and canvas, my thinking has been bent in ways I wasn't capable of seeing until I explored other programming languages. It causes me to wonder at how deeply our native spoken language influences the way we think (another great reason for continually learning new languages be they software or spoken).

Refactor Technology to Best Fit Your Imagination's Need

It's clear I have very strong biases for certain styles of software development tools, but there's a general principle beneath the frustration.

To unleash our most creative abilities, we must master our tools. We must make them our own. Only by crafting tools that are an extension of ourselves and the way we think, can we realize the depth of what we're capable of

At the very least we should make a regular effort to experiment with tools that better harmonize and amplify our personal style of thinking.