top of page

Reading 05: Choices, Decisions, and Consequences in Picking a Language

In the three Paul Graham readings for this week from Hackers and Painters, he discusses different programming languages, their strengths, and why it is important to choose the best language for your purposes. He expands upon the idea that you should choose a language because of its programming strength and its ability to deliver the best user experience, not because of any "industry best practice" -- a term he says is used by a "poiny-haired boss" who wants to justify an average choice programming language just because everyone in the industry is using it. This way of choosing to Graham is how you end up with merely average programs and end results. There are of course benefits to the average language choice, but Graham seems to think the negative consequences to that choice, and the benefits to the "weird" language choice, are worth some discussion.

Graham's passages here remind me of my parents repeated phrase, "choices, decisions, consequneces". They used this throughout their parenting of my sisters and me. The idea was that when presented with a choice, we had the liberty to make a decision that we saw fit, but must deal with the consequences of our decisions. This was most commonly used in situations where the choices we made were not the correct ones, and therefore the punishment was justified by the "CDC". At some point, an old-school flip phone was purchased for punishment reasons of taking away our phones if we got in trouble-- this then became called the "CDC phone". Even today they use the phrase (when I was abroad and wondering if I should rent a car for a trip we were going on, my mom said "up to you-- CDC"... I ended up getting a speeding ticket and my dad's first response was, "choose your speed; choose your consequences-- CDC".) Graham seems to agree with this mindset in thinking about the different choices and outcomes of your decision of which programming language. His "CDC" view, for example, is that if you are a company choosing an average programming language, you'd better be okay with average results as a consequence of that decision.

Graham does note, though, some of the valid reasons why a company would choose an average language. He notes three main reasons. One, that programs in an uncommon language might not work well with your programs in other languages. Two, that you may have fewer libraries at your disposal. And three, the one I'd like to focus on here, that you might have trouble hiring programmers. He goes on to say that, "you shouldn't have trouble hiring hackers for any language anyone has ever heard of" and that "if you use a more powerful language, you probably won't need as many hackers and hackers who work in more advanced languages are likely smarter". These companies face a CDC moment-- if they choose a basic language, they have a wider array of candidates for the job. If they choose an uncommon, advanced language, they have a smaller, but smarter, pool of candidates. To Graham, the latter is better. But what about the choices, decisions, and consequences we face as students learning to program, choosing in which languages to develop our skills, and then searching for jobs with that skillset?

In an ideal world with infinite time available, I could learn every language proficiently and have all of the skills for all programming jobs at my disposal (well, an "ideal world" for being the most competitive job search candidate). Unfortunately, this is not the case, and I must choose which languages to improve my skills at most. If I decide to become skilled in standard, popular languages, the number of jobs I have the qualifications for increases. I may not look like the most unique candidate to each of these, but I am at least qualified. If I choose to become skilled in a few niche, unpopular languages, my job search gets a lot harder. But maybe I end up being exactly what some super successful startup needs, and then join them and have an epic time there. Great! But the consequence of that choice could also be not finding a job for a while.

I hope to maybe one day be in the position where I have the liberty to choose what my company is using as our programming language, and when I do, I will make sure to use the most powerful one, not the most popular one. But for now, the "choices, decisions, consequences" calculator at the back of my mind leads me to believe it is probably the best choice to make sure I know the standard languages at least as well as I know any uncommon ones, no matter how powerful the uncommon ones may be.


Recent Posts

See All

Comments


bottom of page