With this article I will introduce you to my approach to learning a new programming language.
The blog post is divided in two parts:
Part 1 contains easy to apply tips which can be used by everyone, even by beginners. I would like to share my experience because I had decent success having this approach throughout my career and it can be useful for you as well;
Part 2 which is coming soon is focused on learning “Angular 2+” in a short amount of time. I will list some useful tips, articles and examples that will help you advance faster and become familiar with the language. Those tips, examples and articles will not make you an “Angular 2+ guru” or an “RxJs magician” but they will help you to get started.
The listed information is up to date by the time I write this blog, but have in mind some things may and will change in the near future. That’s how technology works, it constantly changes and evolves. My most recent success using this approach was when I started my current job as a Frontend developer. I needed to advance at Angular 2+ in short amount of time, which made me an active player in the team in just two weeks. I started as someone who had never used Angular and Typescript and became the one who can develop Angular 2+ applications in a Reactive way with NGRX and RxJs.
Learning new programming language: what benefits the process?
Here are some of the factors that will have an impact on your overall success when you start learning new programming language:
1. Past experience
People with programming skills and experience will advance much faster than absolute beginners. The reason is that there are many similarities between the programming languages.
All modern technologies used for backend development have some kind of Architecture (all the layers that you need to manipulate and interact with to deliver something from the depths of a database to some kind of an endpoint over the network).
* communication – REST, HTTP, WebSockets(or any other type of communication protocol). TCP/IP OSI Model.
* BLT (business logic tier) – some kind of a framework used for application state management for backend applications. J2EE, Spring, .Net, Python Django
* ORM – Some kind of a framework that maps Objects to a real world database tables. JPA, HIBERNATE and others.
The picture above represents the bread and butter of backend development. As expected someone with experience in any of the layers will advance faster than someone without. In my previous job I worked as a J2EE developer with Jersey,EJB 3.0 and JPA 1.0. This means that my transition to a Java Spring developer with Hibernate will be much easier compared to other people who have no experience.
2. Motivation and passion
Having a good approach will maximize your focus and straighten your attention. It will also lower your stress and definitely help you to advance.
Approach and Tips
1. Avoid Stress!
2. Study at a quiet and peaceful place.
3. Don’t forget to get the right amount of sleep.
4. Take notes about everything you do.
5. Don’t be afraid of going back and redo something all over again.
6. Question yourself. This way you will be sure of the things you know.
7. Don’t rush it. Take a break.
8. Outline the “missing parts of the puzzle”
9. Let the information sink in.
Let me say a few more words from my experience:
To avoid stress go to work an hour or two earlier. You will skip most of the traffic, this also applies for leaving a bit earlier. You will enjoy some quiet time before your colleagues show up. Throughout the whole learning process my biggest advancements were during those quiet hours. In those times in which I needed more sleep I was going to work an hour or two later. The bad thing about that was I arrived in the middle of the day and the quiet hours were automatically moved at the end of the workday, when my focus has lowered.
A quiet place for studying does not need to be an empty room with soft white walls and tinted windows with steel bars. If you are like me and you are often getting distracted by noise there is quite much you can do about it:
1. Quiet hours: at work we have the so called “Quiet hours” between 2:00 PM and 4:00 PM. This is the time when everyone can focus on their tasks without being interrupted. If you urgently need to interact with someone you can contact them via Slack for example. And if you both need to discuss something you can book a room together so you do not bother your colleagues.
2. Earplugs: Some people don’t care enough for their earplugs and some cannot live without them so they pay a lot of attention in order to maintain them in good condition. I recommend taking a good care of your earplugs and keeping them clean.
3. Listen to music or relaxing sounds: You should choose your music carefully. For example I prefer listening White Noise which helps me concentrate more than regular music, which usually distracts me.
4. Learn do ignore noise: Throughout my career I’ve seen people who are ignorant of the noise around them, no matter how strong it is. It is useful to train yourself to do that and gaining that skill happens with time and practice.
If you increase the quality of your sleep, you will get a lot of benefits. Try to sleep in a room with temperature lower than the usual, this makes your body and mind rest better. Make a routine about your bedtime. Often a solution of a problem from a previous day emerges in the morning after a good sleep, when your mind is fresh. Learn to reset your body & mind system. Spend at least one of the weekend days entirely for yourself. Those are the days in which I don’t even turn my PC on. I usually spend the most of the day outdoors or I sleep until late hours or watch Twitch.tv. By doing this I reset my body and mind and on Monday I’m usually very productive. I like to keep my TV or PC screen off most of the time during weekends so my eyes can get some rest.
While studying I usually take a lot of notes by hand and the content of the notes is usually an interpret version of the things that I read in an article. If there is some type of scheme or picture I try to visually recreate it. When the difficulty increases I start asking myself questions. Those questions are about the things I might have overlooked earlier and when some of the explanations become a bit shaky I usually go back to look at my notes.
How do I approach code examples? I like to inspect them and to outline the things I do not understand, like expressions, weird function calls, strange definitions or imports. When I find all the answers, I like to inspect the application again to get a feeling for the overall file structure and the overall flow when making an application. When I’m finished with the inspection I usually extend or recreate the application.
It is important to take breaks. If you are going to challenge yourself with some kind of self-improvement in anything for a short amount of time, make sure to take a lot of breaks. The days when I arrive early at work I’m really focused for the first hour and a half or two. After that my attention span is greatly shortened and this is when I start taking breaks. Until the end of the day I usually maintain a consistent level of focus, attention span and breaks. When I start hitting the seventh and eight hour mark I get too tired and I’m unable to absorb and process information.
So another thing to do is to find your golden hours, the ones during which you feel productive. When I start working late for example, like 11:00 AM, I get very distracted by the noises around me because it’s the busiest time at the office. After the first one or two hours I’m usually exhausted from all the distractions, noises and switching between tasks, but when my colleagues start to leave I usually regain my focus for the next two to three hours during which I advance a lot. Another option is to go to work early in the morning when I have my time to concentrate.
There are many ways to improve the process of learning. What is important is to find the things which work for you and make you productive. Some people prefer going to work early, some prefer listening to music while working… It is up to you. But what I can tell for sure from my experience is that the process of learning is 20% studying and 80% making your learning sessions effective by lowering your levels of stress, increasing your attention and of course – resting.