After 2 years of back-end development in Didi and Toutiao, it s so real...

After 2 years of back-end development in Didi and Toutiao, it s so real...

Let's briefly explain the background. An unknown 985 graduate and joined Didi in 2017. He jumped to Toutiao in the second half of this year and has been engaged in back-end R&D related work.

No internship experience before, it can be regarded as two and a half years work experience. In the past two and a half years, I completed a promotion and changed a company. I had a happy and satisfying time, and a confused and struggling time. However, it was a smooth transition from a rookie to a senior rower./

In this process, I have summed up some practical stroke experiences, some of which I learned by myself, and some of which I learned by communicating with others. Let me share with you here.

Learn to think deeply, summarize and precipitate

The first thing I want to say is to learn to think deeply, summarize and precipitate. This is the most important and meaningful thing I think.

Let's talk about deep thinking first. In the programmer circle, I often hear some remarks: I have no technical content at all in my job, and I use CRUD every day, and then write if-else. What can I learn from this TM?

Putting aside some ridicule and bantering arguments, this may indeed be the true thoughts of some classmates, at least once I 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 reason why there is such a view that there is nothing to learn is basically the result of lazy thinking.

Anything that seems inconspicuous, as long as you think deeply, dig a little bit deeper or widen it horizontally, it is a sea of knowledge that is enough to make people indulge in.

As an example. One time a classmate told me that there was an OOM service this week . After checking for a week, I found that there was a problem with defer writing. I changed a few lines of code and went online to fix it. I couldn't write the weekly report.

Maybe everyone has encountered such a scene, which is still representative. In fact, as far as bug investigation is concerned, it is a process of discovering, troubleshooting, and resolving problems, including triggering, locating, reproducing, root cause, repairing, rehearsing and many other steps.

After spending a week to do this, there must be a process of constant trial and error correction. There is actually a lot of room for thinking. For example, how to narrow the scope of positioning? What detours did you take? What analysis tools are used?

For example, the root cause, at least the OOM of Linux , the OOM of k8s, the memory management of go, the defer mechanism, the principle of function closure, etc. can be studied . If none of these are really involved, and it took a week to do this, then there should be a lot of thoughts on the resumption. It s okay to bring up dozens of WHY...

Let's talk about the conclusion and precipitation. I think this is also a place where most programmers are lacking. If you just concentrate on your work, you can do one thing very well. However, I almost never make abstract summaries, so that after working for several years, the knowledge I have mastered is still fragmentary. It is not a system, and it is not only easy to forget, but also causes my own vision to be narrower and more limited in seeing the problem.

It is very important to make some summary and precipitation in a timely manner. This is a process from technique to Taoism, which will allow oneself to look at the problem from a broader perspective and at a higher level. When encountering problems of the same type, they can be promoted and resolved systematically and hierarchically in accordance with the summarized methodology.

Let me give you an example. As a background service, 1G memory is optimized today, and 50% of the time-consuming reading and writing will be optimized tomorrow. Can you summarize the performance optimization?

For example, at the application layer, you can manage the application side of the service docking and sort out the rationality of their access; at the architecture layer, you can do caching, preprocessing, read-write separation, asynchronous, parallel, etc.; at the code layer, you can do things More, resource pooling, object reuse, lock-free design, big key splitting, delayed processing, coding compression, gc tuning, and various language-related high-performance practices...

When you encounter scenarios that require performance optimization next time, a whole set of ideas can be applied immediately, and the rest is tools and practical operations.

Some classmates said that I would tear up with the PM every day to meet the requirements and not to optimize the performance. Without discussing whether performance optimization can be done, there are also points that can be summarized in terms of business requirements alone. For example, how to do system construction? Have you thought about issues such as system core capabilities, system boundaries, system bottlenecks, service layering, and service governance?

Discuss requirements with PM every day. As a technical student, how to cultivate product thinking, guide product trends, and how to achieve architecture before business, these issues can also be considered and summarized. Just think about it, the painful things like connecting hands to maintain other people's bad code can make Martin Fowler come up with a set of reconstruction theory, and it seems so tall, we really don't have to be ignorant of our work...

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

Actively learn and maintain technical enthusiasm

An anxiety theory that has been widely spread in the Internet circles in the past two years is called the 35-year-old programmer phenomenon, to the effect that programmers in this industry are basically waiting to be laid off when they are 35 years old.

