The counterattack of a young programmer in a small town: the technical backbone of a listed company publishes two technical monographs

Editor's note:

1024 is 2 to the tenth power and is one of the basic units of measurement for binary counting. In the history of computer development, in the binary world represented by 0/1, someone used code to weave all kinds of numbers, programs, and the Internet, creating myths one by one.

——They are a group of lovely, low-key and down-to-earth programmers, nicknamed: Siege Lion, "Program Ape", Ai Ma Shi. October 24th is "Programmer's Day", which celebrates the programmer's own holiday. Today, let's talk about this group of Amates: a group of people who love to pursue the forefront of technology and chase their dreams.

In this issue, Wu Jiong, the technical backbone of the infrastructure department of the R&D center of Lizhi Group, brings us his story: from a young man in a small fifth-tier town and township, all the way through his own efforts to gain a foothold in a first-tier city, become a listed technical backbone, write a column, Two technical monographs were published. In him, we can see the infinite possibilities that technology brings to us. The following is Wu's employment dictation:

Junior college period: Participate in programming competition at own expense in order to go to Beijing

My hometown is in Rhinoceros Foot Town, Qinnan District, Qinzhou, Guangxi. My grades in high school were poor. In 2014, I was admitted to Guangxi Vocational Technical College to study software technology. There is still pressure inside. The first time I came into contact with programming, I majored in Windows application development and Android application development.

I studied C language in my freshman year, but I felt that the school's teaching progress was too slow, so I finished the course for one semester first . Some students complained that C language pointers are difficult to learn, but I don't have that feeling. Later, I was not satisfied with the dark screen, so I went to the library to learn PHP to write a personal website.

After the first semester of my freshman year, I took the initiative to sign up for the 6th Blue Bridge Cup Algorithm Competition in 2015 and began to get in touch with algorithms. During the winter vacation of 2014, I participated in training at the school, and it was my teacher Luo Yunzhen who trained us, and also the teacher who taught our major courses for the next three semesters. Mr. Luo has always taught us that the basics of programming languages ​​are very important, and data structures and algorithms are very important.

Since I was not selected to participate in the school primary election, but paid to participate in the competition myself, I was not optimistic at first. Facts have proved that I couldn't even enter the national competition in that competition.

It is possible to go to Beijing to participate in the national competition. I came from the countryside and wanted to go to Beijing. Later, I competed with myself. I must enter the national competition next time. First, I want to prove that I am not bad. Second, I really want to take this opportunity to go to Beijing, the Forbidden City and the Great Wall. After being hit, I started to study hard and learn algorithms.

In the algorithm class in the second semester of my freshman year, I always liked to behave in front of the teacher. If I wanted to get the teacher's approval, I learned in advance the graph structure and traversal algorithm that the teacher thought was difficult for us to learn. The teacher asked questions in the class. , I went directly to the teacher's computer to "papa" and finished it. Later, I was always ranked first in the school's majors. Now I feel like a primary school student in retrospect.

In my sophomore year, I participated in the 7th Blue Bridge Cup in 2016 and successfully entered the final. Although I only won the second prize in the national competition, it was my first time to play in the capital Beijing for a few days, and I was very happy.

    

At that time, the college did not offer assembly language courses, so I went to the library to borrow books to study, and watched the small turtle assembly course online.

What impressed me most was that there was an introductory book on x86 assembly language written by Wang Shuang, which was too esoteric to me. I borrowed it from the library three times in one semester and read it three times. The first time I watched it ignorantly, but I didn't finish it. Later, after watching the video course of Little Turtle, I started to watch it for the second time. I felt that I understood it a little bit, so I started to write some demos. The third time I watched it to see if I didn't understand it. understand. Although it was not applied to the work later, and I forgot, but I have always been impressed by the low-level understanding. For example, how are assembly instructions executed, registers and memory addressing, how the functions we understand in C language jump and execute and how to go back to the next instruction execution, and how interrupts are interrupted, this is also for me Later, learning jvm bytecode laid the foundation.

In the second semester of my freshman year, I signed up for the 2015 National Mathematical Contest in Modeling at the end of the semester. I spent the summer vacation in the school. At that time, there were only a dozen of us in the whole school. I was not really enthusiastic about participating in mathematical modeling competitions at the time, but because the competitions also involved programming, and programming algorithms were used to solve practical problems, so I became interested.

