In an excellent technical personnel, is a technical direction, do deep cultivation of which invincible; Or seek to “know a little about everything” breadth, become a comprehensive talent?

This is actually a problem of career development and learning route planning, and many students have this problem.

Today we invite 4 technical engineers from Tao Department to share with you some of their views on the choice of “precision” and “wide” in the growth of technical personnel based on their own experiences in small and large factories. I hope it will be helpful to you.

“Knowing who I am and where I’m going earlier has helped me achieve faster.”

Tao Department technology Department – applied algorithm – Liqing

I’d like to move away from this specific issue and talk about a programmer’s technical development and career planning.

While most people enjoy writing code, they do it as a profession. Of course, some people really do it as a hobby. For example, in the news recently, Mitchell Hashimoto, founder of HashiCorp, said, “Top Versailles CTO resigns: Writing code is the happiest! Management will only affect my research and development “; Linus, the famous creator of Linux, is also known for his love of programming. For such pursuit (local tyrants), abandon the utilitarian love programming, I think in the programming can like what aspects on the pursuit of what, is widely found in exploring interest, or dig in a direction there is no problem, front end can do today, tomorrow make development, saving algorithm, the day after tomorrow, a person with full stack.

But for the vast majority of people, programming is more of a craft on the career development road, in many professional technical direction to choose a favorite and love. The development of programmers is the same as the development of many positions. Everyone wants to be more professional and more able to play their role and influence in the workplace, from doing small things alone, to leading a team to do bigger things, and then to influence a field or an industry. I am afraid that such a development will not be possible only if one knows and dabbles in all aspects. Fresh graduates can rely on their knowledge reserves to do their own label, experienced workplace students must rely on their achievements in some areas to do their own military MEDALS.

So the sooner we can make our own achievements in some direction, the better for our growth and development. I am an algorithm professional. Many outstanding students in the field of algorithm have already found their own development direction and made achievements in school, such as Caffe author @Jia Yangqing Dashen, Taichi author @Hu Yuanming and so on. Their achievements require finding their own direction early on + unremitting efforts + a little talent… For most of us, it is more important to find a direction we love and want to master early and make achievements.

In fact, my own experience is not a good example. I have a dream to be a robot. I majored in mechanics in undergraduate study, and I was interested in everything at school. A more interesting experience is that at that time in school also made a small satellite failed in the sky. When school launched a small satellite institute PiXing satellite (small size), in the school to run a small satellite, we made a simulation of satellite solar cell satellite model of automatic tracking the sun, stayed up to finish in front of the defense, but at the time of the last test due to the fixed too rough lines, tear off short circuit in the movement, Burn the circuits… Wan Xing left a video to support the final defense. What had a great influence on my career choice was that I used Kinect to do a project of attitude recognition and control of uav flight when I graduated, and I got to know some knowledge of visual algorithm.

Later, I began to work in robotics as a graduate student. It was also my experience in control algorithm and visual algorithm that led me to become a programmer. In this process, I was also interested in the direction of SLAM in the field of robotics, and I made up for some knowledge, with which I finally embarked on the career in this direction. On the one hand, I think if I can find my own direction and accumulate some achievements as early as possible, it will be much better for my development. On the other hand, everyone really needs a process to know himself, but I think the sooner the better. In this process, our own technological development is just like a tree. We can expand our branches as much as possible and learn more about different directions and knowledge, but we must remember that this is to make our branches grow higher.

“Most of your energy has to go into building on your strengths. You have to be competitive.”

Tao Department technology Department – application algorithm – Shuo Yue

Do a thing to be precise or broad? In fact, equivalent to gambling, you should be more pressure, or single bet. Our chips are limited, of course, our energy is also limited, it is impossible to do all the choices. The question then becomes how to mix your investments to maximize returns.

If you choose to bet all your chips on one option, then you must bear the consequences of making a bad choice and losing everything. But we also know that if you pick a potential, you can easily win a lot of money. So putting all your eggs in one basket is always a high risk.

The other option is to be broad, which brings us the benefit of spreading the risk, but spreading the risk will dilute the benefits at the same time. A better approach would be to combine the two, be broad when it’s time and focus when it’s time.

As an algorithm engineer, my advice is to read widely in related fields, as well as in weakly related fields, because all of this knowledge can be used as your own reserve, as a plus to your industry focus. For example, if you are engaged in the research of image recognition algorithms, in addition to the professional knowledge related to images, some basic knowledge such as algebraic analysis and other mathematical theories, computer principles and architecture, and even color and photography aesthetics can bring certain assistance to model design. In addition to basic knowledge, related fields such as timing model in natural language processing have a lot in common with video image segmentation. Many transformation operators in signal processing can be directly transferred to image processing. All of this can be a plus for your image algorithms.

