What skills should a server-side developer have?

picture

The army of programmers is mixed, and the level of the level cannot be simply assessed from the completion of a function. For the same requirement, all functions can be completed, but the quality of the completion of different programmers will be different. The quality of completion needs to be assessed from many aspects. Refer to these conditions: easy maintenance, easy expansion, high availability, high stability, high performance, security, fault tolerance, risk control

Insight into the programmers around you can be classified into these types:

  • Theoretical type , with strong theoretical ability, a little understanding of cutting-edge technology, strong personality, clear-cut demand analysis and program design, more confident and stubborn about the content of his own design, in contrast to the code, poor quality, chaotic logic, difficult to maintain Difficult to expand, but often this kind of rating is quite high in the company
  • Potential type , strong business ability, clear ideas for development, design and troubleshooting, can propose optimization/improvement plans, can properly abstract the business, relatively high technical requirements, good code quality, and usually investigate cutting-edge technologies
  • Superficial , basically all business needs can be fulfilled, but the code quality is relatively poor, there are many bugs, the efficiency of troubleshooting is low, it is difficult to maintain and expand, and I rarely understand cutting-edge technologies.
  • Honest , diligent in work, average code quality, usually inconspicuous, less communication with colleagues, and not clear about what to do in spare time
  • The big god type , the conclusion is that all aspects are NB, and you can give advice or solutions when you ask, but there are very few such people

What skills should a server-side developer have?

I am in the back-end development of an Internet company, so I start from the perspective of a back-end developer

  • Basic ability

    • code specification
    • Clearly layered
    • clear logic
    • database operations
    • Understand http, packet capture tool and simulated request tool
    • Understand front-end/js and be able to use browser console tools to debug
    • Safety precautions
      • sql injection
      • xss cross site scripting attack
      • csrf cross-site request forgery
      • http hijacking
      • ddos attack
      • ... ...
  • Advanced ability
    • abstraction-oriented programming
    • Appropriate use of design patterns
    • Module packaging
    • Asynchronous programming
    • multithreaded programming
    • Experience
      • High concurrent processing/optimization
      • Performance optimization (loading speed, improving interface tps,...  
      • Analyze requirements and provide reasonable suggestions and solutions
    • Flexible use of cache: redis, memcache, etc.
    • Flexible use of message queue middleware: rabbitmq, activemq, zeromq, kafka, etc.
  • Auxiliary ability
    • reptile
      • The ability to develop crawler functions means that you have a good grasp of the web
    • Attack other people's business (just enough, take care of yourself)
      • means
        • Simulate requests to find breakthroughs, such as: modifying parameters
        • Concurrent requests cause concurrent logic problems. For example: get multiple sign-in points (multiple data manipulation interfaces may overwhelm the server)
        • Attempt attacks, sql injections, cross site scripting attacks, etc...
        • ...
      • Know how to attack others, you know how to defend yourself
  • Communication skills
    • Members communicate, discuss design plans, share ideas, and technical points
    • Collaborative communication, initiative is important
  • Troubleshooting
    • Quick response to problem feedback
    • Quickly locate the problem according to the problem phenomenon
    • Quickly give solutions and go online, inform customer service, and give feedback to users
  • learning ability
    • Investigate cutting-edge technologies and preferably apply them to project business
    • Multi-language development: python, java, nodejs, php...
      • The development language is just a tool to complete business development, learn and practice in the project, so that you can learn something from it
  • predictive ability
    • Code in the future, convenient for business development
    • Architecture for the future, convenient architecture expansion to support business growth
  • Architectural capabilities
    • Layered
    • Split
    • distributed
    • cache
    • cluster
    • asynchronous
    • Shen Yu
    • automation
    • Safety

bad code smell

List the screenshots of typical bad code smells that you have encountered, take a warning, BGM ("what a painful realization"), wake up, don't think too much about yourself, start with code quality, take High salary, there are people who write student-level code everywhere. How to expand when encountering such code?

  • Bad taste 1 (unclear layering, splicing sql in the control layer) 
    picture

  • Bad taste 2 (too many function parameters) 
    picture

  •  

  • Bad Taste 3 (too deep) 
    picture

  • Bad taste 4 (same function requires extraction function + too deep) 
    picture

Summarize:

  • No matter what type of programmer you are, expect you to live up to this responsibility in your role
  • More reflection and self-examination, looking back at the previous code, there must be some unreasonable design, summarize and precipitate

Those with 1-5 work experience, who do not know where to start in the face of the current popular technology, and who need to break through the technical bottleneck can join the group. After staying in the company for a long time, I lived very comfortably, but the interview hit a wall when I changed jobs. Those who need to study in a short period of time and change jobs to get high salaries can join the group. If you have no work experience, but have a solid foundation, you can join the group if you are proficient in the working mechanism of java, common design ideas, and common java development frameworks.

java architecture group: 697579751 to communicate together

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325895555&siteId=291194637