Ending Words Brave the Wind and the Rain, Advance Despite Difficulties

Ending words Brave the wind and the rain, advance despite difficulties #

Time flies. From the official start of this column at the end of March until now, almost half a year has passed without me realizing. Today marks the end of this column, and I would like to share with you my thoughts and some study methods.

Looking back on the writing process of this column, I experienced enthusiasm in April and May, exhaustion and confusion in June, regained confidence in July, and perseverance in August. Though it has been tough, I have gained a lot.

They say the beginning is always the hardest, and designing this column was no exception. I remember being hesitant when the editor first discussed the focus of this column with me. Java, as one of the most popular programming languages, is well-established, versatile, and has a powerful ecosystem. The realm of performance optimization for Java is vast and complex. How should I define the breadth and depth of the content? How can I design it so that you and many other Java programmers can benefit from it? These were my initial headaches.

Later, the editor suggested that I envision this column as “advice for myself who started working in this field years ago.” Instantly, an overwhelming feeling overcame me.

Reflecting on my past, both in work and learning, I realized that I have taken many detours. I can truly say that I stepped into each pit along the way. When I first started, learning resources were scarce and guidance was limited. I urgently needed to rapidly strengthen my skills because of the constant online bugs. I believe many of you, including yourself, can relate to the similar experiences and feelings of being a programmer.

Therefore, I staunchly set the starting point for this column. With a solid theoretical foundation as a premise, I explained topics centered around “Java basic coding, multithreaded programming, JVM, and databases.” I gathered more than 40 valuable points from my own experience and shared them with you. My goal was to pass on some knowledge and guide your progress.

As this column comes to an end, I have gained a lot from our online interactions over these three months. Combining your comments and messages, I would like to share some study methods with you for mutual encouragement.

First and foremost, having a solid foundation is the cornerstone of building our knowledge walls. This is something I firmly believed in from the beginning.

Starting from the fundamentals of operating systems, network communication, and data structures, to programming languages, these are the bricks and stones that construct the foundation of our knowledge tower.

Have you noticed that network communication configuration parameters also exist in TCP communication frameworks? When configuring default parameters for Netty, I discovered that many people were mistakenly configuring the parameters of ServerSocketChannel in SocketChannel. Although this may not lead to any severe bugs, it reflects our attitude towards technology.

Therefore, if you encounter unfamiliar knowledge points at work, I strongly encourage you to dig deeper and understand their principles and purposes. If you find that these knowledge points belong to an unfamiliar field, I recommend you take a systematic approach to study from the fundamentals to get a comprehensive understanding. Then, consciously exercise our comprehensive quality, with practical ability as the focus.

System performance tuning tests not only our basic knowledge, but also the comprehensive quality of developers. First and foremost is our practical ability. Being good at putting knowledge into practice not only allows us to understand the principles more deeply, but also helps us discover more problems in practice.

In fact, we are never short of “Mr. Know-it-all” around us, but what is lacking is people who are good at practical application.

Combining in-depth exploration and hands-on practice is a very efficient learning method, but I believe that most people find it difficult to achieve these two points. Tedious work already occupies most of our time, so when we encounter unfamiliar technical points, we are likely to ignore them directly because the functionality still works and there is no significant performance issue.

This habit will make us increasingly restless on the path of technical growth, always staying at the stage of “knowing how to use”. My method is to coordinate time and prioritize urgent tasks. When I come across unfamiliar technical points and there happens to be no urgent demand, I will appropriately set aside work and thoroughly understand these technical issues. There are many channels for this, such as reading source code, official documentation, or searching related technical forums. However, if unfamiliar technical points lead to unfamiliar areas of knowledge, then it is necessary to plan learning time and route.

Finally, learn to share and practice the “Feynman Learning Technique”.

I have noticed a phenomenon that whenever I share a knowledge point, I myself understand it very deeply, and after being questioned by friends or colleagues, I can encompass various aspects of the learned technology. I want to thank you for leaving comments in the column and having technical exchanges with me. I really enjoy this way of improvement and I hope you do too.

This phenomenon is actually a famous learning technique called the “Feynman Learning Technique”. The Feynman Learning Technique suggests that you imagine teaching what you have learned to someone who knows nothing about that subject. The content of your teaching needs to be explained in a simple and understandable manner, and during this process, questions will continuously be raised that will require you to reacquaint yourself with those knowledge points.

I think this is a great learning method. Technology is not developed in isolation; in-depth exploration and practice are necessary. However, organizing and systematizing what we have learned through sharing is also an essential skill that allows for a deeper and more comprehensive understanding.

Faced with the rapidly changing internet industry today, from the moment we enter the field of technology, it means that we have a long way to go. I hope that all of us in the future can withstand the storms and forge ahead!

Finally, I want to say that although the column has ended, the updates and optimizations continue. I must face up to the shortcomings of the column, so I have designed a special survey. I hope you can take 2 minutes of your time to fill it out. The future of the column depends on your feedback (after completing the survey, you can receive an exclusive discount coupon). Thank you for your companionship and wish you success in your work!