# Technical Team Management Specification
# 1. Project Technology Selection
# 1. Backend Technology Stack
We choose the development language and the project architecture base on estimated concurrency, the project's expected number of users, duration of development, the number of developers, and the actual hiring difficulty. Different languages have different advantages, disadvantages, and characteristics:
a) Java: Java is very stable, the micro-service architecture and the third-party components are complete. It can be cross-platform because of JVM, but JVM needs more memory for running the program;
b) Go: A new backend development language. Its performance is better than the Java language in massive concurrency (Over one million QPS). Its running memory is less than Java and its development efficiency is better than Java. But It will be more difficult to find go developers than Java and PHP developers;
c) PHP: PHP is better than the above two languages in development efficiency, especially in some projects that integrate front and backends, but PHP is worse than the other two languages in concurrency. So it always uses "Swolle" to improve its concurrency performance. And also PHP is not secure enough.
# 2. Front-end Technology stack
We generally use React, Vue, and Angular these three Js Framework. Which one we choose depends on the scale of the project, the developer's familiarity with these three frameworks, and the difficulty of recruiting:
a) React is built by Facebook, has a large number of users, and has rich UI components;
b) Vue is built and maintained by the community led by Evan You. The newer framework among the three is small in size, easy to use, and has lower learning costs;
c) Angular is built by Google and based on MERN architecture, it is most suitable for large-scale projects, with better performance and higher learning costs;
# 3. APP Technology Stack
APP development is mainly divided into two categories, native development, and cross-platform development. Native development is mainly using development mode because it has the highest compatibility and richness of components, but its development cost is high, it requires iOS Developer and android developer. Flutter and React are the popular cross-platform development frameworks. It can be packaged in iOS and Android systems with the same source code and can be updated hotly. Cross-platform is better than native development in development efficiency, but it is worse than native development in compatibility and performance. Which development mode should we use depends on the scale of the project and what we want the project tends to be, mature and stable, or hot update and development efficiency? and the language familiarity of developers.
# 3. OP Technology stack
1.1 Server: we usually use Linux server and some servers use Windows and Mac servers for some special requirements;
1.2 Database: small and medium-sized project databases generally use a relational database such as MySql.Large-scale projects use Oracle. Non-relational databases commonly include Redis, MongoDB, and Elastic Search. Usually, different non-relational databases have different focuses on the use, which can be used in combination, Redis is mainly used for data caching and concurrency restrictions, Mongodb is generally used to store document data, and Elastic Search is generally used to store logs and data that needs to be used for search;
1.3 Environmental deployment: mainly use containerized deployment or direct server deployment. Containerized deployment usually uses Kubernetes+Docker, which is relatively simple to maintain and expand, while direct server deployment is multiple applications on a single machine. It will affect the stability and maintenance;
# 2. Team Structure
1.1 Team Structure:
The number of technical team members is determined by the number of projects, project scale, and the number of requests. Usually, different departments are distinguished according to different functions, and department heads are established according to the number of departments. The general team structure is as follows:
a) Technical Leader (CTO): responsible for coordinating teamwork arrangements, work quality control, technical research, technical training, etc.;
b) Back-end Department: set up a department leader if needed to supervise the back-end development and maintenance, its number is generally twice as many as the front-end department;
c) Front-end Department: Set up a department leader if needed to be in charge of the front-end development and maintenance. The front-end mainly includes the PC and H5 client of the website;
e) Mobile Department: Set up a department leader if needed to be in charge of the APP development and maintenance. The mobile client mainly includes iOS and Android;
f) Client Department: Set up a department leader if needed to supervise the team’s desktop client development and maintenance work, clients include Windows, Mac, and Linux;
g) Product Department: Set up a department leader as needed to supervise the team’s product planning, requirements collection, product quality control, etc.;
h) Art Design Department: Set up a department leader if needed to be in charge of the production and maintenance of the team’s UI and other art resources;
i) Ops Department: set up a department leader if needed to be in charge of the team’s server maintenance, office equipment management, network management, code management, and database management;
j) TE Department: Set up a department leader if needed to supervise the testing work of the team, mainly black and white box testing;
1.2 Ranking and Requirements:
a) Back-end developer rank setting and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Engineer | 1. Master at least 2 mainstream programming languages in Java/Golang/PHP; 2. More than 5 years of development experience, rich project experience, and have led the development of more than 1 project; 3. Understand HTTP, TCP/ IP, and other network protocols; 4. Familiar with Linux and Docker; 5. Familiar with the use of Mysql and Redis; 6. Familiar with the use of MongoDB or ELK; 7. Familiar with multi-threaded programming; 8. Have a good data structure and algorithm foundation understanding; 9 . Familiar with high concurrency technology architecture and distributed system theory; 10. Familiar with program performance tuning; |
P2 | Intermediate Engineer | 1. Master a mainstream programming language such as Java/Golang/PHP; 2. 3 to 5 years of development experience, and with experience in multiple project development; 3. Understand HTTP, TCP/IP and other network protocols; 4 .Familiar with Linux, familiar with Docker; 5. Familiar with the use of Mysql and Redis; 6. Familiar with the use of MongoDB or ELK; 7. Familiar with multi-threaded programming; |
P1 | Junior Engineer | 1. Master a mainstream programming language such as Java/Golang/PHP; 2. 1 to 2 years of development experience, solid computer technology foundation; 3. Understand HTTP, TCP/IP and other network protocols; |
b) Front-end developer rank settings and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Engineer | 1. Master JS, HTML and CSS; 2. More than5 years of development experience, rich project experience, and have led the development of more than 1 project; 3. Proficient in using jquery; 4. Familiar with Ajax interactive development ;5. Master Vue/React/Angular web frameworks; 6. Understand HTTP, TCP/IP and other network protocols; 7. Understand HTTP, TCP/IP and other network protocols; 8. Have a certain understanding of front-end performance tuning 9. Have a good data structure and algorithm foundation understanding; 10. Be familiar with the use of data encryption algorithms; |
P2 | Intermediate Engineer | 1. Master JS, HTML and CSS; 2. 3-5 years of development experience, with experience in multiple project development; 3. Proficient in using jquery; 4. Familiar with Ajax interactive development; 5. Master Vue/ React/Angular any web framework; 6. Understand HTTP, TCP/IP and other network protocols; 7. Understand HTTP, TCP/IP and other network protocols; 8. Have a certain understanding and application of front-end performance tuning; |
P1 | Junior Engineer | 1. Master JS, HTML and CSS; 2.1-2 years of development experience, solid foundation in computer technology; 3. Proficient in using jquery; 4. Familiar with Ajax interactive development; 5. Master Vue/React/Angular Any kind of web framework; 6. Understand HTTP, TCP/IP and other network protocols; |
c) Mobile developer rank settings and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Engineer | 1. Proficient in any one of Java/Object-C/Swift/Flutter required for Android and iOS development; 2. More than 5 years of development experience, rich project experience, and have led more than 1 project development; 3. Familiar with component libraries and tool libraries commonly used in Android or iOS development; 4. Understand HTTP, TCP/IP and other network protocols; 5. Familiar with multi-threaded programming; 6. Have a certain understanding of mobile performance tuning 7. Have a good data structure and algorithm foundation understanding; 8. Familiar with the use of data encryption algorithms; |
P2 | Intermediate Engineer | 1. Proficient in any one of Java/Object-C/Swift/Flutter required for Android and iOS development; 2. 3-5 years of development experience, with experience in multiple project development; 3. Familiar with mastery Component libraries and tool libraries commonly used in Android or iOS development; 4. Understand HTTP, TCP/IP and other network protocols; 5. Familiar with multi-threaded programming; 6. Have a certain understanding and application of mobile performance tuning; |
P1 | Junior Engineer | 1. Proficient in any one of Java/Object-C/Swift/Flutter required for Android and iOS development; 2. 1-2 years of development experience, solid computer technology foundation; 3. Familiar with Android or iOS Develop common component libraries and tool libraries; 4. Understand HTTP, TCP/IP and other network protocols; |
d) Product Manager rank setting and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Product Manager | 1. Familiar with the use of Axure prototype software; 2. More than 5 years of product work experience, with multiple complete product planning experience from 0 to 1; 3. Control product quality and have own opinions on product design 4. Good communication and expression skills; 5. Familiar with the use of diagrams such as brain maps and flowcharts; 6. Familiar with the process of demand planning and implementation, and the production of demand documents; 7. Have data analysis /Art Design/Coding Any one of the bonus skills; 8. Proficiency in using competitive product analysis, keeping up with Internet hotspots; |
P2 | Intermediate Product Manager | 1. Familiar with the use of Axure prototype software; 2. 3-5 years of product work experience, with complete product planning experience from 0 to 1; 3. Control product quality and have own opinions on product design 4. Good communication and expression skills; 5. Familiar with the use of diagrams such as brain maps and flowcharts; 6. Familiar with the process of requirements planning and implementation, and the production of requirements documents; |
P1 | Junior Product Manager | 1. Familiar with the use of Axure prototype software; 2. 1-2 years of product work experience; 3. Control product quality and have own opinions on product design; 4. Good communication and expression skills; |
e) Art designer rank setting and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Art Designer | 1. Proficient in commonly used software such as PhotoShop/AE/Sketch; 2. More than 5 years of work experience, have led more than one UI project, and have certain own works; 3. Have a certain aesthetic ability and creative ability; 4. Have strong communication and understanding ability; 5. Have own understanding of product interaction design, user experience and style design; 6. Have certain team management ability; 7. Have ability to draw and animate; |
P2 | Intermediate Art Designer | 1. Proficient in commonly used software such as PhotoShop/AE/Sketch; 2. 3-5 years of work experience, have participated in many projects, and have certain own works; 3. Have a certain aesthetic ability and Creative ability; 4. Have strong communication and understanding ability; 5. Have own understanding of product interaction design, user experience and style design; |
P1 | Junior Art Designer | 1. Proficient in commonly used software such as PhotoShop/AE/Sketch; 2. 1-2 years of work experience; 3. Have certain aesthetic and creative ability; 4. Have strong communication and understanding skills ; |
f) Ops rank setting and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Ops | 1. Familiar with Linux system; 2. More than 5 years of server maintenance experience; 3. Familiar with the use of any one of Alibaba Cloud/AWS/Huawei Cloud; 4. Familiar with the development and maintenance of automated deployment platforms; 5 .Familiar with the use of common server monitoring software; 6.Familiar with the deployment and maintenance of K8S+Docker container environment; 7.Familiar with the deployment and maintenance of Nginx, Tomcat, Jenkins, MySql, Redis, ELK; 8.Familiar with database operation and maintenance; 9 .Familiar with network security; 10.Master any language of Shell/Python/Go, with certain development capabilities; 11.Familiar with high-availability and distributed environment deployment; |
P2 | Intermediate Ops | 1. Familiar with Linux system; 2. 3-5 years of server maintenance experience; 3. Familiar with the use of any one of Alibaba Cloud/AWS/Huawei Cloud; 4. Familiar with the development and maintenance of automated deployment platforms; 5 .Familiar with the use of common server monitoring software; 6.Familiar with the deployment and maintenance of K8S+Docker container environment; 7.Familiar with the deployment and maintenance of Nginx, Tomcat, Jenkins, MySql, Redis, ELK; |
P1 | Junior Ops | 1. Familiar with Linux system; 2. 1-2 years of server maintenance experience; 3. Familiar with the use of any one of Alibaba Cloud/AWS/Huawei Cloud; |
g) Test Engineer rank setting and requirements:
Rank | Title | Technical Requirements |
---|---|---|
P3 | Senior Test Engineer | 1. Familiar with the ability to write documents; 2. Be able to write test cases based on business; 3. Have good understanding and expression skills; 4. Be careful and patient; 5. Be able to use Jmeter or other tests Tool to test the performance of the API; 6. Understand the basic operation of the database; 7. Have the ability to read code; 8. Have a certain aesthetic ability; |
P2 | Intermediate Test Engineer | 1. Familiar with the ability to write documents; 2. Be able to write test cases based on business; 3. Have good understanding and expression skills; 4. Be careful and patient; 5. Be able to use Jmeter or other tests Tool to test the performance of the API; 6. Understand the basic operation of the database; |
P1 | Junior Test Engineer | 1. Familiar with the ability to write documents; 2. Be able to write test cases according to business; 3. Have good understanding and expression skills; 4. Be careful and patient; |
# 3. Workflow Specification
# 1. Teamwork
1.1 Project Approval: The project manager will hold a project approval meeting to communicate with the product manager and technical manager the intent of the project, the number of the users, and the expected deployment time of the project. After the communication is completed, the project will be officially approved;
1.2 Requirements Sorting: After the project is approved, the product manager organizes the product requirements, communicates with the demander to finalize the details of the requirements, and determines the priority of each requirement. The priority is divided into "urgent", "priority", and "normal", Urgent requirements need to be developed and deployed first, priority requirements will be sorted out in the next version of the project, and normal requirements will be iteratively developed when there is a gap in development;
1.3 Requirement Discussion: After the requirements are sorted out, the product manager will produce the requirements document according to the sorted version requirements of the next version, as well as the product prototype diagram. If the business process is more complex, it needs to be accompanied by a business flow chart, a brain map, etc. After the production is completed, firstly have a meeting with the project manager, the product department leader, and the technical manager. At the meeting, all parties put forward opinions according to their professional perspectives, and the product manager revises according to the opinions until a consensus is reached, and the technical manager will arrange for developers to participate in project development after the meeting;
1.4 Requirements Review: The product manager initiates a meeting invitation, the participants are the developers and testers of the version requirements who are designated by the technical manager. At the requirements review meeting, the product manager needs to explain and answer questions in detail about the requirements, the product manager should communicate with the developer to make sure the development duration from "development" to "test" to "deploy" of the requirements according to the expected deploy time, and plan the timeline for development, testing, and acceptance. The subsequent development process needs to strictly follow the timeline. The product manager will make the final acceptance after the development is completed and the requirements will enter the release arrangement stage;
1.5 Deployment Arrangement: The Technical manager will arrange the release time and the person to handle the deployment. If it is not working hours, developers and PM should be arranged to be on duty during the deployment time. The code branch or Tag, release process, database files, pictures, and other files required for the release if it is necessary to stop the service need to obtain the approval of the project operator in advance. The project manager needs to notify the relevant operators after deployment is completed;
1.6 Bug Handling: Anyone who finds a bug or any unreasonable issue in the test should report it to the product department, and the product manager will collect and determine the priority. If it is a non-urgent bug, it will be put into the iteration as an optimization requirement. If it is an emergency bug need to inform the technical manager, and the technical manager will arrange a person to fix it and deploy it first. Emergency bug processing takes priority over all tasks;
1.7 Communication Meeting: During the required development time, the project team will have a 10-15 minute morning meeting every morning to report their work progress and problems, and hold a weekly team meeting every Friday afternoon to summarize the work of the week and share the information;
# 2. Team Specifications
1.1 Using Software:
a) Project Management: The open-source version of "Zentao" is deployed on the local server as project management software. "Zentao" is used for establishing the project by the project manager, organizing the requirements by the product manager, and managing bugs by Test Engineer. It is maintained by the OP department ;
b) File Management: FTP is deployed on the local server as the project document storage, and the authority assignment of each employee is done well, and the OP department is responsible for the maintenance;
c) Code Management: The local server deploys Gitlab as the code version control system, which is maintained by the OP department;
d) API Collaboration: Use Apifox as the API collaboration and management platform, export and save API documents to FTP after each function goes online;
1.2 Document Specifications:
All documents of the project, including but not limited to the following types, must not be disseminated without permission, otherwise, legal responsibility will be pursued.
a) Product Requirements Document: The title of the document indicates the product name, and version number, and the content needs to include a functional description, schematic diagram, and business logic description. When the document is stored in FTP, it needs to be stored in the directory on the specified date of the specified product;
b) Product Prototype Manuscript: The title of the manuscript should indicate the product name, version number, and the content should include a version description, prototype diagram, necessary text description, necessary animation, and when the manuscript is stored in FTP, it should be stored in the designated product designated within the directory of the date;
c) API Document: The title of the API document indicates the product name and date, and the content needs to include the API path, parameter description, return content example, etc. The document is stored in the designated product directory under the development-specific FTP directory;
d) UI file: UI files include pictures and PS files. The pictures need to be compressed before they can be developed. The PS files need to indicate functions and store them in the UI directory specified by FTP;
1.3 Development Specifications:
a) Comment: The code needs to have detailed comments. The top of each method is annotated with the function of the method and the description of the parameters. The variables in the method and each keycode need to be annotated with the description of the steps. The code is easier to understand the logic through comments;
b) Naming: variables and class files are named in English, not Pinyin;
c) Security: Pay attention to the security of code and information, the interface should not expose too much information irrelevant to the business, the personal operation authority should not be too large, and the development account authority of each person should be distinguished;
d) Quality: After writing the code, do 1-3 times of self-testing and self-testing to ensure that there are no problems before submitting it to the testing department;
e) Process: Strictly abide by the development process, do not operate online databases, online servers, and online codes without permission;
f) Confidentiality: The code shall not be shared externally, nor shall it be shared with persons in the company who do not have permission to view it;
1.4 Network Security Specifications:
a) Installation of Irrelevant Software is Prohibited: Team members are not allowed to use office computers to download software unrelated to work at will, to prevent Trojan horses from being installed by malicious software and causing security threats to the company’s intranet;
b) Receive Pictures and Documents with Caution: When team members receive emails, pictures, and documents from social media, they need to verify their identity with the other party, open them carefully, and avoid receiving malicious documents;
c) Pay Attention to Personal Computer Security: You need to set a password for your work computer. If the computer does not need to get off work when you get off work, turn off the computer, and it is forbidden to remote company computers without permission;
d) Company Document Data Security: All requests related to the company’s confidential documents and account information must be applied by email and approved by the technical manager. If any company personnel directly ask for confidential documents through chat software, they must call to verify their identity information can be given;
# 3. Project Process
1.1 Git Process:
a) The git branch of each project is divided into the main branch, the prod branch, the test branch, and the local branch;
b) For development, first create your branch in the local branch. After the self-test is completed, merge it into the local branch and publish it to the local environment for testing. After the local environment self-test is completed, merge the code into the test branch and publish it to the test environment;
c) The prod branch is the preparation branch for online distribution. The tests and products are tested and accepted in the test environment and enter the preparation release stage. The OP department will merge the test branch code into the prod branch for manual release;
d) When the online functional test is normal after the release, the OP department will merge the prod branch into the main branch;
1.2 Development Process:
a) The project manager establishes a project, creates a new project in Zendao or adds a requirement development task to an existing project, and assigns it to the responsible PM;
b) After the pm receives the task, create a plan in ZenTao, such as "v1.0.0 development", then add all the requirements in the plan, update the working hours of the requirements after completing the requirements review and assign the requirements to the technical manager;
c) The technical manager will then assign the corresponding requirements to the corresponding developers, and the developers will assign the requirements to the test after the development is completed;
d) If bugs are found during testing and product testing, report bugs in ZenTao’s testing section and submit the bugs to the corresponding developers. After the developers have dealt with them, they will assign the bugs back to the test. If there is no problem with the testers’ retesting then close the bug ticket;
e) After the testers have completed the test, the PM will be accepted for acceptance, and after the acceptance is completed, it will enter the process to be released;
1.3 Publishing Process:
a) The development environment has the automatic release tool so the developers can merge the code to the local branch for release;
b) The test environment is merged and released by the OP after receiving the requirement from the developer. The format of the requirement is following the format of the publishing content;
c) For the release of the official environment, the project manager and the technical manager need to coordinate and arrange the release time and personnel. The OP will collect all the information about the version release, and send an email to notify all the technical personnel. After the release is completed, the product will be checked and accepted by PM and send a confirmation message to the communication group when it is completed;
d) The content that needs to be collected before release includes the release product name, environment, version number, release time, code git branch/tag, online function description, database file, image resource file, etc. Some content can be reduced according to the specific release situation;
e) Format of Publishing Content:
Products: XXX products
Environment: test server/official server
Requirement version: v1.0.0
Publish Time: 2022.01.01 3:00 pm
Estimated Duration: 1 hour
Backend Code Branch: prod tag:v1.0.0
Front-end Code Branch: prod tag:v1.0.0
Database File: see the attachment
Image Resource: path: xxx/xxxx.png, see the attachment for the resource
Description: add xxx function, optimize xxxx;
# 4. Team Culture
Team culture can improve team cohesion and tacit understanding of cooperation, and make the team more cohesive, thereby better improving the team’s work efficiency and promoting the team’s technology accumulation. Specifically, such as setting up weekly technology sharing meetings, the company’s knowledge base, learning funds, team building activities, etc. to build team culture, the focus of team culture is in the following aspects:
a) Efficiency First: Efficiency comes first in the work of small and medium-sized teams. If there is a process that affects efficiency, it needs to be improved. Do not copy the rules and regulations of large enterprises;
b) Focus on Communication: any work conflict can be resolved in communication, and communication can avoid work problems caused by misunderstanding;
c) Continuous Learning: Everyone maintains continuous learning, which can not only bring new vitality and knowledge to the team but also improve their professional ability;
d) Maintain quality: ensure the efficiency of working hours and the quality of work, which is responsible for your work and the team;