Le code s’accélère. L’ingénierie doit suivre : bienvenue dans l’Usine à IA

Par Loic Baconnier.

Avec l’IA, le code s’écrit vite. Une fonctionnalité prend forme en quelques échanges, un agent explore un dépôt, propose une modification et lance des tests. Mais cette vitesse fait apparaître une autre difficulté : savoir précisément quoi construire, comment le vérifier et dans quelles conditions le mettre en production.

Le goulot d’étranglement se déplace vers la planification, la spécification, les tests et la gouvernance. C’est le point de départ de ma masterclass « L’Usine à IA & le SDLC IA-Native ». Cette vidéo introduit les principes de l’Usine à IA. La masterclass les approfondit ensuite en quatre grandes parties.

Explorer la masterclass L’Usine à IA : voir la playlist sur YouTube.

Produire du code ne suffit pas à produire un logiciel

Un agent peut générer une implémentation convaincante à partir d’une demande ambiguë. Il peut aussi réussir des tests qui ne couvrent pas le besoin réel. Dans les deux cas, l’activité est visible : des fichiers changent, des commandes passent, une réponse annonce que le travail est terminé.

La question reste pourtant ouverte : le résultat répond-il au problème de départ ?

Accélérer la construction rend cette question plus pressante. Une mauvaise hypothèse peut désormais se transformer très rapidement en une quantité importante de code. Le temps gagné à écrire risque alors d’être consommé à relire, corriger ou reconstruire.

La vitesse de génération devient utile lorsque l’équipe sait reconnaître un résultat acceptable.

L’Usine à IA désigne ici une organisation du travail : une intention explicite, des artefacts partagés, des agents encadrés et des preuves adaptées au résultat attendu. Chaque étape doit préparer la suivante et conserver assez de contexte pour que les décisions restent compréhensibles.

Quatre parties pour relier intention, exécution et vérification

1. Un workflow en six phases et une chaîne d’artefacts

La première partie suit six phases : planification, design et spécifications, construction, tests, déploiement, puis maintenance. Elle s’appuie sur une chaîne simple : intent.md → spec.md → plan.md. Le premier document clarifie le problème et l’intention ; le deuxième décrit les comportements attendus et les contraintes, notamment de sécurité ; le troisième organise l’implémentation. Les tests apportent ensuite des preuves, le déploiement passe par les validations nécessaires et les incidents de maintenance alimentent le cycle suivant. L’intérêt de ces fichiers tient à leur continuité : conserver le sens de la demande jusqu’au logiciel livré.

2. Une architecture et une gouvernance pour les agents

La deuxième partie examine le cadre dans lequel les agents travaillent. Une architecture distinguant présentation, services et persistance rend les responsabilités plus lisibles. La mémoire d’équipe conserve les conventions ; les skills apportent des compétences ciblées ; les hooks peuvent faire respecter des règles déterministes ; les fiches ADR gardent la justification des décisions d’architecture. L’ingénieur-architecte organise cet environnement, délimite l’autonomie et conserve la responsabilité des arbitrages. Une consigne écrite et un contrôle technique n’offrent pas les mêmes garanties : leur rôle doit être explicite.

3. Des objectifs et des évaluations pour guider l’exécution

La troisième partie passe du contexte fourni à l’agent à la définition du résultat recherché. Donner davantage d’informations ne suffit pas si l’état final reste vague. L’ingénierie par les objectifs précise ce qui doit être obtenu ; les évaluations permettent de mesurer l’écart. Des suites d’épreuves, des benchmarks métier et des métriques alimentent alors les boucles de correction. Leur valeur dépend de leur représentativité : un indicateur facile à améliorer peut rester éloigné du besoin utilisateur. Il faut donc définir les critères de réussite, les limites de l’itération et les situations qui nécessitent une décision humaine.

4. Une architecture multi-modèles et une économie mesurée

La quatrième partie aborde le choix des modèles selon les tâches : cadrage, planification, production de code ou relecture. Elle explore les modèles stratégiques, locaux et spécialisés, la validation croisée, le routage, le cache de contexte et les architectures hybrides. L’arbitrage porte sur la qualité, le coût, la latence et les contraintes d’hébergement. Multiplier les modèles ajoute aussi de la coordination. Le bon assemblage doit donc être évalué sur le travail réellement accepté, en tenant compte des reprises et de l’exploitation, plutôt que sur le seul prix d’un appel.

