preface

In today’s Internet market, there is an increasing demand for high-level technical positions, and being a self-employed engineer has become the standard threshold for many first-tier and second-tier Internet companies to recruit. Then how to grow into an independent engineer, I will elaborate from two aspects of technical ability and business ability.

Technical ability

Technical ability is undoubtedly the most important basis to measure the level of an engineer, so what are the requirements for the technical ability of a one-side engineer?

Professional skill

Professional skills are the technical stack that you rely on in your work. Let’s take a former engineer as an example to see what professional skills you need to master.

  • Proficient in HTML, CSS and JavaScript, fully restore the design draft with semantic HTML tags and CSS, and use JavaScript to complete various interactive logic. This is the basic skills of the front end. In addition to learning through books, videos, etc., you can do a lot of business and keep writing code to apply what you have learned and keep accumulating.

  • Master one of the MVVM frameworks, Vue, React, Angular. With the increasing complexity of the front end, most scenarios are dependent on them. You need to have a clear understanding of what the framework is for, the boundaries of its responsibilities, and the ease with which you can apply the capabilities it provides to help with development efforts. In addition to the continuous application in the work, you can also take the initiative to learn the framework source code, understand the framework implementation principle.

  • Learn at least one packaging tool. Take WebPack as an example. You need to be familiar with WebPack configuration and learn how to use WebPack to help us develop, deploy, and optimize. You can try writing webPack loaders and plugins. For example, if we need mock data in our daily development work, we can write a WebPack plug-in that requests the mock interface in the development environment and the online interface in the test environment without changing the source code.

  • Broad knowledge of the front end such as HTTP, Web security, performance tuning, data structures and algorithms. In addition to learning through books, videos and other channels, you can constantly apply and verify in your daily work. For example, performance optimization, you can analyze the performance bottleneck of the page, in front or back end? If it is on the front end, you can further analyze the white screen time, first screen render time, JS load time, JS execution time, etc., and finally do performance monitoring and alarm by statistical means. .

Development efficiency

Development efficiency, directly determines your work output ratio, so how to improve the development efficiency.

  • Set a do-not-disturb time for yourself, such as 2:00 to 4:00 in the afternoon. At this time, I will concentrate on coding, ignore wechat, brush up on Weibo and have meetings. This kind of coding will be very efficient.

  • Work is good at refining reusable code and logic For example, when you find a component in the development process in other project implementation, this time don’t think to CV code, but the abstract into reusable business component, the foreign design good input and output interface, and extract the special warehouse management, business through to introduce NPM private servers.

  • For example, if you are developing and maintaining multiple projects, each with similar code and configuration, you might want to develop a scaffold that automatically helps you initialize the project code and configuration files.

To solve the problem

Every engineer will encounter various problems in their work, and the ability to solve problems is a reflection of one’s technical ability.

  • Case study of online problems When you encounter online problems, you can cooperate with some error reporting logs to quickly locate the problems and find quick repair solutions. In addition, you will carefully conduct case study after each online problem to find out the causes of the problems and provide corresponding solutions to avoid similar problems in the future.

  • If you encounter an error during development, you can use the code execution stack and the error information to find the root cause of the error and find the most reasonable fix. If the source of the error is a third-party plug-in, you should take the opportunity to understand how the third-party implementation works.

  • Learn to ask questions. It is not necessary to solve all problems by yourself. Sometimes you can ask others for help. For example, before you ask a question, you should think about it thoroughly and learn to disassemble the question. In the process of disassembling, the complexity of the question will be reduced. To make good use of the search engine, extract the keywords to search the search engine, try to solve the problem first. If you still can’t solve the problem, send the relevant context of the problem, screenshots and necessary identifiers, along with your own thought process, information you find, and your own analysis to someone who wants to help you, with the ability to minimize the recurrence of the problem.

Code refactoring

A big guy once told me that if every six months you look back at your code and it looks like shit, you’re making progress.

  • Don’t overdesign Some people like to write code all at once, reserve various extension interfaces, and overdesign, but due to unpredictable changes in requirements, it is easy to spend a lot of time writing a lot of useless code and low output. In a fast growing Internet company, this is not tolerated. It’s agile development, rapid iteration.

  • Refactoring in time we usually to a project quickly online, the first version of the code may have a lot of problems, when we are based on the development of the new features of previous versions of the code, code implementation before if there are any unreasonable places to reconstruction in time, and don’t perfunctory, if wait until code has a great amount of time to refactor, will be very difficult and painful, There may also be a risk of regression.

  • Codereview find more powerful colleagues to help codereview your code, absorb some of their good advice, you can also review the code of other colleagues, feel that the good code to learn, feel that writing bad places can be “picky”, cause discussion, pursue best practices. And a team should develop a uniform code specification and style.

  • To learn how to write good source code, the first step is to learn to imitate, you should often go to GitHub to read some good source code, good programming ideas and code implementation into their own work projects.

