Basic Needs
What does any team, regardless of age and stage, need to build an application and deploy changes to it? From People and purpose to Computing and a Backlog, all software projects need fundamental things in place for the team to succeed. The more the group meets these needs in a self-service experience, the more successful the outcome.
People & Purpose 🔗
There are enough team members to meet the ownership and delivery expectations on them. People have defined roles and responsibilities, and the team has a shared understanding of the project's vision and objectives.
💎 Benefit: The project's vision and objectives are clearly communicated, creating a sense of shared purpose, motivation and cohesion among team members and leadership.
📶 Signal(s):
- I feel connected to the purpose and goals of the project I am working on.
- I have a clear understanding of my role, responsibilities and my daily tasks.
- All decisions have a clear owner and are made in a timely manner.
- There are enough team members to meet the ownership and delivery expectations on them.
Technical Capability 🔗
The team has the technical skills and confidence to design, build and support robust systems and align well with the requirements of the project. AI-assisted tools strengthen this capability by providing contextual support across code, domain knowledge and legacy systems, helping engineers ramp up, solve problems and continuously learn.
💎 Benefit: Increased independence and confidence. A solid understanding of the technologies, frameworks and tools that are utilised, allowing them to design and develop robust solutions efficiently.
📶 Signal(s):
- Team members can confidently work across the codebase and domain.
- AI tools are part of daily workflows, supporting coding, testing and debugging.
- Engineers know how to and regularly use AI to accelerate learning and improve decision-making.
- Knowledge is shared through pairing, code review and tool-assisted discovery.
- The team solves complex problems efficiently, even in unfamiliar systems.
Production Environments 🔗
Trusted combined state of configuration, deployed artefact(s), infrastructure, runtimes, dependencies and access control.
💎 Benefit: Production Environment ensures a seamless user experience and customer satisfaction by providing a reliable software deployment platform.
📶 Signal(s):
- Optimised and managed for high performance, scalability and availability.
- The team can quickly access production log files and data to assist with troubleshooting issues.
- All customers are running production versions less than six months old or within 10 releases.
Environment Management 🔗
Ability to test and debug changes in a prod-like environment, infrastructure-as-code, data sets/data generation, dependency management and configuration, mocks, data generation, short-lived environments.
💎 Benefit: Real dependencies, similar/same technically to production. Composable environments. Setting up and managing different environments for my project is efficient and cheap.
📶 Signal(s):
- An environment for every change.
Data & Storage 🔗
Familiar, fit-for-purpose data storage solutions are available to suit the organisation's obligations.
💎 Benefit: Opinionated self-service data solutions are available for the teams across SQL, NoSQL, Blob/Bucket and Caching. Guidance and defaults are in place for performance, reliability and data durability.
📶 Signal(s):
- The mean-time-to-restore is known for its primary services.
- Sharding or partitioning policies support the scale and regional context of the services.
- The team can independently manage Data migrations and schema changes.
- There is up-to-date documentation of schemas and associated privacy or security classifications.
Permissions & Identity 🔗
The ability to create and manage accounts, credentials, roles and permissions for end users of the product or service the team is responsible for.
💎 Benefit: Support for social logins, single sign-on, account verification and suspension. Multi-factor authentication flows.
📶 Signal(s):
- The ability to script user generation or resets to help with integration test automation.
Local Development & IDE 🔗
Highly automated opinionated setup process gives developers a consistent baseline setup to support build, test and run activities for the primary services they work on. Service-specific local setup (e.g. install dependencies, mocks, test data). Correctly integrated AI in editors provides real-time code suggestions, and style guidance, improving development learning, code quality and consistency.
💎 Benefit: Provides a smooth and productive coding experience, with the necessary tools, libraries, frameworks and associated licenses are readily available.
📶 Signal(s):
- IDE is setup consistent for new team members.
- Agreed coding conventions are codified in 'dot files' at machine or repository level.
- AI-assisted tools in the IDE are configured with codebase context rules
- AI routinely used to explain and suggest code, detect issues and enforce style and architecture standards.
Logging & Monitoring 🔗
Ability to debug, troubleshoot and monitor normal and abnormal system behaviour. Curated patterns and tooling for the collection, storage, querying and aggregation of system data
💎 Benefit: High level awareness of production health and adequate tooling and instrumentation to investigate issues.
📶 Signal(s):
- Dashboards are in place for core signals such as latency, errors, throughput and saturation.
- Structured logs are implemented for all components according to a unified standard.
- We have basic alerting in place for latency and error rates.
Operating Rhythms 🔗
The routines used by the team to manage delivery and operations. Planning on a daily, weekly and quarterly basis. Open communication for timely updates, issue resolution, and knowledge sharing.
💎 Benefit: Regular team meetings, stand-ups and planning sessions foster a shared understanding of priorities and facilitate the coordination of tasks. Achievements are celebrated, learnings are sought and the team is empowered to balance capacity investment across new feature delivery, maintaining quality of service and improving efficiencies. There is Organisation level visibility on past and planned investments across new feature delivery, maintaining quality of service and improving productivity.
📶 Signal(s):
- We have familiar and effective ceremonies for planning and reviewing work and practices.
- There is clear visibility on past and planned investments in features, service quality and productivity.
Work Backlog 🔗
With a well-maintained backlog, the project team can effectively plan, estimate and track progress, ensuring a steady flow of value delivery.
💎 Benefit: Prioritisation reflects a balance of business value, customer value, team productivity and service performance.
📶 Signal(s):
- The work backlog for my project is well-organised and prioritised.
- The backlog items are appropriately sized, ensuring efficient planning and task allocation.
Version Control 🔗
New repositories, teams and projects and permissions are created in a consistent way.
💎 Benefit: Clear guidance on branching strategies implemented at the organisation level. It is easy to track changes and support concurrent development and rollback changes. Clear association between repository, team and any deployed assets and overall project status.
📶 Signal(s):
- Guidance and examples exist for creating internal, partner and open source repositories.
- The removal of permissions for ex employees and contractors is automated.
- Branch protection rules are applied across repositories to ensure code quality, security and traceability.
Compute 🔗
The allocated computational resources sufficiently meet the demands of my project, ensuring optimal performance and scalability without hindering productivity.
💎 Benefit: Self-service compute solutions available for the teams across VMs, containers, FaaS and edge workloads with opinionated sensible defaults. Clear options to support minimum capacity, elastic scaling, burst scaling and serverless. Guidance and defaults in place for performance, reliability and availability of compute platforms.
📶 Signal(s):
- Running instances and containers are regularly updated to maintain patch compliance.
- Actively avoid stateful dependencies.
- Minimum OS and runtime versions are actively maintained to prevent unsupported dependencies.
Cloud Accounts & IO 🔗
Fast automated creation and deletion of cloud accounts with consistent and compliant Identity and Access Management inherited from a centralised control pane. Accounts created with consistent virtual networks for deployed assets and across accounts.
💎 Benefit: Higher team independence and compliance management.
📶 Signal(s):
- Common resource types are created in highly compliant configuration.
- Accounts created with consistent virtual networks for deployed assets and across accounts.
Gateways & Web Delivery 🔗
The api gateways and web delivery mechanisms (e.g. CDNs) employed in my project ensure efficient and reliable communication between various services for internal and external traffic.
💎 Benefit: These gateways provide a unified entry point, handle routing and load balancing, and ensure secure and optimised data transmission. With robust web delivery mechanisms, the project team can achieve high availability, scalability and fault tolerance, delivering a seamless user experience and enabling effective integration with external systems.
📶 Signal(s):
- Team is familiar with patterns, examples and tools for API gateways, content delivery and caching.