How I Learn in Tech Industry (2018)
Do you struggle to get started with technology? Do you have problems to establish a good plan for leaning new things?
With this blog post, I would like to write down my own learnings about this topic.
Back to the Basics
Sometimes, you need to go back two steps if you do not make any learning progress. As an example, I struggled to learn modern JavaScript frameworks such as React or Angular because I lacked many underlying framework-agnostic concepts. Short, I had to learn JavaScript ES5 basics first, then get really familiar with ES2015+ concepts, and get a brought picture of the (tooling) ecosystem. After that, it was possible for me to make good learning process with React and Vue.
It is important to have a working learning context. You always have to understand the concepts first that constitute prerequisites. You have to have a learning plan and therefore you have to understand the prerequisites. If you identify anything, you have to tackle this prerequisite first before you can start with learning the new technology.
Practice, Practice, and Practice
It took me quite some time to realize that nobody masters things in life without spending quite some time. And with learning new tech, it is not different. You have to practice a lot that concepts and techniques get second nature for you.
What do I mean with practice? Well, you have to work with the technology in order to get good at it. It is not enough to read about it, you also have to get your "hands dirty". A long time ago during college, I had to learn Java the hard way. I had to learn the language but also programming paradigms, such as object orientation or concurrency. We had to implement algorithms and solutions for problems over and over again.
And that’s what you have to do. Pick exercises and try to implement solutions for them. Over time, you’ll get more familiar with the language as is, but you also get more comfortable with the underlying development concepts and workflows, the ecosystems, tools, etc.
The following things were helpful for me to get more comfortable with JavaScript and ES6. This list might not be relevant for your learning plan, but it is simply meant as inspiration.
- I tried to solve one exercise a day of Wes Bos’ JavaScript 30 course.
- I try to spend a few minutes every (working) day to implemnt one algorithm (30 seconds of code)
- Sometimes I want to solve a CSS problem by just firing up a code pen or code sandbox session.
Learning by Teaching
If you really want to get better in any technology, you need to understand its key concepts. Besides learning by practicing, another opportunity is learning by teaching. Think about it, if you can explain concepts or techniques to other people, you have to have a good understanding about it.
Thus, a great way to learn e.g. React, is to prepare and give a talk about it. Sure, it might consume a lot of time. However, getting good at something isn’t easy and requires to spend some time.
You don’t need to give a talk at JSConf (even this would be awesome). Start small! You can prepare a talk for your project team members. Maybe your organization has established something like a tech talk program as an internal way to share knowledge. Or you go a step further and give a talk at some meetup or user group.
If you want to take your teaching skills to a next level, you could prepare and conduct a training course. Again, you could start with co-workers before you enter the "big stage" where external clients are involved. Besides learning a lot, you increase your personal value for your employer.
Embrace the Suck
This statement has burned into my mind. I overheard it from a YouTube fitness channel. However, this is also valid for learning tech.
It is helpful to develop such an attitude, because it makes the learning path a much better experience. Think about it. It is totally normal that you suck with new tech because you have thousands of open questions and lack previous experience. This early learning phase might be frustrating. However, here you have the biggest learning potential. In later phases it is more difficult to get better. It’s like learning new fitness skills.
Keep in mind that failing belongs to the learning process.
Have a Side Project
Even it is important to fail in order to learn, this is barely possible in real-life projects at work. Therefore, at least for me, it is beneficial to have one or more side projects as a playground to learn new stuff. You can experiment with new things and when you have learned something, you can incorporate it into your project at work.
Such a side project has the advantage that it’s fun. You don’t have a context that slows you down. You can simply do what you want. Such projects are also very important at times when your project at work does not bring joy due to things, such as time pressure.
Learn from Others
Don’t fool yourself that you don’t need other people, even if you are pretty good at some technology. You can learn plenty of things from co-workers and other people part of the community.
Besides utilizing knowledge of others by watching talks, conducting (free) online courses or reading blog articles, you can also learn a lot from working together with co-workers. The following things are beneficial for your learning progress:
- Learn from others performing reviews of your code (e.g., pull requests)
- Learn from performing code reviews of others’ code (e.g., pull requests)
- Do pair programming or mob programming with co-workers. Make sure to cycle around the keyboard.
- Talk about your implementations with others. Learn from more experienced co-workers. Make peace with it that your solution might have to be refactored. You will learn a lot by doing this.
As an example, I’m relatively new to React. During a pull request I learned about render props from a co-worker. I than worked myself into this React pattern and refactored my code several times. I presented my current state several times to the co-worker and obtained quick feedback. Then, I incorporated it into another code revision. In the end, the code was shorter and cleaner and I have learned a lot.
Continuously Adapt your Learning Approach
I compare learning tech with learning fitness skills. Sometimes you loose motivation to continue with your workout routine. Or your context changes, e.g., because your workout buddy has moved away. You need to change something! You need to adapt!
As an example, a few years ago I travelled a lot to work by train. I read a lot of blog articles and e-books or watched learning / conference videos. I didn’t have good Internet connection on train so I preferred to perform offline tasks.
Meanwhile, I live at the city where my work is located. Now, I save a lot of time because I do not have to travel. However, I do not read as many articles any more. On the other hand, I have about two more hours a day available at home with good Internet connection. So currently, I like to learn things with video-based learning platforms, such as Egghead or Udemy.
Sometimes I have to drive a lot with my car. In the past, I considered such time as lost time. By now, I leverage driving time to listen to (tech) podcasts, e.g., Syntax. I also listen to podcasts while cooking.
You’ve got the idea! Adapt your learning approach if you lose motivation or fun. The same is true if your context has changed.
Do other Things, too
Engaging with tech every single day, many hours a day is not working out in the long run. You need to clear your mind by doing other things, too. Spend time with your family, pursue your hobbies, or simply don’t define yourself only by tech, even if you enjoy it. Otherwise, you might get trapped with something like JavaScript fatigue.
To be good at tech, you also need to have a healthy mind and body. Work also on your physical health by moving your body or working out. Don’t have fear of missing something out if you don’t spend as much time as you would like to for learning tech stuff. Again, in the long run it is better for you. Otherwise, you might suffer burnout somedays. I have to admit that I struggle myself with this problem – I would like to learn tech things in a faster pace and would like to do more side projects at the same time. However, you need to find a healthy way of spending enough time for learning tech but do not neglect other important things in your life.
You might find tools like Todoist, Feedly, Pocket, etc. helpful to manage the information overload and establish a healthy process for yourself.
Sources of Inspiration and Learning Resources
This is a subjective and by no means complete list. It is meant as a source of inspiration for your learning requirements.
-
In order to learn a technology, you have to have a good overview of the ecosystem. There virtually exists an "awesome list" for everything. E.g., to get a broad picture of React, take a look at this awesome list.
- If you like to learn new technology in great detail, and if you are fine with spending many hours for that goal, then take a look at video learning platforms, such as Udemy, Vue Master, or Wes Bos.
- If you prefer a faster pace regarding video courses, you might like e.g., Egghead or YouTube.
- If you want to learn by reading (e-) books, I can recommend the following resources: A book Apart and Smashing Book
- You can leverage tech podcasts to get inspired or learn from new topics you can invest into later on. Currently, I like Syntax very much.