36 Plus Lesson 6 How I Learned Tech and English at Work Over 15 Years

36 Plus Lesson 6 How I Learned Tech and English at Work Over 15 Years #

Today, I want to talk to you about how to grow faster in your work.

Over the years, I have often been approached by colleagues seeking advice on learning and personal development. Their problems can be summarized into two categories.

First, those who have been involved in CRUD business development projects for a long time may experience a bottleneck in their technical improvement. They find it difficult to learn new knowledge and have no opportunity to practice various new technologies. They worry about being phased out or having difficulty finding new job opportunities.

Second, some people started learning English relatively late. During university, English was mainly learned for exams, resulting in a low proficiency level. They struggle to understand technical materials in English, let alone consider finding a job in a foreign company.

Perhaps you are also facing these two problems? Today, I will share my own experience with you and discuss how to utilize a limited environment and limited time to learn technology and English.

Mastering Skills #

In my opinion, building a knowledge network is like constructing a building: the foundation, or the bearing capacity of the foundation, determines how high the building can be built; breadth is about making the house large and wide; depth refers to the height of the building. Therefore, if you want to enhance your level, the development of these three aspects is indispensable.

First, learning must rely on self-discipline. #

Although work experience and project experience are important means of practicing and improving skills, not all work and projects can continuously enhance our skills. Therefore, if we want to improve our technical level, we must dispel the idea of ​​improving solely through work experience and rely on actively learning and accumulating in our spare time.

For example, you can comprehensively read official documents related to the technologies used in projects and do various demos to demonstrate their technical characteristics. In this process, you will certainly have many technical questions, so continue to expand your learning.

Second, do not hesitate to share. #

When I just graduated, I spent a lot of time and effort answering questions on CSDN, actively writing blogs, writing books, and translating books. These experiences greatly helped my technical growth.

We may think that we have completely mastered many knowledge points, but that may not be the case. When we have to explain something to others, we must understand every detail 100%. Therefore, sharing is not only a way to help ourselves further clarify each knowledge point and exercise our expression skills, but also a means to force ourselves to learn because you have to ensure timely delivery.

Of course, the sharing process also requires some positive motivation to keep yourself enthusiastic about sharing. For example, the honors I have received, such as Microsoft MVP and being recognized as a top 3 expert on CSDN, have greatly motivated me to continue learning and helping others.

Third, do not stay in your comfort zone. #

Let me share a real experience. After joining a company and forming a new team, when making technology choices, considering factors such as cost, I gave up working with .NET technology that I had engaged in for seven years and switched to Java. With the accumulation of .NET knowledge, it only took me two weeks to switch to Java. In fact, making this decision was very painful at first, but breaking out of my comfort zone was not as difficult as I imagined. Afterwards, I also self-studied technologies or languages such as iOS, deep learning, and Python.

As I mastered more and more technologies, these technologies not only made it easier for me to understand new ones, but also allowed me to realize that technology is just a tool and that using the right technology is necessary to solve problems. Therefore, I also recommend that you use your spare time to learn several different types of programming languages, such as Java, Python, and Go.

Sometimes, because of fear of stepping out of our comfort zone, we are unwilling to learn and introduce appropriate new technologies to solve problems. Although this saves upfront learning and transformation costs, it will require more time later to compensate for technical shortcomings.

Fourth, laying a solid foundation is important. #

Here, “foundation” refers to the part of knowledge that is independent of programming languages, including basic hardware, operating system principles, TCP/IP, HTTP, data structures and algorithms, security foundations, design patterns, database principles, and so on. Learning foundational knowledge is a relatively tedious process that requires substantial time to systematically read relevant books and put the knowledge into practice. Only by practicing technology can it truly stick in your mind, otherwise it is just knowledge on paper.

For example, when learning TCP/IP, we can use Wireshark to observe network data. Another example is when learning design patterns, we can consider whether there are corresponding applicable scenarios by combining real-life business cases. If there aren’t any, can we simulate a scenario and then use all design patterns and the programming language we are familiar with to develop an actual demo. These fundamental knowledge that seemingly have little to do with our daily business development are the most important foundation for us to deeply understand technology.

Fifth, find ways to accumulate technical depth. #

For developers, technical depth is reflected in the transformation from users of a framework, component, or SDK to developers.

Although it is not recommended to reinvent the wheel or build frameworks from scratch, we can definitely read the source code of various frameworks to understand their implementation and try to implement prototypes of some basic functions of these frameworks. For example, you can try to implement the basic functionality of frameworks like MVC, RPC, ORM, IoC, AOP, etc. During the implementation, you will encounter many problems and challenges, and then you can further study how frameworks like Spring, Hibernate, Dubbo, etc. are implemented.

