We build the way we think


The inspiration

These days I have been watching a lot of YouTube videos on two seemingly unrelated topics, how modern architecture sucks and how to build good software. One thing I noticed is that these two topics have something in common, "We build the way we think".

Why modern architecture sucks

In ancient India, ancient Greece and other ancient civilizations, the people in power, the people with the wealth all believed that a part of the purpose to their power and wealth was to have the privilege to provide patronage to art.

However, with a shift to our increased focus on utility and productivity since the industrial revolution, the line between patronage and investment started fading rapidly. There seemed to be no value in building beautiful things. In other words, the pleasant sounding creative headspace market of builders was now filled with the shouting of the hawkers of utility.

By the way, don't get me wrong and pounce on me, attacking me for my own personal minimalist taste, I think that minimalism and utility driven design are not entirely the same though there is some overlap between the two. I think even minimalism is in itself a taste in contrast to only maximizing for utility.

Also on the other hand, my main point in citing this was, as an example to the statement "We build the way we think". As builders started to think more and more only about utility, that worldview of theirs reflected in the way they built.

Worldviews and Software Development

When I extend this to software engineering, I also see that our worldview definitely influences the way we build software.

On the other hand, often people build softwares with a fancy new framework or a new language just because it is slightly more performant or because it is right now high in demand in the market or because everyone on Twitter is talking about it.

However, something common that I noticed across a lot of good software developers is that they have strong opinions which reflect in the way they build software. Some of these opinions may very well be very different from one another but nevertheless, just having a well thought-out opinion seems to lead to a better outcome as opposed to just flying with the wind. Perhaps because it also helps them maintain and develop software with more ease and joy as it aligns with their thought model.

I also feel that these opinions may not often be limited to just software development. These opinions really seem to spring from their general worldviews. The vice-versa also maybe true where, as you think about what it means to build good software, it may help you refine your worldviews in general.

I think one good example of perhaps a worldview that I don't like and I don't think is well thought-out, that nonetheless reflects in current software development is consumption driven design. A lot of software builders today tweak their entire design around maximizing consumption of their software which I think perhaps also extends in to their general worldview that more consumption is good and that its good for GDP growth and good for humanity overall.

However, maximizing for consumption may also ultimately lead to bad user experience, whether it is the constant tracking or push notifications and emails or trying to add as many features as possible. This also spills over into the software development experience because in an attempt to try and add as many features as possible, people may tend to push bad code or keep adding code without thinking too much about the structure and result in spaghetti code that is unmaintainable. Optimizing for adding new features all the time also takes away time from crucial tasks like refactoring which are essential to maintaining software in the long term.

So, I think that all software builders should contemplate about their worldviews and self reflect to become better at their job, to provide their users with the best experience and to enjoy maintaining their own software.