مراقبة وموثوقية المنصة

مقاييس تجربة المطور

3 دقيقة للقراءة

مقاييس تجربة المطور (DevEx) تقيس مدى فعالية خدمة منصتك لمستخدميها—المطورين. تساعد هذه المقاييس فرق المنصة على فهم التبني والرضا ومجالات التحسين.

إطار DevEx

┌─────────────────────────────────────────────────────────┐
│                تجربة المطور (DevEx)                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐   │
│   │   الحمل     │  │   حالة     │  │   حلقات    │   │
│   │  المعرفي    │  │   التدفق   │  │   التغذية  │   │
│   └─────────────┘  └─────────────┘  └─────────────┘   │
│                                                         │
│   "ما مدى تعقيد  "هل يمكن للمطورين "كم سرعة حصول    │
│    المنصة؟"      البقاء في التدفق؟" المطورين على ردود؟"│
│                                                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   أسئلة رئيسية:                                         │
│   • هل يمكن لمطور جديد النشر في أسبوعه الأول؟          │
│   • كم مرة يحتاج المطورون طلب المساعدة؟                │
│   • ما النسبة التي تستخدم الخدمة الذاتية مقابل التذاكر؟│
│   • كم ينتظر المطورون للبنية التحتية؟                  │
│                                                         │
└─────────────────────────────────────────────────────────┘

مقاييس DevEx الأساسية

# مقاييس تجربة المطور
devex_metrics:

  onboarding:
    - name: "وقت أول التزام"
      description: "الوقت من الانضمام إلى أول PR مدمج"
      target: "<يومين"
      measurement: |
        first_merged_pr_date - employee_start_date

    - name: "وقت أول نشر"
      description: "الوقت من الانضمام إلى أول نشر إنتاجي"
      target: "<أسبوع"
      measurement: |
        first_deployment_date - employee_start_date

    - name: "استخدام توثيق التأهيل"
      description: "% من المطورين الجدد الذين أكملوا مستندات التأهيل"
      target: ">90%"

  productivity:
    - name: "وقت البناء"
      description: "متوسط مدة خط أنابيب CI"
      target: "<10 دقائق"
      prometheus: |
        avg(ci_pipeline_duration_seconds{status="success"}) / 60

    - name: "وقت النشر"
      description: "الوقت من الدمج إلى الإنتاج"
      target: "<30 دقيقة"

    - name: "وقت تشغيل البيئة"
      description: "الوقت لإنشاء بيئة تطوير جديدة"
      target: "<15 دقيقة"

  friction:
    - name: "معدل تذاكر الدعم"
      description: "تذاكر المنصة لكل مطور شهريًا"
      target: "<0.5"
      prometheus: |
        count(tickets{category="platform"}) /
        count(active_developers)

    - name: "تبني الخدمة الذاتية"
      description: "% من المهام المكتملة بدون تذاكر"
      target: ">85%"

    - name: "وقت البحث إلى الإجابة في التوثيق"
      description: "الوقت لإيجاد إجابة في TechDocs"
      target: "<5 دقائق"

قياس تبني المنصة

تتبع كيف يستخدم المطورون منصتك:

# مقاييس تبني المنصة
adoption_metrics:

  backstage_usage:
    - name: "المستخدمين النشطين يوميًا"
      prometheus: |
        count(distinct(
          backstage_request_user
        ) by (user) [24h])

    - name: "استخدام القوالب أسبوعيًا"
      prometheus: |
        sum(increase(
          backstage_scaffolder_task_count_total{status="completed"}
        [7d]))

    - name: "تغطية الكتالوج"
      description: "% من الخدمات المسجلة في الكتالوج"
      prometheus: |
        count(backstage_catalog_entities{kind="Component"}) /
        count(kubernetes_services)

  crossplane_usage:
    - name: "طلبات البنية التحتية ذاتية الخدمة"
      prometheus: |
        sum(increase(crossplane_claim_created_total[30d]))

    - name: "أكثر أنواع الموارد طلبًا"
      prometheus: |
        topk(5, sum by (kind) (crossplane_claim_created_total))

  argocd_usage:
    - name: "التطبيقات المُدارة بـ GitOps"
      prometheus: |
        count(argocd_app_info)

    - name: "المزامنة اليدوية مقابل الآلية"
      prometheus: |
        sum(argocd_app_sync_total{trigger="automated"}) /
        sum(argocd_app_sync_total)

استطلاعات المطورين

استكمال المقاييس الكمية بالتغذية الراجعة النوعية:

