The Right Tool for the Job, the Right Job for the Goal

Members of our Product Analysis team at Web Teks mostly have one of two career objectives in mind: product management and software development. This post was written by an Analyst who falls into that second group, about struggles with learning a new language.

I'm the kind of person who knows a little bit about a lot of things. Coming into my role at work, my assumption was that this would make me a good software product analyst. It seems to make me a good conversationalist, but as an analyst it gets me blindsided sometimes. I find myself confronted with the fact that I need to be really good at something to be particularly helpful. Since I myself have argued for the merits of specialization, I decided "I can nip this problem in the bud. I can specialize."

In this case, specialization meant studying JavaScript. In retrospect, I made the same mistake again because I chose JavaScript due to its ubiquity and importance on the ubiquitous and important Web. Google searches turned up praise for JavaScript as a first programming language because of its ease and its relevance. As it turns out, by choosing that way I was committing the same sin of generalization and experiencing the same negatives.

In just a short time studying JavaScript, it's become apparent that the ease of the platform -- to build, to deploy, and to run working code -- are pros which are also cons. Research into several seemingly small questions about the language each quickly spiraled into tumbles through the Internet Rabbit Hole, partly because the 'ease' of the platform has flooded the world with practitioners who in all honesty aren't too great, and even more so because the platform's ease comes from some comparatively loose logical and syntactic structures.

JavaScript's ubiquity may be because it's a good conversationalist, then. Because of that, I think people get blindsided by it, too often landing their teams in a world of hurt with bugs and rework. JavaScript is a platform that's done us all a ton of good, but it still does leave a bit to be desired in terms of structure. In the interest of specialization, I probably should've started with a platform that has more inherent discipline when it comes to core concepts of scalable and practical software, such as encapsulation, classes, inheritance, et cetera. Maybe I'll pick up Python and come back to JavaScript later.