Recently, veteran brother is planning to share a series of growth from programmer to architect. He has combed out the soft and hard skills needed to be familiar with or proficient in architecture work. Now he has published it and invited you to discuss with him.



A programming language

  • Strong typing: C++, Java
  • Weak types: Javascript, Python
  • Markup type: XML, HTML, JSON, YAML

Development framework

  • React, Vue, Flutter, Weex
  • Domain layer: Spring, Spring Boot
  • Data layer: Hibernate, MyBatis, JPA
  • Base layers: Log4j, LogBack, Quartz, C3P0

The program design

  • Object oriented Design
  • Design Patterns
  • Domain-driven design DDD

The database class

  • Relational types: MySQL, PostgreSQL, and Oracle
  • NoSQL: Redis, MongoDB, HBase, Neo4j
  • SQL, stored procedures
  • Query optimization (index, storage, partitioning)

The operating system

  • Linux, Windows, Android, iOS
  • Processes, storage, files, devices, jobs, etc

Network protocol

  • Network layer: IP
  • Transport layer: TCP and UDP
  • Application layer: HTTP, FTP, SMTP, NTP

Middleware classes

  • Message classes: ActiveMQ, Kafka, RocketMQ
  • Container classes: Apache, Tomcat, Nginx
  • Search classes: Lucene, Solr, ElasticSearch

Security mechanism

  • Identity authentication OAuth2.0
  • Permission authentication RBAC
  • Risk vulnerability: XSS, CSRF, SQL injection, script injection
  • Preventive measures: Verification code, digital signature, and digital certificate

The infrastructure

  • Resource selection and capacity estimation

  • VPC, network domain, IP network segment, and domain name

  • Firewall policy

  • Load Balancing Policies (F5, LVS, HAProxy, Nginx)

The data architecture

  • Data modeling

  • Storage solution

  • Database selection

  • High availability solution (read/write separation)

  • Backup scheme (hot/cold, master/Slave)

  • Dr Solution (Local or Remote)

  • Synchronization scheme (real-time)

Application architecture

  • Architecture selection: C/S, B/S, SOA, Microservices (Dubbo \ Spring Cloud \ Service MeshServerless)

  • Architectural view: logic, process, development, deployment, etc

  • Interface design: RESTful, JMS, IPC, RPC

Distributed system

  • Extensibility design

    • Vertical scaling
    • Horizontal scaling
  • Usability design

    • Current limiting
    • fusing
    • demotion
  • Consistent design

    • ACID, BASE, CAP and other theories
    • Distributed transactions (locks)
    • Distributed consistency algorithm
  • Partition fault tolerance

  • Reliability design

    • Service isolation
    • The asynchronous call
    • Resource redundant

Comprehensive skills

  • Software engineering
  • The project management
  • Self-sales: writing, PPT, speech, training, consulting

Architect is the main direction for our programmers to beat monsters and upgrade. It is not like a single skill can be obtained by applying for a training course. To be competent in architecture work, many skills need to be accumulated gradually, both hard and soft skills. One bite does not make a man fat. From programmer to architect cannot be accomplished overnight. It is a progressive and steadily improving process, with skills to be mastered at each stage and a sequence between multiple skills. If you want to make the transition to being an architect, you can consciously build these skills into your day job.

It is not easy to adhere to the original, if you feel valuable, please move your hands to give a “like” or forward to more friends, veteran brother will be more motivated to adhere to. In addition, I will continue to share my experience in career planning, job interviews, skills improvement, influence building, and pay attention to “IT veteran brother”, enabling program life!

Index of recent articles:

  • Programmers, how to become a bowl of youth rice?
  • Why be an “invincible” programmer?

  • How do programmers build personal influence?
  • Should programmers learn to write without writing love letters?
  • How to build influence on the road to stop?
  • 3 common mistakes programmers make in building impact