Skip to main content

Engineering Baseline

System Architecture & Design

Master Solution/Architecture: There should be an agreed and documented master solution design/architecture that the team can refer to.

Documentation and governance: We need agreed documentation artefacts and tooling to capture the nuances of system architecture and design e.g. ADRs, Decision Logs, Technical Docs, etc.

Security Practices: The system architecture and design includes security considerations using a combination of tools and services to protect against vulnerabilities.

Performance Monitoring and Logging: The system design and architecture considers techniques and tooling for real-time monitoring and logging, to track application performance and troubleshoot issues efficiently.

Software Engineering

Software Design Principles: The team is following established software design principles (e.g. SOLID, KISS, etc) and patterns (e.g. dependency injection, observer, etc.)

Version Control: All code is managed in a version control system with an agreed repository structure. Code Review Process: Improves quality and adherence to best practices through systematic peer reviews, promoting knowledge sharing as well. Consistency of style and use matters.

Test Strategy: The team has a clear testing strategy, including unit, integration, and system tests, to improve software quality and help reduce bugs.

Documentation: Code is comprehensively documented with user guides where possible, facilitating maintainability and new member onboarding.

Documentation

Client documentation: The team has Project/Program/Technical documentation that is clear and complete to an acceptable level.

Internal documentation: The team has internal Mesh-AI documentation that is clear and complete to an acceptable level.

Tooling: There is an agreed set of tools both for internal (Mesh AI) and client documentation.

CI/CD & Automation

Version Control best practices: The team has in place solid version control tooling and practices e.g. git, branch protection/policies, merge on PR, trunk-based branching, etc.

Tooling: A CI/CD & Automation tool set has been agreed with the client.

Release/Deployment process automation: There is a defined and implemented release/deployment process that takes into account versioning, rollback/fix forward strategies, monitoring and alerting, deployment pipelines, etc.

Platform

Infrastructure management: There is a define toolset and approach to manage infrastructure, e.g. IaC, IAM, development environments, etc.

Monitoring and Alerting: There are sensible defaults in place for monitoring and alerting e.g. cloud native services, cost/budget monitoring, alert metrics and rules, etc.

Governance: There are clear governance processes and ways of working in place to manage the platform components e.g. CAB, ARB, Design Authority, etc.

Networking and Security: There are sensible defaults in place for implementation and processes e.g. VPC, Private Subnets, Network Access Controls, DDoS protection, RBAC, IAM, data encryption, etc.

Testing and Validation: There is an agreed approach to validate and test the deployment and management of the infrastructure underpinning the platform.

Path To Production

Right Skills for the Tasks: Ensures the team has the necessary technical skills and domain knowledge to successfully complete the engagement.

Software Development strategies: We have agreed and documented strategies for development environments, software testing, environment promotions, code versioning, etc.

Software Deployment strategies: We have agreed and documented strategies for code versioning, automated code build, test, and deployment, IaC, etc.

Code Review Process: We have an agreed mechanism to improve quality and adherence to sensible defaults through systematic peer reviews, promoting knowledge sharing as well. Consistency of style and use matters.

Approach to technical debt: Team understands when they are incurring technical debt and have a suitable approach to tracking it and refactoring.

Quality assurance: We need an agreed and documented feature acceptance process including testing and validation implemented at all levels (unit, functional, system, etc.), as well as UAT test plan and signoff.

SDLC approach: The team has a suitable approach to understanding when work items are done to a suitable standard, including acceptance criteria, definitions of done and user testing.

Cost management and optimisation: There is a clear understanding of the costs incurred by Mesh and the customer to support what we are building. The team is aware of how engineering decisions affect these costs.

Ways of Working

Documented Team Charter: Establishes the team's purpose, objectives, roles and responsibilities, and ways of working to ensure everyone is aligned and committed from the start.

Risk Tracking: A development/technical risk register is available as well as the appropriate process for escalation if necessary.

Continuous Learning and Improvement Process: Promotes a culture of learning and iterative improvement, using retrospectives and feedback loops to refine practices and workflows.

Batch size and appropriate work in progress limits: Ensure that the team is able to release frequently and often, with suitable limits on current work in progress to ensure quality. A transparent and effective system is in place to prioritise, and track progress during the engagement.

Roadmap and Outcomes: The team has a clear view of the engagement roadmap and the outcomes that need to be delivered.