If you are a software developer, learning new technologies is a way of life. That is probably one the of reasons why you are developer in the first place – you like to kick the tires and push the buttons on new and interesting gadgets. Keeping up with new technologies can be overwhelming because it seems like I hear of a new language or framework every week. It is exciting to add a new tool to your toolbox, but it can be frustrating to come up to speed with the details.
Here are some tips I’ve used to minimize the frustration and speed up the process of learning new technologies:
The internet is your friend. Unless you are creating a new language, it is almost guaranteed there are resources online. From blogs to discussion forums like stackoverflow.com, you can find sample code, applications, tips, and tricks.
Find a book. Start with your local public library. The books might be out of date, but the background info might be useful. For example, I recently found a book at the library that covered Spring 1.0. It was over 10 years old, but the first two chapters gave me a solid understanding of Inversion of Control (IoC) and Dependency Injection (DI) – both of which are still key features of Spring.
Most likely, you will find many current books for sale on whatever topic you are learning. I like to browse through a book before buying it. If purchasing online, read the excerpts, scan the table of contents, and/or check the reviews. Go to a local bookstore, and if they have copy, read a few pages to see if you like the style of the author, if you can follow the code examples, and if it covers exactly what you want to learn.
Ask a peer. Start with developers in your company. It is likely someone has worked with that technology at some point in their career. There may even be code somewhere in a source code repository that you can use as a learning tool. Also reach out to your network – your friends who are developers and architects at other companies. Ask them what their experiences are and what helped them get up to speed.
Create a sample application, but make it your own. Don’t just blindly copy an example you find on the internet. You will learn more if you create a sample application that has your own touch. Use your current IDE and development environment if possible.
For example, I wanted to build a sample app that used Angular on client side, calling a REST service built in Spring-Boot. I first found an example of a REST service built in Spring-Boot. However, the example used an in-memory database. Instead, I created a real database backend using an Oracle Database VM. The Angular example called a REST service, but I tweaked it to call the REST service I built using Spring-Boot. After your sample app is working, show it off to others. If you can explain the app to others, you at least have a basic understanding of the technology! This will also help others learn the language and provide valuable feedback on other things to consider.
Keep notes. Record URLs from the home pages of the language you are learning and other websites where you found guides and/or examples for getting started. Most likely, there may be some installation steps required. Jot down notes and grab screenshots as you install. These will be valuable if you may not use the technology right away and have to come back to it weeks or months later. As you build sample applications, record code snippets and error messages. As you find fixes and get past the trouble spots, make sure you go back and note how you fixed them. Chances are you will hit those issues again. Use a digital note taking tool like OneNote or Evernote to help organize your thoughts.
Attend a conference or user group meeting. Check if there is a conference you could attend that can teach you about the new technology. These can be pricey, so it may be difficult to justify the expense. See if there is something locally you could attend to cut down on travel costs. A cheaper option is to look into local user groups. Attend an event to expand your network and listen to speakers who may be talking about something related to what you want to learn.
Now go learn something new!