Ce qui change dans le travail de l’équipe

Prenons une demande simple : ajouter un export de données.

Avant de déléguer le développement, plusieurs décisions doivent être prises. Qui peut exporter ? Quels champs sont autorisés ? Quel volume faut-il supporter ? Que se passe-t-il lorsque l’opération échoue ? Comment vérifier que les données sensibles restent protégées ?

Ces questions orientent directement l’implémentation. Elles permettent aussi de construire une vérification utile. Un bouton qui télécharge un fichier constitue une première observation ; un export conforme aux droits, aux données attendues et aux contraintes de volume apporte une preuve beaucoup plus solide.

La chaîne d’artefacts rend ces décisions consultables. L’agent dispose d’un cadre, la personne qui relit comprend les choix et l’équipe peut retrouver pourquoi une solution a été retenue.

Cela demande de la discipline, mais chaque document doit avoir une fonction concrète. Une spécification utile réduit une ambiguïté. Un plan utile rend l’exécution contrôlable. Une évaluation utile détecte un écart qui compte.

Garder un cadre proportionné

Une usine efficace doit aussi savoir s’arrêter. Ajouter des agents, des règles et des revues peut finir par augmenter le travail sans améliorer le résultat.

Pour une correction limitée, quelques critères et les tests existants peuvent suffire. Un changement qui touche aux données, aux droits d’accès ou au déploiement appelle davantage de contrôles. Le niveau de gouvernance doit suivre les conséquences possibles de l’action.

Le même raisonnement s’applique à l’autonomie. Une équipe doit savoir ce que l’agent peut exécuter seul, ce qui exige une validation et quand une incertitude doit être remontée. Ces limites rendent la délégation plus claire pour tous.

Le rôle humain se concentre alors sur des décisions essentielles : choisir le problème, arbitrer les contraintes, juger les preuves et autoriser les étapes engageantes.

Pour qui ?

Cette masterclass s’adresse aux développeurs qui utilisent déjà l’IA et souhaitent mieux structurer leur pratique, ainsi qu’aux tech leads et architectes qui doivent intégrer les agents dans un environnement collectif.

Elle concerne aussi les responsables produit, les équipes qualité et les décideurs techniques. La définition du besoin, les critères d’acceptation et la responsabilité de mise en production traversent plusieurs métiers.

La vidéo d’introduction donne une vue d’ensemble avant d’entrer dans les mécanismes. Elle permet de situer les sujets et de comprendre pourquoi le cycle de vie logiciel — le SDLC — reste le fil conducteur du parcours.

Une masterclass pour comprendre et mettre en pratique

Cette masterclass propose un parcours progressif pour structurer le développement logiciel avec les agents IA : partir d’une intention claire, organiser le travail, vérifier les résultats et maîtriser les choix techniques et économiques.

Suivre la masterclass

Cette introduction pose la question qui traverse tout le parcours : lorsque la production de code s’accélère, comment garder la maîtrise du logiciel que l’on construit ?

Les quatre parties relient le workflow, l’architecture, les évaluations et les choix économiques. L’objectif est de disposer d’un cadre pour décider où l’IA apporte de la valeur et comment vérifier cette valeur.

Suivez la playlist « L’Usine à IA & le SDLC IA-Native » sur YouTube pour retrouver l’introduction et suivre la mise à disposition de la suite.

Maximizing Your Claude Max Subscription: Complete Guide to Automated Workflows with Claude Code and Windsurf

The Claude Max plan at $100 per month has revolutionized how developers can integrate Claude’s powerful AI capabilities directly into their development workflow. With the recent integration of Claude Code into the Max subscription, users can now access terminal-based AI assistance without burning through expensive API tokens. This comprehensive guide shows you how to set up a complete development environment using Windsurf, Claude Code, and your Claude Max subscription, including advanced automation workflows that maximize productivity.

Understanding the Claude Max Plan Value Proposition

The $100 monthly Claude Max plan provides 5x more usage than Claude Pro, translating to approximately 225 messages every 5 hours. This expanded capacity makes it ideal for developers who need sustained AI assistance throughout their coding sessions without constantly hitting usage limits.