I remember one time, the teacher assigned a homework, and it took three days to complete. One night, I was thinking very late and suddenly thought of something. I was so excited that I couldn’t sleep, but the dormitory was locked, and there were no people in the school. Quiet, I don't know how I mustered up the courage to climb over the wall of the dormitory to type codes in the classroom alone, sitting all night long, and finally solved the problem. However, the results of the competition were not very good, and only the third prize was won.

Sophomore year, we also began to learn windows application development and Android application development. At that time, I also participated in the China Software Cup, but that time there was no consolation prize. At that time, my teacher taught us that we should take a look at open source projects and learn a lot from other people's excellent code.

During college, I also wrote a lot of interesting things, some of which were for the final exam of the semester, and some of which I thought it was fun to do and play. For example, the card game written in c#, the simple version of the picture editor, the driving test simulation test APP, and the campus second-hand transaction APP written in java. When I was a sophomore, I also knew a relatively powerful apprentice. I wrote a parkour game app and a class schedule app. I also learned some fun things from the apprentice, such as the realization of the side-sliding, folding and unfolding menu, and the bottom button clicking the pop-up button. The custom control of the button, and the waterfall flow control of the pull-down refresh and the slide-up loading is also implemented by itself. These are very popular elements at that time.

Under the recommendation of my teacher, the junior went out for an internship one semester in advance. The first company I worked for was to develop a windows application for China Southern Power Grid. After 4 months of work, I made a system that uses socket communication to control camera monitoring equipment.

At that time, I hadn’t graduated yet, so it wasn’t easy to find a job. Many interviews were actually routines conducted by training institutions. Fortunately, I wasn’t fooled. During the interview, I was interviewed to do PHP, and the salary given was 1500, which was not enough to survive. The company only had a few people in the community.

After insisting for more than a month, I finally found the Android development job I wanted to do, and gave a salary of 3200. I felt very satisfied and went. At work, I integrated mainstream RxJava, Retrofit, and OkHttp into one network component. At that time, there was a need to display reports on the app. There were many columns displayed. It required swiping left and right, supported selection of hidden columns, fixed certain columns on the left side of the screen, supported pull-up loading and pull-down refresh, and could not find suitable open source controls online. So I wrote one myself.

In my spare time, I also learn animation algorithms, such as Bezier curves, which are used to achieve the effect that the button can do when the button is flipped. Although the final implementation is very blunt, it also gains a lot.

In my spare time, I also used the socket communication I learned at work to write the server in c# and the android app in java, and made an instant messaging APP that imitates WeChat .

During the summer vacation of 2017, I also took over an outsourcing and made a QQ group robot. In the end, the money was not received. This project is still on GitHub.

In 2017, I began to learn about technical public accounts. The official account is different from the blog at that time. The official account is more interactive, like making friends. If you do it well, you can still earn income. So I also started to register for the official account. After a few years, there were not many fans, which means that few people read what I wrote, but I persisted in writing for a few years.

When I graduated from a junior college, because of my good grades in school, there was a place for promotion. At that time, because I was sharing a lease with others, I met a friend who is still in contact with me. He was ten years older than me, and he encouraged me: young people should go back and get a degree. Going out and trying, here is 3200 salary, buy an iPhone 6 in 12 installments, moonlight every month, this should not be the life you want to live.

At that time, I thought, if I didn’t rely on my family, how would I buy a car, buy a house and marry a wife in the future with this income, and I didn’t seem to be able to learn much from the situation at that time, and I was not reconciled to continue like this. So I quit my job and went back to work.

One week after leaving the company, the company needs to make a request for receiving WeChat support. Although I have already left, I am still very grateful for the job opportunity given by the company, so I spent two days to help complete this request, and the manager later gave me a transfer. Thousands of red envelopes, encouraging me to go back to school and study hard.

Undergraduate period: understand the importance of the back-end, start to focus

In September 2017, I entered Guilin University of Electronic Science and Technology. I majored in network engineering, but I still studied software development and added some network foundations.

