This article outlines the process of independently managing a complete project, from initial demand to successful deployment and maintenance. It's based on the experience of a programmer who took on a comprehensive project to increase their workload and gain more responsibility.
Understanding Project Demand
Identifying the Source of Demand
Every project begins with a need. This demand typically originates from several sources:
-
Sales Teams: They identify market opportunities and customer requests.
-
Internal Requirements: Gaps in existing products or functionalities within the company.
-
User Feedback: Identifying missing or desired features based on user experience.
-
Downstream Companies: New requirements or integrations needed by partners.
Demand Assessment and Project Initiation
Once a demand is identified, a thorough assessment is conducted. If deemed feasible, the project is formally approved and a preliminary timeline is established. After the approval, the project is then assigned to a project lead.
Initial Project Setup and Communication
Key Stakeholders
The project lead needs to connect and communicate with various stakeholders:
-
Client-side/Frontend Team: To understand their needs and constraints.
-
Operation Center Engineers: To handle deployment and infrastructure.
-
Testing Team: For quality assurance and bug identification.
-
Upper Management: For alignment and approvals.
Effective communication with all these parties is crucial for smooth project execution.
Design and Discussion Phase
Defining Scope and Technology
The initial phase involves design and discussion. The project lead has to start research to determine the technologies required, how to use them, and if they can be completed with these technologies. The scope of the design should be broad initially, focusing on the overall architecture. Specific details can be refined later. Research is essential to validate the chosen technologies and approaches.
Customer-Side Considerations and Service Structure
The project lead's primary responsibility is to ensure the team can work effectively. This requires documenting the customer-side requirements and building a robust service structure.
Technical Infrastructure Design
This involves designing the underlying technical infrastructure to support the project:
-
Third-Party Interface Integration: Defining how the project interacts with external services (e.g., HTTP requests using standard methods, gRPC implementation).
-
Database Connectivity: Choosing the appropriate database access method (e.g., JDBC, ORM framework).
-
API Design: Defining external APIs (e.g., REST APIs) and their implementation.
-
Service Container: Selecting the appropriate service container (e.g., NETDI, Tomcat).
Standardizing Project Elements
Furthermore, standards for error handling, error codes, filters, and interceptors must be established. A well-defined technical structure allows the development team to focus on implementing the core business logic.
API Functionality and Logic
Confirming the purpose and parameters of each API is vital. It's crucial to discuss the specific logic implemented by different teams to avoid conflicts and redundancies later in the development process.
Ensuring Consistent Understanding
Clear and consistent understanding of business requirements is also a MUST. Any misunderstanding can cause many holes and problems in the later use.
Database Design
Database design is based on the information gathered from requirements to project lead phase.
Development Phase
Code Structure and Abstraction
The development phase should focus on building a well-structured and abstract codebase, in adherence to the client's design and function design.
Primitive Methods
The methods should be primitive to avoid too many coincidences and fixed parameters.
Code Expansion
Too many coincidences and fixed parameters can greatly affect the project's expansion and function upgrade.
Testing and Alignment
Regular testing and alignment with other team members are necessary to prevent development issues. Communicate with upper management to avoid major problems.
Deployment in Test Environment
Deployment Considerations
This deployment is not a formal deployment. A set of test environments needs to be built for connection with others. The process involves deploying the code in a test environment for initial integration and validation. While deployment may be handled by other teams, the project lead needs to ensure the configuration is correct.
Key Configuration Steps
-
NGX Configuration: Verify port settings and URL unification.
-
Installation Script: Understand the installation process to ensure all necessary components are installed and configured correctly.
-
Environment Configuration (Compose file): Validate the parameters in the Compose file.
Configuration Management
Proper configuration management is essential. Determine which configurations should be managed by the development team and which should be handled by operations (e.g., IP addresses, ports).
Network Topology
Understand the relationship between components, the network, and the physical deployment architecture. Ensure components are deployed together or separately as needed.
Project Startup Parameters
Establish the correct startup parameters and configuration settings.
Connection
During the connection process, many detailed changes needs to be made.
Review and Formal Testing
Review and Reporting
After completing the chain connection, review results with superiors and key stakeholders for feedback and approval.
Formal Testing and Performance Testing
Following review, conduct formal testing, including performance testing in a resource-intensive environment.
Going Live and Maintenance
Successful Deployment
Once all tests are passed, the project is deployed to the production environment.
DevOps and Maintenance
Ongoing maintenance follows a DevOps cycle: New requirements are written, deployed, and tested iteratively.
Conclusion
By following these steps, one can successfully take ownership of a complete project, navigating the challenges and responsibilities at each stage, from initial demand to ongoing maintenance.