The Software Short Stack
So you want to be a programmer, and you don’t know where to begin? There really is just too much to learn, and things change so quickly. It’s a double-whammy to info tech pro’s who would like to ascend to total mastery in their field, as one would like to do in music, martial arts, or carpentry, where one can bank on their tools to stay more-or-less the same for a lifetime.
Unchanging tools allow the artisan to commit certain things to muscle-memory, and focus on just the new stuff or the uniqueness of the situation at-hand. In other words, the violinist or the Kung Fu master or the master carpenter stops thinking about their tools and just spontaneously uses them in a transcendent and expert fashion. The workload is shifted to the subconscious.
In tech, we’re lucky if the keyboard layout doesn’t change from year to year. None-the-less, when you strip all the extraneous layers of tech away, there are a few tools lurking beneath that have both withstood the test of time and proven their superiority—or at least equality to modern, often fad-driven, equivalents.
These are tools that comprise the “short stack” that I advocate, which you can and should learn and commit to muscle memory, so that you to in the field of information technology can figuratively have your Stradivarius. And those tools are the Unix/Linux command set, the vi text editor (and the enhanced vim version), the git distributed version control system, and the Python programming language.
There are controversial choices, such as Python which I chose because it is not only a solid language on its own, but also a good transition language to the one true programming language for the short stack, ANSI C, which is inaccessible to the newbie. Also, git which is only 8 years old, but it has changed things so much in the time that its existed, that it gets an honorary spot in the short stack. And so on.
It’s impossible to design the perfect short stack for everyone, so my answer is to provide an adequate one for most people, per the 80/20 rule: get 80% of the benefit with 20% of the effort. And that means the Linux command-set, Python, vim and git. I hope you join me in my experiment and journey into constructing and mastering something like a Stradivarius violin for the infotech industry.