One of the main challenges of being a programmer or software engineer is the constant learning new technologies, programming language. Yes, that's true. As a programmer or developer, we always need to learn new things, sometimes every year. Thanks to C, Java, Linux, and SQL, we still have some ground but the way these technologies are used changes every year. For example, we have a new JDK 9 release in 2017, even though many Java developers are still learning Java 8. We also have a Spring Framework 5.0 release in 2017, combined with Spring Security 5.0 and Spring Boot 2.0 release, which many of us need to learn in 2018.
In short, Programmer should be a quick learner. This quick learning ability is also what interviewer look for while selecting a candidate. I have myself selected many candidates just for their quick learning ability, especially at junior levels.
If you are not a quick learner than programming is probably not the right field for you, but what is the secret of learning a new technology? How do programmers keep on learning new frameworks, libraries, and new technology year on year?
In summary, here are the 10 best ways to learn new technology, programming languages, frameworks and libraries as per StackOverflow Developer Survey 2018:
If you have not participated on the Developer Survey, still you can co-related with the methods much programmers use as they are quite similar to yours or my list of things we do to learn coding, a new framework, or a new library.
How to Learn a New Technology or Programming language
Here is my list of things a programmer should do to learn a new technology e.g. machine learning, Big Data, or Mobile application development. You can also use the same methods to learn a new programming language e.g. Rust, Groovy, or Kotlin, a new framework e.g. Spring Security 5, Angular JS or React JS or a new library e.g. Jackson.
1. Take online courses
As per StackOverFlow's Developer Survey of 2017, a whopping 64.7% say they've learned programming or a new technology by taking an online course. Which is quite true. Even I have learned most of the things by taking courses on Pluarlsight and Udemy.
I also have the annual membership of Pluralsight which gives me access to their 5000+ courses and I take them while in home, office or traveling.
I have also bought several courses on new technology e.g. machine learning and Big Data on Udemy on their flash sale where they offer every course on just $10.
Both Pluarsight and Udemy have their pros and cons though, the biggest benefit of Udemy is that you own the course for a lifetime but you need to buy individual courses, with Pluralsight, you just pay an annual membership fee and you can access over 5000 courses for one year.
2. Buy books and work through the exercises
This is another best way to learn a new technology or programming language on your own. In fact, this is the oldest method I am following until I come to know about online courses a couple of years back. I have read hundreds of book and I have them in PDF and other electronic formats in my Kindle and iPad.
Many of my readers ask me how I am able to read so many books? Well, the secret is the better utilization of your time. I also have just 24 hours and I also need to spend time with my family, hence most of the time I read a book while traveling or commuting.
I also listen to books using my Audible membership
when I don't feel reading. This means I make most of my ideal time. Also, the default speed of Audible is very slow and you may feel sleeping. I generally listen to books on 1.5X or 2.0X depending upon the content.
If you haven't already signed up for an Audible.com subscription, do it now‚??seriously, it will be one of the best decisions you make in your life.
If you are looking for what books to read in 2018, I suggest starting with Effective Java 3rd Edition, which is coming on 7th January. If you haven't pre-ordered it yet then just do it now to avoid disappointment on New Year.
If you don't like Java, you can also search around on this blog and you will find my recommendation on most of the technologies and programming language. Here is one such list of Algorithm books to start with
3. Part-time/evening courses
To be honest, nothing beat an in-person classroom learning, not even the virtual classes or online training. Why? because when you join a real course you met with real people, you go into the environment which is conducive to learning. You discuss things and problems with real people. You listened to them.
This means you are doing an active learning where all your senses e.g. eyes, ear, mouth, body, and mind are active.
This helps in quick learning and you also retain the knowledge for a longer time. In short, If you can then you should enroll in a college or training institute or part-time or evening to learn a new technology.
4. Contribute to open source
This is one of the best ways for experienced programmers to keep themselves up-to-date. For example, if you need to learn a Big Data framework like Apache Spark or Hadoop then you can also join the project as open source contributor.
You will not only help the community by contributing given you have a good experience but also learn a new technology on the way.
It is also a great way to increase your experience by talking and working with several other great programmers around the way.
I strongly recommend intermediate and experienced programmers to join an open source project in 2018. You can also use the same methods to learn a new programming language in 2018 e.g. Rust, Groovy, or Kotlin
5. Coding Bootcamp
This is a relatively newer phenomenon but the pervasiveness of online courses and coding boot camps, many people with little to no programming experience can now more easily transition to a career as a developer.
Many startups and in fact big technology companies like Google and Amazon accept coding boot camp students which is a big boost on their credibility and to be honest with you have I have interviewed a couple of boot camp students and I have found them even better equipped with essential technical knowledge than the fresh college graduates.
They fair better in the data structure and algorithm interview and have better knowledge of source control e.g SVN or Git and IDEs like NetBeans, IntelliJ or Visual Studio and other essential development tools.
In short, if you want to learn something new or change your career to become a programmer, Coding BootCamp is the best way to start with.
6. Participate in online coding competitions
You know what, I have learned concepts better while explaining to people or my team member. Same goes for online coding competitions, it gives a break from your regular work.
You also come out of your comfort zone which accelerates your learning.
For example, if you want to learn Python in 2018 then you should try participating in an online coding competition using Python.
You not only learn all essential concepts in quick time but also improve your coding sense and get a much needed real-world experience.
Here is a list
of websites you can use to prepare and participate in online coding competitions.
Yup, conferences, and meet-ups also work great and that's why I encourage Java developers to join their local Java User groups. These conferences and meet-up e.g. London Java Community is a good place to meet with several great, like-minded developers in your vicinity.
You not only create a good network for you but also you learn a lot from talking to them. They also add a much needed real element to the mostly virtual programming world.
If you are not a member of a Java User group or programming community, I strongly suggest you become in 2018.
8. Participate in hackathons
Hackathons are another great way to learn a new framework or library in quick time. In Hackathons, you need to build something useful in 24 to 48 hours.
Sometimes it looks very arduous but because of team and environment, you just keep going. The beauty of Hackathons is that you start preparing for them in advance and that's where you learning kicks off.
For example, if you are thinking to build a prototype using machine learning algorithm e.g. image processing app you learn about machine learning even before the hackathon.
The mere participation gives you a reason to learn and master new technology and applying them in Hackathon gives you the battleground experience which goes a long way in your career.
9. Creating a blog
Yup, a blog also helps you to learn a new programming language or framework. How? because before writing a blog post you start your research and this is where your learning kicks off.
For example, I don't have any JUnit 5 post yet on my blog but when I will write, I must first learn JUnit 5 and for that, I will do some research.
I will use my Pluralsight membership to find an online course or read the documentation but the mere idea of posting a blog post in JUnit 5 will encourage me to learn about JUnit 5.
As I have also said, I tend to learn better when I explain things to other and that's why when I write the blog post, most of my concepts get clear and gaps in my knowledge are filled. It also helps me to retain the knowledge for a longer time.
Every programmer is different and what works for me may not work for you. Some programmers found learning from a book easy, some find online courses better. Some just like to create real-world projects and learn on the way.
In short, use the method which works for you. There is no hard and fast rule when it comes to learning. Choose the one which you like and enjoy. If you learn faster by pairing with a buddy then, by all means, go for it.
If you learn better while listening to music then listens to your favorite song while coding programmer in the new programming language you are learning. You can also see my tips to quickly become familiar with a new code base. You will find some good practical advice there as well.
That's all about some of the best ways to learn new technologies e.g. programming language, frameworks, libraries, and yes learn to code. If you want to learn to 2018 code but don't know where to start? As per the StackOverflow survey, more developers say you should take an online course than any other method, followed by getting a book and working through the exercises.