I heard about a new programming language, “Go”. It is interesting. Allegedly, it combines the performance of C with the nice features of a high-level language.
Consider a high-level feature like bounds-checked arrays. Superficially, that protects you from errors. However, you’re now adding another range-check to each array access, slowing things down tremendously. Very frequently, I don’t need a bounds-checked array, because it’s a loop or I already checked the input validity.
I haven’t investigated Go yet, so I don’t know if it really is as efficient as advertised. I like its support for multithreaded and multicore programs. I like the way it cleaned up the bad language design problems in C++. I like the way it allows you to directly allocate a block of memory (“slice”), in case you need lower-level access.
My question is “Is it worth learning Go?” My definition of “worth learning” is “I will be able to find a job for the next 5-10 years, by having the keyword ‘Go’ on my resume.”
That’s my #1 problem in looking for a software job. Most employers screen resumes by matching keywords. I’m stuck without a job, because all my experience is now considered obsolete. I know that I can learn a new language quickly, and be better than most people quickly, but that skill is worthless on the buzzword-matching job market.
Another problem is that most employers only value WORK EXPERIENCE in that language. If I do a personal project in Go, that may not be enough to help me find a job working in the language.
When a new language comes out and becomes popular, there is a brief period of time when you can get a job using that language without prior experience in that language. However, I haven’t yet seen a job ad requesting Go experience.
I already decided against investing in Ruby on Rails, node.js, Android, or iPhone. Rails and node.js are more hype-based than merit based. Android and iPhone both have serious flaws. They might/should be replaced in another generation or two, but that hasn’t happened yet. Android is based on Java, which is a huge mistake. (I’ve heard many people swear that JIT-compiled bytecode is as fast as a natively compiled binary, but that hasn’t been my experience actually using it.) The iPhone’s “walled garden” approach is offensive. Both iPhone and Android are locked-down systems where the user is not given root permission.
Just because a language is good, doesn’t mean it’ll be popular. I never understood why anyone would voluntarily use Ruby on Rails or node.js. Java is inferior to C++, but Java is very popular and nobody uses C++ anymore. Even if Go is a good language, there’s no guarantee it will become popular. However, Google is promoting Go, which is a big advantage.
That is the challenge for everyone who writes software. Every few years, all of your experience is considered obsolete. One solution is to move to management, but the pyramidal nature of corporations means it’s impossible for everyone to do that. My skills for understanding requirements, working with legacy code, testing, and debugging should be transferable. Learning a new language is easier than learning those skills, but most employers say my experience is worth $0.
There are lots of things I could specialize in. I could get more front-end experience. (Most of my experience is back-end.) I have a lot of SQL experience, but I haven’t found a database programmer job. I could work with PHP, Drupal, WordPress, Magento, Java, Android, .NET, or lots of other things. How do I choose where to invest my time? They are popular now, but there’s no guarantee they will still be around in 5 years. For example, I used to see a lot of CakePHP ads, but I haven’t seen any in awhile. If I pick the wrong thing, I’ll have the same problem I do now, where all my experience is considered obsolete.
That is my question. Is Go worth learning? By “worth learning”, I mean “able to find a job in several years if I learn Go and get a job working in Go”, and not the technical merits of the language. Even if Go really is a great language, that’s doesn’t guarantee that people will start using it. I haven’t yet seen a job ad requesting Go experience. Will Go be popular, or will it be another Betamax?