What makes this plan particularly attractive is the inclusion of Claude Code at no additional cost. Previously, using Claude Code required separate API tokens, but as of May 2025, Max plan subscribers can use Claude Code directly through their subscription.

Setting Up Claude Code with Your Max Subscription

Installation and Authentication

Getting started with Claude Code on your Max plan is straightforward. First, install Claude Code following the official documentation, then authenticate using only your Max plan credentials.

The key is ensuring you’re using your Max subscription rather than API credits:claude logout claude login

During the login process, authenticate with the same credentials you use for claude.ai and decline any API credit options when prompted. This ensures Claude Code draws exclusively from your Max plan allocation.

Avoiding API Credit Prompts

One crucial aspect of staying within your $100 monthly budget is preventing Claude Code from defaulting to API credits when you approach your usage limits. Configure your setup to avoid these prompts entirely by:

  • Using only Max plan credentials during authentication
  • Declining API credit options when they appear
  • Monitoring your usage with the /status command

Integrating Claude Code with Windsurf via MCP

Windsurf’s Model Context Protocol (MCP) support allows you to create a seamless bridge between Claude Code and your IDE. This integration transforms Claude Code into an MCP server that Windsurf can call upon for complex coding tasks.

MCP Configuration

Create or modify your mcp_config.json file in Windsurf’s configuration directory:

macOS: ~/.codeium/windsurf/mcp_config.json
Windows: %APPDATA%\Codeium\windsurf\mcp_config.json
Linux: ~/.config/.codeium/windsurf/mcp_config.json

Add this configuration:{ "mcpServers": { "claude-code": { "command": "claude", "args": ["mcp", "serve"], "env": {} } } }

Starting the MCP Server

Launch Claude Code as an MCP server directly from your terminal:claude mcp serve

This command transforms Claude Code into a service that Windsurf can interact with programmatically, providing access to Claude’s coding capabilities through the MCP protocol.

Creating Custom Workflows for Automatic Task Delegation

With Claude Code accessible via MCP, you can create sophisticated custom workflows that automatically delegate specific types of tasks to Claude Code. This automation maximizes your productivity while staying within your Max plan limits.

Setting Up Workflow Infrastructure

Windsurf’s Wave 8 update introduced Custom Workflows, which allows you to define shared slash commands that can automate repetitive tasks. Start by creating the workflow directory structure:mkdir -p .windsurf/workflows mkdir -p .windsurf/rules

Complex Refactoring Operations Workflow

Create .windsurf/workflows/refactor.md:# Complex Refactoring Workflow ## Trigger When user requests complex refactoring operations involving multiple files or architectural changes ## Action Use claude_code tool with the following prompt template:

Your work folder is {PROJECT_PATH}

TASK TYPE: Complex Refactoring
TASK ID: refactor-{TIMESTAMP}

CONTEXT:

  • Target files: {TARGET_FILES}
  • Refactoring goal: {REFACTORING_GOAL}
  • Constraints: {CONSTRAINTS}

INSTRUCTIONS:

  1. Analyze current code structure and dependencies
  2. Create refactoring plan with step-by-step approach
  3. Execute refactoring while maintaining functionality
  4. Run tests to verify changes
  5. Update documentation if needed

COMPLETION CRITERIA:

  • All tests pass
  • Code follows project conventions
  • No breaking changes introduced

## Parameters - TARGET_FILES: List of files to refactor - REFACTORING_GOAL: Description of desired outcome - CONSTRAINTS: Any limitations or requirements

Documentation Generation Workflow

Create .windsurf/workflows/docs.md:

# Documentation Generation Workflow ## Trigger When user requests documentation generation for code, APIs, or project structure ## Action Use claude_code tool with documentation-specific prompt:

Your work folder is {PROJECT_PATH}

TASK TYPE: Documentation Generation
TASK ID: docs-{TIMESTAMP}

CONTEXT:

  • Documentation type: {DOC_TYPE}
  • Target audience: {AUDIENCE}
  • Output format: {FORMAT}

INSTRUCTIONS:

  1. Analyze codebase structure and functionality
  2. Generate comprehensive documentation following project standards
  3. Include code examples and usage patterns
  4. Create or update README, API docs, or inline comments
  5. Ensure documentation is up-to-date with current implementation

DELIVERABLES:

  • Generated documentation files
  • Updated existing documentation
  • Code comments where appropriate

