Interview|Author of "Writing High-Quality Code-The Way to Practice Web Front-end Development" @阿当

Preface

The thirteenth interview of the front-end morning reading class is here. I recalled reading the book he wrote in 2010. Recently, various "tearings" on Weibo, as well as wide-opening and apprentice affairs, made him stand on the cusp of the storm. Some people supported and some opposed. So today we will take a look at the experience of the current generation in his front-end career.

The text starts here~

Introduce yourself, the company you serve

I am Cao Liuyang, and my friends in the circle call me Adam. Now working in Gangling Group, in the field of Internet medical care.

Based on what circumstances did you choose front-end engineers, and from the several companies you served, which experience do you think has the most impact on you, and why?

It’s a long story. When I was in college, my major was the Department of Computer Science. I taught some c, java, software engineering, and so on. I couldn’t be interested in life and death. I always felt that this stuff was so tangible and tangible. "Works" are too far apart. It wasn't until I started the two elective courses of web design and photoshop that my eyes lit up and I thought I could do something. In addition, flash was popular when I was in college. I think this thing is fun, so I taught myself flash. Although many people think that C language is the best introductory language, but for me, it is as2, yes, the scripting language of flash that really opens the door to programming for me. Flash is convenient and fast, plus as2 to write scripts, you can make some fun things without too much knowledge reserve. If it weren't for flash has almost withdrawn from the stage of history today, I still think it is the best choice for programming.

When I was in college, I liked reading, mainly ps, flash and webpage production. At that time, the books on webpage production were so low that I often only told you how to operate dreamweaver. Occasionally, I talked about js and 300 cases of xxx special effects. , Only code snippets, no basic explanation. This very abusive situation lasted until the second half of 2006. People and Post Publishing House introduced a bunch of excellent foreign front-end books, such as "dom javascript programming art", "javascript advanced programming", "ajax basic tutorial", and "css". Basic Tutorial", and there is also a very good original book "CSS Site Layout Record" in China. These books are all about "basics", and are much better than the code snippet books I read before. I began to absorb a lot of knowledge from these books. I have a habit, that is, I like to fill in all the unknown things and have a clear and systematic context in my mind before starting to practice. I feel uncomfortable as if I owe a debt before reading the book. I read hard. , If it is fast, one book per week, if it is slow, one book per month. I think the knowledge in these books is much better than what the teachers teach in the school. I don’t even bother to go to class. Apart from eating, I just lie on the bed to read. I have another habit, that is, I like to practice according to my own understanding and memory. I don't like to type code according to the book. It doesn't matter if the effect of writing is worse than the effect in the book. The important thing is to verify my understanding through practice. Is it in place.

Although my interest was in the front-end, there was no front-end engineer on the market at that time. At the time, I was either a web designer or an engineer. I want to be an engineer. A year before graduating from university, I spent a lot of time in the background, mainly learning j2ee, but when I went out to find a job, I found that there was very little demand for j2ee in the market at that time, so I had to change my position and just find a job as a web designer. . Then the flash, webpage making and photoshop that I taught myself in college helped me find my first job. Then the title of the first job became a web designer, covering everything from ps, ai, flash to web production. I spend a lot of time on design, color matching, layout, dots, lines, and warm colors. Farther and farther away from the back end, the distance from the front end is just as if away. At that time, the front-end was doing web pages, the mainstream approach was actually Dreamweaver lira tables, and what 1*1 transparent png black magic was still popular. The two seniors of the company used asp + table layout. I recommended to the company to switch to css layout, saying that this is the future trend, the boss asked me, why use css layout? What are the benefits? I talked a lot about balabala, but the boss was a businessman, didn't know the technology, didn't hear what he was interested in, so I didn't comment, and then the matter stopped. At one time I thought about switching to a designer. At that time, two design styles were popular, 1 is the simple European and American style, and 2 is the beautiful and fancy Korean style. I bought a bunch of art design books, and I wanted to be a first-class design master and follow the Korean style!

