Two years of back-end development experience in Didi and Toutiao! Words are from the heart!

Author: syntax_error Link: https://www.nowcoder.com/discuss/351805

Let me briefly explain the background first. An unknown 985 undergraduate and graduate student joined Didi after graduating in 2017. When he was looking for a job, he fought with everyone here at Nioke. I moved to Toutiao in the second half of this year and has been working on back-end R&D. There is no previous internship experience, it is considered to be two and a half years of work experience. In the past two and a half years, I have completed a promotion and changed companies. I have had a happy and contented time, and I have also had a confused and struggling day, but I have successfully transformed from a rookie in the workplace to a senior paddler. In this process, I have summed up some practical paddling experiences, some of which I have learned by myself, and some of which have been learned by communicating with others. I will share them here with you.

Learn to think deeply, summarize and precipitate

‌ The first thing I want to say is to learn to think deeply and summarize the precipitation. This is the most important and meaningful thing in my opinion.

‌ Let’s think deeply. In the circle of programmers, I often hear some remarks: I have no technical content in this job at all. I CRUD every day, and then write if-else. What can I learn from this TM? Leaving aside some of the ridicule and jokes, this may indeed be the real thought of some classmates, at least I once thought so. Later, with the accumulation of work experience and discussions with some high-level classmates, I found that this idea was actually very wrong. The idea that there is nothing to learn is basically the result of lazy thinking. Any seemingly inconspicuous trivial matter, as long as you think deeply, dig a little vertically or widen it horizontally, is a sea of ​​knowledge enough to make people addicted.

As an example. A classmate once told me that there was a service OOM this week. After a week of investigation, I found that there was a problem with the defer written in a place. I changed a few lines of code and went online to fix it, but I couldn’t write a weekly report. Maybe everyone has encountered such a scene, and it is still representative. In fact, as far as bug checking is concerned, it is a process of finding, troubleshooting, and solving problems, including triggering, locating, recurring, root causes, repairing, and replaying many steps. It took a week to do this. There must be a process of continuous trial and error correction, and there is actually a lot of room for thinking. For example, positioning, how to narrow the scope? What detours have you taken? What analytical tools were used? For example, the root cause can be studied at least the OOM of linux, the OOM of k8s, the memory management of go, the defer mechanism, the principle of function closure and so on. If these are really not involved, and it still takes a week to do this, then there should be a lot of thinking in the review, it is no problem to put forward dozens of WHYs...

‌ Let’s talk about the summary precipitation. This, I think, is also what most programmers lack. Just immersed in work, you can do one thing well. But I almost never make abstract summaries, so that after working for several years, the knowledge I have mastered is still sporadic, and it is not systematic. It is very important to do some summaries and precipitations in a timely manner. This is a process from art to Dao, which will allow you to see problems from a wider perspective and at a higher level. When encountering problems of the same type, they can be advanced and solved systematically and hierarchically according to the summarized methodology.

‌ Here's another example. As a background service, 1G of memory is optimized today, and 50% of the read and write time will be optimized tomorrow. Can you make a summary of performance optimization? For example, in the application layer, you can manage the application side of the service connection and sort out the rationality of their access; in the architecture layer, you can do caching, preprocessing, read-write separation, asynchronous, parallel, etc.; in the code layer, you can do things There are more, resource pooling, object reuse, lock-free design, large key splitting, delayed processing, encoding compression, gc tuning, and high-performance practices related to various languages... Let's meet again next time For scenarios that require performance optimization, a whole set of ideas can be applied immediately, and the rest is a matter of tools and practical operations.

‌ Some students said that I would tear up with the PM every day, do what I want, and don’t do performance optimization. Let's not discuss whether performance optimization can be done, but in terms of business requirements, there are also places that can be summarized. For example, how to do system construction? Have you ever thought about the core capabilities of the system, system boundaries, system bottlenecks, service layering and splitting, and service governance? Discuss the needs with the PM every day. As a technical student, how to cultivate product thinking, guide the direction of the product, and how to make the architecture come first in the business? These questions can also be considered and summarized. Just think about it, the pain of connecting hands to maintain other people's rotten code can make Martin Fowler come up with a set of refactoring theory, and it looks so tall, we really don't need to belittle our own work...

‌ Therefore, learning and growth is a self-driven process. If you feel that there is nothing to learn, there is a high probability that it is not because you really have nothing to learn, but because you are too lazy, not only in action, but also in thinking. Too lazy.

‌ You can write more technical articles, share more, and force yourself to think and summarize. After all, if the depth of the article is not enough, everyone will be embarrassed to share it publicly.

Active learning, maintain technology enthusiasm