For example, psychology, consumer behavior, and economics can all be used to power our industrial recommendation system. After gaining insight into consumers’ choice motivation, psychological activities and current economic trends, algorithm designers can focus on designing relevant modules based on these prior knowledge, or add them into the algorithm as trend factors. In a softer way, the public cognition is integrated into the model, and the representation and theory are combined, so as to give better play to the effectiveness of the recommendation system.

A lot of knowledge in the world is interlinked, do not resist learning some basic knowledge, it is likely that you will seize opportunities in the future. However, most of your energy needs to be spent on consolidating your strengths. You have to be competitive. Read widely, digest accurately, extract the part you need, and convert it into the energy you need.

“In my personal experience, I think it’s better Technology, whether for development or other work, is a top priority!”

Tao Department technology Department – front-end technology – Wo Bird

When I just graduated, I worked in Flash game development in a small factory. Due to the serious shortage of developers at that time (QIong), I not only needed to use AS3 to write UI functions of front-end games, but also needed to use NodeJS to write game logic on the server side, SQL to handle data reading and writing operations, AND HTML/CSS/JS to write background configuration management pages. And once in the company did not recruit tests, all functional tests can only be completed through self-testing.

After a long time, I felt a little inflated. I felt very good that I was the whole stack and that only a bigger stage could match me. It should be easy to enter a big factory, so I began to apply for some big factories such as netease, Ali and Huawei. Flash game development, H5 game development, Web front-end development, NodeJS development, server development, test development of various positions have been invested. As a result, I was slapped in the face by the reality. My resume was rejected, and the few interviews I had were a round trip.

Later, after summarizing and reflecting, in all interviews, interviewers often ask such a few questions: what is the principle of XX? How to implement XX? What is your understanding of XX? Is there a better solution for XX functionality? In the face of these problems, I found myself actually ignorant of the underlying principles, all still stay in the use level.

After seeing this problem clearly, I temporarily put aside the learning of other domains and focused on the learning of front-end domain, starting with basic HTML/CSS/JS, using common tool libraries such as Lodash /JQuery, and learning the use and principles of mainstream frameworks such as Vue/React, as well as ES6 and TS. After mastering these skills, we will further study the working principle of browser, network communication mechanism, front-end performance optimization, stability and security guarantee. Step by step from a brick rookie to a skilled brick worker, and then continue to move toward the brick efforts.

In general, in a small factory, the owner of course wants to save money and do all the work by himself. As for the individual, mastering a skill, whether for development or other work, is the most important!

“Don’t think of yourself as Tool guy for business development.”

Tao Department Technology Department – Mobile development – Presence

There is no right answer to this question, and different angles can lead to different conclusions. Not long ago, I joined Ali from a small factory to talk about my own feelings.

Small factories will be more focused on business, so we are more focused on realizing the needs of business side, and we seldom touch particularly difficult or deep content in daily RESEARCH and development work. That’s not to say the basics aren’t important at this stage, but learning the basics in depth probably won’t improve your business development significantly.

There was a time when I went to brush Leetcode in order to learn the algorithm knowledge, and felt confused after finishing two or three hundred questions. The algorithm knowledge acquired by brushing problems is not applicable in most business scenarios. Although it does play a certain role in determining boundary conditions and reducing inefficient codes in programming, it is slightly less cost-effective compared to the time invested.

Similarly, the learning operating system, computer network, computer composition principle can let you to have a deeper understanding of the entire computer system, but the people who work as college students, time is limited, if you are not a particularly special self-discipline, invest time didn’t see the obvious output is likely to give up halfway.

If you want to learn more about the basics of computing on the job, start with performance tuning that you’re doing or that you’re interested in. Many performance optimization methods are accompanied by in-depth knowledge, such as before many large manufacturers share for iOS binary rearrangement optimization cold start content. In the process of learning, we will encounter knowledge that we do not understand. It is easier to persist in accumulating knowledge little by little than blindly holding a brick book and directly gnathe it.

In addition, if it is business research and development, please exercise your understanding of the business. Do not just stop at the need to be done, and treat yourself as a tool of the business is not good for personal growth.

Finally, I like to share with you a sentence: “there is no knowledge in the book, only information in the book; Knowledge is the ability to use information in particular jobs and actions. ‘.

conclusion

It is not a question of choice whether programmers should be sophisticated or broad.

I am good at fundamentals, tools and business. I always keep the mentality of progress and learning. I hope you can find the most suitable path for your own technology growth.

So what do you think? Welcome to discuss in the comments section.