Technology of precipitation

Technology is a long-term process of learning and accumulation, which requires frequent precipitation of technology.

  • Technology sharing Summarize solutions to problems encountered in work, new technologies learned and technical projects produced, and share and export technologies either internally or externally (if allowed by the company). Sharing internally lets people know what you’ve done, enlivens the internal technical atmosphere, and practices presentation skills, which are very important in promotion debriefings in large companies. Sharing with others can help you practice your writing skills and improve your technical impact, both personally and as a team.

  • Open source If you do a good job in the project, open source value and the company allows the premise, you can consider open source, because open source will let you have a higher pursuit of project quality. For example, in the cube UI I worked on at Didi, open source will make us have higher requirements for the quality of the code, and complete documentation, examples and tests will be added. In addition, as more and more people use it, users feedback a lot of bugs and add a lot of features, which directly help us save QA manpower. Good open source projects can also help us increase the technical impact of individuals and teams.

Learn quickly

Technology changes rapidly and the ability to learn quickly is especially important.

  • Read the official documents when you learn a new technology, you should first read the official documents rather than the community summary, because the official documents are the most authoritative and updated in real time, while the secondary data summarized by others may be out of date or even wrong.

  • Learning by practice on the job is actually very inefficient if it is separated from practice on the job. You should put what you have learned into practice and verify it repeatedly in your work, give timely feedback and deepen the impression of learning. Don’t spend time studying in areas that aren’t directly related to your job.

  • Different technologies are really interlinked, and once you’ve mastered one and developed a methodology, it’s easy to pick up other technologies. For example, a student proficient in Vue will have no difficulty in getting started with React, and a student proficient in Web front-end development will also have no pressure to develop small programs.

Technology selection

Technology selection is a problem that most engineers will face. A good engineer must have the ability of technology selection.

  • When choosing an open source project, you should consider the following aspects: Feature integrity (does it meet our needs well), usage (NPM downloads, is it used by large companies), maintenance intensity (last update time, update frequency, issue and PR handling), testing (is there testing, test coverage), documentation (is the documentation and sample perfect), Maintainers (team, individual technical capabilities, and their technical impact), popularity (star, fork amount).

To build the wheels

We need to be able to build our own wheels when existing ones don’t meet our needs.

  • Learn to make the wheels Often you need to study and research the other wheels is built, how to learn more, naturally have made some rules of the wheel and methodology, understand the nature of the wheel to realize principle, also can according to your needs and the scene to customize the wheel, and your wheels also can be other small wheels assembled. For example, in didi, in order to achieve a Picker component comparable to the native iOS experience, I first studied the implementation of ISroll, and then expanded the implementation of Better Scroll on the basis of it, and then expanded the Picker component on the basis of better Scroll.

Business ability

As an independent engineer, besides excellent technical ability, also need to have good business ability.

The owner of consciousness

If you don’t want to be just a screw, you need to be an owner and be responsible for the product and the project. For example, I am now at Zoom. From requirements, design, development, testing to the final launch, engineers are in charge and coordinate the various role members. This puts forward higher requirements for engineers, but also exercise the comprehensive quality of engineers. Even if you work at a company where engineers don’t run projects, you can hold yourself to that standard.

Product thinking

When you receive a request, think about what problem it solves and what its value and significance is. As an engineer, it’s better to be involved in the early discussions of requirements and understand the business well, so that your grasp and understanding of the requirements will be more accurate than just doing what the product says, and sometimes you’ll find a way to meet the requirements and save on development costs.

Ability to communicate

A lot of people want to be a beautiful guy (or girl) who just writes code, but the reality is you need to communicate with people in different jobs. Communication skills are very important, many times you need to know what your needs side is thinking and output your ideas. If you are out of your mind, it is likely that what you produce is not what others want. Good communication can avoid detours and improve work efficiency.

The fear of online

Many people who haven’t worked in a large company don’t see the launch enough. Once something goes wrong with the launch, the first response is not to roll back the code, but to locate the problem and fix it with the next launch. This behavior is absolutely not allowed in large companies, because when you have a large number of users, each online accident will have a great impact on the surface, if not rolled back in time, the company will also cause a very big loss. Therefore, we should be in awe of the online process and ensure that the whole online process is automated rather than human participation (because people are unreliable). During the online process, we need to observe and monitor. Once there is any abnormal data, we should roll back in time and then locate the problem and go online again.

conclusion

We spoke a lot of ways, through but actually on the way you acquire the advanced as engineer, these methods are just for reference only, and can be truly, can face to face with difficulties and setbacks, dare to jump out of his comfort zone the pursuit of progress, can cook on the break through the bottleneck for a long time, is willing the stupid kung fu of the wise. No one can become great by reading one or two articles, but what really matters is years of perseverance.

Let’s encourage each other.