⌛ اصول نرم‌افزارهای انترپرایز یا Enterprise Software Principles

اصول نرم‌افزارهای انترپرایز یا Enterprise Software Principles

1️⃣ بخش یک: ساختار و سازمان‌دهی تولید (ابزار، فرایند، فرهنگ)

- ساختار و سازمان‌دهی تولید چیه؟


ساختار و سازماندهی تولید نرم‌افزار رو من ذیل ۳ مولفه اصلی بیان می‌کنم. یعنی فرهنگ، فرایند، و ابزار:


۱: ابزار:

ابزار را شاید بشه ساده‌ترین مولفه از بین ۳ عامل دونست (هرچند خیلی‌ها همین رو هم به درستی ندارن). ابزار یعنی هر سرویس سخت‌افزاری و نرم‌افزاری که به شما کمک می‌کنه تا چرخه عمر نرم‌افزار رو بهتر مدیریت و تجربه کنید. مثلا:


پلتفرم مناسب برای مستندسازی که جستجوی خوب، نسخه‌بندی، امکانات امنیتی، کامپلاینس، پشتیبانی از نمودار (به‌صورت کد، نه صرفاً تصویر)، و کوئری پویا از سورس‌کد یا سیستم مدیریت پروژه رو فراهم کنه.


یا سرور/سرویس Version Control و CI/CD درست و حسابی (منظورم TFS 2012 اونم به صورت شلخته نیست)


یا ابزارهای مدرن نظارت (منظورم observability است نه monitoring)


یا سرویس Secret Manager (منظورم KeePass نیست طبیعتا)


یا...


۲: فرایند:

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


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


۳: فرهنگ:

ابزار و فرایند، قابل خریداری و استقرار هستن؛ اما موفقیت اون‌ها منوط به پذیرش و التزام عملی تیم است. تجربه نشون می‌ده که بدون فرهنگ مناسب، بهترین ابزارها هم در عمل نادیده گرفته می‌شن؛ و بهترین فرایندها به حاشیه رانده میرن.

فرهنگ‌سازی، حتی از تدوین و استقرار فرایند هم سخت‌تره! فرهنگ نیروی انسانی و فرهنگ سازمانی چیزی نیست که یک شبه به دست بیاد، محصول قابل خریداری و استقرار سریع نیست!


فرق سازمان با جامعه اینه که شما در جامعه وقت، زیاد داری! بین رنسانس تا انقلاب صنعتی چند قرن زمان برد، ولی یک سازمان چند قرن یا چند سال زمان نداره! حساب دو دو تا چهار تا است؛ دیر بجنبی زیان‌ده و ورشکسته می‌شی. حتی اگر دولتی باشی، به خودت میای و می‌بینی ۲,۲۴۵,۶۲۳ نفر کارمند داری که راهی جز تعدیل و جایگزینی درصد بسیار بالایی از اونها نداری... و دلیل اصلیش: «فرهنگ نیروی انسانی» است

همون‌طور که در ادبیات Enterprise Architecture اومده "Culture Ensures Sustainability" فرهنگ، پایداری رو تضمین می‌کنه. حالا فرهنگ مهندسی در اینجا به معنی ترکیب سه عامل است:


۱. شایستگی فنی (Technical Competence):

تسلط بر معماری، الگوهای طراحی، و...


۲. تعهد به فرایند (Process Commitment):

پایبندی به code review، testing، و documentation


۳. مهارت در ابزار (Tool Proficiency):

استفاده مؤثر از CI/CD، و observability tools


بعضی گزارش‌های McKinsey می‌گن حدود ۷۰٪ پروژه‌های تحول دیجیتال، به دلایل فرهنگی و سازمانی شکست می‌خورن. تجربه شخصی من در ایران این عدد رو حتی بالاتر، و حدود۹۰٪ نشون می‌ده.


تغییر فرهنگ، کندترین و حیاتی‌ترین بخش transformation است و نیازمند ۳-۵ سال زمان، تعهد مدیریت ارشد، و گاهی جایگزینی تدریجی ۲۰-۴۰٪ نیروی انسانی است.


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


چکیده:

- Tools Provide Acceleration, Not Discipline

- Processes Create Predictability

- Culture Ensures Sustainability


اگر از این مطلب استقبال بشه، در ادامه، موضوعات زیر رو هر کدوم ذیل ۳ مولفه‌ای که در این مقدمه عرض کردم در یک نرم‌افزار انترپرایز بررسی می‌کنم:


بخش دوم: الزامات توسعه و نگهداری محصول

بخش سوم: الزامات زیرساخت

بخش چهارم: الزامات امنیت

بخش پنجم: الزامات طراحی و نگهداشت محصول


💬 فیدبک شما حتمن در جهت‌دهی ادامه مطالب کمک می‌کنه 😊