Abstract concept
For a technical person, programming skills are the most basic ability to fulfill the needs and tasks of the job.
In addition, there are other basic skills that should be possessed by everyone more or less, but they don’t pay attention to them, and they don’t study them deliberately, so that there is a kind of chicken soup concept, and they think they are not good, or they think they are ok.
But few people can say exactly what is good or bad.
Daily scenario
In the daily life of programmers, there are some extremely frequent scenarios that we encounter every day
- Consult online manuals and blog posts when you run into bugs that are hard to fix or forget attributes and methods
- Use code snippets available online or third-party libraries for specific requirements, such as time formatting, character verification, etc
- After the development of the project, the unit test, some of the test position, but this is not in conflict with the self-test, depending on the specific position arrangement and project cycle
- Pull the latest code before work, merge, develop, submit their latest code before work, merge, create, test, release and other version process
- Running project code or packaging it for testing requires a build tool, which is a basic skill and has a lot to improve on
- There are three modules in the development process, including function development, code debugging and problem solving. It is the core skill to quickly locate and solve problems
The gap between people comes when there are things we have to do every day.
The specific difference depends on how well we do these things. The more high frequency and core things are, the more we should constantly try to optimize and improve them, so as to improve the efficiency and quality of every day. Over time, infinite positive feedback will be generated.
On the other hand, if we continue to rely on our instincts and limited knowledge to tackle these scenarios, it will be an exhausting battle of attrition until the business scenario can no longer be supported.
Essential skill
One or more techniques can be found for quick and user-friendly implementation of all of the above generalized actions, or at least for trying to translate conceptualized content into quantifiable methods.
Advanced search
When we encounter a problem, if we cannot locate the cause or solve it, we usually look for the answer on the search engine.
Baidu search, may not know, Google can unlock more content, friendly tips, use English as the keyword, get higher quality answers.
There are some other search engines not list one by one, about the search is not just a search, also involves what search, where to search, how to search, the same question different people use different keywords will get different answers, use some search technique can eliminate inferior information, the content of the fast and accurate access to want.
The knowledge system
It is not recommended to build wheels in programming. It is more convenient to use other people’s off-the-shelf code fragments and libraries for many scenarios, such as mobile phone number verification, etc. There is no need to spend time to write a regular.
Of course, there are still times when you need to build your own wheels for safety and special needs, which tests your technical skills, basic knowledge and underlying logic.
It is suggested to build your own programming system at ordinary times. Common content should be sorted out and used reasonably in time. Special scenes can be quickly adapted to and keep pace with the rhythm.
Will also use some third-party libraries, the most core to get started quickly, especially many documents are English documents, not necessarily a series of tutorials, this time will test the English function and basic knowledge.
Version management
Almost every company uses a version management tool, whether it’s Git, SVN, or some other tool.
You may not have advanced search, you may not have knowledge, but you may not have version management, the ending needs to be said?
Versioning is almost a daily operation, and you need to master when to commit, how to merge, and how to resolve code conflicts.
There are a lot of places to learn, can be optimized, the correct use and improve efficiency is the key.
Build tools
Webpack, NPM on the front end, and Maven or Gradle on the back end all fall into the category of build tools.
Packaging output, setting dependencies properly, and optimizing projects are all essential skills to master in your profession, and they are listed separately because they are a classified field in their own right.
Just like versioning tools, different software has different ways and effects, whether it is configuring the test environment, the formal environment, or the setup of the project itself, there is a lot to pay attention to.
Code debugging
If development is half the time, debugging is the other half.
Someone makes fun of programmers, who spend half of their time writing bugs and the other half of their time debugging.
When encountering a problem, the first thing to do is to debug it in the correct way, such as breakpoints, such as viewing logs, such as other debugging methods.
Proficient debugging is the most effective way to find and solve problems. On the contrary, the ability to debug code will generally greatly affect the development efficiency, resulting in unnecessary waste of time.
Troubleshoot problems
Debugging is just one way to look for problems, like breakpoints. Breakpoints, looking at the data doesn’t necessarily tell you where the problem is.
Knowing how breakpoints are set, where they should be set, etc., is a matter of troubleshooting. Whether to use breakpoints, view logs, or choose another method is also a matter of troubleshooting.
Problem screening is a way of thinking. How to find the problem and why we failed to find the problem are the key points. How to solve the problem after finding the problem is also very important.
On the one hand, it depends on the accumulation of experience, on the other hand, it depends on the way of thinking, comparatively, the use of tools is relatively weak.
When some problems occur, it can especially test a person’s ability, analytical ability, communication ability, technical ability, integrated to form the ability to troubleshoot and solve problems.
linux
system
Now the technology is more and more convenient, many frameworks are very mature, graphical development interface is relatively perfect, many people usually use window system development, but this does not mean that do not need to understand Linux skills.
Not pure Linux, but command line and server systems.
Many development scenarios can be developed from the command line, whether it is the front end, the back end, or any other position, using the command line is recommended. There is no absolute limit to the development efficiency, high quality and fewer errors.
Second Linux server system also want to know, the development of a project to launch, involving products, UI, front and back side, test, and operations, etc., according to the reason is good to know, the more the more comprehensive, to think from the global, from a technical point of view, it is necessary to be familiar with Linux, many scenes are related, as the amount above problem, this involves Knowledge reserve and experience value can help us locate problems comprehensively and quickly.
Unit testing
Unit testing is a basic prerequisite for continuous software integration and delivery.
Testing as a large category also has a lot to learn and optimize, good unit testing can help us save development time, early detection of problems.
Testing is not necessary to some extent because we have testing posts, and we need to make constant choices in development efficiency.
But from the individual comprehensive ability, testing is a developer should have the basic ability.