Educate yourself in a fast paced environment
Software development has such a high velocity compared to other industries because ideas and concepts can be shared so efficiently. I think the best description is the expression: “Standing on the shoulders of giants”: Make smart use of the work of your predecessors and colleagues. Use that also when acquiring knowledge: you don't have to do everything yourself. The development community is very large and helpful and a lot of information is easily accessible.
If anything was indicative of the frontend community in 2016, it was the term JavaScript Fatigue. What does it mean? The number of JavaScript frameworks has exploded over the past period. Indeed, it is an overwhelming number of new methods, tools and techniques available to us as developers. What can you do to keep your head above water or even take advantage of these rapid developments?
Disclaimer: I emphasise frontend development, but with the capabilities of NodeJs the line between frontend and backend is blurring, especially in the field of JavaScript software.
Let's approach the challenge from my perspective, what I do to stay up to speed on the landscape. Because the harsh reality is that software development continues to change with a velocity that is unpredictable as it depends on technological advancement and user usage. For example, revolutions in the past started with a single product (think of the iPhone or iPad) and its success.
Let's get the first thing out of the way: you can't master everything. Your job as a developer is to know enough about certain developments and what the possible application could be. Only go into depth when there is a concrete demand for it.
Stay informed
An ongoing task is to stay aware of developments in the industry. Again, it doesn't need to be in depth expertise: follow the trends, see what you find interesting and what applications you can come up with. This process helps in valuing new developments in relation to the existing landscape. It is not necessary to jump in everywhere as an early adopter. On the contrary, it can be very good to wait until a new technique has reached a degree of maturity.
Personally, I want to spend as little energy as possible scanning the landscape. I prefer to leave that to other people and that's why I subscribe to various newsletters, podcasts, twitter and visit websites that report on frontend development. I divide my available time among those resources and take notes of things that interest me. Visit meetups of like-minded people. If they are not there, organise a meetup yourself!
If it is necessary to dive into a new technique, the process becomes a bit more intensive. Learning a skill can be broken down in the following four (repeating) steps:
Plan
Determine what your learning goals are. Why is it necessary to learn a new technique? When do you master the matter sufficiently to achieve your goal? Also determine how much time you spend or over which period you want to work on this.
Gather information
If your goal is known, look for teaching materials. As a rule, the official documentation is the best starting point. From there you can continue looking at online tutorials (the free variants often have limited depth). Online courses can also be very affordable, but make sure you gain relevant and up-to-date knowledge.
To learn
Then you can put your knowledge into practice. Building a side project can be a good means. In fact, when you set up the same project with different techniques, you can compare them extremely well. Take advantage of the community with resources like slack, discord or irc channels and don't underestimate the stackoverflow knowledge base! What also works well: explaining a certain technique. That forces you to find out how concepts work and how they should be applied. Choose something that works best for you. Write (and publish) articles. Share your knowledge with developers who come after you (make yourself a giant too!).
Reflection
At the end of your learning process, you look back on what you have learned. Did it match your learning goals? Do you master enough of the topic? Where does knowledge fall short? From this point you can start to delve into underlying topics again or broaden your horizons again. Has your interest really been aroused? See if conferences are being organised. Incorporate the knowledge shared there. It pays off!
It's part of your job
Yes, it takes effort, time and energy to keep up. That is also part of your job as a developer. You are not just a programmer. You should also be an expert in your field. Set aside some time every week, it doesn't have to be much, just to keep track of what is going on in your field. Diving deeper is only necessary when it is of interest to you and you do not have to start from scratch: take advantage of the learning process of others.
And how can you take advantage in a rapidly changing environment? You can focus on keeping up with certain knowledge and sharing that expertise. Go speak at conferences. Organise workshops. Write tutorials! The content for tutorials and courses is developed by developers like you and me.