It has been more than 8 months since my entry last year. Today, I’d like to share with you some of my feelings and thoughts.

The reason for this timing is that I just finished my internship, and when I come back after graduation this year, I will no longer be an intern. I think life needs some sense of ritual. I also need some time to sort out my thoughts, get away from the busy and fast-paced work, reflect on what I have done wrong, and make a summary of my long experience. After all, there are not many opportunities like this.

What did I experience?

new

When I first came here, I heard that it was tiktok’s architecture team. After I met leader on the first day, he told me two things. First, every programmer has a dream to do architecture. I joined such an architecture team before graduation, so I should cherish the opportunity here. Second, everything here is basically a variety of challenges, there will be a lot of difficulties, mentally prepared.

At that time, I was both pleased and a little afraid. It was a cool thing to join such a team, but AT the same time, I was worried that MY level and ability were not enough to take up the challenge.

With such a feeling, I joined the first project team, which was working on the company’s low-code platform, namely the platform that generates web pages by dragging and dropping. Of course, there are many practices in this area in the industry now, and the technical complexity is needless to say, it must be quite high.

At that time, some of my internship partners talked with me a week after joining the company. They said that they began to receive requirements and submit codes within two days after joining the business team, but I was still empty and did nothing. It was inevitable that THERE was a psychological gap.

Halfway through, I also talked with the leader about my ideas and confusion. He said that in this team, the threshold to get started in the early stage would be relatively high, requiring some patience, and at the same time, he gave me a lot of advice. While being grateful, I also agreed with him deeply and planned to settle down and continue to get familiar with the project.

But after a while, I came into contact with some other projects in the team and saw that some of them were also doing things related to engineering scaffolding. I happened to know about them in the community before and I was interested in them. Considering that you are still in the internship stage, why not choose a direction that interests you more and give it a try? Therefore, I expressed my ideas to the leader and then mentor, and they readily agreed.

I still remember that this low code platform was only gone for half a month, then transferred to the engineering direction, a stay of 8 months. At the beginning, I thought it was just a scaffold, but Mentor immediately corrected me. He told me that it was a huge engineering system, covering initialization, development, debugging, CI, CD and other complete development processes, comprehensively improving the quality and efficiency of the project. I was listening to, unclear sense li, and even a little excited. (For those of you interested in engineering opportunities, come and talk to me in private, this group really needs people, Wx: Sanyuan0704)

In this way, I began a new journey in the engineering team.

Eager to challenge

The next period of work is relatively smooth, gradually started the development of related tools, read the implementation of some sub-modules, and wrote nearly ten thousand words of source code analysis was transferred to the department group, is also a contribution to the new training system.

Mentor often arranged some small functions for me to do, and he would ask me to fix some small bugs in use, and he would ask me to ban and yun the documents that needed to be improved. For the next two months or so, that’s what I’m going to do.

I do not like such fragmentary things for a long time. Although there are some challenges in the process, there is not a module of own on the whole. In the middle of the journey, I talked with the leader about my ideas and the mentor about the follow-up plan. I also understood that they were actually worried that I could not handle the difficult work given to me, and the consequences would be serious if I directly overturned the car. However, in the face of the coming defense, if I don’t have a module to take charge of independently, all of them are fragmentary things, I feel a little short, so I told my mentor that I might as well arrange some modules that I can take charge of independently.

Sure enough, after putting forward my idea, Mentor began to assign me some large modules, and I later chose one of them as my defense project, which was an online debugging tool. It took me about two months to complete the defense, and FINALLY I passed the defense smoothly and got a good offer rating. Of course, in the autumn recruitment, I also directly received the offer of byte to become a regular employee.

Focus on the deepening

After the defense, I went back to school in September 2020. When I came back to Byte again, it was early January 2021. I asked for leave for about 4 months. It can be said that this is my second internship experience. Compared with the previous experience, the difficulty and pressure of this internship have risen several times, and I have encountered a lot of challenges.

When I just arrived, my mentor sent me a private letter, asking me to get familiar with the content related to SSR (server rendering) in the current engineering system. Before, there were a lot of requirements and some experience problems, but I didn’t have any manpower to follow up, so NOW HE asked me to bear this part.

