One of the challenges that we – as programmers – are constantly faced with is learning a new programming language or whatever the latest and greatest technologies that are available (and using the term ‘greatest’ is just for the sake of the cliché phrase).
Then again, a lot of us get into this field for that exact reason, don’t we? I mean, we enjoy learning new technologies, applying them within the context of programming and problem solving, and then doing it again.
But after even just a few years in the business, it can get a little exhausting. This doesn’t mean it’s any less rewarding, but it does mean that when something else comes along – especially from the likes of larger players like Facebook, Twitter, or a similar company – other people are going to want to use them in their projects because the other company uses them and then we’re tasked with learning them.
For what it’s worth, I don’t consider it a bad thing, but it does contribute to the amount of time that goes into a project. This particular idea is something that’s better suited for a business-related post so I digress, for now.
But there’s another side to this:
A segment of the programming culture claims that we should be keeping our skills sharp by learning something new each year or so in order to make sure that we’re still relevant, to make sure that we’re still able to keep up with those coming up behind us, and generally able to keep up with the direction the web and/or software is headed.
And I don’t necessarily disagree with this, but if you’re in a position where you’re raising a family, or you’re in a position where you’re a little bit older and have obligations and responsibilities outside of your work such that you can’t spend as much time at a computer as you used to do (and I know that feel!), then this comes off as a very intimidating and frustrating demand on our time.
So why do we do it to ourselves?
Learning a New Programming Language
First, I do think it’s important to be aware of emerging technologies and what they are used for, but during my time trying to take a deep dive in WordPress, I’ve seen, say, AngularJS on the rise and then I’ve seen AngularJS 2.0 come out and completely ignore backwards compatibility.
This means that anyone who wants to upgrade to Angular 2.0 will need to rewrite their projects or simply maintain and outdated codebase.
This has happened in the span of five years or so.
So what if I had opted to take a deep dive into Angular and then begin building projects with it to have this particular event happen? What do I do with my old client projects? Do I then make sure I stay on top of the game with Angular 2.0?
What About in WordPress?
Ah, WordPress. When it comes to WordPress, we love to complain about the fact that we have a dated codebase that we maintain for the sake of backwards compatibility and then we also complain about some bleeding edge features that use some of the more recent, cooler client-side technologies.
If there was ever a development community that couldn’t make up it’s mind, we may be it.
But that’s okay and that’s not the point that I’m trying to make, either.
Anyway, yes, I find this to be true even in WordPress. We love to talk all about backwards compatibility (and we should, because it’s important), yet we also push to support newer versions of PHP (which we’re getting there), but that doesn’t mean that we can’t take advantage of newer versions of PHP in our own projects.
By that, I mean if you’re working on a project for someone and you have control over the environment, then go ahead and use the latest version of PHP and all of the features that come with it.
Go Deep Rather Than Wide
Another thing that we’re often told is that we should be going deep rather than wide. This means that we should be learning as much as we can about a given technology or set of technologies such that we can become experts in that particular field.
I’m sure you’ve heard all of the statistics and research about how long it takes to become an expert in something.
I’ve been involved with WordPress since college and I’m far from what I’d consider to be an expert. There are people in this particular field of the industry who are much more accomplished, far wiser, and have years of experience up on me. They’re where I’d like to be in a few years.
But how can we become an expert in anything if we’re also being told that we need to learn something new each year? It’s not as easy and “just investing time” into it – what if I also want to become an expert in playing the guitar, or learning a new trade, or something else offline?
How do I pursue something new outside of programming all of the time while also pursuing something in programming all of the time?
The Tension and The Terror
The pressure that the industry can put on a person to be an expert in everything that comes out can be daunting. I believe that it creates a sense of tension that if we’re not keeping up with whatever was released just last week, then we’re irrelevant.
And for those who build things for the web, this can be a little terrifying.
Honestly speaking, I think it’s overhyped, I think it’s unrealistic, and I think it’s something that we need to honestly check ourselves on before we get too far. We’re all in a different position in our lives and what one may be able to do is not what someone else is capable of doing.
Yes, there was once a time in my life where I was able to spend nearly every waking moment at a computer. I can’t do that anymore – I don’t even really want to do that anymore.
I mean, sure, I want to to learn and build cool stuff as much as the next person, but I also want to hang out with my family, continue to pursue music, exercise, dig deeper into other interests, and so on.
Finding That Balance
How do we find the balance between what we’re told we should be doing versus what it is that we want to be doing?
I don’t know how you work and I don’t pretend to prescribe the way I work to be good for anyone but myself, but the thing that I’ve tried to do above all else is simply keep my awareness up.
That is, I try to following along with blogs and people on Twitter who are talking about emerging technologies, read articles on it, bookmark things that may seem useful in the future, and simply make sure that I’m aware of what can be done and what is available should I ever need to use them.
But at the end of the day, I continue to stay focused on a core set of technologies in order to help continue maturing my existing skill set, building my business, and aiming to help other programmers who have similar interests.