But life always loves to make jokes with people, I went back to the front-end circle by mistake. My first job was in Shenzhen, Huaqiangbei. I really liked the Shenzhen Book Shopping Center two stops away. I often went to Shenzhen Book Center to read books after work. At that time, the salary was low and I didn’t have money to buy. I just sat Looked on the ground and read a lot of front-end related books. At the time of working for almost a year, through reading a lot of books, my front-end and flash programming skills have improved rapidly. The young people at the time were about the same as the young people at the time. I always like to join some colleagues in the same industry to brag, and the content is nothing more than 3 One: company, salary, work. My work can always arouse the admiration of many people in the group. I guess my salary should be very high, but in fact my salary is lower than that of many people with average ability. This has caused me a great psychological imbalance. Finally, under an extreme psychological imbalance, I had the idea of ​​quitting. I wanted to find an owner who knew the goods to give me a salary worthy of my ability. In the second half of 2007, I searched for 51job, Zhaolian Recruitment, and Blue Ideal Recruitment Edition, but I couldn’t find the front-end engineer job requirement in Shenzhen, a big city. Then I turned my gaze to Beijing and found that Beijing had a large demand for front-end engineers at this time, and many companies began to have UED teams. Then I arrived in Beijing.

At the beginning, I went to a small startup company. The two bosses and I were part-time workers. There were three people in total. Two bosses, one is writing php, the other is a designer, and then I become the front end. The technology circle in Beijing is still knowledgeable. They can understand the role of front-end engineers, and they doubled my salary very readily. Then I finally balanced my mind and became the one with the fastest salary increase among the classmates. This job is the beginning of my real front-end road. This company is doing web2.0 website, which has high requirements for rich media applications, various effects, mp3 music player, flash album, multi-file upload, and customization Skin, various js effects. Then this company also accepts outsourcing needs in order to survive. Then I went from front-end development, flash development, flex development to php development. Except for the design, I exercised everything. I usually work overtime on weekends, and work overtime on weekends. When I work overtime, three projects are developed in parallel. Some of these projects are completed by myself. At that time, although I read a lot of books, I actually just transformed from a web designer who pulls tables. The pressure and challenges can be imagined. Maybe it is indeed that I have a talent for programming, maybe I am good at picking books and reading, I resisted. During this period of time, my programming ability and stress resistance have been qualitatively improved. If you don't force yourself, you will never be able to make a qualitative change. It was during this time that I realized this truth. No matter how many books I have read before, I can't grow as fast as during this time. It is worth mentioning that it was during this time that jquery became popular, so I wrote native js for a year since Shenzhen, which gave me a deeper understanding of the underlying js.

Then I had the opportunity to go to Yahoo. People who have never been to a big company will especially yearn for big companies, especially when a group of people in the QQ group talk about big companies all day long, one person reports to their homes as "Taobao", "Sina" or "Tencent", and then a group of people kneel down. lick. I am longing to go to a big company, no matter which big company it is, I also want a sign, and I can go with a salary reduction. Then I was lucky to go to Yahoo, and hr asked me how much your salary is required. I said you can give it to me, there is no requirement. Going to Yahoo has a very important meaning for me. It is not the company halo, but I met YUI. At that time, YUI was still YUI2, and Yahoo internally required all front-ends to use YUI, and could not use other libraries such as jquery. And before I met YUI, I thought that jquery was already very powerful, much stronger than native js, just like magic, I thought there would be nothing better than it. Then I came across YUI2, an official website in pure English. I spent nearly a month gnawing on its various documents, and then I was shocked. The difference with jquery is so big and completely different. When sharing internally, I said that jquery is like Gulong’s novels. The rivers and lakes are two-dimensional lines and the weapon spectrum is ranked, while YUI is like Jin Yong’s novels. The rivers and lakes are a three-dimensional surface. There is no such absolute protagonist as a jquery object. YUI’s design ideas let me know what a framework is and what a library is. Until the upgrade of YUI3 later, I found that YUI is just like apple, it is an extremely closed and perfect baby. I always thought it would fire, it would be a big fire.

