This curriculum spans the breadth of a multi-workshop technical onboarding program for new engineering leads, covering the sequence of decisions and trade-offs involved in building and maintaining a production-grade application across its lifecycle.
Module 1: Defining Application Scope and Requirements
- Selecting between user story mapping and use case modeling based on stakeholder availability and domain complexity
- Deciding whether to formalize non-functional requirements (e.g., latency, throughput) during initial scoping or defer to architecture review
- Resolving conflicting inputs from business units by implementing requirement prioritization frameworks such as MoSCoW or Kano analysis
- Choosing between monolithic and modular requirement documentation based on team size and release cadence
- Integrating compliance constraints (e.g., GDPR, HIPAA) into requirement specifications before development initiation
- Establishing traceability matrices to link requirements to test cases and code commits for audit readiness
Module 2: Architecture Design and Technology Selection
- Evaluating the trade-offs between microservices and modular monoliths based on team maturity and deployment infrastructure
- Selecting a persistence strategy (SQL vs. NoSQL) based on data access patterns and consistency requirements
- Deciding whether to adopt service mesh technology based on inter-service communication complexity and observability needs
- Choosing between cloud-native managed services and self-hosted infrastructure for core components like messaging and caching
- Implementing API versioning strategies (URL, header, content-type) to support backward compatibility during evolution
- Documenting architecture decisions using ADRs (Architecture Decision Records) and maintaining them in version control
Module 3: Development Environment and Toolchain Setup
- Configuring IDE standards and enforcing them via editorconfig and pre-commit hooks across distributed teams
- Selecting between centralized and decentralized version control workflows (e.g., trunk-based vs. Gitflow)
- Integrating static code analysis tools (e.g., SonarQube, ESLint) into CI pipelines with defined quality gates
- Managing secrets in development environments using dedicated tools (e.g., HashiCorp Vault, Doppler) instead of environment variables
- Standardizing container images using base image policies and vulnerability scanning in CI
- Establishing local development parity with production through container orchestration (e.g., Docker Compose, Kind)
Module 4: Agile Execution and Iterative Delivery
- Adjusting sprint length based on feedback cycles from stakeholders and deployment frequency
- Implementing feature toggles to decouple deployment from release, enabling controlled rollouts and A/B testing
- Managing technical debt by allocating sprint capacity and tracking it in the product backlog
- Conducting effective sprint retrospectives with actionable outcomes and follow-up tracking
- Coordinating cross-team dependencies using integration points and shared roadmaps in scaled Agile frameworks
- Enforcing Definition of Done (DoD) criteria across teams to ensure consistent delivery quality
Module 5: Testing Strategy and Quality Assurance
- Allocating test automation coverage across unit, integration, and end-to-end layers based on risk and ROI
- Selecting test runners and frameworks (e.g., Jest, PyTest, Cypress) based on language ecosystem and team expertise
- Managing test data setup and teardown in CI using synthetic data generation or anonymized production snapshots
- Implementing contract testing for microservices to prevent breaking changes in APIs
- Running performance tests in staging environments that mirror production topology and load
- Integrating accessibility testing into the UI test suite using tools like axe or Lighthouse
Module 6: Deployment Automation and Release Management
- Designing CI/CD pipelines with parallel stages and artifact promotion to reduce feedback time
- Choosing between blue-green and canary deployments based on rollback risk and monitoring capabilities
- Managing configuration across environments using externalized configuration stores (e.g., Spring Cloud Config, AWS AppConfig)
- Implementing immutable infrastructure practices to prevent configuration drift in production
- Enforcing deployment windows and approval gates for regulated environments
- Automating rollback procedures with health check validation and monitoring alert integration
Module 7: Monitoring, Observability, and Incident Response
- Instrumenting applications with structured logging, metrics, and distributed tracing using OpenTelemetry standards
- Configuring alert thresholds based on SLOs and error budgets to reduce alert fatigue
- Correlating logs, metrics, and traces using unique request IDs across service boundaries
- Establishing on-call rotations with escalation policies and post-incident review processes
- Conducting blameless postmortems and tracking remediation actions to closure
- Managing log retention and storage costs by tiering data across hot and cold storage based on access patterns
Module 8: Application Maintenance and Technical Governance
- Defining ownership and support models for long-lived applications using RACI matrices
- Scheduling and executing dependency updates with automated vulnerability scanning and regression testing
- Decommissioning legacy features and services with proper communication and data archiving plans
- Enforcing coding standards through automated linting and periodic architecture compliance reviews
- Conducting technical health assessments using metrics such as code churn, bug density, and deployment failure rate
- Managing technology obsolescence by maintaining a roadmap for framework and library upgrades