To be honest, in the face of more than 4000 lines of runtime framework, I do not know where to start, read the source code for two days did not see how to understand, did not expect the third day received SSR new demand, can not help but let me feel a huge challenge.

In the first week of my arrival, I chewed down most of the details and figured out the implementation of some boundary cases under the guidance of the surrounding bigwig.

After finishing some SSR requirements accumulated before, Mentor told me that the current SSR was a very important part of the engineering system, and I needed to think about it and make a long-term plan. Therefore, during that period of time, I forced myself to investigate many SSR schemes in the industry, including Nextjs, Egg-React-SSR and SSR, as well as some internal schemes of the company. I also did some research on SSG, SPR and ESR. This process is not only to sort out the future planning, but also to improve their vision and gradually enter the deep water area of technology.

Later, I was also responsible for the ONcall of SSR framework (answering questions and solving bugs for business parties using the framework) and the iteration of new requirements by myself, and pushed forward step by step according to the expected planning. During the construction of SSR framework, I also had a deeper understanding of SSR technology itself.

On the

I thought I could devote myself to SSR, but in fact IT was not so. Because our engineering framework needed to be implemented into the Business, Mentor assigned me to several important Business lines to support the Business as a BP(Business Partner). I didn’t expect these jobs to take up all my manpower in the later period, so it can be said that there are many difficulties in the middle.

First of all, I heard that an important overseas video website project in the company needed to be reformed. The daily work was beyond my wildest dreams. My mentor asked me to take charge of the transformation work.

However, the transformation process was more difficult than I expected. On the one hand, the Webpack5 part of the construction tool made by our group was just packaged, and there was no stable version released to the outside world. Inevitably, there would be pits or unsupported parts, which were internal factors. On the other hand, the business side was very strict in controlling the quality of the project, and they did not report any mistakes after the operation. They reported that the packaging volume was 20 KB more after the transformation (the complete packaging volume was more than 500 KB at that time), and it took several days of time and energy to optimize the 20 KB volume. In the end, they barely met their expectations.

In addition to the build, there will be subsequent changes to other modules, but I won’t go into details here. All in all, it was a very complicated transformation process, and there was a period of time when I was involved in the project and met some blocks, so I could not sleep for several days. But the transformation result is still successful, finally meet all the needs of the business side, so that the daily live hundreds of millions of overseas products run the code I wrote

The next experience was to participate in douyin’s May Day BP activity, which was the first time FOR me to participate in front-line business development. The overall development time was tight and the intensity was high. We all sat together in the same closed conference room, just like comrades in arms. In the week before the launch, in order to clear the bugs, I could not get off work after dawn every day.

Although the process is hard, but really involved in a complete line of business development process, including review from demand, function, development, and client/Server side alignment, QA, repeated the test and deployment of on-line measurement and, more importantly, look at your own code, is used by thousands of people, really is a quite a happiness thing!

The feeling after work

Time management challenges

Although he is an intern, he is also a week-old, and his daily attendance is no different from that of a regular worker. Give me the greatest feeling is after work time is cut very broken, often easily interrupted by all sorts of things, and work occupied most of the time, to their free time is very limited, so to speak, as in school no matter anything, stop the state of the learner has already gone.

That means learning in this environment means learning to live with fragmented time, and learning to plan and organize your time properly. But in fact, I am not good at time management. When I was in school, I could immerse myself in studying for several days. Now I don’t have such an environment, so SOMETIMES I feel at a loss.

Just like everyone else, I also have technology anxiety. Whenever I see some new tool framework or technology that shines in my eyes, I always want to know about it. However, I often forget about it after a period of time because I don’t have enough time and energy to learn it thoroughly. Maybe we should really think about it, is there something wrong with our time management?

In fact, I think the essence of time management is energy management. If you don’t think about how to invest and plan your energy and passively fall into a normal and fast-paced work mode every day, you will waste a lot of time without realizing it, which is a pity.

What kind of person does the architecture team need?

