I don’t believe that software programming (and the languages and skills associated with it) is particularly better than any other type of skill. Meaning, I don’t consider it qualifiably better than really any other type of trade skill (and I hate when I read arrogant programmers who say stupid shit like that).
Rather, I see software engineering as a decision that one makes for one’s career and if you head down that path then you’ve consciously made a decision to pursue a career that will require life-long learning.
But, it is interesting to think through a lot of the science that’s been developed over the years, such as the theory of linguistic relativity, meaning that…:
… the structure of a language affects its speakers’ world view or cognition.
In other words, language may greatly impact the way we see ourselves, our world, our very consciousness, and more (i.e. essentially everything).
This means that we may fundamentally see the world differently than folks who do not spend their days working in linguistic-based projects; that makes a lot of logical sense, right? Edward Sapir and Benjamin Wharf are largely credited with this.
One thing is definitely certain, though, is that language (and linguistics) are far more important to programming and software design and development than math, and thank God because, as one contestant said on one of my favorite TV shows of all time (The Great British Baking Show):
I’m bad at maths!
In fact, studies have found some correlations between software development and linguistic interests and abilities:
Essentially, the certain parts of the brain that are responsible for natural languages “come alive” and are activated when working on the 1’s and 0’s. And, by extension, there’s a very nice positive benefit of software programming and a variety of other cognitive skills that help coordinate and maximally leverage one’s work as a consequence of the activity; this also makes a great deal of sense.
But, I think this type of rational applies to pretty much everything in life: A specific skill actually requires a host of related skills and skillsets so that the singular skill being looked at and identified is effective and true.
So, programming is not necessarily a higher form of cognitive ability or anything like that (at least from where I’m standing).
Software programmer (and psychologist!) Seymour Papert calls computational thinking as a…:
… flexible set of skills aimed at algorithmic problem solving, a habit of using abstraction, decomposition, evaluation, logical thinking, accuracy, and the habit of noticing details in everyday life.
This is probably the one thing that resonates the most with me, after having been a software programmer for more than 20+ years – a habit or predilection to and of noticing the details, especially their relationship to non-obvious things, and non-linear pathing of how they are related and applicable to our lives.
I have found this outcause of my time as a programmer to be one of the most fun and useful and, at times, seriously-entertaining things that I get to experience every single day – the ability and disposition to find a relationship between things that would not seem, on the surface, even remotely close or related, and configure a level of interoperability that others find curious, fascinating, and illuminating.
My brain does not always “fire” correctly nor do the relationships always actually make sense, but, there is one thing that I am very certain of: The fact that my brain does not work well when pre-planned (or pre-programmed); my brain does its best work on-demand and when I encounter new datasets in real-time.
My first instinct was to compare it to something like Heroku’s high-availability, on-demand “dynos” that are designed to execute commands and code based on certain, user-specified commands; they can scale infinitely based on what you need (or what you don’t).
That’s… kind of how my (current) mind works, although, my age is decidedly making things a bit slower these days…
As these “requests” come in my mind “sparks” and suddenly starts “firing on all cylinders,” with a number of different “services” (or skillsets or experiences or knowledge or data) that all seems to form some sort of cogent and cohesive response that magically works in concert with the new data that was just received.
And then I just blurt out the output which may or may not be immediately useful but feels right in the moment – and that’s how my brain works.
Now, the question is… was I born with this predisposition or did I have this designed by circumstance, initiative, resolve, commitment, and repetition? Who the hell knows.