The experience of BAT veterans, the sooner you know this truth on the way to growth, the better

foreword

Life is a process of self-investment, pay attention to me, this will be the best investment on your programmer's path.

"Only the accumulation of knowledge, without in-depth thinking, can not completely transform after all." - "Moving China" annual enthusiastic audience, programmer 囧hui

 

KING

ROI, that is, Return on Investment, which is the return on investment (input-output ratio), is an investment term.

In my opinion, the ROI rule applies equally to our work, study, and life.

This article is derived from personal growth, thinking and summary over the past few years. It may not be perfect, but I believe it will be helpful.

 

1. ROI at work

For work, ROI is mainly reflected in: 1) performance promotion; 2) technical ability.

 

At work, the working mode of many programmers should be: do demand -> do demand -> do demand..., do demand endlessly.

To be honest, the ROI of this work mode is very low, because most of the requirements are simple CRUD in the existing framework. Even in some departments with hundreds of thousands of QPS, there will be many such need.

In fact, these needs can't make you learn too much. If you do these needs every day, your technology will not improve, and your performance and promotion will be completely missed by yourself. You can only become a hard-working "old scalper" in the eyes of others.

When I was debriefing and defending, I didn’t know what to write. I felt like I was very busy and had done a lot of requirements, but I didn’t seem to have anything technical to write. When I change jobs, I don't know how to write my resume, it's all CRUD, which is really big.

Therefore, at work, we need to be "smart" and try to make our work ROI as high as possible.

 

The following are the common ideas for improving work ROI that I have summarized in recent years:

1) You can do some simple CRUD requirements, and some simple requirements will inevitably be done, but you can never do simple requirements all the time. You can take the initiative to do some online troubleshooting and performance optimization, and your supervisor may praise you for being active.

2) Problem solving is the most effective way to improve one’s technical capabilities, such as: solving online problems, optimizing interface performance, and refactoring projects. In the final analysis, the programmer is to fight who has the stronger problem-solving ability, and there will be a lot of new cognition in the process of solving the problem, so that you can get a lot of valuable experience.

3) When scheduling tasks, you must leave a buffer, which can be calculated as 0.7 ~ 0.8. For example, the workload of 8 days can be scheduled for 10 days, so that in case of any online problems, you can calmly Cope, instead of working overtime silently by yourself.

4) The demand is never finished, even if you work 24 hours a day, the demand is still unfinished. So, please be a little selfish, don't assign all your working time to tasks, try to give yourself 0.5~1 hour of time every day to arrange freely, and use this time to improve yourself: think, summarize, and see excellent technology Articles and looking at the source code are all good ways.

5) After completing a task, do not rush into the next task, but must think and summarize.

  • For the current job performance: think about where the value of this task is, what has been produced, how many indicators have been improved, and what can be used in your subsequent debriefing and promotion defense?
  • For future job-hopping: Think about the complexity of this task, are there any technical points that can be written on your resume when you change jobs later, and are there any points that make the interviewer feel very awesome?

Record your own thinking through documents. The content after thinking and summarizing is usually a good material for later debriefing and defense, and there is a document record, which can also allow the supervisor to see your real output. If your thinking And the summary content is good enough, maybe the supervisor will use your content in his own report, then your status in the supervisor's heart will rise all of a sudden.

6) The company only pays you 5 days’ salary, try not to work overtime on weekends, keep this time for yourself, if you have a family, spend more time with your family, if you are single, you can read books to improve yourself, and most importantly, do it every week Exercise, the body is the capital of the revolution, take care of yourself.

7) The process of problem solving and optimization can be painful, and some may even last for months, but it is these painful moments that force you to be a better version of yourself.

8) Most important: think more, think more, think more. Every time a programmer moves to a new level, he must go through a process of transformation. When you keep accumulating knowledge, you can only make the leap from quantitative change to qualitative change only if you keep thinking.

 

2. ROI is learning

For learning, ROI is mainly reflected in: 1) interview; 2) technical ability.

 

The programmer industry is currently very serious about involution, and the Java back-end is undoubtedly the "king of the king". There are too many things to learn. You have to learn every one of them, which is unrealistic to be honest.

Therefore, just like we used to prepare for exams, we need to allocate time reasonably and prepare those important knowledge first.

For the Java backend, I spent three months learning redis, and you spent three months learning k8s (kubernetes). Whether it is daily work or interviews, there is no doubt that my ROI is higher.

Choosing the wrong direction is a mistake that many newcomers are prone to make. It took a few months and ended up learning loneliness.

 

For the Java back-end knowledge system, according to the importance/frequency of the current interview questions, I have classified the knowledge points as follows. The higher the priority, the more important the learning and the higher the ROI:

  • Level 1: Collection (HashMap, ArrayList), concurrent programming (thread pool, synchronized, CAS, Lock, AQS, ThreadLocal, volatile), MySQL (index, lock), Redis (cache, distributed lock, high availability), JVM ( runtime data area, GC, CMS, G1)
  • Second gear: Spring (IoC, AOP), MQ (Kafka), Zookeeper (registry center, distributed lock), RPC (Dubbo)
  • Third gear: MyBatis, design pattern (singleton, proxy), algorithm (sword refers to offer), distributed theory (BASE, CAP, 2PC, TCC)
  • 四档:TCP、HTTP、Netty、SpringMVC、SpringBoot、Elasticsearch
  • other