When you have implemented your own small framework, you will gain not only a sense of accomplishment but also a deeper accumulation of technical depth. In this process, you will encounter and solve many problems. With these experiences, learning and even customizing popular open-source frameworks later will become easier.

In addition to implementing some frameworks, I also recommend choosing a middleware (such as Redis, RocketMQ) to practice and learn network knowledge.

We can start by implementing its client, using Netty to implement the functionality of the TCP communication layer, and then implementing features such as protocol encapsulation and client connection pool with reference to the official documentation. During the implementation, you can conduct load testing on your own implemented client and analyze the performance difference between your implementation and the official implementation. In this way, you can not only gain a deeper understanding of TCP/IP networks but also acquire a lot of optimization experience in the network field.

Then, try to implement the server to further deepen your understanding of networks. Finally, attempt to expand the server into a highly available cluster to deepen your understanding of distributed communication technology.

In the process of implementing such a distributed C/S middleware, your understanding of technology will definitely deepen a lot. In this process, you will find that the “deepening” of technical depth is closely related to the accumulation of basic knowledge. Without a solid foundation, it will be difficult to delve deeper. At this time, you can go back and relearn some basic theories systematically.

Sixth, expanding technical breadth is also crucial. #

In addition to learning multiple programming languages as mentioned earlier, when it comes to expanding technical breadth, we can focus on two aspects.

First, read a large number of technical books. I typically purchase various technical books that are recently published (not only related to programming). Over the past ten years, I have bought over 500 technical books, and approximately one-third of them have been read completely, another one-third have been flipped through roughly, and the remaining one-third have been skimmed through their table of contents.

Extensive reading allows me to understand mainstream frameworks and platforms of various technologies. The advantage of this is that when evaluating technical solutions as a whole, I can understand what everyone is doing, instead of just comprehending a part of the solution. For those books that I cannot finish reading but are valuable, I label them and read them when I have free time.

Second, when developing programs, we often directly use databases (like Elasticsearch, MySQL), middleware (like RabbitMQ, ZooKeeper), and container clouds (like Kubernetes) that are set up by operations. However, if we only know how to use these components without knowing how to set them up, our understanding of them may only remain at the API or client level.

Therefore, I suggest that you try to build and configure these components from scratch and analyze them yourself when encountering performance issues. By bridging the gap between implementing technology and using it, we won’t feel helpless when encountering problems. I usually purchase servers that are charged by the hour in public clouds to build server clusters and try to set up and test these systems, deepening my understanding of operations.

Learning English Well #

Why should we talk about the methods of learning English separately? This is because learning English well is very important for students in the field of technology:

  • The community environment overseas is better, and many technical problems can only be searched on Google or Stack Overflow using English keywords;
  • You can learn various new technologies and read first-hand materials firsthand. Chinese translated materials often have a delay of at least half a year;
  • Participating in or researching various open-source projects requires using English to ask questions and read others’ replies.

So, learning English well can broaden our personal horizons as a whole. However, for working people, we may not have much time to invest in learning English. So, how to use fragmented time to learn English relatively leisurely? Another problem is that learning English requires a lot of practice and training, but if we don’t work in a foreign company, we don’t even have an English-speaking environment. How can we solve such contradictions?

Next, I will share with you the methods I use to learn English from the aspects of reading, listening, writing, and speaking.

Reading #

Reading is the most important aspect for us in the field of technology, and it is also the easiest to master. I suggest you learn in this way:

Start by reading the technical documents around you, and choose to read English documents if there are any. Firstly, it is related to actual work and is the knowledge we really need, so it is easier to read with interest. Secondly, most of the vocabulary in these documents has been encountered in our daily life, so the difficulty will not be too great.

The vocabulary used in technical books is not large. After you have some foundation, you can formally or informally participate in translating some English books or documents. From my experience, after translating a book, you don’t need to look up words in dictionaries when reading any technical material in your daily life.

Subscribe to some English newspapers, such as China Daily. First, it is related to daily life and the news is about what is happening around us, so it won’t be too boring. Second, it can further accumulate vocabulary. In this process, you will definitely need to look up words in the dictionary a lot, which will make you feel very painful. However, generally speaking, after looking up a word a maximum of three times, you will remember it, so as time goes by, you can gradually get rid of the dictionary, and your vocabulary level will also improve.

