You would think, in a field that changes as fast as ours does, that it would be difficult to let your skills plateau. In fact, the opposite is true. If you get “lucky” enough, and find yourself with a stable job working on a good product for enough years, you’ll gain significant expertise in those languages, frameworks and technologies that you need to do your job well. Nothing wrong with that.
Then you lose your job and step out into a world that says, “Oh, those technologies? We’re not looking for those. Do you have these?” …and, you don’t.
That’s where I find myself. I’ve been working almost exclusively in Ruby on Rails for nearly fifteen years. I’m not saying that nobody wants Ruby anymore, it’s just that I’ve significantly limited my options. I’m not technically a “production Python” guy, though most of my personal projects are in Python. Nor am I a Java guy, even if I did ten years in Java before I switched to Rails.
That doesn’t mean things can’t change. I saw a great article a few weeks ago in Wired. Singing the praises of the Go programming language, this description really caught my attention:
… it is, for my money, the premier general-purpose language of the new millennium—not the best at any one thing, but nearly the best at nearly everything. A model for our flashy times.
Calling Go “C for the 21st century” was just the icing on the cake, given that I’m one of those programmers who cut his teeth on C in my college years.
Languages like Ruby, Python and Java all date back to the 1990s. Go is a relatively new kid on the block. Which means it’s far less intimidating to admit that you’re learning it, not that you have double digit years of experience writing it.
So I found a Golang course on Udemy and dove in. It’s been a long time since I had reason to switch between strings and byte arrays, or care whether my int was 32bit or 64bit. Those were never unnecessary things, and they didn’t go away - it’s just that the tools and languages have been hiding all of that from the programmers. Newer generations of programmers likely never had to worry about it. (The course in question, for example, simply uses int64 everywhere, with barely a mention that int32 exists, or what the difference is. Anybody that ever crunched memory by counting and saving bits will want to go through the screen at stuff like that.)
Having completed the course, I have a project idea that I can write in Go. You can’t just take a course in a language and say you know it. When my project is up I plan to make it a public git repository (somethign else my online resume is sorely lacking). Stay tuned!