# أسئلة استطلاع المطورين
survey:

  satisfaction:
    - question: "ما مدى رضاك عن المنصة؟ (1-10)"
      type: "scale"
      benchmark: ">7"

    - question: "هل توصي بالمنصة لزميل؟"
      type: "nps"
      benchmark: "NPS > 30"

  productivity:
    - question: "المنصة تساعدني على أن أكون أكثر إنتاجية"
      type: "likert"
      options: ["لا أوافق بشدة", "لا أوافق", "محايد", "أوافق", "أوافق بشدة"]

    - question: "يمكنني نشر الكود دون انتظار المساعدة"
      type: "likert"

  friction_points:
    - question: "ما أكبر عائق في سير عملك؟"
      type: "open_text"

    - question: "أي ميزة منصة تريد تحسينها أكثر؟"
      type: "multiple_choice"
      options:
        - "التوثيق"
        - "سرعة النشر"
        - "خيارات الخدمة الذاتية"
        - "المراقبة"
        - "أخرى"

  frequency: "ربع سنوي"
  anonymous: true

لوحة إنتاجية المطور

# grafana-dashboard-devex.yaml
dashboard:
  title: "لوحة تجربة المطور"

  rows:
    - title: "إنتاجية المطور"
      panels:
        - title: "متوسط وقت البناء (دقائق)"
          type: "stat"
          query: "avg(ci_build_duration_seconds) / 60"
          thresholds:
            - color: "green"
              value: 0
            - color: "yellow"
              value: 10
            - color: "red"
              value: 20

        - title: "النشر لكل مطور (يوميًا)"
          type: "stat"
          query: |
            sum(increase(deployments_total[24h])) /
            count(distinct(developer))

    - title: "تبني المنصة"
      panels:
        - title: "مستخدمي Backstage اليوميين"
          type: "graph"
          query: "backstage_daily_active_users"

        - title: "الخدمة الذاتية مقابل التذاكر"
          type: "piechart"
          queries:
            - expr: "sum(self_service_requests)"
              legend: "الخدمة الذاتية"
            - expr: "sum(ticket_requests)"
              legend: "التذاكر"

    - title: "التأهيل"
      panels:
        - title: "وقت أول نشر (أيام)"
          type: "stat"
          query: "avg(time_to_first_deploy_days)"

        - title: "نشر المطورين الجدد (30 يوم)"
          type: "table"
          query: |
            topk(10,
              count by (developer) (
                deployments_total{developer_tenure_days < 30}
              )
            )

تتبع التحسن عبر الوقت

# تتبع تحسين DevEx
improvement_tracking:

  baseline:
    date: "2025-Q1"
    metrics:
      time_to_first_deploy: "5 أيام"
      build_time_avg: "15 دقيقة"
      self_service_rate: "60%"
      developer_satisfaction: "6.5/10"

  current:
    date: "2025-Q4"
    metrics:
      time_to_first_deploy: "يومان"
      build_time_avg: "8 دقائق"
      self_service_rate: "85%"
      developer_satisfaction: "8.2/10"

  goals:
    date: "2026-Q2"
    metrics:
      time_to_first_deploy: "يوم"
      build_time_avg: "5 دقائق"
      self_service_rate: "95%"
      developer_satisfaction: "9.0/10"

إطار SPACE

تطبيق إطار SPACE لقياس DevEx الشامل:

# إطار SPACE
space:

  satisfaction:
    description: "كيف يشعر المطورون بشأن عملهم"
    metrics:
      - "درجة رضا المطور"
      - "صافي نقاط الترويج (NPS)"
      - "سيوصي بالمنصة"

  performance:
    description: "نتائج أنشطة المطور"
    metrics:
      - "إنتاجية مراجعة الكود"
      - "نقاط القصة المكتملة"
      - "مقاييس تأثير العميل"

  activity:
    description: "عدد إجراءات المطور"
    metrics:
      - "عدد الالتزامات"
      - "PRs مفتوحة/مدمجة"
      - "النشر يوميًا"

  communication:
    description: "كيف يتعاون المطورون"
    metrics:
      - "وقت استجابة مراجعة PR"
      - "مساهمات التوثيق"
      - "جلسات مشاركة المعرفة"

  efficiency:
    description: "الحد الأدنى من الهدر في سير العمل"
    metrics:
      - "وقت البناء"
      - "وقت انتظار المراجعات"
      - "حمل الاجتماعات"

في الدرس التالي، سنستكشف إدارة التكاليف وممارسات FinOps لفرق المنصة. :::

اختبار

الوحدة 5: مراقبة وموثوقية المنصة

خذ الاختبار