During the undergraduate period, I worked part-time on a certain platform, requiring to do Android, IoS apps at both ends, and a website. The Android side was very simple for me at the time, but the app must have a server side, and object-c is not good, and the website is not good at it. But I thought it was a challenge. I didn't even think about whether I could make it and get money. I just wanted to make this thing.

For a month, I stayed up late with my roommates, and they played games and I "worked". While learning object-c, ios development, doing it, learning spring, struts2, hibernate while doing back-end, learning css, js, adding php to create a website, and finally making an app, Android, iOS, php website, It's all pretty good - on the surface, it's ok, but the back end just hangs up every now and then.

After going through this toss, I began to realize how important a stable backend is for a product, and I understand why in my last job, my colleagues who worked on the backend felt valued, and their work was also Very fulfilling.

In addition, I also learned about the development trend of h5 at that time, and I feel that the back end has more development prospects. So I turned to learning back-end technology.

During my undergraduate studies, I also did a lot of works, such as a card reservation applet, a love APP, an address book (including call show, call interception), and an e-commerce APP.

Couple APP:

Imitation Jingdong Mall APP:

Looking for a job: Living on loans, I almost packed up and returned to my hometown, but fortunately I have a girlfriend who supports me silently

The promotion to the college is a two-year system, and you can come out for an internship in the second year of the undergraduate degree, which is October 2018.

At that time, I was young and ignorant, so ignorant that I thought I already had technical experience, so I confidently carried a luggage, carried a bag, took a few thousand yuan and a ticket from my family, and went to Hangzhou, a strange city .

After floating for half a month, there were only two interviews in total. One was an informal company. The office was very hidden. The working hours were noon and night. The office was full of Android devices, like a hacker's screen. , and was willing to give a graduate a very high salary, so scared that I ran away after the interview, and told me to go to work instead of going. There is also a company that does P2P and asked me to interview. In fact, their company had just left the company and was in urgent need of people, but the back-end development I met, and then arranged for the interviewer to abuse me and asked me if I wanted to. Don't do Android, I declined. There were no more interviews later, and the money was almost exhausted. Only the fare to go back was left, and I started to feel anxious.

Later, my classmate told me that he had found a job in Guangzhou, and the salary was quite high. For a fresh graduate, the school thought he was involved in MLM at that time. He told me that there might be more opportunities in Guangzhou, and he let me try it, so I came to Guangzhou in November 2018.

After arriving in Guangzhou, I went to my friend first and rented the same apartment. Because he lived with his girlfriend at the time, and my girlfriend also decided to come to Guangzhou with me. The rent was 1470. At that time, I was out of money. I paid one for two, and I borrowed a few thousand on a lending platform (forgot how much).

However, the job search was not smooth. Resumes were submitted every day, and there was no phone call. At that time, I just wanted to be a back-end post, and I gave up other technical post opportunities.

There are also a lot of intern positions with a monthly salary of two or three thousand, but there is not a single phone number. At that time, the idea was that two or three thousand would be two or three thousand. First, one year of work experience was required, and after a year, I had confidence in myself.

During this period, my girlfriend found a job first, she wanted to bear the rent and living expenses and relieve my stress. But for a job with a base salary of only 1500, I only did it for a week or two. For some reason, I asked her to quit her job. In this way, we lived on loans. Every day I can eat some pickles to accompany the rice, and the noodles cooked by my girlfriend feel delicious.

Because I was stronger and would not admit defeat, as soon as my family called me, they persuaded me to go back to Nanning, Guangxi, but I was promoted to come out and break through. I wouldn’t choose to go back unless I had to, so I didn’t dare to ask my family for money after I arrived in Guangzhou. The money has been spent without telling the family.

I also studied while looking for a job. At that time, I spent 6300 on a credit card to buy a back-end architecture course. (The payment record cannot be found, only the comment record)

Because I couldn't find a job, I was anxious, and I didn't want to sleep for a month. I just wanted to study 24 hours a day and sleep no more than 4 hours a day. My girlfriend also accompanied me silently, persuading me not to stay up late. She has also been looking for a job. She wants to find a job in personnel, and also wants to have an income, so that I can study with peace of mind and let me find a job slowly.

During my undergraduate studies, I also studied jvm in depth and had a preliminary understanding of bytecode. Through this course, I learned that jvm bytecode can be used for burying points and link tracking, so I became interested and determined to master this technology. At that time, I felt that every time I looked for instructions, I had to use my mobile phone to open the appendix of the book "In-depth Understanding of Java Virtual Machine", which was inefficient, so I printed the bytecode and stuck it on the wall, and it was not torn off until I moved the next year. . This is actually a form of self-motivation, and finally I remembered most of the instructions in the process of writing the demo.

At that time, I couldn't find any more information on learning asm. I used the most stupid method, which was to read the api documentation, and then explore it myself. If I made a mistake, I tried again and again until I made it. Get out to sleep.

Due to money issues, I had to face the reality. If I remember correctly, it should have been in early December 2018. I found an Android development job with a monthly salary of 10,000 yuan, but after working for a week, I felt like I was useless. Run away without the money. I can't say why, just want to be the back end. My girlfriend also expressed understanding and support for my decision.

By the end of December, it was almost too late, and I planned to bring my girlfriend back to Nanning. Unexpectedly, there is a good opportunity, a company that advertises the network alliance system, gave me the opportunity to interview. If it wasn't for the offer sent to me the next day, I would have left for Nanning.

It was also because it was hard-earned. I worked very hard for my first job. On the surface, I had the same off-duty hours as my colleagues. After get off work, I still spent a lot of time studying business and project codes.

Once you have a job, you will have experience in the future, and finding a job will not be so difficult. But when I was not working, I owed more than 10,000 yuan in debt, and it took me half a year to pay it off.

After graduating in July 2019, my girlfriend also successfully found a job. I am very grateful for my girlfriend's company that year. There is really no complaint, so we got married one year after graduation. Although our lives are very ordinary now, we are already very happy with a wife and a naughty little son. My friends often joked that I bought an Audi car, and what kind of man doesn't love cars.

After work: Be grateful and keep pursuing your goals

From the end of 2018 to the beginning of 2020, I have been working in the first company for just over a year. In fact, I never thought that I would leave so soon.

Half a year into the job, the boss gave me a salary increase, so one is grateful, and the other is that the work is quite challenging, and I also hope that the company will become bigger and bigger, and there will be more opportunities for growth, and the other boss was also very good to me at that time. . I thought to myself, if he was the boss at the time or if he had come out to start the company by himself, I would have followed him without hesitation.

Because the opportunity is hard-won, I also cherish it and want to grow quickly. During the trial period, I go home every day to work overtime to learn the business, read the code, and hope to pass the trial period smoothly.

About half a year later, even after I graduated, because of the resignation of my colleague, I haven't hired a suitable person to replace him for a long time. I am very familiar with the business, and I became the main developer of the project. A colleague, there are only two people working on this project. So I seized the opportunity and started planning to refactor the project. I felt that the project was very suitable for microservices. I showed the architectural design diagram of how to divide the microservices to the leader, and the leader agreed with me to do it.

So I introduced Dubbo and Nacos, used design patterns, and started to refactor the system. Because there are so many demands, I can only use the off-get off work time to do this. One function and one function are slowly moved. Those who are unfamiliar with the stinky and long business code did not dare to move, and just copied it.

Since small companies do not have testers, and in order to save costs, there are no test environments. After changing the local and simply testing it, it went online directly, so there have been two major failures, one was directly attacked by the operation, and when I was asked whether I was professional or not, I could only keep silent. Another time it resulted in a profit and loss, and was directly scolded by the boss in the group.

It took more than two months to complete the refactoring of the entire system. During the refactoring process, performance optimization was performed, and the final operation and maintenance cost was reduced by half. After another three months, the system is stable.

After all, I am young, and now, if it is not something that the leadership pushes to do, I would not have the courage.

In addition to refactoring, I also did some basic work during my job, such as

 

  • Self-developed semi-automatic docking framework for advertisers: JVM bytecode + N-ary tree + breadth-first traversal algorithm;
  • Self-developed miniexcel to solve the frequent oom problem of exporting excel from pom, and support expansion;
  • Encapsulate the ip range query component that supports high concurrency of tens of millions of records, using Redis cache;
  • Write a dynamic data source framework that supports sub-database, sub-table, multi-platform and multi-database types;
  • Use Sharding-jdbc to implement database table division, and adapt to multi-platform dynamic data source switching components;
  • Solve the cache penetration and avalanche problems existing in the system;
  • Implement distributed transactions, and deal with distributed transaction problems based on TCC.

Because operations and business directly ask developers to ask questions, they need to answer all kinds of repeated questions about operations every day, and they also need to persuade them to do what they don’t do and what to do when they ask for various needs. However, the direct connection between technology and operation and business is indeed a test of communication skills, which is a very valuable experience.

I was not praised for the system refactoring. The only consolation was that I was given an excellent employee award at the end of the year.

My first job meant a lot to me, because I wrote an e-book and a paper book that originated in this job.

Since I don't understand some parameter configurations of dubbo, I directly gnaw at the source code. There was a service avalanche, I introduced Sentinel, but it was very ignorant at the time, so I studied and studied the Sentinel source code in depth. In order to improve work efficiency, a component that semi-automatically connects to advertisers is implemented with bytecode plus algorithm, which once again consolidates the knowledge of jvm bytecode.

After a year of work, I have actually found a direction that suits me and that I like. At that time, I learned that companies such as Ali and Meituan have departments dedicated to middleware development, but my education, experience, and English were beyond my reach.

After resigning, I also wanted to use Ali as the backend, because Ali had a deep influence on me technically. Looking for someone to infer that there is a requirement for academic qualifications, and sending a resume by myself is also in vain, so I gave up.

In 20 years, I caught up with the epidemic, and I just had to change jobs. In addition, I felt that the e-commerce business should be more challenging, so in March 20, I chose to join an e-commerce business company.

Unlike before in a small company, one person is only responsible for a small piece of business. But I still like to do technology. I am very grateful to my leadership at the time, who knew my interests and gave me many opportunities to grow. In this year, I was mainly responsible for the system architecture of the new project, overcoming technical difficulties, and helping colleagues to solve technical problems. Under the arrangement of the leaders, I held two technical sharing meetings internally: "Spring Cloud Microservices and Cloud Native", "Kafka High Performance Data Synchronization (Mysql Binlog)".

In fact, apart from ordering a small piece of business, I rarely write business code during my job, and I do more technical work, such as

  • Technology selection and architecture design of e-commerce business payment center, SSO single sign-on, message push service, data synchronization service and other projects, introducing gateway and Docker.

  • Based on the secondary development of XXL-JOB distributed timed task scheduling platform, the thread pool is used instead to execute tasks, support automatic parsing of generic parameters, and realize the security checkpoint interrupt task mechanism;

  • Self-developed lightweight distributed call chain tracing Java probe, combined with Alibaba Cloud diary system to check call chain;

  • Multi-data source component encapsulation, supports parsing sql at the application layer to realize buried point events, and supports monitoring transaction status to register callback functions for transactions;

  • Message push service: use reactive programming to improve system throughput and optimize system deployment costs, WebFlux+R2DBC+Lettuce+Spring Cloud Kubernetes;

  • SSO single sign-on: The development of SSO services, as well as the annotation of the Shiro framework for the convenience of each system accessing the SSO package SDK, replacing Shiro's authentication, making the access project almost zero code changes.

In my spare time, I finished writing an e-book and a column, and wrote a lot of articles.

Later, my friend who asked me to come to Guangzhou came to Litchi Group. He sent me an internal push link. When I saw the word middleware, I instantly became interested. This is the job I want. I asked my friend to help me try it out, and I was lucky enough to get the offer.

I joined the Lychee Group in July 2021, and it can be said that this is a major change. I went from being confused again, not knowing how to go, to clarifying my direction, expanding the unknown, and knowing what to learn. Every day is full of work and every project is full of challenges.

After joining the job, he has done the development of message middleware and reconstructed xxl-job. Currently, he is mainly involved in the research and development of network projects and service frameworks. Participate in sound innovation together, continue to empower Litchi's various businesses, and continuously provide high-quality codes. During this period, I was also fortunate to join the Litchi Technology and Culture Team, participate in the operation of the Lychee Technology Community, and help create our own 1024 Programmer's Festival. This year's Litchi Programmer's Festival includes ideas such as the "Golden Code Award". From planning to landing, expand the skills of event planning. I hope that while I can get some growth, I can also make a little contribution to the community and help more small partners to realize their technical dreams.