Working on an architecture team is very different from working on a business team. You may say, of course, that technical skills are more demanding in architecture teams. But from an internal perspective of an architecture team, I would say that one of the most important things that people are missing is that we are polishing each technology product entirely on our own. Since it is to make a product, it must go through demand analysis, user interface design, product function design, code development and various tests. Then it must be seen by users through certain means of operation, and finally reach the user in front of the user and deliver to the user.

However, all of this is done by the developers on the architecture team, which means we don’t have our own UI, we don’t have our own PM, we don’t have our own QA, and one person or one development team plays all the roles. If there is a problem with the final technical product, it must be that some link in the middle did not do it, and this link is not only the problem of the technology itself.

I agree with the idea that as a programmer, in order to develop further, it is better to know a little BIT about UI, a little bit about products, a little bit about operations. Frankly speaking, these in the business team, in fact, is an option, most of the time do not understand there is no big problem, there are more professional people to give you backup, in case the UI, experience is not good, there will be more professional people to point out to you, there is no need to worry about what operation and promotion. But in the architecture team, are almost all necessary items, you will have to stand in the Angle of the business to mining and analysis of demand, you will have to design conforms to the user use custom tools and documentation, you will have to design a complete test cases to ensure the quality of technology products, you will also get to outsiders, the promotion of own technology products and be born, all of these have to a person you do.

In the architecture group, I felt more powerless. Because we do technical products, for our developers themselves more comprehensive and diversified requirements, a problem is a huge hidden danger, and more importantly, these problems we are generally aware of. We wouldn’t have found our documentation so unclear unless the business side we were using threw problems at us, and we wouldn’t have released our code without writing our test cases (I thought about it first).

We can get feedback from the outside world, whether through onCall questions or direct teasing, but the problems caused by this are as follows: First, as a member of the architecture team, we really lack even the most basic product awareness and ability, which leads to a lot of bugs in our tools and thus need to deal with a large number of onCall problems. Is this maintenance cost in turn suppressing the team’s output, creating a vicious cycle? Secondly, if users feel that they can use it, but they are not comfortable with it and do not want to give feedback, is this problem always left in our technology products, and we have ignored it? Invisible problems are often the most deadly.

To sum up, this is the reason why I feel powerless to stay in the architecture group, and of course, it is also the direction I need to work hard in the future, as well as my understanding of this job. Teams don’t need technical masters so much as people who can make technical products work well.

Pain, and grow

This one is more personal. To be honest, AT first I went in to prepare for in-depth development of SSR, but later I was assigned to the business. I didn’t expect it would take up so much of my energy, and most of my time was spent in the business project itself. In fact, I was not willing to accept this, so I felt very bad in the middle of the process, and even had a fight with the business leaders in the group. But it had to be done, and it was supposed to be done by me, because it would take a lot of time for someone else to learn the business, and it would only drag on longer.

After work, we feel that most of the time we are involuntarily, a lot of things, even if we do not want to, or need to carry down. We can’t change that fact, but what we can change is the way we look at it.

Participate in the process of business, familiar with business although gave me a big psychological burden, but the process I saw a large project how to build the scaffold, design test cases, build e2e test environment, server performance test and so on practical experience, also involved in the business, how to bury some disaster monitoring, degradation and so on project link. Is this not a kind of growth? The process may seem hard, even painful, but when you look back after finishing, you realize how far you have come.

The future planning

What kind of person do you want to be?

This is what Mentor said to me before I left the company. He asked me to go back and think about it. I can’t think of the answer at that time, maybe this question has to revolve around me for a long time, here I briefly comb some directions after it.

Hone your professional skills

Anyway, the most important thing at present is to improve my professional level. I think there are a lot of areas to be strengthened, whether it is specific technology stack or understanding of architectural design.

One day I asked the guy who worked next to me for many years, why is your Node code so beautiful? His answer was simple:

Just read and write as much as possible.

This reminds me that Uncle Wolf once had an interview with You. He asked you why you could write so much clever logic in Vue and use so many tricky skills in Git easily. How did you do it? I often read open source projects. Maybe I spend half an hour or ten minutes drinking tea, learning programming ideas from others’ projects and enriching my “Arsenal”. Over time, I can gradually improve my own level.