## Parameters - DOC_TYPE: API, README, inline comments, etc. - AUDIENCE: developers, end-users, maintainers - FORMAT: Markdown, JSDoc, Sphinx, etc.

Code Review and Analysis Workflow

Create .windsurf/workflows/code-review.md:

# Code Review and Analysis Workflow ## Trigger When user requests code review, security audit, or quality analysis ## Action Use claude_code tool with analysis-specific prompt:

Your work folder is {PROJECT_PATH}

TASK TYPE: Code Review and Analysis
TASK ID: review-{TIMESTAMP}

CONTEXT:

  • Review scope: {REVIEW_SCOPE}
  • Focus areas: {FOCUS_AREAS}
  • Standards: {CODING_STANDARDS}

INSTRUCTIONS:

  1. Perform comprehensive code analysis
  2. Check for security vulnerabilities
  3. Evaluate performance implications
  4. Assess code maintainability
  5. Verify adherence to coding standards
  6. Generate detailed report with recommendations

DELIVERABLES:

  • Code quality assessment
  • Security vulnerability report
  • Performance optimization suggestions
  • Refactoring recommendations

## Parameters - REVIEW_SCOPE: specific files, modules, or entire codebase - FOCUS_AREAS: security, performance, maintainability, etc. - CODING_STANDARDS: project-specific or industry standards

Architecture Planning Workflow

Create .windsurf/workflows/architecture.md:

# Architecture Planning Workflow ## Trigger When user requests system design, architecture review, or structural planning ## Action Use claude_code tool with architecture-specific prompt:

Your work folder is {PROJECT_PATH}

TASK TYPE: Architecture Planning
TASK ID: arch-{TIMESTAMP}

CONTEXT:

  • Project scope: {PROJECT_SCOPE}
  • Requirements: {REQUIREMENTS}
  • Constraints: {CONSTRAINTS}
  • Technology stack: {TECH_STACK}

INSTRUCTIONS:

  1. Analyze current architecture (if existing)
  2. Identify architectural patterns and best practices
  3. Design scalable and maintainable structure
  4. Create component diagrams and documentation
  5. Provide implementation roadmap
  6. Consider performance and security implications

DELIVERABLES:

  • Architecture documentation
  • Component diagrams
  • Implementation plan
  • Technology recommendations

## Parameters - PROJECT_SCOPE: feature, module, or entire system - REQUIREMENTS: functional and non-functional requirements - CONSTRAINTS: budget, timeline, technology limitations - TECH_STACK: current or preferred technologies

Implementing Automatic Task Delegation

File-Based Rules Configuration

Create intelligent delegation rules based on file types and project context. Create .windsurf/rules/delegation.md:

# Automatic Delegation Rules ## File Type Rules - **/*.py, **/*.js, **/*.ts: Complex operations → Claude Code - **/*.md, **/*.rst: Documentation tasks → Claude Code - **/*.json, **/*.yaml: Configuration analysis → Claude Code ## Task Complexity Rules - Multi-file operations → Always delegate to Claude Code - Single file edits < 50 lines → Use native Windsurf - Architectural changes → Always delegate to Claude Code - Performance optimization → Always delegate to Claude Code ## Project Size Rules - Large projects (>1000 files) → Delegate complex operations - Medium projects (100-1000 files) → Delegate multi-file operations - Small projects (<100 files) → Selective delegation

Smart Delegation Configuration

Create .windsurf/workflows/smart-delegation.json:

{ "delegationRules": { "triggers": [ { "keywords": ["refactor", "restructure", "reorganize", "optimize"], "action": "delegate_to_claude_code", "workflow": "refactor", "priority": "high" }, { "keywords": ["document", "docs", "documentation", "readme"], "action": "delegate_to_claude_code", "workflow": "docs", "priority": "medium" }, { "keywords": ["review", "analyze", "audit", "check"], "action": "delegate_to_claude_code", "workflow": "code-review", "priority": "high" }, { "keywords": ["architecture", "design", "structure", "plan"], "action": "delegate_to_claude_code", "workflow": "architecture", "priority": "high" } ], "fileTypeRules": { "*.py": "Use claude_code for Python-specific operations", "*.js": "Use claude_code for complex JavaScript refactoring", "*.ts": "Use claude_code for TypeScript architectural changes", "*.md": "Use claude_code for documentation generation" }, "complexityThresholds": { "high": "Automatically use claude_code with detailed prompts", "medium": "Offer claude_code as option with user confirmation", "low": "Use native Windsurf capabilities" } } }