I have also met more Daniels here. Thanks to the current leader Liu Wei for training, and the help of my colleagues. They take care of me very much. They often joke that they should grasp the key points and make them into the IP of Litchi Technology. All jokes are jokes. I am very grateful for this. Yes, this year, I grew up very fast. I deeply know that a single tree cannot make a forest, and a hundred rivers gather in the river and sea. There is still a long way to go in the future. With leaders and colleagues like Lizhi, our technology will be polished faster, better and stronger. A small lychee sapling in the south has grown into a dense lychee forest all over the world.

After writing a column and publishing two books, I saw my own growth

My writing habit started during college, when it was more about taking notes. Later, I found that the official account has a technical account that mainly publishes technical articles. It feels very interesting and has an atmosphere. I also follow the trend and start writing. I don't know how to start at first, to slowly getting used to it.

In the early 20s, I wrote an e-book: "Java Virtual Machine Bytecode From Getting Started to Practical Combat", which can be read on the WeChat reading APP. The open source version has been renamed "Introduction to JVM Bytecode", but only some chapters are open source.

At first, the purpose was very simple. During the learning process, I could not find systematic learning materials, and I completely relied on my own to cross the river by feeling the stones. I often stayed up all night to understand a bug. So I want to organize it into learning materials and share it with future scholars for reference. This is a very meaningful thing. I ended up writing it in three months in my spare time, staying up late and sacrificing weekends.
For a small person, it is not easy to find a publisher to publish a book. In the end, I only published e-books. At that time, I did not consider open source, because there is no copyright protection. Once it is released, it will soon become a pseudo-original for many people. This was my first experience trying to publish a book, and it ended in failure.
After switching to the backend, I used to study the principle and source code of every framework I learned, and I didn't care much, but whether I really learned anything. In this process, I like to summarize the output principle analysis, source code analysis articles, and publish them on various blog platforms and public accounts.

At the end of 2019, after experiencing a server accident, I started to contact Alibaba Sentinel, and applied Sentinel to solve the traffic management problem under high concurrency. In the process of using it, I found that some configurations were very incomprehensible, so I began to study Sentinel in depth, and then wrote a source code analysis column. Of course, this isn't the first source code project I've worked on, but it's what got me publishing this book.
At the beginning of the 20s, my official account was discovered by some editors of the publishing house, and they took the initiative to leave contact information, but I didn't really want to write at that time, so many editors left WeChat and I didn't add it.

Because I can't think of what to write, and I don't want to write books, because I don't expect to make money by publishing books, I am very clear about the purpose of publishing books, because I am also making a public account to increase my influence, and the other is to publish a book by myself. The book's aspirations, not reconciled to previous failures.

Some time later, I found that my column had been stolen as an original by others, and all kinds of complaints were dismissed. In anger, I wanted to improve the column and publish it as a book. It happened that an editor was willing to take on this topic, so the publication of the book began.

This book was signed and written at the end of 2020. In 2021, the column was organized into a book, and a few chapters were added. After completing the third trial and three inspections, it was published in March 2022.

From writing blogs, to official accounts, to e-books, to columns, to publishing books, this is the road I took to successfully publish my first book. In retrospect, it is the same as our technological growth. , to demo, to actual project combat, to self-study and in-depth research, from quantitative change to qualitative change.

Although the two books I wrote may not be good books, they were all written with my heart, and I spent a lot of time and energy, read them many times, and revised them many times before they were published. Especially the paper book published later, I read and revised it no less than 8 times when I wrote the column, and revised it no less than ten times when it was published as a book.

On the day of 1024 "Programmer's Day", in the office of Lizhi Group, I recalled so many "Amashi" past events, from a small town in a fifth-tier city, all the way here, taking root in a first-tier city , as a technical backbone in a listed company. For me, these are just the beginning. There are still many ways to go in the future, many mountains to climb, and many hardships to go up and down, but we will eventually live the way we want. More programmers actually have better starting conditions than me in all aspects. I would like to say, 1024, I wish everyone a happy holiday; across mountains and seas, you can do it!

{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/4518266/blog/5586000
Recomendado
Clasificación