Software Engineering

بهینه‌سازی بازبینی و فرآیند جذب با تجربه توسعه‌دهنده (DevEx)

در مهندسی نرم‌افزار مدرن، تجربه توسعه‌دهنده (DevEx) دیگر یک شاخص نرم نیست؛ بلکه یک محرک حیاتی برای بهره‌وری و حفظ نیروی کار است. دو از مهم‌ترین گلوگاه‌هایی که توسعه‌دهندگان با آن‌ها مواجه می‌شوند، تأخیر در بازبینی کد و زمانی است که برای بهره‌وری در فرآیند جذب (Onboarding) لازم است. با در نظر گرفتن این حوزه‌ها به عنوان سیستم‌های قابل اندازه‌گیری، رهبران مهندسی می‌توانند حلقه‌های بازخوردی را پیاده‌سازی کنند که این فرآیندها را به‌طور مداوم بهبود می‌بخشند. این پست بررسی می‌کند که چگونه شاخص‌های کلیدی DevEx را تعریف، اندازه‌گیری و بر اساس آن‌ها اقدام کنیم تا این چرخه‌ها را کوتاه‌تر کنیم و به تیم خود توانمندسازی دهیم.

تعریف و اندازه‌گیری تأخیر بازبینی کد

تأخیر بازبینی کد، کل زمان بین ایجاد یک درخواست کشش (Pull Request یا PR) تا ادغام آن است. با این حال، این شاخص به تنهایی بسیار کلی است. برای به دست آوردن بینش‌های قابل اجرا، باید آن را به «زمان تا اولین بازبینی» و «زمان تا ادغام» تقسیم کنیم. زمان بالا تا اولین بازبینی اغلب نشان‌دهنده یک مشکل ظرفیت در خط لوله بازبینی است، در حالی که زمان بالا تا ادغام ممکن است نشان‌دهنده مذاکرات طولانی یا موانع باشد.

برای اندازه‌گیری مؤثر این موضوع، خط لوله شاخص‌های خود را با ارائه‌دهنده Git خود یکپارچه کنید. در اینجا یک مثال ساده پایتون با استفاده از یک API فرضی برای محاسبه این شاخص‌ها آورده شده است:


import requests
import statistics

def get_pr_metrics(repo_id):
    # Hypothetical API call to get PR data
    url = f"https://api.gitprovider.com/repos/{repo_id}/pull_requests?state=closed"
    response = requests.get(url)
    prs = response.json()
    
    review_latencies = []
    merge_latencies = []
    
    for pr in prs:
        created = pr['created_at']
        first_reviewed = pr.get('first_reviewed_at')
        merged = pr.get('merged_at')
        
        if first_reviewed and merged:
            # Calculate in hours
            review_latencies.append((first_reviewed - created).total_seconds() / 3600)
            merge_latencies.append((merged - created).total_seconds() / 3600)
            
    return {
        "avg_first_review_hours": statistics.mean(review_latencies) if review_latencies else 0,
        "p90_merge_hours": statistics.quantiles(merge_latencies, n=10)[8] if merge_latencies else 0
    }

# Example usage
# metrics = get_pr_metrics(12345)
# print(f"Average Time to First Review: {metrics['avg_first_review_hours']:.2f} hours")

با ردیابی صدک نودم (P90) به جای فقط میانگین، بدترین تجربیات برای توسعه‌دهندگان خود را شناسایی می‌کنید که اغلب بیشترین آسیب را به روحیه و بهره‌وری می‌رسانند.

شتاب‌دهی به Onboarding با زمان تا ارزش

زمان Onboarding معمولاً به عنوان «زمان تا اولین Commit» یا «زمان تا اولین PR ادغام شده» اندازه‌گیری می‌شود. با این حال، یک شاخص قوی‌تر «زمان تا ارزش» است که ردیابی می‌کند چقدر طول می‌کشد تا یک استخدام جدید به‌طور مستقل یک ویژگی معنادار یا اصلاحیه را تحویل دهد. برای بهینه‌سازی این موضوع، باید خود فرآیند Onboarding را ابزاری (Instrument) کنید.

