14 KiB
Modern SDLC Best Practices (2024-25)
This document outlines industry-standard software development lifecycle best practices based on 2024-25 research and modern engineering standards.
Table of Contents
- Development Workflow
- Testing Strategy
- Security (DevSecOps)
- Code Quality
- Performance
- Documentation
- DevOps & CI/CD
- DORA Metrics
- Developer Experience
- Accessibility
Development Workflow
Version Control (Git)
Branching Strategy:
- Main/master branch is always deployable
- Feature branches for new work:
feature/{component-name} - Bugfix branches:
bugfix/{issue-number} - Release branches for production releases
- No direct commits to main (use pull requests)
Commit Messages:
- Follow Conventional Commits format
- Structure:
type(scope): description - Types: feat, fix, docs, style, refactor, test, chore
- Example:
feat(auth): add OAuth2 social login
Code Review:
- All changes require peer review
- Use pull request templates
- Automated checks must pass before merge
- Review within 24 hours for team velocity
- Focus on logic, security, and maintainability
Test-Driven Development (TDD)
RED-GREEN-REFACTOR Cycle:
- RED: Write failing test first
- GREEN: Write minimum code to pass
- REFACTOR: Improve code quality while tests pass
Benefits:
- Better design through testability
- Documentation through tests
- Confidence to refactor
- Fewer regression bugs
Testing Strategy
Testing Trophy (Kent C. Dodds)
Philosophy: "Write tests. Not too many. Mostly integration."
Distribution:
-
Integration Tests (70%): User workflows and component interaction
- Test real user behavior
- Test multiple units working together
- Higher confidence than unit tests
- Example: User registration flow end-to-end
-
Unit Tests (20%): Complex business logic only
- Pure functions
- Complex algorithms
- Edge cases and error handling
- Example: Tax calculation logic
-
E2E Tests (10%): Critical user journeys
- Full stack, production-like environment
- Happy path scenarios
- Critical business flows
- Example: Complete purchase flow
What NOT to Test (Brittle Patterns)
Avoid:
- Emoji presence in UI elements
- Exact number of DOM elements
- Specific element ordering (unless critical)
- API call counts (unless performance critical)
- CSS class names and styling
- Implementation details over user behavior
- Private methods/functions
- Third-party library internals
What to Prioritize (User-Focused)
Prioritize:
- User workflows and interactions
- Business logic and calculations
- Data accuracy and processing
- Error handling and edge cases
- Performance within acceptable limits
- Accessibility compliance (WCAG 2.1 AA)
- Security boundaries
Semantic Queries (React Testing Library)
Priority Order:
getByRole()- Most preferred (accessibility-first)getByLabelText()- Form elementsgetByPlaceholderText()- Inputs without labelsgetByText()- User-visible contentgetByDisplayValue()- Form current valuesgetByAltText()- ImagesgetByTitle()- Title attributesgetByTestId()- Last resort only
Coverage Targets
Minimum Requirements:
- Overall coverage: 80%
- Critical paths: 100% (auth, payment, data processing)
- Branch coverage: 75%
- Function coverage: 90%
Tools:
- Jest/Vitest for unit & integration tests
- Cypress/Playwright for E2E tests
- Istanbul/c8 for coverage reporting
Security (DevSecOps)
Shift-Left Security
Principle: Integrate security into every development stage, not as an afterthought.
Cost Multiplier:
- Fix in design: 1x cost
- Fix in development: 5x cost
- Fix in testing: 10x cost
- Fix in production: 30x cost
OWASP Top 10 (2024)
- Broken Access Control: Enforce authorization checks on every request
- Cryptographic Failures: Use TLS, encrypt PII, avoid weak algorithms
- Injection: Validate input, use prepared statements, sanitize output
- Insecure Design: Threat modeling, secure design patterns
- Security Misconfiguration: Harden defaults, disable unnecessary features
- Vulnerable Components: Keep dependencies updated, scan for CVEs
- Authentication Failures: MFA, rate limiting, secure session management
- Software Integrity Failures: Verify integrity with signatures, SRI
- Security Logging: Log security events, monitor for anomalies
- SSRF: Validate URLs, whitelist allowed domains
Dependency Management
Best Practices:
- Run
npm audit/yarn auditweekly - Update dependencies monthly
- Use Dependabot/Renovate for automated updates
- Pin dependency versions in production
- Check licenses for compliance
- Monitor CVE databases
Secrets Management
Rules:
- NEVER commit secrets to version control
- Use environment variables for configuration
- Use secret management tools (Vault, AWS Secrets Manager)
- Rotate secrets regularly
- Scan git history for leaked secrets
- Use
.env.examplefor documentation, not.env
Code Quality
Complexity Metrics
Cyclomatic Complexity:
- 1-10: Simple, easy to test
- 11-20: Moderate, consider refactoring
- 21-50: High, should refactor
- 50+: Very high, must refactor
Tool: ESLint complexity rule, SonarQube
Code Duplication
Thresholds:
- < 5%: Excellent
- 5-10%: Acceptable
- 10-20%: Needs attention
- > 20%: Critical issue
DRY Principle: Don't Repeat Yourself
- Extract common code into functions/modules
- Use design patterns (Template Method, Strategy)
- Balance DRY with readability
Code Smells
Common Smells:
- God Object: Too many responsibilities
- Feature Envy: Too much coupling to other classes
- Long Method: > 50 lines
- Long Parameter List: > 4 parameters
- Dead Code: Unused code
- Magic Numbers: Hard-coded values
- Primitive Obsession: Overuse of primitives vs objects
Refactoring Techniques:
- Extract Method
- Extract Class
- Introduce Parameter Object
- Replace Magic Number with Constant
- Remove Dead Code
Static Analysis
Tools:
- SonarQube: Comprehensive code quality platform
- ESLint: JavaScript/TypeScript linting
- Prettier: Code formatting
- TypeScript: Type checking in strict mode
- Checkmarx: Security-focused analysis
Performance
Build Performance
Targets:
- Build time: < 2 minutes
- Hot reload: < 200ms
- First build: < 5 minutes
Optimization:
- Use build caching
- Parallelize builds
- Tree-shaking
- Code splitting
- Lazy loading
Runtime Performance
Web Vitals (Core):
- LCP (Largest Contentful Paint): < 2.5s
- FID (First Input Delay): < 100ms
- CLS (Cumulative Layout Shift): < 0.1
API Performance:
- P50: < 100ms
- P95: < 500ms
- P99: < 1000ms
Optimization Techniques:
- Caching (Redis, CDN)
- Database indexing
- Query optimization
- Compression (gzip, Brotli)
- Image optimization (WebP, lazy loading)
- Code splitting and lazy loading
Bundle Size
Targets:
- Initial bundle: < 200KB (gzipped)
- Total JavaScript: < 500KB (gzipped)
- Images optimized: < 200KB each
Tools:
- webpack-bundle-analyzer
- Lighthouse
- Chrome DevTools Performance tab
Documentation
Code Documentation
JSDoc/TSDoc:
- Document all public APIs
- Include examples for complex functions
- Document parameters, return types, exceptions
Example:
/**
* Calculates the total price including tax and discounts.
*
* @param items - Array of cart items
* @param taxRate - Tax rate as decimal (e.g., 0.08 for 8%)
* @param discountCode - Optional discount code
* @returns Total price with tax and discounts applied
* @throws {InvalidDiscountError} If discount code is invalid
*
* @example
* const total = calculateTotal(items, 0.08, 'SUMMER20');
*/
function calculateTotal(items: CartItem[], taxRate: number, discountCode?: string): number {
// ...
}
Project Documentation
Essential Files:
- README.md: Project overview, setup instructions, quick start
- CONTRIBUTING.md: How to contribute, coding standards, PR process
- CODE_OF_CONDUCT.md: Community guidelines
- CHANGELOG.md: Version history and changes
- LICENSE: Legal license information
- ARCHITECTURE.md: High-level architecture overview
- ADRs (Architecture Decision Records): Document important decisions
DevOps & CI/CD
Continuous Integration
Requirements:
- Automated testing on every commit
- Build verification
- Code quality checks (linting, formatting)
- Security scanning
- Fast feedback (< 10 minutes)
Pipeline Stages:
- Lint & Format Check
- Unit Tests
- Integration Tests
- Security Scan
- Build Artifacts
- Deploy to Staging
- E2E Tests
- Deploy to Production (with approval)
Continuous Deployment
Strategies:
- Blue-Green: Two identical environments, switch traffic
- Canary: Gradual rollout to subset of users
- Rolling: Update instances incrementally
- Feature Flags: Control feature visibility without deployment
Rollback:
- Automated rollback on failure detection
- Keep last 3-5 versions deployable
- Database migrations reversible
- Monitor key metrics post-deployment
Infrastructure as Code
Tools:
- Terraform, CloudFormation, Pulumi
- Ansible, Chef, Puppet
- Docker, Kubernetes
Benefits:
- Version-controlled infrastructure
- Reproducible environments
- Disaster recovery
- Automated provisioning
DORA Metrics
Four Key Metrics (DevOps Research and Assessment):
1. Deployment Frequency
How often code is deployed to production
- Elite: Multiple times per day
- High: Once per day to once per week
- Medium: Once per week to once per month
- Low: Less than once per month
2. Lead Time for Changes
Time from commit to production
- Elite: Less than 1 hour
- High: 1 day to 1 week
- Medium: 1 week to 1 month
- Low: More than 1 month
3. Change Failure Rate
Percentage of deployments causing failures
- Elite: < 1%
- High: 1-5%
- Medium: 5-15%
- Low: > 15%
4. Time to Restore Service
Time to recover from production incident
- Elite: < 1 hour
- High: < 1 day
- Medium: 1 day to 1 week
- Low: > 1 week
Tracking: Use CI/CD tools, APM (Application Performance Monitoring), incident management systems
Developer Experience
Why It Matters
Statistics:
- 83% of engineers experience burnout
- Developer experience is the strongest predictor of delivery capability
- Happy developers are 2x more productive
Key Factors
Fast Feedback Loops:
- Quick build times
- Fast test execution
- Immediate linting/formatting feedback
- Hot module reloading
Good Tooling:
- Modern IDE with autocomplete
- Debuggers and profilers
- Automated code reviews
- Documentation generators
Clear Standards:
- Coding style guides
- Architecture documentation
- Onboarding guides
- Runbooks for common tasks
Psychological Safety:
- Blameless post-mortems
- Encourage experimentation
- Celebrate learning from failure
- Mentorship programs
Accessibility
WCAG 2.1 Level AA Compliance
Four Principles (POUR):
-
Perceivable: Information must be presentable to users
- Alt text for images
- Captions for videos
- Color contrast ratios
-
Operable: UI components must be operable
- Keyboard navigation
- Sufficient time to read content
- No seizure-inducing content
-
Understandable: Information must be understandable
- Readable text
- Predictable behavior
- Input assistance (error messages)
-
Robust: Content must be robust across technologies
- Valid HTML
- ARIA attributes
- Cross-browser compatibility
Testing Tools
Automated:
- axe DevTools
- Lighthouse
- WAVE
- Pa11y
Manual:
- Keyboard navigation testing
- Screen reader testing (NVDA, JAWS, VoiceOver)
- Color contrast checkers
- Zoom testing (200%+)
Modern Trends (2024-25)
AI-Assisted Development
Tools:
- GitHub Copilot
- ChatGPT / Claude
- Tabnine
- Amazon CodeWhisperer
Best Practices:
- Review all AI-generated code
- Write tests for AI code
- Understand before committing
- Train team on effective prompting
Platform Engineering
Concept: Internal developer platforms to improve developer experience
Components:
- Self-service infrastructure
- Golden paths (templates)
- Developer portals
- Observability dashboards
Observability (vs Monitoring)
Three Pillars:
- Logs: What happened
- Metrics: Quantitative data
- Traces: Request flow through system
Tools:
- Datadog, New Relic, Grafana
- OpenTelemetry for standardization
- Distributed tracing (Jaeger, Zipkin)
Industry Benchmarks (2024-25)
Code Quality
- Tech debt ratio: < 5%
- Duplication: < 5%
- Test coverage: > 80%
- Build time: < 2 minutes
Security
- CVE remediation: < 30 days
- Security training: Quarterly
- Penetration testing: Annually
Performance
- Page load: < 3 seconds
- API response: P95 < 500ms
- Uptime: 99.9%+
Team Metrics
- Pull request review time: < 24 hours
- Deployment frequency: Daily+
- Incident MTTR: < 1 hour
- Developer onboarding: < 1 week
References:
- DORA State of DevOps Report 2024
- OWASP Top 10 (2024 Edition)
- WCAG 2.1 Guidelines
- Kent C. Dodds Testing Trophy
- SonarQube Quality Gates
- Google Web Vitals
Last Updated: 2024-25 Version: 1.0