‌ An anxiety theory that has been widely spread in the Internet circle in the past two years is called the phenomenon of 35-year-old programmers. It is undeniable that the Internet industry is indeed inferior to civil servants and other occupations in the system in this regard. But the 35-year-old programmers in this question are not 35 years old in the absolute biological sense. They should refer to those programmers who have worked for more than ten years and have worked for two or three years. There is not much difference. The latter work is basically based on the old work, there is no active learning and charging, 35 years old and 25 years old are similar, and there is no desire to learn and grow at the age of 25, but add many trivial matters of family life, and salary requirements are often higher. It seems that the company is indeed not competitive.

‌ And if we study actively and keep our technical ability and knowledge reserve proportional to our working years, what is there to worry about when we reach the age of 35? I think major companies are rushing for such a big cow, right? But learning this is actually an anti-human process, which requires us to force ourselves to jump out of our comfort zone, actively learn, and maintain our enthusiasm for technology. There is a saying in Didi that, when you take the initiative to jump out of your comfort zone and feel struggling and pressured, it is often the darkness before dawn, and that is the time to grow the fastest. On the contrary, if you feel that you are living a comfortable life every day, and your work is just for hours, it may really be a frog boiled in warm water.

‌ During the period of just graduating, there is often a lot of free time, which is a good time to study technology hard. Using this period of time to lay a solid foundation, cultivate good study habits, and maintain a positive learning attitude should benefit lifelong. As for how to study efficiently, there are many big cows writing such posts on the Internet. After arriving in the company, you can also find a lot of such sharing on the intranet, so I won't talk about it more.

‌ Join study groups and technical communities, both inside and outside the company, to keep an eye on cutting-edge technologies.

Take the initiative to take the initiative and exchange feedback in a timely manner

‌ The first two are from a personal point of view. I hope everyone can improve their personal abilities and maintain their core competitiveness. However, from a company’s point of view, the most important thing for a company to recruit employees is to let employees create business value and create business value for them. Company Services. Although there is generally a certain training system for school enrollment, in fact, the company does not have the obligation to help us grow. In terms of being able to accomplish things and create value for the company, I think the two most important words are being proactive, proactively undertaking tasks, proactively communicating, proactively promoting project progress, proactively coordinating resources, proactively providing feedback, proactively creating influence force and so on. When I first joined the company, I basically did my job well as the leader assigned the tasks, and then went about my own business. I almost never took the initiative to communicate with others or think about ideas that could help the development of the project. I thought it was enough to complete my job with quality and quantity, but later I found that doing so was actually not enough. This was just the most basic requirement. And some students' approach is that the leader only needs to synchronize the direction of what to do recently, and the following series of things basically do not need the leader to worry about it. I am the leader and I like such students. A word that is often heard after joining a job is called owner awareness, which probably means this.

‌ In this process, another very important point is to communicate feedback in a timely manner. If the project is not progressing smoothly, if you encounter any problems, you can synchronize with the leader in time. If you are not sure about the technical solution, you can discuss with the leader. If some resources cannot be coordinated, you can ask the leader for help. Don’t have too many scruples, thinking that these will be too troublesome. this matter. . If the project is progressing smoothly, and there is no need for the leader to intervene, it is also necessary to give timely feedback on the progress of the project and the benefits obtained. If you have any ideas, you can also discuss it. Ask the leader for suggestions on the current progress, and what else is there to do. Improvements are needed to eliminate information errors. Doing these things, on the one hand, is to make reasonable use of the various resources of the leader, and on the other hand, it also allows the leader to understand his own workload and to have control over the project as a whole. It may be regarded as the upward management that everyone is more disgusted with. But the most basic point is, don't take a task and work sullenly or even cut off from the world, haven't synchronized with the leader for a month, think about holding back a big move, etc., it's basically cool.

‌Be  proactive, you can start by forcing yourself to speak in various public places, and one-one in time if you have questions or ideas

‌ In addition to the above points, there are some small points that I think are also more important, listed below:‌

The first thing builds trust

‌ Whether it is a school recruit or a social recruit, the first thing you do when you start a job is very important, and it directly determines the first impression the leader and colleagues have on themselves. The first thing to do after joining the job must be done well. The purpose of this event is to build trust and make the team feel at least reliable. If this is done well, the rest of the way will be smoother. If this matter becomes complicated, some leaders may give a second chance. If it doesn’t work out, it will be difficult later on. This one is more important for social recruitment.

‌ But when I just joined the company, the company's technology stack is not proficient, and the business is complicated and difficult to sort out the clues, and the pressure is indeed relatively high. At this time, on the one hand, you need to invest more energy yourself, on the other hand, you need to communicate more with the students in the group, and ask questions if you don’t understand. The most efficient way to learn, I don’t think it’s about reading books or learning videos, but directly to the corresponding person to chat, let others explain it once and then you will basically understand it. This efficiency is much faster than reading documents and reading codes, not only It saves the process of filtering useless information, and also understands the evolution history of the business. Of course, this requires certain communication skills, as colleagues are busy too.

‌Be thick- skinned 

beyond expectation

‌ The extension of the word beyond expectations is very wide. For example, the leader asked to do a work week to answer the questions of everyone in the user group. The result not only answered everyone's questions, but also collected these questions for classification, and then made an intelligent question and answer. The robot freed up the manpower for the week, which can be considered more than expected. For example, the leader asked to make a small tool for the operation, and as a result, a series of tools were built and even developed into a platform, which became a complete project, which was beyond expectations. Exceeding expectations requires us to have the ability to make things bigger, that is, to think of places that the leader did not expect, and to create actual value and obtain business benefits. This ability is actually more important. In my work, I found that some people can make a small plate bigger and bigger, while others are just the opposite. Then those students who have the ability to innovate and often exceed expectations will obviously have more room for development. .

‌This  one is actually more about personal ability. I haven't thought of a good shortcut for the time being. Think about it one step further.

Systematic thinking, systematic construction

‌ This sentence was summed up during promotion. The general idea is to have a global vision for system construction, not limited to a small point. There should be good planning capabilities and a clear evolution blueprint. For example, adding a monitor today and adding an alarm tomorrow should not be isolated islands, but a small step in the first phase of stability construction. The work to be done in this phase of stability construction is alarm configuration and monitoring and sorting, including machine monitoring, system monitoring, business monitoring, data monitoring, etc. It is expected to get XXX benefits. There is a follow-up roadmap for this work. In the second phase of the stability construction, capacity planning and access pressure testing are required. Very comprehensive, with systematic and planned work.

‌At ordinary times  , I actively summarize the precipitation, communicate with others more, and form a methodology.

Improve your soft skills

‌ The soft qualities here actually mean the abilities of PPT, communication, expression, time management, design, documentation, etc. To be honest, I think I was able to get promoted at the time because I did a little better at PPT... Maybe people don't pay much attention to these abilities at ordinary times. I didn't pay attention to them before. It may not be as simple as imagined. For example, in the work of PPT + speech + defense during promotion, there are actually many details to think about, how to select the content, how to design the layout, how to guide the audience's emotions, how to answer the questions of the judges, and so on. When I was promoted, I saw many classmates’ PPT contents were arranged in a disorderly manner, and the speech process was not smooth and natural. Although I did a lot of practical work, it lacked a lot in terms of expression. It is foreseeable that the external judges will suffer.

‌The company  's intranet generally has some soft quality training courses, and you can find some occasions for deliberate training.

‌ The above are all these sharings and they are still relatively bright, but the society is not all that beautiful. . The following contents have negative energy tendencies. Students with particularly positive views and those who feel uncomfortable are advised to skip it.

Flattering is really fragrant

‌ I was very disgusted by flattery before I joined the company. The reason I initially wanted to join an Internet company was that I felt that the Internet company was not so sophisticated. It turned out that I was wrong... A few days before I joined the company, the leader of the department group posted I read a piece of news, and dozens of news with thumbs up immediately followed. I learned it, and I liked it. It’s really good and excellent. It’s not too much to say that the red flag was fluttering, gongs, drums, and firecrackers. In addition to being amazed at everyone's super information receiving ability and processing speed, I also found that there is a formation in the continuous flattery. The leader of the first-level department sends a message, several leaders of the second-level department keep up, and the leaders of the following groups follow. , and finally everyone's carnival, which made me once suspected that the speed of flattery determines the development prospects of my career (yes, now I don't doubt it anymore).

‌ To be honest, I’m not used to flattering in groups, but I’m not disgusted anymore. It can be said that I take this as a piece of fun. It's not that I don't have the eloquence and ability (in fact, I don't need any eloquence, everyone is simple and direct), on some occasions, in order to liven up the atmosphere, I can smear honey with my mouth, and can even mix ancient poetry and prose. Rainbow Fart arranges for the leader. But I found that my direct leader doesn't flatter in the group very much, so I don't publicly flatter on the surface, but I actually cater to the leader's preferences secretly...

‌ But as long as you master the degree of flattery, it is still fragrant on the whole. At best, it is useless, at least it will not do any harm. Everyone's abilities are similar. Every opportunity to flatter in the group is an opportunity to show one's face. According to a colleague, this is called building personal technical influence...

‌ If you want to lick it, you can lick it. If you don't want to lick it, there is no need to sour others, Respect Greatness.

‌ The never-absent real battle of ripping, forcing, and dumping the pot. Where there are people, there are rivers and lakes. Although most of the people who are engaged in technology are not deep, but the troublesome things such as tearing the pot and asking for credit and robbing life are basically not absent. I have even seen public mass emails to tear up... This part of the topic involves I won't say much about some sensitive information, and our low-ranking people will not have too many opportunities to encounter these things. Just a reminder to everyone, sooner or later you will eat melons in this area at work, and you will be careful when you come.

‌ Just be careful, we won't bully others, but we can't let others bully easily.

Don't be blinded by paintings

‌ To be honest, I am personally more disgusted with such behaviors as filling chicken soup, beating chicken blood, talking about dreams, and talking about struggle. The year 9102 is almost over, and this set of *** governance is still popular, I really don’t know whether it should be Funny or sad. Of course, there is nothing wrong with the words themselves, but these things should be self-driven and not a kind of push from the outside world. I think the phrase "I have to work hard" is normal, but the phrase "you must work hard" feels a bit weird. Work hard to make the company's shareholders rich? Especially when the money is not enough, these behaviors are tantamount to playing hooligans. We need to maintain a clear understanding of these pie-painting operations of the leader, analyze rationally, and make decisions. For example, when you feel that the money is not enough (or the rank is too low, for the same reason), there may be the following situations:

• The leader doesn't notice the fact that your salary is lower • The leader knows this fact, but doesn't know how strong your demand for a salary increase is • The leader knows that you need a salary increase, but he thinks you are not competent enough • The leader knows You have a need for a salary increase, and your ability is sufficient, but he doesn't want to give you a raise. The leader wants to give you a raise, and he has given feedback and strived for it, but he has no resources.

‌ What we need to do at this time is to provide feedback and communicate with the leader to confirm. If it is 1 and 2, then the information error can be eliminated through communication. If it is 3, it needs to be discussed on a case-by-case basis. If it is 4 and 5, retreat can already be considered. For these things, there is no need to complain, complaining will not solve any problems. What we have to do is to strive to improve our personal ability, maintain our personal competitiveness, and wait for a suitable time to change jobs.

‌ Be prepared at all times, there is nothing to be afraid of when you have technology in your hands, and if you don't do well one day, you will just quit your job.

learn to pack

‌ To put it bluntly, it is necessary to be able to blow. I forgot where I saw it. Being able to speak, write and do well are the three major requirements for professionals in the workplace. It is very important to be able to speak, and to be able to speak is to be able to come to the project, pull in resources, and recruit people. Different people can say the same thing with completely different effects. For example, when I made a gadget and went online, I can only tell the basic facts, and let the leader describe it, and this is it, creating XXX's tool grip, improving XXX's complete ecology, and forming XXX's business closed loop. Brother, I've taken it, and it's not enough to give you all the coins. According to my observation, every Internet company has such a few words, grasping, ecology, closed-loop, laziness, combing, iteration, owner awareness, etc., all we need to do is to read and recite the full text, ah no , is to keep in mind and skillfully use.

‌ This is the packaging of things, and the packaging of people is the same, especially in exam-oriented occasions such as promotions and interviews. Promotion and interviews will not be discussed here, there are too many Taoisms and techniques. . The following scene is extracted from a conversation with an interviewer of a company during the interview process. You can feel it:

‌ Behind us is a $40 to 50 billion market...

I have been responsible for a system with hundreds of billions of visits per day...

It's good to work for two years to achieve this level...

The technical atmosphere of your company is very good, and the business development prospects are also very broad...

Ah, each other...

Well, long time ago...

Life is like a play, it all depends on acting.

‌ You can watch more of the leader's PPT, and listen to the boss's upward report and presentations.

Which is more important, choice or effort?

‌ This is still a question, of course it is a choice. In the face of the perfect choice, hard work is worthless. I have a high school classmate who has not been in touch for many years and has already rang the bell in Times Square this year... But such cases are too few, and the random cost of making a perfect choice is too high, Uncertainty is too great. For most students who have just graduated, their judgment on the industry is not mature enough, and their ability to grasp the difficulty of starting a business is not accurate enough. At this time, pulling a few people to start a business seems to be too risky. I think a more secure way is to join a slightly larger company first, find a good leader, hold on to your thighs, and improve your personal abilities. With a good platform, thighs, and personal effort, this take-off speed is good enough. After accumulating a certain network of contacts and funds, having a deep understanding of the market and needs, and having confidence in yourself, you can then consider starting a business.

I originally wanted to share some life stories, but found that it has been so long, so let's do this first. Some of the summaries and suggestions written above are not very good, and I still need to continue to work hard and share with you. In addition, some of these views are not guaranteed to be universal and correct due to the limitations of personal perspectives. These views may change after working for a few years. Welcome to communicate with me~ (Successful dumping)

Finally, I wish you all to find the job you like, work happily, live happily, have a vast world, and make great achievements.

 

 

------  END  ---------

I recently interviewed BAT and compiled an interview material " Java Interview BAT Clearance Manual ", covering Java core technologies, JVM, Java concurrency, SSM, microservices, databases, data structures, and more. Follow the official account and reply  to 888  to receive, more content will be provided one after another   

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324148479&siteId=291194637