- Software as Career
- What do You Want From Your Career?
- Combining Software With Other Fields
- Does Education Matter?
- Personal Networking
- How to Become an Expert Developer
- How to Become an Expert Quickly
- Will Open Source Development Help Your Career?
- How to Become a Freelance Java Developer
- Don't Be a Herdie
- Learning is Hard But Don't Give Up
- Veteran, Senior and Junior Developers
Learning is Hard But Don't Give Up
As a software developer you will often have to learn new things. New techniques, tools, architectures, processes, principles, business domains etc. Our industry keeps changing at a rapid speed.
Learning can be very motivating because learning enables you to solve new problems, or solve old problems in better ways.
But learning can also be very frustrating at times. Documentation for new ideas (tools, techniques etc.) is often not very good, so it can often be hard to learn a new idea until a book is published about it. And even the technical books are often not very good. At least half the tech books (or business books for that matter) are very messy, failing to clearly convey the core ideas in a structured fashion to the reader.
This frustration happens to a lot of us. It happens to me all the time. So, if you feel this frustration, know that you are not the only one. Far from it, in fact. In the rest of this tutorial I will tell you what techniques I have used to overcome this frustration, and overcome the barrier of bad documentation.
You Are Not Stupid
The first thing to know is that you are not stupid. Lots of people have a hard time learning new ideas. Even if your friends / colleagues seem to learn faster than you, that is not necessarily because they are smarter than you. There are other causes that play in. I will explain some of them in a little while.
Just don't tell yourself that you are stupid. If you need to tell yourself anything, tell yourself that you are uneducated in that particular topic. That doesn't make you stupid or uneducated in all the other areas you know something about. You are simply topically uneducated (uneducated in that topic).
One reason your friends / colleagues seem to learn a given topic faster than you might be because they have prior knowledge about it. The might have learned about this before. They might have had a course in school / university about the topic, read a book about it, read a few articles, played with the technology before, or even worked in a company that used similar techniques, and had colleagues that could explain to them how it worked.
Having prior knowledge makes learning a lot easier. I can clearly see the difference between jumping into a topic I already know some basic things about, and topics where I am completely blank.
Interest and Motivation
Your friends / colleagues might have a strong interest in the given topic. Strong interest in a topic usually leads to strong motivation to learn. That motivation usually drives people to keep trying to learn the topic, not because they have to, but because they want to.
If you are just learning a given topic because you have to learn it for work or school, and you don't have any deeper personal interest in the given topic, you will be at a disadvantage compared to those who have strong interests in the topic. Even so, you can still learn the topic.
Don't Give Up
Once you realize that you are not stupid, you also realize that from here on it is just a matter of how big an effort you put into learning the topic. So, don't give up. Keep trying. Sooner or later you will understand it. But - be prepared that you might have to work harder to learn that topic than your friends or colleagues.
In the following sections I will explain what I do when I encounter topics I find frustratingly hard to learn.
Reread the Book
There is nothing more frustrating than a book that is hard to understand. It makes you feel stupid. However, as you gain more and more experience, you get better at distinguishing between your own incompetence and a book that just doesn't explain a topic very well. Lots of books are just not very good.
If you don't understand a book the first time you read it, you might benefit from rereading the book. The second time you read the book your brain doesn't have to work as hard to understand the parts you already understood the first time you read the book. That leaves more brain capacity for the parts you did not understand during first read.
I have had books I needed to read up to 5 times before I finally understood everything in them. First time I might have understood something like 20-50% of the book. Each reread then added another 10% or so, and finally I understood it all.
Read More Books
Another technique I often use is to read more than one book about a given topic. The different books are not always weak in the same areas. Thus, if I understand 40% of the topic from the first book, I might add another 20% to that from reading the second book.
Combine reading multiple books with rereading the books. If you understand 20% from the first book, then and additional 30% from the second book, you now know 50%. With that knowledge, go back and reread the first book. Most likely you will be able to get another 5-10-20% out of it now. And then you can return to the second book etc.
It is not uncommon for me to use 2-3 books on a given topic to cover all the necessary ground. Also, I keep switching between them until I have understood everything I can from them.
Use More Sources
When I cannot get books about a certain topic, or if the books are weak in certain areas, I often supplement with online resources. Tutorials in article and video form are often very useful supplements. Articles often dive deeper into narrow topics, or give a more brief overview than a book can. The same with videos.
Again, I often read several different articles and watch several different videos about the same topic, until I finally feel I understand it.
When what I have to learn is programming related I often find it beneficial to make code examples myself.
I open an IDE / editor, type in the examples in the book (or make up my own examples) and check that I get the
expected result. I guess you could even setup unit tests for that, but I often just use a
method to run my examples.
If you really cannot understand a certain topic, or a small part of it, ask people. If you have friends or colleagues that understand the topic ask them to explain it to you. You will be surprised about how often they are willing to do so. You might think they will think you are stupid - and maybe they will. But once you can demonstrate that understand the topic - after their explanation, they will usually not think you are so stupid anymore. Now you understand, right?
Few Will Remember How Long it Took For You To Learn a Topic
Don't be afraid that your employer, friends or colleagues will think you are stupid, or a slow learner. They will usually forget once they realize you have learned the topic. Some years later, nobody remembers how long time you took to learn a given topic.
Even if they did remember, their current experience is that you do understand the topic, so it doesn't really carry so much weight. Chances are, they have topics themselves where they too had to spend a long time to learn them. Most experienced developers will understand that, and not hold that against you.
In the end, all that matters is that you learned. Not how long time it took to learn it.
So, you should definitely not give up. You might need longer time than others to learn a certain topic, but that doesn't mean you cannot learn it. It just means you have to spend more time learning it. And - you can compensate for that exactly by spending more time on it.
Reread the books, read multiple books, use multiple sources, make examples and ask people.
With each iteration your understanding grows. In the end you will understand the topic, and when you do - nobody will remember how long time it took you to learn it.