دو در، یک دروازه: حکمرانی فراتر از EDD
قوانین آنبوردینگ و اصطکاک توسعهدهندگان اغلب شبیه به یک مشکل به نظر میرسند، اما اینطور نیست.
وقتی تیم شما به چهل توسعهدهنده میرسد، نمیتوانید از روشهای آموزشی یکسان برای همه استفاده کنید. برخی از توسعهدهندگان در کار با عوامل هوش مصنوعی (AI agents) متخصص هستند و برخی دیگر تازهکارند. اگر یک مجموعه قانون واحد برای همه بنویسید، شکست خواهید خورد.
توسعهدهندگان باسابقه قوانین را نادیده میگیرند و توسعهدهندگان تازهکار با آنها دستوپنجه نرم میکنند.
شما باید رویکرد خود را به دو لایه متمایز تقسیم کنید:
ابزارهای آگاهی (Awareness tools) این ابزارها آنچه را که یک فرد میداند تغییر میدهند. نمونههایی از آنها شامل کامنتهای بازبینی هوش مصنوعی یا هشدارهای linting است. این ابزارها مانند یک مسئول پذیرش عمل میکنند؛ متوجه مسائل میشوند و اقداماتی را پیشنهاد میدهند. آنها تنها زمانی کار میکنند که فرد به آنها گوش دهد.
ابزارهای حکمرانی (Governance tools) این ابزارها آنچه را که یک فرد میتواند انجام دهد تغییر میدهند. نمونههایی از آنها شامل محافظت از شاخه (branch protection) و دروازههای ادغام (merge gates) است. این ابزارها مانند یک نرده چرخشی (turnstile) عمل میکنند. آنها مذاکره نمیکنند و اگر الزامات برآورده نشود، فرآیند را متوقف میکنند.
اشتباه اینجاست که وقتی به یک نرده چرخشی نیاز دارید، از یک مسئول پذیرش استفاده کنید. پیشنهاد هوش مصنوعی که یک توسعهدهنده آن را نادیده میگیرد، حکمرانی نیست؛ بلکه فقط سر و صدا (noise) است.
برای رفع این مشکل، از دو لایه مجزا استفاده کنید:
لایه حکمرانی (The Governance Layer) این لایه کوچک و همگانی است و بدون توجه به مهارت، برای همه اعمال میشود. این لایه شامل قوانینی مانند عدم Push مستقیم به شاخههای محافظتشده و بازبینیهای اجباری است. موضوع بر سر اعتماد نیست، بلکه محافظت از کد (codebase) در برابر ریسک بالای تغییرات توسط عوامل هوش مصنوعی است.
لایه داربستبندی (The Scaffolding Layer) این لایه شخصیسازیشده و منعطف است. شامل مراحلی مانند برنامهریزی صریح و استدلال مفصل است. توسعهدهندگان تازهکار برای تقویت قدرت قضاوت خود، به شدت از این لایه استفاده میکنند. توسعهدهندگان باسابقه با افزایش مهارت خود میتوانند شدت استفاده از آن را کاهش دهند. این یک پاداش برای سابقه کار نیست، بلکه ابزاری است که با افزایش مهارت، غیرضروری میشود.
همچنین باید به ریسک خودِ تغییر نیز توجه کنید. دستکاری یک فایل پیچیده و با وابستگی بالا (highly coupled) توسط یک توسعهدهنده ارشد، ریسک بیشتری نسبت به دستکاری یک تابع کاربردی (utility function) ساده توسط یک توسعهدهنده جونیور ایجاد میکند. سیستم باید به کد پاسخ دهد، نه فقط به فرد.
در نهایت، بر مالکیت تمرکز کنید. یک عامل هوش مصنوعی ممکن است کد را بنویسد، اما مسئولیت نتیجه با توسعهدهنده است. اگر توسعهدهنده نتواند در طول بازبینی توضیح دهد که چرا تغییری ایجاد شده است، آن تغییر نباید ادغام (merge) شود.
از دستهبندی افراد بر اساس سطوح (tiers) دست بردارید. در عوض، ابزارهایی فراهم کنید که به آنها اجازه دهد ریسک خود را مدیریت کنند.
Source: https://dev.to/karlheinz_reichel_7ee08d/two-doors-one-gate-navigating-governance-beyond-edd-5clj
Optional learning community: https://t.me/GyaanSetuAi