If you think some knowledge is missing, or you think there is a problem with the classification, please leave a message to discuss with me.

 

At the same time, most of the people in our industry spend their spare time to study, but many people's learning ideas may be wrong, resulting in a very low ROI of learning.

For personal learning in my spare time, the following are my personal experiences that are beneficial to improve ROI:

1) Both depth and breadth of knowledge are important, but to choose one for further study, I would choose depth. I do the same myself, and my classmates who read my blog a lot should also be able to feel that I don’t actually write a lot of knowledge points, but the depth is basically within my ability.

2) Depth is a very important stepping stone for you to enter a big factory, and when your depth is deep enough, you will find it very easy to improve the breadth, because most of the excellent open source software has the same underlying design ideas.

3) The source code will make you more confident. If you don't dig deep into the source code of a knowledge point, you will inevitably feel unconfident when facing the online interviewer, because you haven't seen its "true face" in person. If the interviewer asks one more question, you will feel empty.

4) Learning the source code will make you pay a lot, but also pay a lot. The feeling of seeing the "truth" with your own eyes can only be described in one word - cool.

5) The premise of learning the source code is that you have a basic understanding of this thing and understand its core use. In the process of learning, don’t be hard-headed, it’s very inefficient and prone to mistakes. We can see farther by referring to existing articles and books and standing on the shoulders of giants.

6) 99.9% of the official accounts/blog articles can only let you get started at a certain knowledge point, and a small part can make you align with the BAT interviewer, but to achieve the level of easily aligning with the BAT interviewer, you still need to Dig the source code yourself and see the truth yourself.

7) Reading articles is not about more, but about quality. There are many good articles on the Internet, but there are more hydrology. You must learn to distinguish. Articles focus on quality rather than quantity. The harvest of a good article is very scary.

8) No matter whether it is an article or a book, it is normal to read a certain knowledge point and not understand it. It is normal to collect it and read it again and again. If you don’t understand the nouns, Baidu Soso information will help you understand. This process will make your knowledge system like a branch. Continue to spread outward, this is the process of growth.

9) Try using Feynman learning. I don’t make a penny for blogging (you don’t pay attention yet? Meow meow~), so isn’t the ROI of my blogging very low? Not exactly, if so, then I'm not slapping myself in the face.

Blogging is actually my final practice of implementing the "Feynman Learning Method". All the articles you have seen that I have published may be behind the articles and source code that I have read countless times, self-questioning countless times, and countless times. Self-summary and thinking, countless revisions, and finally came out.

Therefore, I can safely say that this is the article that is full within my ability.

10) Add some high-quality, high-quality and high-quality learning exchange groups. The three cobblers are better than Zhuge Liang. Many problems that you can't understand for a long time may be a matter of seconds for others. Of course, for a group where only the group owner regularly sends official documents every day, it is useless to add more.

11) If you have a way to make friends with the great gods in your field of study, you should make more friends. As you continue to grow, you will find that there is very little information on the Internet for the things you want to learn, and many things can only be stubborn by yourself. As a c++ novice, I was deeply touched when I looked at the MySQL source code.

 

my learning journey

Having talked about this, I will give you a "welfare" and briefly introduce my learning method for your reference.

15.7~17.01: During this period, I didn’t study at all. I was a salted fish through and through. Students who have read my articles should also know.

17.02~18.10: I woke up like a dream, through interview questions and books, I grew up quickly, and I also started blogging.

18.11~20.09: Source code, write blogs, deepen each knowledge, and implement Feynman learning method through blogging.

20.09~Now: Projects, source code, blogging, changed to a department with a lot of business, and working hard to learn and accumulate, of course, the source code and blogging cannot be pulled down.

Maybe some classmates will ask me if I don't read other people's official accounts/blog articles?

To be honest, although I write my own official account, in fact, I rarely read other people's official account articles myself, because it is too difficult to find a good article.

When I read other people's articles, mostly when I learn a knowledge point, I will refer to some other people's source code analysis articles to assist my understanding.

In addition, I also read some articles on the company's intranet. The blog technology sharing quality of the big company's intranet is relatively high, so there will be no hydrological troubles, and basically I can gain something more or less.

 

ROI for me

So, in theory, starting from 17.02, my learning process is just over 4 years.

The most intuitive way is to look at the annual salary. When I changed jobs in 20 years, my annual salary has increased by more than 5 times compared with 17.02.

And if you count the 20-year job-hopping time point, in fact, 3.5 years have passed. And since I joined the new company, my weakest project is also developing rapidly, so now my selling price should be calculated separately, haha.

As far as the current Internet market is concerned, I know that there is still a lot of room for improvement in my salary, so I am still working hard to improve myself.

Programmer is actually a relatively fair profession. As long as you keep working hard, you will be rewarded more or less.

A word for everyone: fight hard, and you will definitely thank yourself for your hard work in the future.

 

finally

If you can have one more friend, don't have one more enemy, you can help at your fingertips, and you can say good things casually. Doing a little more may make the other party grateful for a long time.

For example, if I ask for likes at the end of the article, some people may think, I will not like the dog, and I will prostitute for nothing; while some people are very nice, and it takes a few seconds to like, favorite, and leave a message in one go.

Maybe this easy one-click three-connection made us friends. If he has any work or workplace problems in the future, I can give some useful suggestions. Is the ROI in these few seconds high?

Guess you like

Origin blog.csdn.net/v123411739/article/details/116087022