The development of reading ability in technical aspects usually only takes about three months, but reading materials about life may take a year or even longer.

Listening #

Reading requires accumulating vocabulary, and training listening skills requires time to hone your ears. Everyone can choose materials suitable for themselves to train their listening skills. For example, I train my listening skills by watching American dramas.

Let me take watching American dramas as an example to talk about several key points in training listening skills.

The process from quantitative change to qualitative change requires 1000 hours of quantity. If a TV series is 100 hours, then it might be painful to watch the first 9 shows until one day you suddenly find that you can understand them all at once.

Ensure that there are no Chinese subtitles when watching American dramas, otherwise it is difficult to resist the temptation to read them. Watching subtitles will undermine the effect of training listening skills. When choosing American TV shows, you can start by selecting those with less dialogue or those that cover topics you are interested in. This way, it will be easier to stay engaged and not give up. If, after watching for the first time, you have a comprehension rate lower than 30% and find it difficult to understand the plot, you can watch it again with Chinese subtitles before watching without them.

It’s not about how much you watch American TV shows, but rather finding suitable content to practice repeatedly. Some people say that watching “Friends” a hundred times can bring your English listening and speaking skills close to those of native English speakers.

If watching American TV shows doesn’t suit you, you can explore other options like listening to interesting podcasts while driving or taking the subway.

In summary, choose materials and content that you enjoy, start with simpler ones, and keep listening. If you have a decent vocabulary, using a dictionary is not necessary. Often, after encountering the same word ten times, we understand its meaning.

Always remember, don’t give up easily before accumulating 1000 hours of practice.

Writing #

If you have experience in foreign companies, regularly writing English emails and documents can generally help you with your business English. If you don’t have any experience in foreign companies, don’t worry. You can try the following methods to improve your writing skills:

Write an English diary every day. Diaries are for your own eyes, and no one will laugh at you. You can start with simple topics.

While maintaining your writing practice, make sure you have a consistent amount of reading. Writing well, from accuracy to precision to elegance, relies on accumulated reading.

Use English comments when writing code or try writing English blogs. In any case, make use of any opportunity to write and enhance your English expression.

I’ll share another small tip with you. When you want to know the English translation of a Chinese word by searching a dictionary, try not to directly use the translated English word you find. It’s better to confirm its accuracy through English example sentences before using it, to avoid embarrassing mistakes.

Speaking #

Opportunities to practice spoken English are scarce since there are fewer English speakers around, making it difficult to practice on your own.

Here, I’ll share two methods with you.

The first is to buy one-on-one conversation courses with foreign teachers to practice. These courses are usually billed by the hour. Native English speakers will chat with you online about various topics to help improve your conversational skills.

Whether you buy these courses or not isn’t essential. As long as you have a native English speaker to help you improve, it will suffice. Additionally, extensive listening practice can also enhance your speaking ability. Through repeated reinforcement, many English phrases become subconscious responses. Therefore, you’ll find that when your listening comprehension undergoes a qualitative change, your speaking ability will also advance.

The second method is to speak boldly, without worrying about grammar errors, pronunciation issues, or fluency problems that may lead to mockery. In fact, think about it in reverse—would you laugh at a foreigner who makes these mistakes while speaking Chinese?

Here’s a technique: try to use simple expressions and vocabulary, and focus on getting the content across. Even if it’s just a few keywords or phrases instead of trying to construct a complete sentence in your head, speaking flexibly and accurately is the smart approach.

Summary #

In conclusion, I would like to say that if you feel tired and progress slowly in your learning, do not give up. Persisting will lead to improvement. When I first graduated, I was also confused about OOP for a while and could not understand its concept. The code I wrote was purely procedural. However, I did not give up. After participating in the development of complex business programs for a few years and self-studying design patterns, there was a moment when I suddenly could write OOP business code.

Learning is a process of accumulation and gradual improvement. I hope the learning methods I shared can inspire you. However, everyone’s situation is different. You must find a learning method that suits you to make it easier to persevere.

Continuous learning is important. It is not necessary to cram and learn in a short period of time, but it is best to learn slowly and continuously accumulate knowledge. The more you accumulate, the easier learning will become. If you feel stuck and unable to learn, do not be discouraged. It is because you have not accumulated enough. You must have had the experience of finding a book difficult to read last year, but this year it feels just right, and next year it will feel relatively easy. That’s the key.

I am Zhu Ye. Feel free to leave a comment in the comment section and share your experiences in learning technology and English. You are also welcome to share today’s content with your friends or colleagues to have a discussion together.