Technology is rapidly changing these days as the number of developers and companies increases at a surprising rate. It definitely makes sense from a progressive societal standpoint. The more people you have working on a particular field, the more likely it is to evolve and to change, for a few basic reasons. For one, more and more people are beginning to look forward towards the future of that product, which of course always causes the future to eventually get here. And once it does get here, we'll have something that didn't exist before mingling with a bunch of stuff that did exist previously. If you're someone who started their career before that initial alpha moment, then the change is much more noticeable.
And secondly, the more people you have working on something, the faster that something improves. This means that things that didn't really work in the past will be used less and less, and those new things which are improving on the old will be used more and more. And again, if you were someone who was around during the early years, then there is a good chance that you will miss these improvements as they happen.
Having said that, there is no possible way that a programmer can learn and implement every single new technology that is on the horizon. And that can become frustrating for many web developers as they try to navigate their way through the hundreds upon hundreds of new frameworks and libraries that will undoubtedly be released this year. But that doesn't mean that we'll be left behind to fend for ourselves either. The following methods have been useful in my personal development in keeping up with the times when learning new technologies and I hope some of these methods resonate with you in some way as well.
Learning at work
One of the easiest ways to pick up any new technology in a relatively quick time is to do so at your current job. This won't be totally up to you of course, as usually introducing new tech will require more time and some restructuring and approval from higher ups. But pushing for it whenever you get the opportunity definitely won't hurt. This is beneficial for a few reasons, but the most important one is that you are essentially getting paid to learn something new. So there is some incentive to continue as you progress in your day to day work.
This is also a solid method to learn because you'll more than likely have some deadline that you'll need to meet, which means you have to continue moving forward no matter what, which I feel is where many developers fail to get traction in when going at it alone. New tech is boring at first, because it is 100% unfamiliar terrain for the most part and you're essentially just jumping from online post to online post. You'll want to run back to the safety of that which is more known to you. So having something that's pushing you externally, even if somewhat forcibly, can be beneficial to learning something new.
One of the best ways to learn anything is to try and teach it to someone else. While you attempt to put together cohesive sentences on any topic, you'll very rapidly begin to make stronger connections between those words, and you'll also start to delete that which you now know makes no sense. How many times have we caught ourselves in the middle of a sentence only to say to ourselves "Well you see...never mind".
There are various ways to go about doing this. Everything from offering tutoring services to writing a blog post on how to do something which you don't really know too well. Much of my new found knowledge comes from writing beginner's guides to new technologies and sharing them on this blog. For one, it gives me a goal, writing a blog post, and it let's me go at my pace as to how I go about learning it. It also gives me an opportunity to become the student, and to see just how friction less the learning process can be on that particular topic.
Jeff Atwood of Coding Horror fame has stated in the past that his main reason for starting his blog, which eventually lead to the development of StackOverflow, was that he wanted some type of online database of topics which he himself wanted to remember for later use. And in that manner, this blog is my main source whenever implementing the Stripe API or getting an automated tweet to send.
You can read all the books about how to make an amazing sandwich. But that first sandwich won't be at all what you had pictured in your head. Everything you read will make up 20% of the entire process. Sure, you know which ingredients to use and in what order. But you have no clue how hot the pan must be when cooking up the tasty sandwich innards, or how fresh the produce is, or who you are making the sandwich for. All of these things, and more, require you to actually build the thing. And that's the 80% of the process, the unknowns. And that's true for everything in life. We don't know anything, until we are knee deep in it.
Let's say for example that you start a small project to help programmers keep track of their online resources and you build it in an entirely new language to you. You might start to get traffic on your project, and you might need to fix a bug or two to support it. Not only are you still strengthening your skills at this point with the given technology, but you will be doing it in a real-world scenario, and not in a unrealistic book example. You'll be using the new tech in the way that it is meant to be used, which is much more valuable than simply memorizing keywords.
You need purpose
Essentially, we want to add a little purpose to our learning process. Learning to ride a bike for example can be a fun endeavour, if you own a bike and plan on using it for fun or work. If you are learning to ride on your neighbors bike however, and you have no real need for a bike, then you'll probably give up after a fall or two. But if you have that big plan in mind to participate in the X-Games next year, then you'll try and try again.
The reason you code at work is because you are getting paid for it, and the reason you code at school is because you are getting graded for it. But take away that carrot, and the mentality for sure will change. So give yourself a carrot every now and then in order to keep you going.
You can't learn everything
Learning what you need to learn to get your goals accomplished is the sweet spot with anything in life. If you do too much before you even start, you are just wasting time. And if you don't do anything, then you will slowly get left behind year by year. But if you are learning while still being able to perform your job well while incorporating new technology along the way, when appropriate, then you have nothing to worry about as far as future proofing your coding abilities. So find your sweet spot and don't stress it too much when you read about the latest and greatest must use technology.
Walter G. is a software engineer with over 10 years of professional experience. When he isn't blogging or being a CTO he enjoys coding randomly complex things that he hopes many people will get a chance to use one day.