Not long after Yahoo became a regular employee, I encountered Yahoo layoffs 2/3. Of course, my newcomer was laid off. Then I successfully transferred to Taobao for an internal interview. I was the first front-end employee of Taobao Beijing. Then I challenged the first spa in my life, a very challenging project. I still keep the core part of the project: http://t.cn/RbrJFM8 For me at the time, this was a task that tested the front-end programming ability, and the time requirement was very, very tight. I did not spend this core demo Completed in 3 days. All kinds of drags and skins are complicated, and no one can consult and help. I worked overtime all night to complete this challenge. During this period I read books related to design patterns and understood the idea of ​​object-oriented programming, and then this SPA project just forced me to use OO programming. At this stage, I completed the second qualitative change, and I became very annoying to work overtime. Another important thing is that I started writing books. Thanks to my friend Zhou Yubo for introducing Huazhang’s excellent editor Yang Fuchuan.

Halfway through writing, I left and went to Sina. In Sina, the project team entered is also a special project team: instant messaging department, Sina chat room and web uc. Sina chat room and web uc are all spas, object-oriented organization code, multiple people cooperate to maintain the same long-term maintenance project. This time is actually quite idle. I learned ruby, rails, python, linux, django, wxpython, agile development and so on. Then html5 came, and so did mobile development. Because 2010 is called the original year of mobile development, it is a brand-new and bright platform with good opportunities. Many small partners are beginning to switch to ios or android. I also bought an android book, ready to transfer to android. But at that time, I was already a bit difficult to turn around. One was because I had accumulated a lot of experience on the web, and the other was that my book was published and I participated in many conference speeches. Many people in the circle knew me. In the end, the reason that made me determined to stay in the front-end circle was that I remembered the decline of asp and delphi, and iPhone4’s lack of support for flash, the embarrassment of flash, the rise of mobile platforms, and the decline of windows. I think it’s still open like the web. Non-proprietary technology is safe. Besides, html5 is much stronger than html4. There is a lot to do in the future.

During my time at Sina, I added a lot of knowledge. As my ability became more and more abundant, I began to reflect on two questions: Why should I listen to the product manager? Can I do what I want? And the original intention of choosing it as a major when I was in college, I wanted to do game development, and I wanted to develop games that people would like, so that people can relish the secrets of BA. I feel that I am strong enough to be able to do front-end, back-end and item management. I want to do something I like, and I want to make games. Then, by coincidence, my old friend Zhou Yubo was working at the Shanda Innovation Institute at the time. He recommended to me this well-known engineer paradise in China and said that he wanted to be a Google in China. The director was Chen Danian and Shanda Nine Thousand. Years old, a man who was born as an engineer and has a very artistic background. I am very longing for this legendary utopia of engineer culture, not to mention that Shanda is famous for its games. Such an ideal environment is simply tailored for me. Then I resolutely left Beijing, where I had lived for 4 years, to Shanghai, and joined the Shanda Innovation Institute.

