- Published on
The right way to learn
The first robot I ever built from scratch.
After three years of working in the industry, I decided to take a break and pursue a Master’s degree abroad in France. Initially, I thought returning to study mode would be exciting, as I remembered how much studying had excited me in the past. But I was mistaken—this time, the studying felt boring. This made me question: what had changed?
In the industry, I learned a lot—about distributed systems, networking, continuous development, and more. No one told me to learn these things; I learned them to solve real problems for customers. This new excitement was something I discovered as I grew. In the past, I didn’t have to think about real-world problems; my only concern was getting high scores on exams. But after three years in the industry, I realized that this pursuit was ultimately meaningless and unimportant to me.
Of course, I don’t want to dismiss the value of good grades. But studying just for grades isn’t the right motivation. During my undergraduate studies in Vietnam, I had a classmate named Viet Anh. He was a genius who often skipped class, yet he still scored higher than I did, even though he attended less often. The only difference was his approach—he wanted to understand the nature of things through problem-solving.
Find the problem that you want to solve
For example, in our networking class, while everyone was trying to understand the basics of TCP and UDP, he had already implemented a project that allowed video and voice communication over the internet using UDP. For his thesis, while most students focused on improving a small aspect of existing technology, he created a fully functional edge-computing product for ADAS (Advanced Driver Assistance System). He learned by engaging problems that required real applications of his knowledge, not for the sake of grades. I don’t think I had that mindset back then.
For my thesis, I also worked on Artificial Intelligence (AI). I chose AI not because it sounded cool, but because it addresses many problems I care deeply about. Back in 2017, I joined a project-based learning program to create a small autonomous robot with Japanese students. The project sounded exciting, and through building the robot, I learned a lot on my own. First, I learned how to solder and assemble components to form a complete robot. Then, I studied embedded programming so I could install programs to read sensors and control motors. Finally, I explored control theory to make the robot more intelligent. However, control theory was mostly simple “if-else” coding, and I started wondering: What if the sensors were more complex, like a camera? How could we make decisions based on images rather than just one-dimensional signals from an LED line-sensor?
Make something, simple to difficult
In 2018, I joined a self-driving car competition in Vietnam to explore this further. Initially, I knew nothing about AI. I began learning that an image is a type of signal and that computer vision can extract meaningful information from it. For example, we could use the Hough Line Transform to detect lines, then control the car based on the direction of the lines. For traffic signs, we could use simple template matching to detect and classify signs in real-time. Our team initially used basic computer vision techniques, but in 2019, we began to see the powerful capabilities of deep learning compared to traditional methods. We learned about YOLO for object detection and UNet for segmentation. Soon after, we applied these new methods and realized the potential of AI for self-driving cars.
From working with a basic LED line-sensor robot to developing a traditional computer vision robot, and eventually creating a deep-learning-powered model. I feel fortunate to have developed my knowledge along this path, starting with simple tasks and gradually building up each project with newly learned knowledge. In 2020, with skills from these side projects, I passed the interview at VinGroup and had the opportunity to get hands-on experience with their self-driving car.
Conclusion
Even after coming to France to pursue a Master’s degree at a highly ranked university, I still find traditional teaching methods quite boring. For example, in my Natural Language Processing course, the lecturers simply introduced the Transformer model, emphasizing its significance and presenting many complex mathematical formulas. However, they failed to explain why the Transformer exists in the first place, provide practical context, or break down the concepts into digestible chunks for students. The only person who succeeded in helping me understand Transformers and LLMs is Andrej Karpathy—his teaching videos are of exceptional quality.
Now, I’ve come to understand how to learn effectively. First, define the problem you're trying to solve, and then use the knowledge you’ve gained to tackle it. If the problem feels too big, break it down into smaller, manageable parts and solve them step by step. This approach is not only the right way to learn, but also the right mindset to have in your professional career. It’s not about showing off how many programming languages you know or how much theory you've learned. What truly matters is demonstrating what you’ve achieved in the real world—solving tangible problems. And I really like the sentence from our Uncle Ho "Learning and practice must go hand in hand. Learning without practice is useless. Practice without learning makes the practice ineffective."