paint-brush
Pragmatic, Critical-Thinking Programmers Always Ask "Why"by@vinib
412 reads
412 reads

Pragmatic, Critical-Thinking Programmers Always Ask "Why"

by Vini BrasilMarch 11th, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

There is something about progress that hides past decisions into new solutions. The bad side of curiosity killed the cat and can drive you unproductive, but pragmatic inquisitiveness results in usable knowledge. The good news is pragmatic critical thinking is a learned skill. I listed three habits to help you ask why to what matters. Recognize your assumptions, debug your assumptions, and seek answers.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Pragmatic, Critical-Thinking Programmers Always Ask "Why"
Vini Brasil HackerNoon profile picture

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.


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.