Because I saw The TinyFool “Fashionable Technology Trends I followed in those years”, when I praised it, I also have a lot of memories of me, so I want to write a memory paste, originally thought memory is a very depressing thing, because it is the performance of old age, but I wrote while writing, slanting the building. It seems that I am not old, still struggling. Here are a lot of my babblings, Read them if you like, TLDR — Too Long, Don’t Read!

Since I graduated in 1998, I have been working for 18 years. In addition, I worked for two teachers who picked up jobs in the outside when I was a junior. Now, THE program I wrote has been used in the production line for 18 years.

background

To illustrate my technical “sexuality”, I have to tell you something about my background and experience.

My 18 years have been divided into three phases:

  • In 1996-2000:Beginning to mess aroundJunior and senior years plus two years working in a bank.
    • With Powerbuilder/Delphi in WindowsNT/SQL Server to do a lot of MIS management software, there are hotels, there are water delivery, OA.
    • Using Java Applet to make a Web teaching courseware, used in Win95/IE3.0 demo operating system in various scheduling and algorithm animation, won a National college students Challenger Cup award.
    • Delphi ISAPI technology and PHP/ASP for some companies and universities to do several websites.
  • In 2000-2010:Technical learning periodFor ten years, my primary programming language has been C/C++.
    • The first two years in banking in C on Unix (AIX/Solaris/Sco Unix/HP-UX..) Write all kinds of banking (write in C language), write in C to operate SQL, operate interface, write business transaction logic, everything in C…… This is the age of C,At that time, banks all over the country were concentrating, and banks were the largest software system in the industry at that time. Therefore, I determined the technical direction of C/C++/UnixMy online signature was,
      C/C++/Unix are weapons of mass destruction

      .

    • Then, in 2002, he built a full-platform (including Unix/Linux/Windows) high-performance Computing software product at Platform, much like Hadoop today. It was called Grid Computing, and it used cheap x86 clusters for large-scale parallel Computing, mainly for the chip design industry. ARM and Texas Instruments, or research, such as NASA, or national security, such as the Department of Defense image analysis, or 3D animation rendering, such as Shrek… After 2005, many users began to migrate from Unix to Linux, so they began to pay more attention to the Linux Kernel knowledge. Platform has a rigorous software engineering system. My understanding of rigorous software engineering and many basic technologies has been formed here.
    • In 2007, I did performance tuning for the Real-time network of Reuters global financial data (in my article “How should Performance Tests Be Done? The article has revealed the performance requirements of the company, is a real-time data network, about 99.9% of the network transmission under the 100 k of TPS is lower than 1 ms, is a great technical challenge), told the Reuters, I only do one thing, is the performance optimization, I put my responsible for the performance of several system has promoted the appearance of 8 to 15 times, by the end of 09, I’ve done all the work I needed to optimize for the next three years. So, at this time, I also started my career as a manager. Much of my expertise in performance tuning, high availability systems architecture, and r&d management was developed here.
  • 2010 to today.Technical precipitation periodAt this time, the main programming language is Java.
    • During this time, I joined Amazon and Alibaba, the so-called Internet companies. I worked in Amazon for two things. One was connecting Amazon’s global marketplace and communicating with data centers across continents. The other was my first exposure to big data and machine learning — user demand prediction system. I have worked for e-commerce cloud platform Jushita and Ali Cloud in Alibaba, and the most important thing to experience when I go to Ali is double Eleven.
    • This period of time, have more influence to me is Amazon, technology is no longer my bottleneck, large-scale system, also is not a problem to me, and let I harvest the biggest is, leading-edge architecture and software design solutions, and the method of technical and engineering, my eyes, imagination and vision are huge open, And in the technical management, engineering management, product management, personnel management, company management and other aspects of management thinking has a qualitative improvement. This period of time, is my real technology precipitation period.

My background could have been better, but unfortunately, I was unlucky. I could have gone faster, but I had to meet two financial crises at the most critical time. I could have gone to see the world in a better company in Silicon Valley, but I had to give up because of my parents’ health.

Call waiting welfare

1. Recently sorted out 20G resources, including product/operation/test/programmer/market, etc., and Internet practitioners [necessary skills for work, professional books on the industry, precious books on interview questions, etc.]. Access:

  • Scan the code of wechat to follow the public account “Atypical Internet”, forward the article to the moments of friends, and send the screenshots to the background of the public account to obtain dry goods resources links;

2. Internet Communication Group:

  • Pay attention to the public account “atypical Internet”, in the background of the public account reply “into the group”, network sharing, communication;


Experience determines the way of thinking

As you can see from my background, I mostly work on large scale systems and software, and mainly use obscure languages and operating systems such as C/C++/Unix/Linux. We know that in C and C + + development, basically is to deal with fault and system underlying corresponding, and the size of the system and software, and always will meet a lot of “strange” problem, these problems, will force me to learn a lot of operating system, computer system, network, database, middleware, and so on all sorts of foundation or the underlying technology.

