Introduction
It doesn't matter if you are an employee or you work from home as a freelancer, there will be a moment in you career when you will end up on some kind of a long term project one way or another.
At the beginning, the project will look cool and attractive, as any other new thing, especially if you don't have the previous experience with the technology that will be used. You will be super excited to work on it and learn the new stuff.
Then you spend six months on it...and then a year, and another year...It feels like you are sitting on a bench and watching a lot of cool stuff passing you by...Something like, oh, Angular...gone, Vue...gone, React...gone, .NET Core...gone.
No need for further explanation, you get the point :) We shouldn't allow this, and we should always go along with the stream.
The Software Industry pace
I fell in love with the software a long time ago, thanks to my college professor, and I've learned that the industry can rapidly change, therefore, if you don't follow it, the time will consume you and your knowledge will become outdated. The learning part of our profession is never-ending process. I will never forget the sentence he spoke: "If you do not intend to learn to the very end of your career leave the profession now".
Just think about it, in the last couple of years how many changes and additions were in the industry, especially in the frontend domain? How many new JavaScript libraries were created? What did you need to know to set up your web app a couple of years ago compared to the knowledge you need now?
The key part here is that we need to love what we do, and everything we need to do related to it becomes super easy.
Learning Subjectively and by Doing Lectures
We all know how our work can be demanding with all the deadlines and client requests, but sometimes we can grab a free time here or there. If this is a small amount of time, you can use it to learn something what you are interested in or something that is mainstream. During this time you can install you favorite IDE and setup a hello world application with one of the popular frameworks. Try as many configurations as you can, play with it and see what the output is. Remember that you are doing this in purpose of learning therefore nothing is forbidden. Put the code on GitHub. That way you will be able to access the project from another machine, and as another plus, you will learn git as well.
Another great approach is to do lectures. From time to time you can, together with your coworkers, set up a small classroom where you will pick a topic, prepare yourself by gathering the required knowledge, and present it to the group.
During the presentation anyone can ask you questions. By being able to answer or not you will see how well did you prepare and what did you miss during your learning process.
You can create a schedule where each lecture will be presented by a different person from the group. This is a great way to learn together and increase the average knowledge of the entire team.
Learning at Home - Open Source projects
This way is the most common, and often, the only way of learning new things. The main benefit of this way of learning is that you are not time dependent. You can read articles, learn slowly and prepack you test solution as many times as you want. There is no one to rush you and break your loop.
After being comfortable enough with a new technology you've picked up, you should try and create something useful by using it. Set up the solution as an open source project. This is a great way to get some feedback from the people packed with the knowledge about the technology you've used, and besides commenting your project overall, they will probably throw a couple of technical comments as well.
By following these principles I've created this repository.
Knowledge Database
Don't be lazy and create your own knowledge database. Save examples of working code, write down the explanations, bookmark useful links...All of this will come in handy in the future, be sure about it. You will save yourself from the struggle of searching again and again for the same thing on Google and StackOverflow, plus you will have the explanation and comments written in your own words which will help you understand the code.
You setup a GitHub repo with your coworkers and each of you can update it every time when something new and useful is found.
Blogs
Read, read and read. Pick a blog, or your favorite author(s) and follow what they are writing.
But always try to understand what you are reading. Don't just go through an article without focusing. Since you've opened it, you are probably interested in the topic, therefore you might as well try to read it with understanding.
By understanding what you've just read, you can get involved in the discussion, leave a comment, point out to a part that could be done or described better...Going through an article and looking at the cute girl/guy passing by outside while reading is just a waste of time and won't do you any good...in terms of learning and upgrading your knowledge of course :).
Conclusion
That's it. There are the guidelines I try to follow when keeping with the industry standards.
Thank you for reading, and feel free to write a comment and share your ways of learning new stuff.
Top comments (6)
Interesting article and some good tips. Although I have to say I've recently adopted a more relaxed attitude about keeping up with change. I find it's worthwhile keeping abreast of new ideas, frameworks and technologies, however, they can rise, fall and mutate so quickly that unless you're in a position to use it within a reasonable time frame, learning it may turn into a fruitless excercise.
I find it better to simply have faith in myself that when it's time to get back up to speed that I'll be able to do so. Whilst I'm on a longer term project worrying too much about the next latest thing can create a sense of being left behind, but I just remind myself that when I'm ready I'm sure I'll be able get back up to speed.
Thank you.
I agree with you that everything new should be taken with extra care since we don't know if it's worthwhile learning. At the end, we need to know stuff that will help us land a job. We can like something more or less, but if it's required we must be familiar with it.
Having faith in yourself is a good thing and if you are an experienced developer, jumping into something new in a short period of time shouldn't be much of a problem.
Good articles sir
Thank you very much.
Doing lectures in turns is what we're trying to do in our small team. Can't say that it goes very smoothly since sometimes it's hard to find a subject and a person who'd volunteer.
We often have that problem, but not due to people not wanting to do it. Our problem is free time, we don't have it enough.