On Static, Dynamic Typing and Ways of Thinking
Despite the title, this post is not about the never-ending war between proponents of static typing and dynamic typing. It’s an attempt at going beyond that and understand what is really going on below the worn-out technical arguments. I stand firmly on the dynamic-typing side here: I’ve always had more fun with languages like Python, Javascript, and Lua than with C++, Go or Java. I’m competent in all styles, and spent a lot of time writing war-ready code in statically-typed languages, but the mental effort is very different from when I write Python or Javascript.
Why is it so?
I recently took a VAK (Visual-Auditory-Kinaesthetic) test for fun and discovered to my surprise that I scored highest in the Kinaesthetic category. It means that I tend to use space and movement as a way to think. Of course I don’t necessary need to physically move my body to think, just that the way my brain processes information is through space and interaction. In other words: to be able to code, I need to see the program running. This is perfectly suited to languages like Python and Javascript where development involves a lot of repeats of “change the code” / “run the program”. On the flip side, languages like C++ or Scala whose philosophy tends to be “you cannot compile until it’s correct” are very frustrating because they force me to use my brain in unnatural ways.
The same argument could explain why there is such a divide between frontend (meaning web) and backend engineers, with the latter usually encompassing everything that is not running in a browser. Why isn’t there such a stark distinction e.g. between people who write database systems and people who write web servers? Granted, it’s not the same in practice, but it’s rarely advertised as being fundamentally different in the way frontend is opposed to backend. My 2cents here is that frontend slowly aggregated people who tend to think kinaesthetically, while backend aggregated people who have more of an abstract/logical way of operating, and it’s this distinction that is being surfaced in job postings and work culture in general.
Taking that one step further: if programming languages attract or repel certain types of thinkers, it’s likely that your choice of programming language will have an impact on how diverse your team is, at least in terms of ways of thinking. I have no idea whether this correlates with gender, culture or any other “diversity attribute”, but it could be a good idea to keep an eye on it.
How does that resonate with you? Let me know in the comments.
PS: I encourage you to take one of the many VAK tests on the web. Take the results with a grain of salt, but you may learn something useful about yourself.
Yoyonax