Skills and knowledge that small and medium-sized enterprise programmers should master at all levels

insert image description here

1. The current situation of small and medium-sized enterprises

According to bloggers, at present, most small and medium-sized enterprises are still dominated by traditional industries, and the Internet still accounts for no more than one percent. Taking Shenyang as an example, there are no more than one-handed pure Internet projects/companies in the province. At the same time, under the influence of the epidemic, larger enterprises basically rely on the government. After all, it is very rare to have stable projects and funds under the current environment.

Therefore, small and medium-sized projects are various customized management systems, approval systems, ERP, OA, and there are very few scenarios such as high concurrency, clusters, seckill, k8s, and algorithms on the network.

Because of this background, this article came into being, what skills are the guys who eat for programmers in small and medium-sized enterprises? Next, listen to veterans of small and medium-sized enterprises who have been in the industry for nearly 10 years to take you one by one.

In order to program for salary, we have to memorize what we should memorize.

2. Skills needed by programmers at all levels

1. Junior development engineer/intern

For junior development engineers, it may be the lowest level in the programmer class, and the daily work is relatively simple. Usually, I will assign simple interface and brick-moving work to employees in this position. For example, in an OA project, write curd interfaces for announcements, calendar maintenance and other curd interfaces. Such interfaces do not involve business, and the main test is whether you have mastered the basic writing methods of the interfaces.

Therefore, the point of concern for leaders is to write the interface according to the time node and ensure that the data processing is accurate.

1. The technology stack that should be mastered

Through the above background, the blogger summed up the following skills that need to be mastered. Among them, the ones marked with small red flags are the focus on mastering knowledge.

  1. Master the skills commonly used in java.
  2. Master spring, skilled application of IOC and AOP. Understand the underlying principles.
  3. Master database concepts, common grammar, and focus on adding, deleting, modifying and querying statements.
  4. Master the commonly used tags of mybatis, focusing on the addition, deletion, modification, and writing.
  5. Understand the concept and file structure of springboot, and focus on mastering the business writing and common annotations of adding, deleting, modifying and checking.
  6. Skilled use of idea, navicat, postman and other development tools.
  7. Understand microservice concepts.
  8. Learn about redis middleware.
    insert image description here

2. Why do you need

It can be seen from the figure that the above skills are all prepared for curd. First of all, springboot+spring+mybaits is the most popular framework and the cornerstone of interface writing. The java foundation must be firmly grasped, otherwise the pit of data comparison is enough for you to drink a pot. Skilled use of development tools can help you improve code writing efficiency and specifications. Understanding some middleware and microservice concepts builds a bridge for the next step. Mysql statement will not? ? ? Please go out and turn right. All of the above are necessary skills and cannot be dispensed with.

2. Intermediate development engineer

Intermediate development engineers are the most and most core positions in a company, because most of them are business backbones, responsible for the stacking of business codes, and also responsible for managing and guiding junior development engineers when necessary. Therefore, in my work, I will assign more complex interfaces, such as organizational structure-related interfaces, timing task interfaces, and user interfaces, because these interfaces involve permissions, return formats, log retention, basic applications, etc., because these junior programmers are very Difficult to do, which requires mid-level engineers to write.

1. The technology stack that should be mastered

Compared with junior development engineers, the following points should be improved.

  1. Master lanmda and stream writing.
  2. Understand the underlying principles of spring, mybatis, and springboot.
  3. Master the common and commonly used SQL optimization rules.
  4. Master springboot functional start.
  5. To understand microservices, the minimum standard is to land the demo alone.
  6. Used redis and rabbitmq middleware.
  7. Master commonly used design patterns.

insert image description here

2. Why do you need

The basis for intermediate engineers is that they are very proficient in business interfaces, which requires multi-architecture, management, and overall planning to improve.

First of all, there must be a good code format and comment format. And good at using tools, such as functional interfaces, p3c code detection tools. And properly use the design pattern to refactor the code, and be able to pass on its own principles and ideas to junior engineers, so that the project can have a benign operating condition.