It is undeniable that the Internet industry is indeed inferior to civil servants and other occupations within the system on this point. But the 35-year-old programmer in this question is not the 35-year-old in the absolute physiological sense. It should refer to those programmers who have been working for more than ten years and working for two or three years.

The rest of the job is basically eating money, without active learning and recharging. 35 years old is about the same as 25 years old, and there is no desire for learning and growth at the age of 25. Instead, many chores of family life are added, and the salary requirements are often higher. It seems to the enterprise that this is indeed not very competitive.

And if we learn actively and maintain technical capabilities and knowledge reserves in direct proportion to the number of years of work, how can we be anxious when we reach the age of 35? I think major companies should be rushing for such a big cow, right? But learning this matter is actually an anti-human process, which requires us to force ourselves to jump out of our comfort zone, actively learn, and maintain technical enthusiasm.

There is probably a saying in Didi, when you actively jump out of your comfort zone and feel struggling and pressure, it is often in the darkness before dawn, and that is when you grow the fastest. On the contrary, if you feel that you have a very comfortable life every day, and work just for a long time, then it may really be boiling the frog in warm water.

During graduation, I often have more free time. It is a good time to work hard to learn technology. Using this time to lay a solid foundation, cultivate good study habits, and maintain a positive learning attitude should be beneficial for life. As for how to learn efficiently, there are a lot of big cows on the Internet who write such posts. After arriving at the company, you can find a lot of such sharing on the intranet, so I won't talk more about it.

You can join study groups and technical communities, both inside and outside the company, focusing on cutting-edge technologies.

Proactively undertake and exchange feedback in time

The first two are still from a personal perspective. I hope everyone can improve their personal capabilities and maintain their core competitiveness. But from a company perspective, when a company recruits employees, the most important thing is to allow employees to create business value. 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 do things for the company and create value, I think the two most important words are to take the initiative, take the initiative to undertake tasks, take the initiative to communicate, actively promote the progress of the project, take the initiative to coordinate resources, take the initiative to give feedback, and take the initiative to create impact. Power and so on.

When I first joined the company, it was basically that the leader would do his job well for whatever tasks he assigned, and then I would do my own thing. I almost never took the initiative to communicate with others or take the initiative to think about ideas that could help the project. I thought it was enough to complete my job with quality and quantity. Later I found that this was actually not enough. This was only the most basic requirement.

And some students' approach is that the leader only needs to synchronize what direction it is going to do recently. The following series of things basically don't need the leader to worry about. I like this classmate as the leader. A word that I often hear after entering a job is owner consciousness, which probably means this.

In this process, another very important point is to communicate with feedback in time. If the project is not going well, if you encounter any problems, 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. This matter. .

If the project progresses smoothly and the leader does not need to be involved, then you need to provide timely feedback on the progress of the project and the benefits obtained, and discuss any ideas you have. Ask the leader s suggestions for the current progress and where else there are. Need to improve to eliminate information errors.

Doing these things on the one hand is to make reasonable use of the leader's various resources, on the other hand, it can also let the leader know his own workload and have control over the project as a whole. It may be regarded as the upward management that everyone is more disgusted with. It has an internal taste. In fact, I can't do it well. But the most basic point, don t take a task and work hard and even cut off from the world. I haven t synced with the leader for a month. Thinking about holding a big move, it s basically cool.

Be sure to take the initiative, you can force yourself to start at the beginning of public statements on various occasions, have questions or ideas timely one-one

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

The first thing to build trust

Whether it is a school recruitment or a social recruitment, the first thing you just enter the job is very important, it directly determines the leader and colleagues' first impression of yourself. The first thing to do after entering the job must be done well, and at the very least, it must be completed smoothly and no online accidents will occur. The purpose of this is to build trust and make the team feel at least reliable.

If this thing is done well, the rest will go smoothly. If this matter is messed up, some leaders may give a second chance. If it doesn't do it well, it will be difficult later. This is even more important for social recruitment.

But when I just joined, the company's technical stack is not proficient, and the business is complicated and it is difficult to figure out what is going on. The pressure is really high. At this time, on the one hand, you need to invest more energy on the one hand, and on the other hand, you need to communicate more with the students in the group, and ask if you don t understand.