To become more professional and design higher-quality code requires a long time of practical accumulation. There is no shortcut. If there is a shortcut, it is to stand on the shoulders of giants, look at excellent code, get some ideas from it, and then do more to verify your ideas.

Improve time management

After work, you realize how important it is to manage your time and energy effectively, and it’s easy to get caught up in the endless busyness of work without trying to improve it.

I feel I need to start from two emphatically, the first is to learn to do subtraction, before what all want to touch, what all want to learn the idea to now it is time to be scrapped off, limited time, needs to be spent on the blade, you want to do too many things can distract themselves, instead let yourself focus on something small and important. The second is to plan ahead, so as to make full use of the fragmented time, so as not to wander aimlessly and do not know what to do, resulting in a large amount of fragmented time wasted.

Export more and share more

In the past year, the frequency of output and sharing has decreased obviously. On the one hand, it is because of busy work, but on the other hand, it is also because of their own inertia, they did not take the initiative to think and make plans.

I don’t think that’s a very good sign.

Before and after all the community famous author SSH talked to a lot of high level of technology is not how to write an article to share, but we can write so many things, not because of how good technology, but our character itself is willing to share, and happened to a lot of people like us to share things, brought some help, So sharing exports gives us a little bit of leverage.

Secondly, as an original technical blogger, I also know that output is a process of forcing input backward. For example, the write package manager thought it was clear after reading the official documents, but when it came to writing, I found that I had so many blind spots in knowledge, such as the defects of NPM package management, dependency security issues, and the depedency-check scheme in the community. These are all things THAT I came to know one by one in the process of writing the article through looking up information, which I had never even dabbled in before. Therefore, the output process not only benefits readers, but also cultivates and expands the author’s own knowledge system.

On the one hand, I am willing to share, on the other hand, sharing can force learning and growth, so I think it is necessary to keep doing it.

Recently, the output of engineering is gradually becoming more and more, and we will meet more frequently in the future, and the output content will gradually diversify, no longer limited to the front end, but also include their own work of thinking, reading experience (these will be put into the public account, nuggets mainly technical output), please look forward to it.

About the team

I’ve had a lot of readers interested in what the byte front-end architecture is doing, so I’ll start with my current engineering team.

Team work involves:

  • Basic engineering frameworkConstruction, including initialization, construction, debugging system, CI, CD,Middle background research and development framework(similar to umi), andCode quality related scanning platform
  • Nodejs basic library construction
  • The construction of visual building platform
  • Construction of company-wide resource distribution platform

The technical atmosphere of the team is quite good. Although some of them work in different places, we often discuss and share some technical solutions in the group, and there are often technical sharing in various directions in the weekly meeting. There are a lot of technical talents in the team. If you have any questions, they will patiently help you to answer them. Through working with them, you can also learn a lot.

To be fair, the team is still quite short of people, especially in the engineering framework team where Shensanyuan is now. We often suspend the progress of some technologies (like the SSR framework mentioned before) due to insufficient manpower. If you are interested in the above directions, you are welcome to work with us to build our star technology products.

Finally, I would like to emphasize that when many people talk to me, I found that when people see byte interview, they will subconsciously think that they will give very difficult algorithm questions, or directly handwritten red and black tree this abnormal programming questions, this view is extremely wrong ❌! On the one hand, my current team is not as internal as everyone imagined. On the contrary, the team has not been built yet, so fresh blood is needed to blend in. It is meaningless to issue the topic to deliberately make difficulties for candidates. On the other hand, the whole team is also very pragmatic and values the real engineering ability and learning ability (potential) of individuals. We will not embarrass candidates with problems that are not directly related to ordinary work.

If you are interested or have any questions about the position, you can contact me directly. My wechat account is Sanyuan0704. Of course, just making friends is also welcome.

This article was first published on the “Sanyuan Classmate” public account, welcome to follow. Replying “JD” will get you a job description, replying “IES” will get you into the “BYtedance IES Preliminary Recruitment Group”.