Transfer statement

Originally written by Summer

Link to: learnku.com/articles/37…

It is common to see newcomers in the community with similar confusion:

Had done a few projects, calculate entry, cannot find study direction now, how should do?

There are similarities with the following questions:

How do you know how to master this technology? What do I need to know about Laravel development?

These questions belong to our programmer angst. At least I have been anxious for a long time before, but with the accumulation of project experience in work, I will gradually become more calm. But when it comes to learning a new language, or a new technology, the anxiety returns. I think about it a lot and summarize it occasionally. I share this view here in the hope that it will help you who are also confused.

Two directions

I like to divide the directions of programming into the following:

  • applied
  • cu

Application keywords are “application”, such as Web development: blog, CMS, forum, e-commerce (B2C, C2C), CRM, enterprise internal management system, video, real-time chat, live broadcast, takeout and so on. More closely related to real life, can be programmed to achieve product functions, in order to improve the productivity of society.

For example, in the Web development based on PHP + Laravel, the topics are focused on the internal architecture of programs, design patterns, algorithms, compilation principles, PHP source code, PHP native C programming extensions, etc. These are more abstract, more “abstract” than applications, and are often referred to as “low-level” areas.

Different concerns

The application engineer subjectively regards technology as a tool and focuses on how to use technology to realize the business logic of products. Don’t get bogged down in technical details, just focus on what’s going to be done.

They are familiar with the underlying operating mechanism of PHP, the underlying implementation of variables, garbage collection mechanisms, and even the source code of the common LAMP technology stack. The focus is on code execution efficiency and engineering rationality.

Ability to distinguish between

There are two criteria to measure the ability of application engineers. “One is that the type of projects should be extensive, and the other is that the number of projects should be large.” Of course, it is better for these projects to complete coding independently or participate in the design and implementation of most of the core technology architecture, such as database design, API mechanism design, technology stack selection, etc.

As a rule of thumb, application engineers need at least 5 different types of projects, at least 10 projects to be considered graduate. Most of these projects are done on their own, and they need to have a thorough knowledge of the technical architecture of these projects, which requires a willingness to actively learn from each project.

If the ability of scientific research engineers is “wide”, the scientific research is “deep”. The metric is knowing the flaws of the architecture and how to optimize the existing architecture when problems arise. They focus on performance and delve into various peripheral technologies.

For example, PHP’s Dana Bird (blog www.laruence.com/). Bird brother is a core member of PHP development team, main developer of PHP7, author of Yaf (PHP framework written in C), Yar, Yac and other open source projects.

Different stage

Application-oriented engineers are good at rapid development and iteration of projects. This makes them a good fit for expanding territory and bringing business projects to market quickly, especially for startups. They are also better able to cope with changing requirements and a flexible technology stack.

The research engineer is relatively steady. They are more suitable for large companies. Large companies generally have a relatively stable profit model, and the change of business logic is generally not big, that is to say, the product is stable. Technical departments in line with the idea of “no merit but no fault”, the underlying technical framework rarely do too much change, coupled with the high pressure environment brought by a large user base (large flow), for in-depth research technology to provide requirements and conditions, large companies are also fertile soil for training scientific and research engineers.

How to choose direction?

There will be many factors for decision making, such as personal preference and specialty (for example, some people have strong logical reasoning ability, some people learn the number of people, and some people have high product awareness), which we will not expand.

It’s recommended to start with your own goals, namely:

What is your ultimate goal in learning programming?

If you’re learning to code so you can one day start your own business, be a tech partner or lead your own business, and make it to the top of your game. Most of the technical leaders of start-up technology companies must have the following skills: build a technical team and lead them to push products online and quickly iterate, be familiar with the functions of various Internet products and clearly understand the difficulty of developing these functions, know how to balance development efficiency and business opportunities, and know how to avoid pitfalls. It is recommended that you position yourself as an application engineer and start gaining project experience. It can be understood as fighting strange upgrades, contacting new projects at all costs, accumulating project experience one by one, 10 projects are considered as graduation, 30 projects are considered as senior.

If your goal is to get into a big company, that is, to go steady with your legs, then I recommend that you position yourself as a research engineer. Read the main technical documentation multiple times, read the source code for major open source projects, try to contribute to the source code and improve it, or write some high-performance native extensions.

How do you know how to master this technology?

Once the direction is chosen, it will be much easier.

If you are an application-oriented engineer, then after you have done dozens of projects, you are familiar with the techniques often used in general projects, and with the accumulation of experience in each project and the improvement of vision, you will become more and more confident.

If it is a scientific research engineer, continue to deepen, poor source unexpectedly committee, after a long few years of ten years will also make achievements. Then your in-depth and detailed blog posts, or technical literature, or open source influence, will become your proud cost, and naturally there will be no doubt about “whether you have mastered XXX or not”.

conclusion

After distinguishing the two directions, there is some emphasis, compared with learning both directions at the same time, the difficulty and time will be reduced. In addition, the stage is different, accurate positioning, can achieve personal goals faster, also can make their life more efficient.

There is no conflict between the two directions. Application-oriented engineers occasionally learn some underlying technologies, which will be very helpful to their skills improvement, while research engineers occasionally pay attention to the current popular product application, which can also avoid falling into the dilemma of closed-door.

The above is some of my views, on this topic we have any thoughts can also give me a message.

The conclusion distinguishes the two directions and puts more emphasis on them. Compared with learning both directions at the same time, the difficulty and time will be reduced. In addition, the stage is different, accurate positioning, can achieve personal goals faster, also can make their life more efficient.

There is no conflict between the two directions. Application-oriented engineers occasionally learn some underlying technologies, which will be very helpful to their skills improvement, while research engineers occasionally pay attention to the current popular product application, which can also avoid falling into the dilemma of closed-door.

The above is some of my views, on this topic we have any thoughts can also give me a message.


Abandon the fickleness of the secular, the pursuit of technical excellence