The most efficient way to learn, I think it s not about reading books or learning videos, but just go to the corresponding people to talk, let others talk about it, and you can basically understand it. This efficiency is much faster than looking at the documentation and looking at the code, 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, after all, colleagues are also very busy.

Thick skin a little, to find someone to talk to, rapid integration into the most taboo issues have not said that he put isolate ourselves.

beyond expectation

The extension of the term beyond expectations is very wide. For example, the leader asked to be a week to answer everyone s questions 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 has liberated the manpower of the week, which can be regarded as exceeding expectations. For example, the leader asked to be a small tool for operations, 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, we think of things that the leader did not expect, and create actual value and get business benefits. This ability is actually more important. In the work, I found that some people can make a small plate bigger and bigger, and some people just do the opposite. Then those students who have the ability to innovate and often exceed expectations have more room for development. .

In fact, look at this

Systematic thinking, systematic construction

This sentence was summed up during the promotion. The general idea is to have a global vision for system construction, not to be limited to a small point, but to have good planning capabilities and a clear blueprint for evolution. For example, adding a monitoring system today and an alarm tomorrow. These things should not become islands, but a small step in the first phase of stability building.

The work to be done in this phase of stability construction is alarm configuration and monitoring combing, including machine monitoring, system monitoring, business monitoring, data monitoring, etc., and it is expected to get the benefits of XXX.

There is also a follow-up roadmap for this work. In the second phase of stability construction, capacity planning, access stress testing, downgrade drills in the third phase, more disaster recovery, and the fourth phase... It gives people the feeling that this person is very comprehensive. , There is a systematic and planned service.

Usually positive summary of precipitation, more exchanges with others, forming methodology.

Improve your soft abilities

The soft quality ability here is actually the ability in PPT, communication, expression, time management, design, documentation and so on. To be honest, I think I was promoted because PPT did a little better... Maybe everyone didn t pay much attention to these abilities. I didn t pay much attention to it before. It's not as simple as imagined.

For example, the work of PPT + speech + defense during promotion actually involves a lot of detailed thinking about how to choose the content, how to design the layout, how to guide the audience's emotions, how to answer the judges' questions, and so on.

When I was promoted, I saw a lot of classmates PPT content arrangement was messy, and the speech process was not smooth and natural. Although I did a lot of practical work, I lacked a lot in expression. It is foreseeable that the external judges will suffer losses.

The company network usually has some soft quality training courses, you can find a number of occasions deliberate practice.

All of the above sharing is considered to be relatively magnificent, but society is not all that good. . The following content tends to be negative energy, students who are particularly positive in the three views and those who feel uncomfortable are advised to skip it.

Flattery is really good

I was very disgusted with flattering things before I joined the job. The reason why I wanted to join an Internet company at first was because I felt that the Internet companies were not so sophisticated. As it turns out, I was wrong...

A few days before joining the company, the big leader in the department group sent a message, and dozens of messages with thumbs up followed immediately. I learned and liked it. It was good and excellent. That scene was said to be a red flag. The firing of firecrackers is not excessive at all.

In addition to marveling at everyone s superb information receiving ability and processing speed, I also found that even flattering is a formation. The leader of the first-level department sends a message, the leaders of several second-level departments keep up, and the group leaders follow. On, the last is everyone's carnival, which made me suspect that the speed of flattering determines the career development prospects (yes, I don't doubt it anymore).

Frankly speaking, I am not used to flattering in groups, but I am not disgusted anymore. I can say that I regard this as a pleasure. It s not that I don t have the eloquence and ability (in fact, I don t need eloquence, everyone is simple and straightforward). On some occasions, for the need of a lively atmosphere, I can also wipe my mouth with honey, and even write ancient poetry. Rainbow fart arranges for the leader. But I found out that my direct leader doesn t flatter in the group much, so on the surface I don t flatter publicly, but secretly it actually caters to the leader s preferences...

But as long as you have a good grasp of flattering, it is still fragrant on the whole, at best it is useless, at least it will not do any harm. Everyone has similar abilities, and every chance of flattering in a group is an opportunity to show up. According to a colleague, this is called building personal technological influence...

Licking if you want, there is no need to sour others if you don't want to lick, Respect Greatness.

Practical combat that will never be absent. Where there are people, there are rivers and lakes. Although most of the cities that engage in technology are not deep, but the troublesome things such as smashing the pot and asking for credit are basically not absent, and even I have seen public emails torn...

