The writer Hangyuan, chief scientist of Huawei Noah's Ark laboratory. In this article I combined my personal experience, put forward to become a good engineer what needs? We should follow the five principles: face the problem, solve the problem, solve the problem systematically, stand on the user's point of view, get the maximum benefit at the lowest cost;
I have been in the research department of IT companies, and so far a total of three companies have worked: NEC, Microsoft, Huawei. The work content is different, both basic research, and product development. In fact, the two are closely related and different in nature. The former is to discover or invent the theory and method of universality, the latter is to develop practical system and tool. It can be said that the former need of the mode of thinking, basic skills and quality is a scientist, and the latter is an engineer. I often remind myself that I must be clear on the specific project with what "hat" in the work, is a scientist, or an engineer?
I've compiled several blog posts about how to be a good scientist, and this article talks about how to be a good engineer. In my opinion, work should be done in accordance with the five Principles, and in practice to use them as a guide to conduct. These principles are: Face the problem, solve the problem, the system solves the problem, stands in the user angle to see the question, obtains the biggest benefit with the smallest price, grinds in the fine place. Here to do a summary, for everyone's reference.
Face the problem and solve the problem
There is a saying in the West: "When you hold a hammer in your hand, you feel like a nail in your eyes." According to their preferences, expertise, habits to solve the problem is the big taboo engineers. The most important thing in the project is to face the problem and solve the problem. The preferred strategy should be to ascertain the nature of the problem, to clarify the mechanism of the problem, and to solve the problem in the most direct and effective way. Experience tells us that it is always bad to solve problems obliquely. It's not necessarily a theory to do engineering. As long as can solve the problem effectively, in fact, any method is OK. "No matter white cat black cat, catch mouse is a good cat" is also applicable here. Of course, the method of theoretical guidance is often more grasp the nature of the problem, as a tool can often solve the problem better.
When I was working for NEC, I attended a conference on the establishment of a natural language research group. They suggest developing a voice system to help users remotely control televisions, because the remote controls are now too complex to use for the elderly and children. Voice-activated TV, of course, is a good idea, there are still many enterprises in the development of this application. What was particularly impressive was their assertion that there was no other solution than the way through the voice. At that time, I also thought that their idea was very reasonable.
Unexpectedly, in a few months, Japan's other electric companies have introduced the use of coded remote television methods, simpler and more practical. The operation of the remote control relies mainly on digital input, each TV program is equipped with an encoding, the daily newspaper will be coded in the TV program bar published, users just input code to watch or record the corresponding program.
The incident was a great shock to my heart and asked why NEC colleagues thought only of natural language and ignored other routes. Is it because they have the natural language in their hands, the hammer?
Solve problems systematically
The cartoon "No Brains and Not happy" depicts two teenagers: "No Brains" and "unhappy." "No mind" to do things always absent-minded, "not happy" treat people always love awkward. Soon, "no brains" as an engineer, "unhappy" when the actor. "No Brains" designed a 199-storey children's palace, the building was built, only to find that forgot to design the elevator. In order to see the theater on the top floor of the building, the children need to climb the one-month staircase with bedding and dry rations, Hairenbujian. In fact, we can see a lot of "mindless" works in our daily life. Engineers must build a system. System must be comprehensive, holistic, organic design, can not have defects and errors. Avoid being a "mindless" engineer.
At Microsoft, the text data mining capabilities in SQL Server 2005 were developed in collaboration with Dr. Zhaohui. The term extraction tool can automatically extract noun phrases from the English text in the database. The input of this tool is usually English text, seemingly unitary, but when designing this tool, you must consider handling other non-normal input, dealing with all possible, for example, garbled, non-English, special characters, full text, no punctuation text, and so on. Remember that the development team built together a huge logical diagram, listing all the possible inputs, preparing the solution, and trying to "Prito". This project does exercise the ability to solve problems systematically.
Stand on the user's point of view
Apple products such as the ipad, the user interface is very simple, intuitive and easy to use. Two-year-old children are said to be able to self-taught and use the ipad freely. The reason is very simple, Apple products are for the sake of the user, stand on the user's point of view design. Because of this, Apple's products can be popular with the vast number of users and sought after. Although simple, but we will find that many engineers in the development of the system often do not do this, so the things that do not work.
The first project attended by NEC was a failed project. The goal is to develop a natural language user interface that automatically converts user-entered Japanese questions into SQL statements so that ordinary users can easily access the database. The project is very good, but the biggest challenge is that the language is extremely powerful, the same meaning, there can be many different kinds of statements. In the end, the system can only accept restricted natural language input (there is no idea of solving problems based on statistical learning, perhaps through large data, statistical learning methods to some extent can solve this problem, which is a natural language processing in the future research direction). To the user, the feedback is very poor, because it is more difficult for the user to master the restricted natural language than to master the SQL language. Failure to consider a problem without being able to stand on the user's point of view causes the project to fail.
Maximize benefits at minimum cost
Car King Ford once said: "An important rule for industrialists is to produce the highest quality products at the lowest possible cost, and to pay the workers the most." "Ford 1908 Model T car price is 825 dollars, at that time not many people can afford, to 1924 Model T Price reduced to 290 U.S. dollars, become a Volkswagen, in the United States every two cars sold in a Model T."
The reason is that Ford introduced the production line, greatly reducing the cost of production. In the assembly line, Model T of the parts are standardized, maintenance costs are also greatly reduced. The difference between engineering and other fields, such as science and art, is that it must consider the cost, including the cost of development, the cost of promotion, the cost of use and the cost of maintenance. When engineers develop systems and tools, they must weigh the benefits and costs and try to achieve maximum benefits at the lowest cost.
I was involved in the development of SharePoint in Office 2007, Office 2010, and Office 2012 in Microsoft, specifically in the development of metadata extraction and enterprise search capabilities. My research team developed the file Metadata automatic extraction tool, there are two ways to achieve: CRF and SVM. The accuracy of CRF is 1% higher than that of SVM, but CRF is several times of SVM in terms of the amount of code extracted. Look for SharePoint architect Meyerzon, which is the best way to go? Meyerzon not hesitate to answer: Of course, select SVM, because its precision is only 1% lower, but the need to develop maintenance of the amount of code is much less. For a product, the cost of development is a factor that cannot be considered.
Grind in a fine place
For engineers, God is in the finer places! Only the fine carving, the painstaking work, can do the project well. Good systems and tools are polished by bit by bit. Engineers must continue to hone their skills in the actual work in order to achieve a skilled, skilled situation, like paoding as well as the ability to solve the cattle, like selling oil Weng drip pour oil.
During NEC, the head of the engineering development team who worked together called bin Tin, where he learned a lot of programming skills. Especially under his guidance, developed the core algorithm in the Text data analysis System Topicscope. I am not a master programmer, programming only the level of ordinary programmers, but colleagues have said that my code is well written, well-organized, reasonable structure, content refining.
This is because I am under the influence of the waterfront, spent a lot of effort to write code. The project settings, file allocation are repeatedly considered, function, variable naming are carefully scrutinized, the system's implementation efficiency are continuously optimized. Write a program, after a period of time again to check, evaluate, modify, until you can not find fault (unfortunately, after joining Microsoft, almost no time to write code, I really hope to do some programming work in the future).
Start from the actual work
These principles are very simple, but it is not easy to do a good job, can be described as "know the blame, the difficult to do." It is important to work hard in accordance with these principles in practice and develop the habit of becoming a good engineer. To cultivate their own direct solutions to problems, to solve problems systematically, from the user's point of view to solve problems, consider the benefits and costs of the ability to solve problems. Constantly improve their professional skills, work hard to do the details. You must know some excellent engineers, they even around, can take them as an example, open-minded to them, learn their strengths, and constantly improve their quality and ability as an engineer. In addition, dare to try, not afraid of failure, in the failure of timely learning, experience is also very important.
Concluding
Some people say the Chinese character "work", the above a horizontal representative of the day, the following a horizontal representation, the overall expression of the cause of the indomitable spirit (more generally speaking, pictographic Chinese characters "work" representative tool). It is really a great thing to be a good engineer Special writing this article, with everyone.
Author Hangyuan, chief scientist of Huawei Noah's Ark laboratory. He worked for NEC and Microsoft in Japan. The research direction includes information retrieval, natural language processing, statistical machine learning and data mining.