Advanced Workflow Patterns

Boomerang Pattern Implementation

Implement the Boomerang pattern where Windsurf orchestrates complex tasks and delegates subtasks to Claude Code:# .windsurf/workflows/boomerang-orchestration.md

## Parent Task Orchestration Pattern ### Flow Structure 1. **Task Analysis**: Windsurf analyzes complex user request 2. **Subtask Breakdown**: Generate specific Claude Code prompts 3. **Parallel Delegation**: Send subtasks to Claude Code via MCP 4. **Result Integration**: Combine Claude Code outputs intelligently 5. **Quality Assurance**: Validate integrated solution 6. **Final Delivery**: Present unified solution to user ### Example Implementation User Request: "Optimize our API performance and add comprehensive monitoring" **Windsurf Orchestration:** - Performance analysis → Claude Code (workflow: code-review) - Database optimization → Claude Code (workflow: refactor) - Caching implementation → Claude Code (workflow: architecture) - Monitoring setup → Claude Code (workflow: architecture) - Documentation update → Claude Code (workflow: docs) **Integration Phase:** - Combine optimization recommendations - Ensure compatibility between changes - Create unified implementation plan - Generate comprehensive documentation

Multiple Cascades for Parallel Processing

Leverage Windsurf’s simultaneous cascades for parallel workflow execution:# Example parallel workflow execution /architecture-review --async --project-scope=backend /refactor-components --async --target=frontend /update-docs --async --doc-type=api /security-audit --async --scope=authentication

Context-Aware Delegation System

Create an intelligent system that automatically determines when to delegate tasks:// .windsurf/workflows/intelligent-delegation.js

const DelegationEngine = { analyzeTask: function(userInput, projectContext) { const complexity = this.assessComplexity(userInput, projectContext); const taskType = this.identifyTaskType(userInput); const resourceRequirements = this.estimateResources(complexity, taskType); return { shouldDelegate: complexity > 'medium' || taskType.requiresClaudeCode, workflow: this.selectWorkflow(taskType), priority: this.calculatePriority(complexity, projectContext), estimatedUsage: resourceRequirements.claudeMessages }; }, selectWorkflow: function(taskType) { const workflowMap = { 'refactoring': 'refactor', 'documentation': 'docs', 'analysis': 'code-review', 'architecture': 'architecture', 'optimization': 'refactor', 'security': 'code-review' }; return workflowMap[taskType.primary] || 'general'; } };

Maximizing Your Development Workflow

Strategic Usage Patterns

With approximately 225 messages every 5 hours on the $100 Max plan, strategic usage becomes important. Consider these approaches:

High-Value Delegation: Reserve Claude Code for tasks where it provides the most value:

  • Complex multi-file refactoring operations
  • Comprehensive code analysis and security audits
  • Architecture planning and system design
  • Documentation generation for large codebases

Efficient Batching: Group related tasks to maximize context utilization:

  • Combine refactoring with documentation updates
  • Pair code review with optimization recommendations
  • Bundle architecture planning with implementation guidance

Queue-Based Workflow Management

Implement a queue system for managing multiple workflows:# Queue multiple tasks for efficient processing windsurf queue add refactor --files="src/components/*.js" --goal="performance" windsurf queue add docs --type="api" --format="openapi" windsurf queue add review --scope="security" --focus="authentication" # Process queue efficiently windsurf queue process --batch-size=3 --use-claude-code

Hybrid Development Strategy

The most effective approach combines multiple tools strategically:

  1. Windsurf’s native AI for quick queries, simple edits, and general assistance
  2. Claude Code via MCP for complex operations, architectural decisions, and comprehensive analysis
  3. Direct claude.ai access for research, planning, and brainstorming sessions
  4. Automated workflows for repetitive tasks and standardized processes

Monitoring and Optimization

Usage Tracking and Management

Keep track of your consumption and optimize usage patterns:# Monitor Claude Code usage claude status # Track workflow effectiveness windsurf workflows stats --period=week # Analyze delegation patterns windsurf analyze delegation-effectiveness --export=csv