Have a certain understanding of the source code of commonly used frameworks such as springboot+mybatis+spring. This is not memorizing stereotyped essays. After understanding certain underlying principles, you can locate problems more quickly through logs. At the same time, you must have experience in using a series of start provided by springboot, such as: websocket, quartz, email, and SMS, which are very commonly used.

Then you need to have a basic application and understanding of some middleware. I think at least master redis and mq, because small and medium-sized enterprises have a high chance of using this middleware. At the same time, it has become an inevitable problem.

Some small partners may ask whether small and medium-sized enterprises need to master microservices? The answer is yes, because the leaders of many municipal bureaus of government projects will mention in the bidding documents that they want to go to the cloud and microservices. Therefore, intermediate engineers must at least have experience in building microservice demos.

Finally, you need to master the common scenarios of SQL optimization.

The above are the skills that mid-level engineers need to improve. How many people stay at this stage for life, and those who are said to be eliminated at the age of 30 in the market are also these people. So this is an important stage to cultivate ability, and try to rise to a senior engineer.

3. Senior development engineer

For small and medium-sized enterprises, senior engineers are already technology leaders. For senior development engineers, it is more about the ability to solve problems.

What is Problem Solving? My understanding is that no matter what problem you encounter, whether you search on Google or Baidu, or ask industry leaders, as long as you can solve it, it will be ok.

It also requires you to have a certain accumulation in terms of technical depth and breadth. There is also a certain amount of involvement in the source code and underlying principles, and it is necessary to change the source code to solve the problem at an appropriate time. At the same time, it also has a certain understanding and construction in terms of architecture, and can optimize and construct optimizations that meet the scene according to company conditions. At the same time, he is good at using open source to solve problems.

Therefore, bloggers believe that senior engineers need to master the following skills:

1. Technical mastery

  1. At least read spring, mybatis, springboot source code, and fully understand.
  2. Have a certain understanding of distribution. (ps: Although there are not many usage scenarios)
  3. Master the explain statement and skillfully optimize sql.
  4. Be able to formulate code specifications and code inspection mechanisms according to the company's situation.
  5. Master commonly used linux statements.
  6. Master the design ability of architecture. Able to implement common architecture configurations.
  7. Understand and master a security framework.
  8. Have this own opinion on microservices. Can be selected according to the environment.
  9. Learn about popular open source frameworks and solve problems with open source.
    Please add a picture description

2. Why master

It can be seen from the above figure that there is a relatively obvious improvement in terms of depth and breadth. At the same time, the most fundamental purpose is to solve problems.

At this stage, I think you should have read the source code of springboot+mybatis+spring+springcloud many times. Although you can’t explain it in detail, at least you have your own unique insights into this programming idea. And use its thought/design pattern to optimize its own code in daily development.

Have a certain understanding of project architecture and composition, at least implement and understand the RBAC model and a security framework, and have used common architecture optimization annotations/functions. Such as unified packaging of exceptions, unified return parameters, and component packaging of projects. Try to improve the low-level development experience and development difficulty. At the same time, it also has its own unique views on the microservice architecture. And can choose and implement according to their own environment.

You also need to have this understanding on linux. You need to master common commands and statements, and try to be familiar with Docker, k8s, etc., because operation, maintenance and deployment are inevitable in daily development and launch. In terms of sql optimization, it is recommended to master the usage and common parameters of the explain statement, so that you will no longer be afraid of any slow sql.

The most important thing is to have enough open source capabilities and be able to use open source frameworks or projects to solve problems. It can be said that the quality of open source frameworks is far superior to those developed by small and medium-sized companies, so proficient use and secondary development will undoubtedly greatly reduce the workload and development costs.

Finally, you need to understand the skills of some Internet companies, such as K8s, distributed transactions, distributed locks, clusters, and high concurrency. Spike. Make some technical reserves to face contingencies.

The above is the sharing of this article by the blogger. If you want to learn the above technology stack, please check other columns of the blogger.

Guess you like

Origin blog.csdn.net/qq_20143059/article/details/121749122