Skip to content

Latest commit

 

History

History
231 lines (166 loc) · 7.27 KB

inclusive-engineering.md

File metadata and controls

231 lines (166 loc) · 7.27 KB

Inclusive Engineering Practices

Introduction

Inclusive engineering involves creating systems, products, and code that consider and serve diverse users, communities, and team members. This document outlines practices for building more inclusive software products and fostering an inclusive engineering culture.

Inclusive Product Design

User Research

  • Include diverse participants in user research
  • Consider different perspectives, abilities, backgrounds, and contexts
  • Identify and mitigate bias in research questions and methodologies
  • Validate findings with users from underrepresented groups

Personas and Use Cases

  • Create diverse personas that represent your entire user base
  • Consider contextual factors (device access, connectivity, language)
  • Include edge cases related to accessibility and international use
  • Document anti-personas to understand who might be excluded

Feature Prioritization

  • Consider impact on diverse user groups in prioritization frameworks
  • Evaluate features from an equity perspective
  • Avoid implementing features that only benefit the majority
  • Balance business needs with inclusive design requirements

Inclusive UI/UX Design

Visual Design

  • Ensure sufficient color contrast (WCAG AA minimum, AAA preferred)
  • Don't rely solely on color to convey information
  • Use flexible layouts that adapt to different text sizes and screen dimensions
  • Test designs with different display settings and assistive technologies

Content Design

  • Use plain, clear language
  • Avoid idioms, colloquialisms, and culturally specific references
  • Create content that respects diverse cultural perspectives
  • Consider translation and localization requirements early

Interaction Design

  • Provide multiple ways to interact (mouse, keyboard, touch, voice)
  • Support assistive technology standards
  • Design for various input methods and abilities
  • Test interactions with diverse user groups

Design Systems

  • Build accessibility into design system components
  • Document accessibility requirements for components
  • Include diverse imagery in style guides
  • Implement responsive design principles

Inclusive Coding Practices

Variable and Function Naming

  • Use inclusive terminology in code
  • Avoid terms with negative historical contexts
  • Replace problematic terms in legacy code
  • Consider cultural connotations of metaphors and naming

Code Comments and Documentation

  • Write clear comments accessible to non-native English speakers
  • Document accessibility features and considerations
  • Include diverse examples in code samples
  • Explain why accessibility features are implemented

Git and Version Control

  • Write inclusive commit messages
  • Use inclusive terminology in branch naming
  • Document accessibility-related changes clearly
  • Include diverse voices in code reviews

Testing and Quality Assurance

  • Include accessibility testing in QA processes
  • Test with assistive technologies and browser extensions
  • Create test cases for diverse user scenarios
  • Document accessibility compliance requirements

Technical Implementation for Inclusion

Accessibility Implementation

  • Follow WCAG guidelines (minimum AA compliance)
  • Implement proper semantic HTML
  • Use ARIA attributes appropriately
  • Ensure keyboard navigability
  • Implement focus management for custom components

Internationalization (i18n)

  • Separate UI text from code
  • Support right-to-left languages
  • Implement Unicode correctly
  • Account for text expansion in translations
  • Support different date, time, and number formats

Performance Considerations

  • Optimize for low-end devices
  • Design for unreliable or low-bandwidth connections
  • Implement progressive enhancement
  • Create offline capabilities where appropriate

Privacy and Security

  • Implement inclusive data collection practices
  • Consider privacy needs of vulnerable populations
  • Provide clear control over personal data
  • Design authentication with diverse needs in mind

Inclusive Development Environment

Team Composition

  • Build diverse engineering teams
  • Create inclusive hiring processes
  • Support retention of underrepresented groups
  • Promote equitable advancement opportunities

Collaboration Practices

  • Establish inclusive meeting practices
  • Create multiple channels for input and feedback
  • Document decisions for asynchronous participation
  • Respect different communication styles

Knowledge Sharing

  • Make documentation accessible to team members with different experience levels
  • Create mentorship opportunities for underrepresented groups
  • Recognize and credit diverse contributions
  • Share context and institutional knowledge widely

Work Environment

  • Support flexible work arrangements
  • Create accommodations for different needs
  • Establish inclusive team events and activities
  • Provide equitable access to tools and resources

Measuring Inclusion

Metrics and Monitoring

  • Track accessibility compliance
  • Monitor internationalization coverage
  • Collect feedback from diverse user groups
  • Analyze usage patterns across different demographics

Regular Audits

  • Conduct regular accessibility audits
  • Review code for inclusive terminology
  • Audit documentation for clarity and inclusivity
  • Review user journeys for different personas

Continuous Improvement

  • Create actionable plans based on audit results
  • Prioritize inclusion-related improvements
  • Track progress over time
  • Celebrate inclusive design wins

Resources and Tools

Inclusive Design Resources

Technical Tools

  • Accessibility testing tools
    • Axe
    • WAVE
    • Lighthouse
    • Screen readers (NVDA, VoiceOver, JAWS)
  • Language linters for inclusive terminology
  • Internationalization testing frameworks
  • Contrast checkers and color blindness simulators

Training Resources

  • Accessibility training courses
  • Inclusive design workshops
  • Bias awareness training
  • Cultural competency resources

Appendix: Terminology Guidelines

Inclusive Terminology Recommendations

Avoid Use Instead Context
Master/slave Primary/secondary, main/replica Database and system relationships
Whitelist/blacklist Allowlist/denylist, permit/block Security and access control
Grandfathered Legacy status, previously qualified Policy exceptions
Sanity check Quick check, confidence check, coherence check Testing and verification
Dummy value Placeholder, sample, example Test data
Native feature Built-in feature, standard feature Product capabilities
Crippled Limited, restricted Feature limitations

Guidelines for Creating New Terms

  • Consider multiple cultural and linguistic contexts
  • Avoid terms with negative historical or cultural associations
  • Use descriptive, functional language
  • Test terminology with diverse reviewers
  • Document reasoning behind terminology choices