What I have experienced is basically rigorous software engineering, so I should not be careless. I have several careless experiences, which have caused great psychological impact on me. For example, I was judged as unfit to write code, because my code was too bad, or there was a serious failure, and I almost ran away. In addition, the global Gloabl-style oncall often makes me get called up in the early morning to solve problems, which is a painful experience. So, my whole experience has taught me the kind of habits and values that you have to be rigorous about software development.

Think about how careful and rigorous you have to be to develop a software system that can barely break down in C/C++. Therefore, my experience let me not careless, also can not cope with the work, more can not compromise on the standard, but also need to constantly improve the standard, so, over time, I will inevitably have the following habits:

  • Do it — know what it is and why. As a result, you can only learn the basics and related knowledge of the technology. Like Wikipeida, when you enter a term, you get a whole bunch of new terms, and the phrase “breadth of knowledge is a by-product of depth” came to me many years later.
  • Make industrial-grade software. From banks to Platform to Thomson Reuters to Amazon, software development has SLA requirements. In my opinion, one of the most important indicators of whether a piece of software is industrial or civil, besides being functional, is whether it has SLAs in terms of performance and stability. Most Internet companies and open source software do not have SLAs. Therefore, not up to industrial standards. To achieve industrial-grade standards requires time, manpower and financial resources to go through very tedious design, test evaluation and operation management.
  • Industrial-grade software comes from industrial-grade professionals and professional software engineers.
    • Professional personnel. Why do most foreign companies need engineers with CS (Computer Science) background? Because they’re going to make industrial-grade software, it’s a science, and as such, it requires CS majors with a good science education.
    • Professional engineering. Industrial-grade software requires industrial-grade software engineering, such as rigorous Design/Code Review, rigorous testing, and complete online operation and maintenance.
    • Professional tools. At this point, you will find that to achieve a high level OF SLA, such as five slAs of 9 or more, the ability to do the work of the human body is completely out of reach, and you need a large number of professional tools to support it. Humans are smart because they invent tools, so that’s another industrial-scale metric — how many modern support tools do you have?

In my previous post on Development Team Effectiveness, I said that you always need to focus on one thing, and that the further up the chain you get, the more inefficient you become. Either you get serious about designing and coding, or you get serious about testing. If you’re not serious about designing, coding, testing, then you have to be serious about operations, you have to be serious about troubleshooting. You always need to be serious somewhere.

Serious is painful and difficult, but also need to persist, because people are too easy to compromise, this is a no small challenge for everyone. To be honest, I do not have the same standard of “serious” as many people, so there are many differences, many people say I am too ideal. In fact, I can understand them, on the one hand, because my standard is relatively high, on the other hand, they have only done civilian level software.

In addition, at the beginning, being used to industrial-grade software, I was extremely uncomfortable with the rough and fast development methods. However, I also in adjusting themselves, after all, the world is not only a kind of values, have a plenty of industrial-strength software, some is civil level, there is just a toy, but also a Java the language very effectively blocked many underlying and fundamental knowledge, therefore, also cannot treat as the same, I also adapt to some civil level way of software development.

Afterword.

It has been 14 months since I left Ali last year. During this period, I have provided relevant technical consultation and solved many technical problems for more than 40 companies. Most of them came to me because of performance and stability problems.

  • At the beginning, I found that it was all about technical knowledge.
  • Then, immediately into the system architecture side of things,
  • When IT came time to solve the architecture problem, I realized that it was already a software engineering problem,
  • And behind the software engineering problem, is the company management problem
  • The problem of corporate management turns out to be the problem of people
  • And the problem of people, the problem of company culture…

You see, a lot of problems, one after another, end up not being a simple technical problem. I’m not saying THAT I’m complaining about these problems, and I’m not saying that I can solve them, because, just like there is no silver bullet in software engineering, no matter what solution you give, there will be problems, no problems is not scientific. What I can do is to observe the company’s business form and related way of thinking, as well as existing resources and corresponding technical strength, and help them alleviate or improve the existing problems from the aspects of technology and management.

So, I basically, for the last 20 years, I’ve been focused on just one thing — how to make a large scale system with high performance and good stability. In this direction, in addition to the basis of a lot and I need to understand the underlying technology, I also need in the software development process, software tools, software and online operations, as well as the related management on continuous learning and thinking, because, the only technology, tools, engineering, operations, personnel, these a few respects go well, possible a high stability and good system performance.

For my part, I’ve been preaching advanced management and software engineering and technology and tools. Today, for me, the biggest problem is, in the absence of these so-called advanced things, in addition to my own hands, can I still solve the corresponding problem? Because I don’t Scale myself at all.

Every problem has its challenges, and EVERY day I think about how to solve the technical problems of these companies in an imperfect or even incomplete environment. Everyone should give themselves a goal. At present, I give myself the goal is — in the incomplete environment, can let the user do not change a line of code, do not move any architecture, do not change the user’s bad software development habits, do not let the user make any management adjustment, can improve the user’s software system performance and stability.

Because I believe in technology, and I believe that there is a better technology that can improve performance and stability for users with complete transparency, I have roughly found the corresponding solution, and now, I am on the road to practice, this may be a big deal, so I don’t know how to register my company…

(Full text)

Author: increasingly, blog: https://coolshell.cn/articles/18190.html