relearn-java-or-go

Tags
Published
Published January 26, 2016
Author
Michael Martinez
Title: Should I (re)learn Java or Go? Date: 2016-01-26 Author: Michael Category: Dev-Notes Tags: Development, Python, Go, Java Slug: java-or-go Status: published
There are probably thousands of developers struggling with the question: Should I learn X or Y, stick with Z or learn that obscure XyZ? I know my time is probably better spent actually creating rather than writing here, but I felt I needed to get this down on “paper.”

Motivation

The motivation to learn new things is actually a big problem for me. The cross-road I often find myself at is actually a mutli-forked road littered with many questions: Should jump in with both feet or stick with what is more comfortable? Should I really master Python before moving on to another language? Should I refresh my JavaScript skills and/or Java skills before learning a completely different language? If I am going to learn another language, which has the best potential to become a valuable skill in the next 10 years? Swift, Go, Rust, Java, Python, JavaScript, Elm, Kotlin, or something else entirely.
There are also issues related to not being a full-time developer that relies on a knowing a particular set of technologies to “pay the bills.” Since I am not paid to code outside of web development in a free-lance capacity, it can be said; I am free to choose what I want to learn, right? Not really, as I would like to become part of the developer community on a professional level at some point.

Pragmatism

I’ve asked myself if I should take a more pragmatic approach to this whole ordeal. The obvious answer is more complicated than just reading and producing data to analyze… or maybe its not. So, I created a small scraping script that gathers job posts on Cyber Coders. I can then analyze the words used in the postings to attempt to gather some intelligence about what employers want.
The truth of the professional development story probably lies somewhere between intuition and hard analysis of the technology proficiency employers want. Therefore, I am not trying to fool myself into believing that I can postulate the best language ecosystem to master by filtering words on job postings. What I do believe is that this method will produce a decent starting point for what employers want today. From there, we can posit some general areas that may be hot in the next few years.
The “analysis” is here.

Tickling the brain

I am not sure how to proceed in a way that guarantees long term success, and the answers are still questions. The next part comes down to what will keep me engaged long enough to dig in and get somewhere with said language. The best programmers have written that its not about the language, its about the programmer. Considering the pace of technology I have to agree that one should be very nimble and constantly learning. However, I do believe that hitching your horse to a decent wagon seems like a good idea.
Lets take a developer in 2007 that knows JavaScript and Python. Lets also say that this developer wanted to learn a typed language and it just so happens that the iPhone is introduced that summer. If that developer started learning Objective-C in response to the iPhone introduction he/she now has 5+ years working on a major platform that has gained incredible market value. Not only that, the job leverage, in terms of demand and financial potential, has probably increased 5x for our fictitious developer. Employability and financial potential are not the only metrics to base this decision, but they are a really strong incentive.
The example above is meant to illustrate that “hitching your horse” to a wagon can be incredibly powerful. Obviously, timing and other factors out of one’s direct control can play a significant part. However, we still can’t minimize the role that larger ecosystem plays in programming languages. Platform market share, consumer demand, walled gardens vs. open source, hardware innovation, macro economy effects, and more all play significant roles in the adoption and dissolution of languages and their ecosystems.
So what does this all mean for me choosing to (re)learn Java or learning Go… or maybe even Swift? That much of what makes these languages and ecosystems successful is not in my control. It means that learning for the sake of learning really isn’t going to harm me in any way. Perhaps learning multiple languages is going to make me a better developer overall. If I keep my eyes open, maybe I will be in a position to be the fictional developer we discussed above.