Sustainability GitHub Repository

What does the team need to grow and mature on a yearly level?
Technical practices have made continuous deployment to production a norm. The engineering team focus more on customer product metrics than on Engineering constraints. Experimentation techniques are embedded for both technical de-risking and customer behaviour hypotheses. The team enjoys a diversity of Engineering talent and experience.

Continuous Deployment ๐Ÿ”—

Formally decoupling deployment from (Customer) release activity. Building on continuous Integration, all successful builds are automatically promoted and deployed to production. The team is likely practicing Trunk-based development (TBD) or non-blocking pull requests where Engineers work on a single branch as much as possible to encourage continuous integration. Pushing changes directly to trunk or main is made safe with mature TDD and quality engineering practices. Changes are implemented with the intention that it will be deployed directly to production.

๐Ÿ’Ž Benefit: Maximum throughput of changes while verifiably maintaining quality of changes. Very fast feedback loops. High throughput of small lower-risk changes.

๐Ÿ“ถ Signal(s): High degree of release controls (e.g. feature flags, experiments) ensure it's safe to deploy partially implemented features. High maturity alerting, quality of service, and incident management to detect and revert problem changes.

Product Metrics ๐Ÿ”—

The team effectively captures and analyzes product performance metrics, enabling data-driven decision-making and continuous product improvement.

๐Ÿ’Ž Benefit: The team can independently form and test a new hypothesis using standard user event capture, aggregation and visualization tools.

๐Ÿ“ถ Signal(s): User events and flows are well-documented and accessible to all teams. Event processing filters activity from automated testing.

Experimentation ๐Ÿ”—

The discipline of experimentation to support hypothesis-driven development and technical risk management (e.g. migrations, performance optimisations, new features). The team conducts controlled experiments, A/B tests, and user research to validate assumptions, gather feedback, and inform decision-making.

๐Ÿ’Ž Benefit: Actively promotes a culture of experimentation to support both hypothesis-driven development and technical risk management.

๐Ÿ“ถ Signal(s): The team can run multiple experiments in parallel. Significant system changes can be safely tested in production.

Career Growth ๐Ÿ”—

My product team provides ample opportunities for career growth and professional development. There is a mix of junior and senior talent on the team. Everyday pairing and coaching on specialised areas avoid key person dependencies. The team and company encourage continuous learning, supports skill enhancement, and provides access to training resources and mentorship programs. Regular performance evaluations and constructive feedback help identify areas for improvement and define career paths.

๐Ÿ’Ž Benefit: Everyday pairing and coaching on specialised areas avoid key person dependencies. Regular performance evaluations and constructive feedback help identify areas for improvement and define career paths.

๐Ÿ“ถ Signal(s): There is a mix of junior and senior talent on the team. My team provides ample opportunities for career growth and professional development.