Workflow Performance Analytics

Create a monitoring system for your automated workflows:# .windsurf/monitoring/workflow-metrics.md

## Key Performance Indicators - **Task Success Rate**: Percentage of workflows completing successfully - **Time to Completion**: Average time for each workflow type - **Usage Efficiency**: Claude messages per completed task - **User Satisfaction**: Quality rating of workflow outputs ## Optimization Triggers - Success rate < 85% → Review and refine workflow prompts - Completion time > expected → Optimize task breakdown - Usage efficiency declining → Improve prompt specificity - User satisfaction < 4/5 → Gather feedback and iterate

Continuous Improvement Process

Implement a systematic approach to workflow optimization:

  1. Weekly Review: Analyze workflow performance metrics
  2. Monthly Optimization: Update prompts and delegation rules based on data
  3. Quarterly Assessment: Evaluate overall strategy effectiveness
  4. User Feedback Integration: Regularly collect and incorporate user feedback

Cost-Effectiveness Analysis

At $100 per month, the Claude Max plan with automated workflows offers exceptional value:

Direct Cost Savings:

  • Eliminates API token costs for Claude Code usage
  • Predictable monthly expenses for budgeting
  • No surprise billing from heavy usage periods

Productivity Multipliers:

  • Automated task delegation reduces manual workflow management
  • Parallel processing capabilities increase throughput
  • Intelligent delegation ensures optimal tool usage for each task

Quality Improvements:

  • Consistent workflow execution reduces human error
  • Standardized prompts ensure reliable output quality
  • Comprehensive automation covers more aspects of development

Advanced Integration Possibilities

Team Collaboration Workflows

Extend your automation to support team development:# .windsurf/workflows/team-collaboration.md

## Shared Workflow Standards - Consistent code review processes across team members - Standardized documentation generation - Unified architecture decision processes - Collaborative refactoring workflows ## Team-Specific Configurations - Role-based workflow access (senior dev, junior dev, architect) - Project-specific delegation rules - Shared workflow templates and best practices - Cross-team workflow sharing and reuse

CI/CD Integration

Integrate your workflows with continuous integration:# .github/workflows/claude-code-automation.yml

name: Automated Code Quality with Claude Code on: pull_request: branches: [ main, develop ] jobs: claude-code-review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Claude Code run: | # Setup Claude Code with Max subscription claude login --token=${{ secrets.CLAUDE_MAX_TOKEN }} - name: Automated Code Review run: | windsurf workflow execute code-review \ --scope="changed-files" \ --format="github-comment" \ --auto-comment=true

Troubleshooting Common Issues

Delegation Failures

When workflows fail to delegate properly:

  1. Check MCP Connection: Verify Claude Code MCP server is running
  2. Validate Credentials: Ensure Max subscription authentication is active
  3. Review Workflow Syntax: Check workflow definition files for errors
  4. Monitor Usage Limits: Verify you haven’t exceeded your 5-hour allocation

Performance Optimization

If workflows are running slowly:

  1. Optimize Prompts: Make prompts more specific and focused
  2. Reduce Context Size: Break large tasks into smaller, focused subtasks
  3. Parallel Processing: Use multiple cascades for independent tasks
  4. Cache Results: Store frequently used outputs to avoid regeneration

Conclusion

The Claude Max plan at $100 per month, combined with automated workflows in Windsurf and Claude Code integration, creates a powerful development environment that maximizes AI assistance while maintaining cost control. By implementing the comprehensive workflow automation described in this guide, developers can:

  • Achieve 3-5x productivity gains through intelligent task delegation
  • Maintain predictable costs without API token concerns
  • Ensure consistent quality through standardized automated processes
  • Scale development practices across teams and projects

This setup represents the future of AI-assisted development: seamless integration, intelligent automation, and powerful capabilities that enhance rather than replace developer expertise. The key to success lies in proper configuration, strategic usage patterns, and continuous optimization of your automated workflows.

With these elements in place, your $100 monthly investment in Claude Max becomes a force multiplier for your development productivity, providing enterprise-level AI assistance with the reliability and predictability that professional development teams require.

The automated workflow system described here transforms Claude Code from a simple terminal tool into an intelligent development partner that understands your project context, anticipates your needs, and delivers consistent, high-quality results across all aspects of your development process.