The Innovation Institute was really good back then. It initiated projects independently from the bottom up. Basically, the project leaders were all engineers and there were no product managers. Or simply say that this company has basically no product managers and no operations, all engineers. Dacheng Xiaopang, flashlizi, winter, hax, moon shadow, and Zhengmei were all in the Innovation Institute at that time. I remember quarreling with Xiaopang and Flashlizi. The two wanted to play games but didn't want to do it with me, but they were all in my project team. It was also during this time that I discovered that the legendary Microsoft God, 51js moderator winter, has a wonderful knowledge structure. Then I discovered that hax, who is aggressive online, is actually a little silly offline. I really didn't expect this kind of person to shoot me twice (one time for Zhu Yinhong's "Zhengtu" and another time for my book). Moon Shadow Heroes stammered, especially around @_@. Zhengmei hasn't seen a real person until she left the Innovation Institute, and she is a tech idiot who doesn't like walking around. Mi Zong has hated me since then, I don't know why, maybe it is because of the different technical concepts? (Shrugging) In fact, most of the memories of the Innovation Institute are not very happy. The most beautiful part is probably talking about the myths of the torrents with winter, such as Buddha, Taishang Laojun, Primitive Tianzun, who is more ruthless than whom some type of. The project I set up during the Innovation Institute is a real-time online game platform that spans PCs, mobile phones, and pads. Based on YUI3 + websocket + twisted + mongodb + independently developed html5 game engine, we developed crazy tanks, billiards, landlords, and 50 There are 4 games in K. Then Shanda Innovation Institute went bankrupt. . . During this period, my gain is to learn mongodb, redis, twisted, html5 various APIs, canvas2d and webgl. In addition, the transition from technical person to product owner has also been completed.

The friends all scattered and went to different companies. Except for Xiaopang who was very stubborn and started the road of entrepreneurship by himself, tied up his belt and lived his life, everyone else found a good home. I did not leave Shanda, and transferred to Shanda Game Innovation Institute. Then I went out to start a joint venture with the big brothers of the rivers and lakes, and went to build an html5 game platform. Then I started my business for a series of reasons, so I quit. But the gain during this period is to really see the problems that a company will encounter in the process of operation, which brought me out of the thinking of an engineer, and began to look at many things in a more grounded way, including people, company operations, The art of upward management and downward management and so on. I found that engineers are really a group of animals that are too simple and simple. To say that simplicity is that engineers are simple and kind, on the other hand, engineers are really stupid. This world does not revolve around engineers. Although the world of engineers is not deep, deep and vast, it is only the four-dimensional pocket of Dora A dream. It is not the real world. What is the rule of the game? Nor is it. I thought I could be a swordsman, but discovered that I was just a sword in the hands of a swordsman. Even if I was a sword of heaven, I am not a swordsman. There will never be a utopia like the Institute of Innovation. This hits me very hard. . .

My road to programming is almost over here. In the following story, I have completely transformed my management route. With the dream of technology-driven product innovation and the regret of dying before starting a career, I am getting farther and farther away from first-line coding. It’s not that I’m defecting from the programmer’s circle, or that I can’t program anymore, but that my original intention was not to be a programmer for a lifetime. For me, programming is a tool to realize my game dreams. The end learning software engineering is all about the ability to develop games. I used programs as a tool from the beginning, but I accidentally discovered that I had some programming talent.

I found that a very serious problem is that many people forget their original intentions after entering the workplace, or simply don’t have their original intentions. Whatever to earn money to learn, how to go forward is completely driven by the thoughts of the circle, such as the promotion of geek in the circle. Culture, advocating the legendary god, advocating white beard and white hair to write a lifetime program, and then many people are brainwashed by this culture, mistakenly thinking that this is his own pursuit, and was kidnapped by this culture, despised and even *** People who do not agree with this culture. It's really unnecessary.

Each of my experiences has different results, and I don't know which experience has the greatest impact on me. Looking back, I think my route is actually doomed from the beginning, right? Personality determines fate, no matter how the route changes, at a certain stage, my position and direction may be the same. To put it humbly, if you insisted on taking the designer line back then, maybe you would be a great designer today, and you will also be a manager and make a product, haha.

In the current situation where front-end technology is updated so fast, what do you think front-end development engineers should pay attention to? How to break through the bottleneck in the learning process?

I have mentioned so much of my growth experience before, just to show my experience and give some suggestions from my experience:

  • Don’t be superstitious about the technology produced by big companies. There are too many things produced by big-name companies such as Google and Facebook. Don’t think it’s correct if you see that it’s produced by a famous company. GWT produced by Google is dead, silverlight produced by Microsoft is dead, and dojo produced by IBM is no different from dead.

  • Regardless of the excitement today, the one who can stand the test is king. Once flash, flex, silverlight, as3, extjs, YUI, mootool, prototype, air, phonegap, jquery mobile, coffeescript, javascriptMVC, backbone, standard semantics, seo, availability for the disabled, flash site, RIA, etc. It's been lively for a while, how many people still mention these today? Extending the time, only the one who survives is king. And what kind of technology can survive? According to my experience: the ultimate price-performance ratio. So I am not optimistic about angular and react at all. What things have the ultimate cost-effectiveness, what things may survive, history is always surprisingly similar. What I mean by saying this is not to tell everyone not to study. It is always good to study more. Learn the ideas in the framework. It's like YUI has not been popular, but I am very grateful for its help to me. What I mean by saying this is to be careful of these frameworks, to look at the problems dialectically, and to be fully psychologically prepared. They are likely to be replaced by new things. Don't fall into "continuous chasing and continuous giving up." The trap, the energy will not be able to take care of.

  • Don't blindly follow opinion leaders. For many technical people, they are pursuing the name of "great god", or the reality of "skills and excellence". Technology is just a tool. To satisfy these unwilling Forrest Gump's escorts, they don't care about the price/performance ratio. It doesn’t matter if you’re high or not, it doesn’t matter whether you can keep up with it, whether you have a solid foundation or not, whether your learning efficiency is high or not, and whether or not the technology will be eliminated. Anyway, they will sell each other's face when they become famous. A good employer can't get a good salary. A group of people screamed, but it was high.

  • People who like to call others great, in fact, many people also have a great dream in their hearts, and they also hope that they can become famous earlier. Therefore, I always want others to tell others, and then directly use it. After getting some results, I picked up the bowl to eat and put down the bowl to scold my mother. I feel that watching your tutorial, paying attention to you, and giving you likes is worthy of you, and it is fair business. After learning the knowledge, they will still curse, say something is wrong with you, and say that you are misleading. Then I asked them whether they could read books, and replied, read, only read foreign books, and asked them to throw a list of books that were all foreign books, which seemed compelling. In fact, there are a lot of good domestic books, not far from foreign books, such as "Big Talk Design Pattern", "Authoritative Guide to HTML5 and CSS3" and so on. They are very good, but they are rarely seen in the recommendation list of Chinese. There are all foreign books. Many books are actually far away from actual combat. For example, the rhinoceros book is not practical at all. After the actual combat experience is enough, it is fine to use it as a dictionary to look up, that's it. The earlier "Website Refactoring" and "CSS Zen Garden" are all things, there is no difference between watching it and not watching it. I hate the Chinese people's pursuit of compulsive standards. If you are not grounded, you can't grow if you can't grow, and deserve it. Students who want to learn, don't be kidnapped by this group of people, what is useful to you, believe in your true feelings.

  • Reading is very important. Don’t learn a little bit from the East and a little bit from the West all day long. If you have any problems, check Baidu (don’t tell me that you don’t use Baidu to use google, this is not a compelling one, I will not ***, use whatever you like). Reading books is the most systematic way to learn knowledge, and there is no way to string together scattered knowledge points. Read books, read good books.

  • Algorithms and data structures are far away from the actual front end, don't listen to people blindly BB. I have written front-end code for so many years, and I have encountered many challenges. The more basic css, dom api, and bom api help me. Everything else is bullshit. Let those who have been mentioning algorithms and data structures all the time give a few examples to see what scenarios these are important, and there are not a few common scenarios. It is better to learn css to be practical.

  • CSS is the basis of the front-end, more basic than js. Before you learn css well, don't toss about js, let alone toss about frameworks, tools, and compilation. Don't toss about node, the shit is getting farther and farther away from the front end. A pseudo-backend cannot solve your actual project problems. Learn css first, then native js, then js framework, then tools, and finally node backend. If you really want to learn the back-end, I don't recommend using node. What is not fun?

  • Don’t be superstitious about the aura of big companies, and imagine how the big cows of big companies are awesome, how the work processes of big companies are formal, and how the technology selection of big companies is correct. Based on my personal experience of so many large Internet companies and my understanding of other large companies, large companies are actually messed up. It’s all a mess. Some people like to pretend to be a ghost, and look different. The company's aura is not only their backer, but they also contribute to the company's aura. They complement each other, or be mischievous. Still that sentence, useful or useless, trust your own feelings. Don't kneel and lick behind people while finding that these things can't fall to the ground. If you need to work overtime, you have to work overtime.

  • Don't just listen to anyone's opinions, including me, don't engage in idolatry or anything, just use your own judgment. It is better to believe in the book than without a book, and to believe in the words of others is worse than not to listen.

For your understanding, you have worked as an engineer and started a business, what do these experiences feel about you now?

These experiences tell me that the transformation crisis of engineers at the age of 30 is real. Everyone needs to plan for the next 5 years. What do you hope to be doing in 5 years? Many people can answer the plan for the next 2 years, but cannot answer the plan for the next 5 years. This point deserves enough attention. Time in the workplace really flies quickly, especially in the IT industry. 5 years of work experience dare to call myself an old man, and 10 years of work experience will be regarded as an old man whether he wants it or not. Do you really think you will not encounter a 30-year-old crisis when you reach 30? Do you really think you want to be an old man with white beard and white hair? Do you really think you are such an old man? What you are doing today depends on your plan 5 years ago, and what you are doing 5 years later depends on your plan today. If you don’t have plans for 5 years from now, then wait for the crisis in 5 years.

There are many front-end related books on the market, what are your books on this list?

html5 and html4 are an upgrade relationship, not a replacement relationship. Books related to html5, or books that are popular nowadays, actually talk about the incremental part of html5 and html4, and html4 books may no longer be popular or even published. This is very dangerous. Book faults may cause technical faults, especially when knowledge on the Internet also has this tendency. It is very scary. I don’t know how many students who have work experience within 5 years have a solid foundation. The solid foundation I said was calculated from html4. My personal suggestion is to look for old books to supplement the basic knowledge, start with html4 and supplement to html5. Maybe some knowledge has been eliminated, but it is not important. It is important to know what has been eliminated and why it has been eliminated.

I hope that there is a ready-made book directly that tells you the best practices directly. This is impossible. One is that there are very few people capable of writing this kind of book, and the other is that those capable of writing are not necessarily willing to write. My suggestion is to start from the books of the html4 era and see html5 all the way to mobile front-end development.

Is there any other way besides supplementing it yourself? Maybe you can join my apprenticeship program. Prepare these 6 questions:

  • How do you think about the so-called masters and big cows?

  • If money is not a problem, what do you want to do?

  • How to look at the transformation of engineers at the age of 30?

  • What is the one thing where you have a different opinion from most people? Not limited to technology

  • How to treat the matter of apprenticeship?

  • What do you think I can teach you? Then post the answer to [email protected]

  • In addition, there are apprenticeship etiquette and apprenticeship fees under my door. For details, please see here: http://t.cn/RGQ0g5i

Why do you think of accepting disciples? Think for yourself.

How to weigh the depth and breadth of front-end technology?

When I was writing my book in 2009, I said that if you want to be more refined, you must first pass the ten. The depth is of course the core html, css and js. In breadth, you can learn server-side programming, object-oriented, code refactoring skills, software engineering, native development, webgl, etc. Weighing it, pay attention to your position is the front end, so what is a pearl and what is a box should be clearly distinguished. The box can be changed and thrown away, but the pearl can't be thrown away.

From the technical post to the management post, what do you personally experience?

Team leader and geeker are not the same. The positioning of team leader is to ensure the smoothness and efficiency of teamwork, and the growth and stability of team members. Geeker is not suitable for management and can even become an obstacle to teamwork. The technical post is a first-person perspective, playing cs, and the management post is a god’s perspective, playing Warcraft.

But the interesting point is that a lot of wisdom in programming is also very applicable to running in the real world, such as the idea of ​​agile iteration, which is completed first and then perfect, such as object-oriented thinking, high cohesion and internal coupling, decentralization and teamwork, For example, insufficient abstraction and abstraction errors, team division of labor and collaboration, such as api packaging, need to consider ease of use, and document writing should be as user-friendly as possible. In short, the idea of ​​programming has also helped me a lot when doing team management.

Just this is still not enough, there are still a lot of knowledge that need to be mastered, such as time management, psychology, character research and so on. In addition, I am in charge of products, so in the past year I have been making up a lot of economic psychology, social psychology, product marketing, sales techniques, etc. Live to learn, and be a product person with a technical background. In the Internet + era, there is a vast world and a lot to do.

Afterword

Do you have any questions after reading the experience of the current generation?

Welcome everyone to leave comments below. Our old rules, the children's shoes with the most likes can get a "JavaScript Functional Programming" book sponsored by @人民邮电出版社 asynchronous community, the time is as of 22:00 on the same day. If the number of likes is the same, the comment above the sort will be taken.

Guess you like

Origin blog.51cto.com/15064635/2571526