Abstract:
Bi Xuan, the head of Ali infrastructure, told us his feelings about the growth of various roles based on his own experience, which is worthy of being carefully tasted by all technical students who are confused about their career development.

[Editor’s Note] December 20, 2018 marks the 3rd birthday of Cloud Habitat. Alibaba always says “fix the roof on a sunny day”, so we specially planned this album — 20 Ali stories and 50 books to share with developers. The first is Lin Hao (Bi Xuan).

In this article “Programmer’s Path of Growth”, Bi Xuan, head of Infrastructure of Alibaba, tells us his feelings of growing up in various roles based on his own experience. In his career experience, he has experienced the growth of technical ability, architectural ability and now as a technical Leader in training. Among them, the growth of technical ability and architecture ability is very needed by all programmers, which is worth all the technical students who are confused about their career development.

Technical ability growth

I studied in the Department of Biology in university, lacking professional training, which makes me lack more technical ability. Looking back, in the first five years of work, more are in broadening the technical scope, just graduated from ASP, VB, Delphi, the first two years of work these magic tools, to work in the third and four years more focused on the field of workflow.

Main technical ability of growth or joined ali later, in 2007 before joining ali, I am a haven’t seen days of all visits to 10000 PV, after to ali, do the first thing should be write HSF, and in the customer service online CRM system, traffic is probably millions of daily service invocation, the ignorance, Also will be launched at the time, what is more didn’t appear what problem, and continue to put HSF online to the time of the trading center, trading center at that time the daily service level adjust dosage is about hundred million, the results online was rolled back in the day, but also don’t know what the reason, the rollback is touches one of the biggest (and, of course, to me Touch is also likely to be behind if not solved, it should from Taobao off).

After the rollback, I started to check the problem carefully, and finally found that the problem was caused by the default timeout parameter 60s of Jboss-Remoting used by HSF at that time. After this problem, I realized that the most important thing to support the system to a certain level is to master the whole technology stack, otherwise I would not know how to solve the problem or temporarily check. So I began to learn Java BIO/NIO, Mina, reflection, concurrent programming, etc. Although I had read some books and materials about many of these things before I joined Ali, I found that I did not know much about them at this time. During that period, I began to read more carefully. Looking through the source code behind various apis used in Mina and even Java was the fastest time for me to improve my Java skills. After two months of rollback, I completely rewrote HSF based on Mina and finally went online again.

After that, with more and more HSF application scenarios, and later I checked more problems on Taobao, MY Java skills also improved a lot. At the same time, I also found that a lot of Java problems need to be mastered at the level of JVM and operating system, especially JVM. So he and Zachary, who was still at Ali, would come to the company on weekends to pair up on JVM code. With the help of Sacha, I became better and better at mastering THE JVM. During that time, I realized that many things can only be truly mastered by looking at the code and having corresponding opportunities to use it.

After HSF, I worked in HBase, where I learned a lot of storage skills, which I did not know at all before. After HBase, I started to work on the first-generation container product T4 (which means the fourth-generation Taobao technology), and entered fields I did not know at all, such as virtualization and Cgroup. But because I didn’t study the code in detail and do my own modifications, I’ve barely scratched the surface until now.

For programmers, the growth of technical skills is obviously the most important (Talk is cheap, show me the code!) Of course, this is usually the fastest growth. Many students will feel that they have not encountered such an opportunity, so their growth will be slow. I highly recommend that you try to create some scenes by yourself (of course, it is better if it is necessary for work). Learn the corresponding technical skills (e.g., learn Java communication framework, try to write one based on BIO/NIO, then compare Mina/Netty to see why the writing is different, or learn Java memory management, try to write your own program to control GC behavior. For example, first to a YGC, then to two FGC, then to 5 YGC, then to FGC and so on, in addition to some introductory books, I am very recommended to read the source code, and finally you will find that all books are inferior to source code), so as to truly understand and learn, otherwise it is easy to forget.

Architectural capability growth

Speaking of architecture, I did it when I was in charge of workflow system in the third year of my first job. But it was not until I did T4 and Long-distance Living in Ali that I really had a stronger feeling and a deeper understanding of architects. As for the architecture, my current understanding is basically a structure diagram, of course there are different perspectives of the structure, but the part of the diagram is done by multiple teams, even across multiple professional teams.

When T4 was being done, because T4 involved a standard Java WebConsole, a bunch of operation and maintenance systems, container technology, etc., it was a structure that had to span at least three teams, no matter from the perspective of R&D or deployment. Therefore, as the architect of T4, how to design the whole structure well? Respective boundaries and interfaces were what I felt most at that time, enabling cross-professional teams to better cooperate. At this stage, the most important thing to consider is how to adjust each part according to the priority of the whole project, and how to better ensure the results as an architect who does not know everything. My own feeling is that T4 has enabled me to grow from an architect of my own professional system to an architect of a cross-professional system.

When doing the different live, feel even more strongly, because this across major number, the number of the participation is entirely up to a great degree, every professional, the system of people need to see to know what you should do the whole architecture, the role of, doing a long-distance live the whole project process, as the general architect, My own feeling is that the most important responsibility is how to control the risk of the project, or as an architect, what you think is the most important thing to control in a project, and how to design this part architecturally, and this is the question that I like to ask a lot of architects later, An architecture document is not to say that according to the template you (a lot of architecture design document is the same, to see what is usually considered, but did not reflect these considerations from the architectural design is how to do), but according to the actual project/product, to highlight the key to ensure that the most important questions from architecture design is to control, This is especially true for large projects that span multiple professional teams, which is precisely done by a large architect with a bunch of architects from specialized fields. For example, in a remote multi-activity project, apart from the normal structure and boundaries, the most important thing in architectural design is the design of data correctness. One of my strongest feelings is that it took living far away to understand what it’s like to be an architect of a large system.

So in terms of my own feelings, and architects the wide requirement for knowledge is very wide, and can very good abstraction, to do the design of the structure, boundary, the focus of the analysis of the current phase system, and from the aspect of architecture design to ensure the realization of the key, the growth of the relative technical ability, I think need more opportunities But also need to have enough accumulation before opportunity (such as writing a system, is active to understand a system design of upstream and downstream, didn’t know that before specific deployment structure, have a simple understanding to the corresponding knowledge, T4 before my own doing, LVS, computer/network structure completely don’t understand what is the row).

Technical Leader training

I prefer the students who have accumulated in the previous two steps. A very important point for a technical Leader is the ability to perceive and judge the technological trend, which is actually a very comprehensive ability, including the technical depth in one or two fields, the ability to construct, the ability to understand the technological process, and the ability to think about the technological development. As a technical Leader, it is very necessary, and then there are some other comprehensive abilities as a Leader (such as the ability of organization and construction, etc., but these abilities are usually lacking more for technical people). I am still practicing and learning this, so I won’t talk too much about it.

conclusion

To sum up, I think there are many possible paths for programmers to develop. The three paths mentioned above are all possible paths for programmers to develop. There is no superiority or inferiority, but interest and personal advantage are still the most important.

As the author of OSGi Principles and Best Practices and Distributed Java Applications: Basics and Practices, Bixuan recommends his book list to us:

The Age of Intelligence: Big Data and The Intelligent Revolution Redefine the Future