Vinicius Brasil

March 8, 2022

Pragmatic programmers ask why

There is something about progress that hides past decisions into new solutions. Throughout history, problems are solved with tools that generate other problems that are solved with other tools. This keeps looping until we forget the whys. "Why does almost every User-Agent starts with Mozilla? And what the heck is Gecko?", "why do we need Unicode?", "why do we need HTTPS?".

Thanks to open-source software you can be a great programmer without ever asking these questions. I'm not suggesting you solve those problems on your own, but asking why helps you develop a pragmatic critical thinking, which is different from mere curiosity. The bad side of curiosity killed the cat and can drive you unproductive. On the other hand, the pragmatic inquisitiveness results in usable knowledge.

As an example, knowing the decisions that evolved the web into HTTP/3 teaches you high-level software engineering that is not purely theoretical - which has its value - but practical. Bonus: if you're interested in learning this, I recommend you this MDN article about the Evolution of HTTP.
Pasted image 20220308160250.png

The good news is pragmatic critical thinking is a learned skill. I listed three habits to help you ask why to what matters. You may already be doing things to develop this skill, but being conscious about it accelerates this process.

1. Recognize your assumptions
The definition of assumption is "something that you accept as true without question or proof". If you mainly use object-oriented programming, you might fall into the error of assuming "one always need classes and methods to create a program". Or even "the time 23:59:60 is always invalid". Beware of the words "always", "must" or "should", as they usually indicate an assumption.

2. Debug your assumptions

Before asking why, ask if your assumption is really true. Use your logic to support your assumption, test it, and if it's shown to be false, go to the next step.

3. Seek answers

This is where curiosity gets killed and your good habit of pragmatic inquisitiveness will be established. You're building reusable knowledge that will help you question more and more.

All things considered, it's common to believe in falsehoods. Use it as a cue to support your habit of questioning pragmatically and enjoy the answers you find along the way.

About Vinicius Brasil

Building cool stuff with Elixir, OTP and Ruby. Musician and majoring in Theology. I'm based in beautiful Curitiba, and yes, that is my real last name.