Software Developer and GNU/Linux specialist

Choice overload

Have you ever gone to a library with no idea what you’re looking for? That’s how I feel when I consider what has happened to the computer industry since I first became aware of it (I was five years old when my dad started teaching me BASIC on a VIC-20 he set up in my room. Can you say “doomed”? I knew you could.)

3-tiered book rotunda

When you look at the menu of choices for technologies with which to engage as a hobbyist or professional, being proactive is a truly daunting challenge. The problem is that there are so many choices. If you’re involved in software development, you’re already past some major decisions. You’ve chosen a specialty. Or have you? When computing was still a young practice and computers occupied whole buildings or at least whole rooms, to be a computer programmer meant you were indeed a specialist. A specialist in computers. But as one could reasonably expect, the field has blossomed and expanded with the ever-increasing adoption of computers in every aspect of human society. So “computer programmer”, “software developer”, and other semi-interchangeable titles are no longer specialist titles in computing any more than “doctor” is in medicine.

How many programming languages are there? Probably over 750 that have actually been published and used widely enough for inclusion in this list. And that’s not the comprehensive list, because such a list cannot be made. People create their own languages for special applications all the time.

You can probably throw out the bulk of the options on that list when considering languages to learn. Experts such as Larry Wall and Bjarne Stroustrup sometimes recommend learning about five programming languages. I know what you’re thinking. “Five? But there are hundreds, maybe thousands! That’s hardly a drop in the bucket!” Well, if you’re not thinking it, I am. That’s what brings us here. How does one choose such a miniscule fraction of the whole array of options? There’s not even enough time in one’s life to properly survey the entire thing.

There are tools that offer some help. The Tiobe Index offers some insight as to which languages are most relevant in current industry based on Web search keyword frequencies. As of my writing this, C tops the chart. (You’ll find out that C is always somewhere near the top; most developers with whom I speak are well aware of the reasons why, so I won’t parrot them here.) Another useful tool is the GitHub language list, which ranks the languages used in active projects on GitHub. OpenHub, formerly Ohloh, follows active Free and Open Source projects and offers statistics on programming language usage.

Let’s suppose that we use these tools–or go with instincts, or draw from a hat–and decide on five languages. I’ll take Javascript and Python, for certain. C and/or C++ is tremendously useful, so let’s cover some ground there. Perl is quite popular as well, and I like Bash scripting simply because it’s ubiquitous in Linux systems and I’m a Linux guy. We won’t bother with the weird ones like Brainf**k, because we want a repertoire that’s actually useful.

Now another problem arises: what libraries should you know? There are whole databases out there just for all of the Javascript frameworks. You can do a lot with it, which is very odd considering its origins and early history. I’m not even going to try and count the JS frameworks, libraries, and toolsets in existence. There are tools for front-end Web application development, others for server side development, and yet others for neither: they’re programming and build tools that are never meant to leave a dev environment. There are many libraries for testing applications, each based on a different methodology or paradigm. The same can be said of Python. The language is over two decades old, and in that time a vast collection of libraries, utilities, frameworks, and applications has grown. Even if you do nothing but write programs in Python, there is no way to comprehend all of the existing code you could use to build new applications. The same is true, only worse, for more long-standing languages like C and C++, Java, and the like. And I’m not even scratching the proverbial surface.

If you’re already making more money than I do developing software (and you probably are), it’s unlikely that any of this is a serious problem for you. But for someone who is both curious about the vast landscape of computing and looking for a path through the complexity toward a goal worthy of his or her pursuit, the choices presented are boggling. There is something to be said for the adage that it’s best to start where you are with what you have. There’s also something to be said for indulging curiosity. Every once in a while, make like the Enterprise and explore strange new worlds.

Oh, and check out Brainf**k. It’s the most aptly named language I’ve ever seen.

Post a Comment

Your email is kept private. Required fields are marked *