"url": "/managed_work/#2-security-controls" }, { "id": 21, "title": "Alerting", "body": "

Alerting - The team has implemented an intelligent alerting mechanism that monitors key metrics in agreed thresholds across request rates, errors and latency. Scheduled tests regularly check the primary service flows or user actions for availability. When detecting abnormal system behaviour, the team is alerted before the customer or stakeholder reports an issue.

\n", "url": "/managed_work/#2-alerting" }, { "id": 22, "title": "Deployment Solutions", "body": "

Deployment Solutions - For each component type the team supports, there is a standard workflow to build, test, publish artefacts and deploy new versions. Build pipelines are highly automated, including promoting successful builds across environments. The deployment solution also orchestrates supporting automation for infrastructure-as-code (IaC), configuration and secrets management. Central teams publish and maintain common build steps inherited across all builds (e. g. , publishing, tagging, static analysis).

\n", "url": "/managed_work/#2-deployment-solutions" }, { "id": 23, "title": "Artifact Management", "body": "

Artifact Management - There is a standard solution for hosting, managing and distributing binaries and artefacts across the organisation. Artefacts include versioned binaries, library feeds (e. g. npm, NuGet, Maven), container images and non-sensitive configuration files. The solution supports high availability and durability. The team publishes logs and test artefacts according to their audit requirements.

\n", "url": "/managed_work/#2-artifact-management" }, { "id": 24, "title": "Infrastructure as Code", "body": "

Infrastructure as Code - Infrastructure configurations are defined in code, enabling version control, reproducibility, and automated provisioning. The team manages workload infrastructure creation, configuration, maintenance and deletion through source code change control.

\n", "url": "/managed_work/#2-infrastructure-as-code" }, { "id": 25, "title": "Delivery Metrics", "body": "

Delivery Metrics - Key metrics, such as throughput (lead time, cycle time, rework, wait time), and operational performance (e. g. availability, latency, error rate, incidents) are regularly reviewed and used. These metrics provide insights into delivery efficiency, predictability, and capacity to deliver value. The team can and does identify bottlenecks by analysing delivery metrics, optimising processes, and continuously making data-driven decisions to improve delivery performance.

\n", "url": "/managed_work/#2-delivery-metrics" }, { "id": 26, "title": "Effective Ownership", "body": "Effective Ownership - What does the team need to effectively own and operate services already in production, regardless of new development work on those services?
\nThe team has codified the creation of new services to their agreed standards. Compliance controls are managed and verifiable through change control. Quality of service is monitored, reviewed, and managed proactively.\n", "url": "/effective_ownership/" }, { "id": 27, "title": "Templates & Golden Paths", "body": "

Templates & Golden Paths - A comprehensive set of helpers, templates and accelerators that expedite development and ensure consistent implementation of best practices across our common component types. Component / Project templates implement blueprints in preferred architectures, coding conventions and engineering standards. Accelerators combine templates into workflows to scaffold, build, test and deploy new services in under an hour.

\n", "url": "/effective_ownership/#3-helpers-templates-accelerators" }, { "id": 28, "title": "Continuous Integration", "body": "

Continuous Integration - All code changes are continually merged to the main branch (trunk/main) several times a day. Test-driven development (TDD) and behavior-driven development (BDD) practices are diligently followed by team members. TDD ensures that tests are written before the code, promoting a thorough understanding of requirements and facilitating comprehensive test coverage. BDD focuses on defining system behavior through scenarios and specifications, improving collaboration between stakeholders and developers. The team may also practice Trunk-based development (TBD) or non-blocking pull requests where Engineers work on a single branch as much as possible to encourage continuous integration. Pushing changes directly to trunk or main is made safe with mature TDD and quality engineering practices.

\n", "url": "/effective_ownership/#3-continuous-integration" }, { "id": 29, "title": "Compliance as Code", "body": "

Compliance as Code - My team incorporates compliance requirements as code, automating compliance checks and ensuring adherence to regulatory standards. Compliance rules and checks are codified, allowing for automated enforcement during the development and deployment process. By treating compliance as code, the team can efficiently implement and maintain compliance controls, reducing human error, enhancing auditability, and minimising the time and effort required to maintain regulatory compliance.

\n", "url": "/effective_ownership/#3-compliance-as-code" }, { "id": 30, "title": "Incident Mgmt", "body": "

Incident Mgmt - The incident management process on my product is robust and well-structured, enabling swift response and minimising the impact of incidents. The team follows established incident response procedures, including incident identification, communication, prioritisation, and resolution. Clear roles and responsibilities are defined, ensuring effective coordination and collaboration during incident handling.

\n", "url": "/effective_ownership/#3-incident-mgmt" }, { "id": 31, "title": "SLIs, SLOs", "body": "

SLIs, SLOs - There are clear service level objectives (SLOs) and service level indicators (SLIs) that help measure performance, ensuring the product consistently meets the defined quality and reliability standards. These SLOs and SLIs define synthetic tests of primary workflows and key metrics, such as response time, availability, and error rates.

\n", "url": "/effective_ownership/#3-quality-of-service" }, { "id": 32, "title": "APIs & SDKs", "body": "

APIs & SDKs - The team provides well-designed APIs and software development kits (SDKs) that facilitate integration and extensibility. The APIs offer clear documentation, well-defined contracts, and consistent interfaces, enabling seamless interaction with the productโ€™s services and functionalities. The SDKs provide comprehensive tooling, libraries, and code examples, simplifying the development process for external and internal consumers. Internal publishers support fake or mock implementations of their APIs to help consuming teams automate testing.

\n", "url": "/effective_ownership/#3-apis-sdks" }, { "id": 33, "title": "Eventing", "body": "

Eventing - The ability to coordinate functionality across distributed systems and services using events. Common conventions to publish system and user events for analytics and observability.

\n", "url": "/effective_ownership/#3-eventing" }, { "id": 34, "title": "Static Analysis", "body": "

Static Analysis - The team integrates static analysis tools that effectively identify code issues, potential vulnerabilities, and maintain code quality standards. These tools automatically analyse code, check for common programming errors, and enforce coding conventions. Tools run locally and as part of automated builds to detect and resolve new issues as early as possible. Data on software composition & supply chain is available centrally to manage licensing and security vulnerability risk.

\n", "url": "/effective_ownership/#3-static-analysis" }, { "id": 35, "title": "Sustainability", "body": "Sustainability - What does the team need to grow and mature on a yearly level?
Technical practices have made continuous deployment to production a norm. The engineering team focus more on customer product metrics than on Engineering constraints. Experimentation techniques are embedded for both technical de-risking and customer behaviour hypotheses. The team enjoys a diversity of Engineering talent and experience.\n", "url": "/sustainability/" }, { "id": 36, "title": "Continuous Deployment", "body": "

Continuous Deployment - Formally decoupling deployment from (Customer) release activity. Building on continuous Integration, all successful builds are automatically promoted and deployed to production. The team is likely practicing Trunk-based development (TBD) or non-blocking pull requests where Engineers work on a single branch as much as possible to encourage continuous integration. Pushing changes directly to trunk or main is made safe with mature TDD and quality engineering practices. Changes are implemented with the intention that it will be deployed directly to production.

\n", "url": "/sustainability/#4-continuous-deployment" }, { "id": 37, "title": "Product Metrics", "body": "

Product Metrics - The team effectively captures and analyzes product performance metrics, enabling data-driven decision-making and continuous product improvement.

\n", "url": "/sustainability/#4-product-metrics" }, { "id": 38, "title": "Experimentation", "body": "

Experimentation - The discipline of experimentation to support hypothesis-driven development and technical risk management (e. g. migrations, performance optimisations, new features). The team conducts controlled experiments, A/B tests, and user research to validate assumptions, gather feedback, and inform decision-making.

\n", "url": "/sustainability/#4-experimentation" }, { "id": 39, "title": "Career Growth", "body": "

Career Growth - My product team provides ample opportunities for career growth and professional development. There is a mix of junior and senior talent on the team. Everyday pairing and coaching on specialised areas avoid key person dependencies. The team and company encourage continuous learning, supports skill enhancement, and provides access to training resources and mentorship programs. Regular performance evaluations and constructive feedback help identify areas for improvement and define career paths.

\n", "url": "/sustainability/#4-career-growth" }, { "id": 40, "title": "Flow", "body": "Flow - What does the team need for a thriving innovation culture while enjoying high throughput and Industry leading quality of service?
Maturity here is marked by being able to work productively over long periods while maintaining, if not increasing, customer trust. Governance and controls for security, privacy, cost, and disaster recovery are in place and regularly exercised. Teams have enough space to run multiple experiments in parallel and proactively learn about system behaviour through chaos engineering. Hackathons and Game days foster innovation by quickly acting on ideas discovered.", "url": "/flow/" }, { "id": 41, "title": "Value & Trust, Mastery", "body": "

Value & Trust, Mastery - Fostering a culture of delivering value and building trust, the team prioritises customer needs and consistently delivers reliable outcomes. Simultaneously, they strive for mastery through continuous learning and professional development, ensuring expertise in their respective fields. This combination drives innovation, collaboration, and excellence, exceeding customer expectations and maintaining a competitive edge.

\n", "url": "/flow/#5-value-trust" }, { "id": 42, "title": "Governance & DR", "body": "

Governance & DR - The team enjoys adequate governance controls and disaster recovery (DR) measures for their services and operations. Wherever possible, these controls are automated into the Engineering activities. The team proactively tests their DR procedures (e. g. , backup, recovery, replication and failover) to meet their business continuity commitments.

\n", "url": "/flow/#5-governance" }, { "id": 43, "title": "Hypothesis Driven", "body": "

Hypothesis Driven - The team formulates clear hypotheses, defines success criteria, and designs experiments to gather data and insights. By continuously testing and refining ideas, the team can make informed decisions, prioritise initiatives, and drive innovation, creating more customer value.

\n", "url": "/flow/#5-hypothesis-driven" }, { "id": 44, "title": "Chaos / Game Days", "body": "

Chaos / Game Days - By regularly subjecting the product to controlled chaos, the team can strengthen the systemโ€™s robustness, improve incident response capabilities, and enhance overall system reliability.

\n", "url": "/flow/#5-chaos-engineering" }, { "id": 45, "title": "Home", "body": "Home page about this project", "url": "/" } ]; var idx = lunr(function () { this.ref('id') this.field('title') this.field('body') documents.forEach(function (doc) { this.add(doc) }, this) }); function lunr_search(term) { document.getElementById('lunrsearchresults').innerHTML = ''; if(term) { document.getElementById('lunrsearchresults').innerHTML = "

Search results for '" + term + "'

" + document.getElementById('lunrsearchresults').innerHTML; // Append wildcard to the search term for partial matching var searchTerm = term + '*'; var results = idx.search(searchTerm); if(results.length>0){ for (var i = 0; i < results.length; i++) { var ref = results[i]['ref']; var url = documents[ref]['url']; var title = documents[ref]['title']; var body = documents[ref]['body'].substring(0,160)+'...'; document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML + "
  • " + title + "
    "+ body +"
    "+ url +"
  • "; } } else { document.querySelectorAll('#lunrsearchresults ul')[0].innerHTML = "
  • No results found...
  • "; } } return false; }

    Sustainability GitHub Repository

    What does the team need to grow and mature on a yearly level?
    Technical practices have made continuous deployment to production a norm. The engineering team focus more on customer product metrics than on Engineering constraints. Experimentation techniques are embedded for both technical de-risking and customer behaviour hypotheses. The team enjoys a diversity of Engineering talent and experience.

    Continuous Deployment ๐Ÿ”—

    Formally decoupling deployment from (Customer) release activity. Building on continuous Integration, all successful builds are automatically promoted and deployed to production. The team is likely practicing Trunk-based development (TBD) or non-blocking pull requests where Engineers work on a single branch as much as possible to encourage continuous integration. Pushing changes directly to trunk or main is made safe with mature TDD and quality engineering practices. Changes are implemented with the intention that it will be deployed directly to production.

    ๐Ÿ’Ž Benefit: Maximum throughput of changes while verifiably maintaining quality of changes. Very fast feedback loops. High throughput of small lower-risk changes.

    ๐Ÿ“ถ Signal(s): High degree of release controls (e.g. feature flags, experiments) ensure it's safe to deploy partially implemented features. High maturity alerting, quality of service, and incident management to detect and revert problem changes.

    Product Metrics ๐Ÿ”—

    The team effectively captures and analyzes product performance metrics, enabling data-driven decision-making and continuous product improvement.

    ๐Ÿ’Ž Benefit: The team can independently form and test a new hypothesis using standard user event capture, aggregation and visualization tools.

    ๐Ÿ“ถ Signal(s): User events and flows are well-documented and accessible to all teams. Event processing filters activity from automated testing.

    Experimentation ๐Ÿ”—

    The discipline of experimentation to support hypothesis-driven development and technical risk management (e.g. migrations, performance optimisations, new features). The team conducts controlled experiments, A/B tests, and user research to validate assumptions, gather feedback, and inform decision-making.

    ๐Ÿ’Ž Benefit: Actively promotes a culture of experimentation to support both hypothesis-driven development and technical risk management.

    ๐Ÿ“ถ Signal(s): The team can run multiple experiments in parallel. Significant system changes can be safely tested in production.

    Career Growth ๐Ÿ”—

    My product team provides ample opportunities for career growth and professional development. There is a mix of junior and senior talent on the team. Everyday pairing and coaching on specialised areas avoid key person dependencies. The team and company encourage continuous learning, supports skill enhancement, and provides access to training resources and mentorship programs. Regular performance evaluations and constructive feedback help identify areas for improvement and define career paths.

    ๐Ÿ’Ž Benefit: Everyday pairing and coaching on specialised areas avoid key person dependencies. Regular performance evaluations and constructive feedback help identify areas for improvement and define career paths.

    ๐Ÿ“ถ Signal(s): There is a mix of junior and senior talent on the team. My team provides ample opportunities for career growth and professional development.