یک راهبرد مؤثر، تعریف یک «مسیر طلایی» برای توسعه‌دهندگان جدید است. این شامل یک توالی خاص از وظایف است: تنظیم محیط محلی، اجرای مجموعه تست‌ها، رفع یک خطای Linting و ادغام یک اصلاحیه کوچک مستندات. هر مرحله باید یک مدت زمان مورد انتظار تعریف شده داشته باشد. اگر مرحله «تنظیم محیط محلی» به‌طور مداوم طولانی‌تر از ۳۰ دقیقه مورد انتظار طول بکشد، نشان‌دهنده نیاز به بهبود مستندات یا خودکارسازی فرآیند تنظیم است.


# Example onboarding checklist data structure
onboarding_metrics = {
    "developer_id": "dev_101",
    "start_date": "2023-10-01",
    "steps": [
        {
            "task": "Install dependencies",
            "target_hours": 0.5,
            "actual_hours": 2.1,
            "blocked": False
        },
        {
            "task": "Run test suite locally",
            "target_hours": 0.25,
            "actual_hours": 0.3,
            "blocked": False
        },
        {
            "task": "First PR Merged",
            "target_hours": 48,
            "actual_hours": 72,
            "blocked": True
        }
    ]
}

به اختلاف در مرحله «نصب وابستگی‌ها» توجه کنید. در یک سناریوی واقعی، این موضوع باعث ایجاد یک تحقیق در مورد مدیریت وابستگی‌ها یا پیچیدگی زیرساخت می‌شود.

بستن حلقه بازخورد

جمع‌آوری شاخص‌ها فقط نیمی از نبرد است. نیمه دیگر، اقدام بر اساس آن‌هاست. یک حلقه بازخورد نیاز به جلسات منظم، مانند یک «بازبینی DevEx» دوهفته‌ای دارد، که در آن داده‌های مربوط به تأخیر بازبینی و اصطکاک Onboarding ارائه می‌شود. هدف شناسایی مشکلات سیستمی است. برای مثال، اگر تأخیر بازبینی در روزهای جمعه افزایش یابد، حلقه ممکن است پیشنهاد پیاده‌سازی یک سیاست «جمعه‌های بدون ادغام» یا آموزش متقاطع بازبین‌ها را برای اطمینان از پوشش بدهد.

به طور مشابه، اگر زمان Onboarding به دلیل یک سیستم ساخت پیچیده بالا باشد، حلقه ممکن است یک بلیت بدهی فنی برای ساده‌سازی خط لوله ساخت برای همه توسعه‌دهندگان، نه فقط استخدام‌های جدید، اولویت‌بندی کند. کلید این است که شاخص‌های DevEx را به عنوان شاخص‌های پیش‌بینی سلامت تیم در نظر بگیرید و ظرفیت مهندسی را برای رفع گلوگاه‌هایی که آشکار می‌کنند تخصیص دهید.

با اندازه‌گیری، تحلیل و اقدام مداوم بر این شاخص‌ها، شما فرهنگی را ایجاد می‌کنید که در آن کارایی یک پروژه یک‌باره نیست، بلکه یک سفر مداوم است. این رویکرد منجر به تحویل سریع‌تر ویژگی‌ها، رضایت شغلی بالاتر و یک سازمان مهندسی مقاوم‌تر می‌شود.

کوچک شروع کنید. یک شاخص، مانند میانگین زمان تا ادغام برای PRها را انتخاب کنید، آن را به مدت یک ماه ردیابی کنید و یک تغییر بر اساس داده‌ها پیاده‌سازی کنید. تأثیر آن فوری خواهد بود و فرآیند به مرور زمان پایدار خواهد شد.

Share: