Level of programmers and evil people mixed up army, not simply from a functional completion to assess, also a requirement, the function can be completed, but different programmers to complete quality will be different, complete quality needs assessment from several aspects, you can refer to these conditions, easy maintenance, easy to expand, high availability, high stability, high performance, security, fault tolerance, risk control


Knowing the programmers around you, you can categorize these types:

  • I am a theoretical person with strong theoretical ability and a slight understanding of cutting-edge technology. I have a strong personality and am knowledgeable in demand analysis and scheme design. I am confident and stubborn in the content of my design
  • Potential type, strong business ability, clear thinking of development design and problem investigation, able to put forward optimization/improvement plans, able to properly abstract business, high technical requirements, good code quality, usually research cutting-edge technology
  • Superficial, the business requirements can be basically completed, but the code quality is poor, there are many bugs, the efficiency of problem investigation is low, and it is difficult to maintain and expand. I seldom understand cutting-edge technology, so I spend my spare time on weibo, watching news and chatting
  • Honest, diligent, general code quality, ordinary performance, less communication with colleagues, do not know what specific in spare time
  • God type, the summary is all NB, ask what can give advice or solution, but this kind of person is very few

What capabilities should a server development engineer have?

You’re in back-end development for an Internet company, so start from a back-end developer perspective

  • Basic ability
    • Code specification
    • Stratified clear
    • The logic
    • Database operations
    • Understand HTTP, can capture packet tools and mock request tools
    • Understand front-end/JS and debug using browser console tools
    • Safety prevention
      • SQL injection
      • XSS cross-site scripting attacks
      • CSRF cross-site request forgery
      • HTTP hijacked
      • Ddos attack
      • … …
  • Advanced ability
    • Abstract oriented programming
    • Use design patterns appropriately
    • Module encapsulation
    • Asynchronous programming
    • Multithreaded programming
    • experience
      • High concurrency processing/optimization
      • Performance optimization (loading speed, improved 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 power
    • The crawler
      • Can develop crawler function on behalf of the Web has mastered the better
    • Attack someone else’s business (when enough is enough, do it yourself)
      • methods
        • Simulate requests to find breakthroughs, such as modifying parameters
        • Concurrent requests, causing concurrent logic problems. Example: Get multiple check-in credits (multiple data manipulation interfaces can overwhelm the server)
        • Attempted attacks, SQL injection, cross-site scripting attacks, etc…
      • Knowing how to attack, knowing how to defend yourself
  • Ability to communicate
    • Members communicate, discuss design schemes, share ideas and technical points
    • Collaborative communication, initiative is important
  • Erratum ability
    • Quick response to problem feedback
    • Quickly locate faults based on the symptoms
    • Quickly provide solutions and online, inform customer service, feedback to users
  • The ability to learn
    • Research cutting-edge technology and ideally apply it to the project business
    • Multi-language development: Python, Java, NodeJS, PHP… …
      • Development languages are simply tools to accomplish business development, learn and practice on projects so you can learn from them
  • precognition
    • Code future, convenient business development
    • Architecture future, convenient architecture expansion to support business growth
  • Architecture ability
    • layered
    • segmentation
    • distributed
    • The cache
    • The cluster
    • asynchronous
    • Sink more than
    • automation
    • security

Bad code smell

List the typical bad code taste screenshots once encountered, take warning, BGM (” how painful understanding “), wake up, do not think of their own cattle, first from the quality of the code, with high salaries, write the student level of code people everywhere, encountered such code how to expand?

  • Bad taste 1 (not clear, splicing SQL in control layer)

  • Bad Taste 2 (too many function arguments)

  • Bad Taste 3 (Too deep)

  • Bad Taste 4 (same function requires extraction function + Too deep)


Conclusion:

  • No matter what type of programmer you are, are you expected to live up to your responsibilities in the role
  • More introspection, look back at the previous code, there must be some unreasonable design, summary and precipitation

In the New Year of 2018, MY first day at work was quite idle. I rearranged my mood, picked up the blog post to be written and finished it. I hope I can have more precipitation in the New Year

Leave a comment if you have anything to say


Reproduced please state the original address, thank you for your cooperation

Old friends follow my wechat official account of “Big Talk WEB Development” and track my original blog posts

Do not regularly recommend WEB development related technology blog, mutual encouragement and learning exchanges! Qr code left