This part of the topic involves some sensitive information, so I won t say much, and we don t have too many chances of encountering these things at lower ranks. Just to remind everyone that you will eat melons in this area sooner or later when you work, so be careful when that happens.

Be careful, we will not bully others, but we can't easily let others bully.

Don't be blinded by the picture cake

To be honest, I personally dislike such behaviors as pouring chicken soup, licking chicken blood, talking about dreams, and talking about struggle. This set of politicians is still prevailing. I really don t know if it should be ridiculous or sad. Of course, there is no problem with these words themselves, but these things should be self-driven, and should not become a strong push from the outside world.

I think the sentence " I must work hard " is normal, but the sentence "You must work hard" feels a bit weird. You work hard so that the shareholders of the company can get rich? Especially in the case of insufficient money, these behaviors are tantamount to hooliganism.

We need to keep a clear understanding of these drawing operations of the leader, rationally analyze, and make decisions. For example, when it feels that the money is not enough (or the rank is too low, the same reason), there may be the following situations:

The leader does not notice the fact that your salary is low
The leader knows this fact, but does not know how strong
you need to increase your salary The leader knows that you need a salary increase, but he feels that you are not enough
The leader knows You need a salary increase and have enough ability, but he doesn t want to increase you
. The leader wants to increase you, but he has feedback and strived for it, but he has no resources.

What we need to do at this time is to feedback upwards and communicate with the leader for confirmation. If it is 1 and 2, then the information error can be eliminated through communication. If it is 3, it needs to be discussed separately. If it is 4 and 5, you can already consider retreating.

Regarding these things, there is no need to complain. Complaining will not solve any problems. What we have to do is to work hard to improve personal abilities, maintain personal competitiveness, and wait for the right time to switch jobs and it will be over.

Always be prepared, there is nothing terrifying about the technology at hand, one day you will just switch jobs if you are unhappy.

Learn to pack

This one is to put it bluntly, if you can blow it. I forgot where I saw it. Being able to speak, write, and do well are the three requirements for people in the workplace. It is very important to be able to speak, and to be able to speak can bring in projects, draw resources, and recruit people.

For the same thing, different people can tell completely different effects. For example, if I made a small tool online, I can only tell the basic facts, and let the leader describe it, and this has become a tool for XXX, improved the complete ecology of XXX, and formed XXX s business. closed loop. Brother, I'm taking it, why don't you give you all the coins?

According to my observation, every Internet company has such a few words, such as grasping hand, ecology, closed loop, aligning, 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 use skillfully.

This is the packaging of things, and the packaging of people is the same, especially in test-oriented occasions such as promotion and interviews. The characteristic is that the process is short and the packaging is particularly important.

The following extract from the scene during the interview and the interviewer talking to a company, you can feel:/

Behind us is a 40-50 billion dollar market...

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

It s pretty good to be able to reach this level for two years...

Your company's technical atmosphere is very good, and the business development prospects are also very broad...

Ah, each other...

Um, long and long...

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

You can watch the leader s PPT and listen to the boss s upward report and presentation.

Which is more important, choice or effort?

Does this still need to be asked, of course it is a choice. In the face of a perfect choice, hard work seems worthless. I have a high school classmate who has not been in contact for many years and has already ringed the bell in Times Square this year...

But there are too few such cases, the random cost of making a perfect choice is too high, and the uncertainty is too great. For most of the newly graduated students, the judgment of the industry is not mature enough, and the grasp of their own abilities and the difficulty of starting a business is not accurate enough. At this time, bringing a few people to start a business seems too risky.

I think a safer way is to join a larger company first, find a good leader, hug your thighs, and improve your personal abilities. With a good platform, thighs, and personal effort, this take-off speed is already possible. After I have accumulated a certain amount of contacts and funds, I have a deep understanding of the market and needs, and I have confidence in myself, so I can consider starting a business again.

Originally wanted to share some life stories, but found that it is already so long, so let's talk like this first. Some of the summaries and suggestions I wrote above are not very good. I still need to continue to cheer and encourage everyone.

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 a few years of work. Welcome everyone to communicate with me~ (successful)

Finally, I wish you all find your favorite job, work happily, live a happy life, have a broad world, and have a lot to do.

Source :