tech-afternoon
1.22K subscribers
174 photos
6 videos
6 files
167 links
تِک‌افترنون، رویدادی گاه‌به‌گاه است با موضوعات حول معماری و توسعه نرم‌افزار، این کانال هم برای اشتراک اخبار، آموزش، نکاتی حول مهندسی نرم‌افزار، دیتابیس‌، تکنولوژی و مدیریت تولید محصولات نر‌م‌افزاری خواهد بود.
youtube.com/@AminTechTalks/videos
امین مصباحی
Download Telegram
اصول نرم‌افزارهای انترپرایز یا 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


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

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

💬 فیدبک شما حتمن در جهت‌دهی ادامه مطالب کمک می‌کنه 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍76🔥6🤔1
💡🌱 چرا بیشتر برنامه‌های توسعه شکست می‌خورند؟ مشکل موقعیت‌یابی اشتباه!

وقتی آقای الف، (یک دولوپر از نظر مهارت فنی، جونیور، ولی با ۱۲ سال تجربه) برنامه یادگیری سال جدیدش رو برای من فرستاد تا نظرم رو بگم؛ لیستش از الگوهای طراحی مایکروسرویس تا هوش‌مصنوعی تا... رو در برداشت. ازش پرسیدم: «آخرین باری که یک Pull Request یا Merge Request دادی که به بخش محدودی از نرم‌افزار بهینگی کارایی یا ساختاری اضافه کرده باشه (و نه فقط خواسته‌ی تسک) و کامنت‌های بیسیک هم از دید دولوپرهای ارشد نگرفته باشه کِی بوده؟ پاسخ صریح و مطمئنی نداشت! این دقیقاً جاییه که اکثر برنامه‌های توسعه، چه فردی، تیمی یا سازمانی، شکست می‌خورن: ما به جای شناخت دقیق موقعیت فعلی، مستقیم سراغ مقصد می‌ریم. مشکل: ما نمی‌دانیم واقعاً کجا ایستاده‌ایم.

تصور کنید می‌خواهید از تهران به اصفهان بروید، اما GPS موقعیت فعلی‌تون را اشتباه تبریز نشون می‌ده. هر مسیری که انتخاب کنید، اشتباهه، نه به خاطر مقصد، بلکه به خاطر نقطه شروع. سه سناریوی واقعی از موقعیت‌یابی اشتباه:

1️⃣ سناریو ۱: دولوپر جونیور، آقای الف
موقعیت واقعی: کدهاش هنوز فراتر از خواسته‌ها نیست، متدهاش بنا به دانش کم، و نه ضرورت و اقتضای شرایط، بیش از ۸۰ خط می‌شن، استفاده بجا از الگوهای طراحی رو نمی‌دونه.

موقعیت ادراک‌شده:
آمادگی برای یادگیری معماری‌های پیچیده، فریب عدد سال‌های تجربه، فریب آشنایی با عنوان مفاهیم پیشرفته

نتیجه: سه ماه وقت صرف یادگیری DDD می‌کنه، اما کدهایش همون if/else تودرتوی قبلی با اسامی fancy است. API چت‌جی‌پی‌تی صدا می‌زنه، توهم دانش GenAI داره.

هزینه: ۳۶۰ ساعت وقت + frustration + از دست دادن فرصت یادگیری Clean Code، کسب توهم بیشتر که مثل یک دیوار محکم جلو یادگیری صحیح و به‌جا رو ازش می‌گیره!

2️⃣ سناریو ۲: تیم توسعه (یک استارتاپ ۱۵ نفره)

موقعیت واقعی: Code coverage زیر ۳۰٪، هیچ integration test ندارن، deployment تقریبا دستی است، تیم آلوده به وایب‌کدینگ مخفی شده.

موقعیت ادراک‌شده: آماده رفتن به microservices، توانایی تحویل فیچر و توسعه سریع‌تر (وهم وایب‌کدینگ بدون سنجش میزان کد کثیف و ناکارآمد و ناهمگون)

نتیجه: شش ماه صرف split کردن monolith شد، اما debugging چندبرابر شد چون observability ندارند، روز به روز درک کدها سخت‌تر شده، هر اصلاح با وایب‌کدینگ موجب خطا و مشکل در جای دیگه می‌شه.

هزینه: ۶ ماه × ۱۵ نفر × میانگین حقوق = حداقل ۴.۵ میلیارد تومن + velocity کمتر شده

3️⃣ سناریو ۳: مدیر محصول تازه‌کار

موقعیت واقعی: هنوز نمی‌دونه چطوری یک user story خوب بنویسه یا backlog prioritize کنه

موقعیت ادراک‌شده: آماده طراحی استراتژی سه‌ساله محصول

نتیجه: یک سند ۴۰ صفحه‌ای strategy که هیچ‌وقت اجرا نمی‌شه، چون execution از پایه مشکل داره، مدیران فریفته‌ی محتوای غیرواقعی سند شدن

هزینه: اعتماد تیم + فرصت تمرکز روی مهارت‌های بنیادی

فریمورک سه‌مرحله‌ای برای موقعیت‌یابی صحیح

مرحله ۱: Assessment (ارزیابی بی‌رحمانه سطح فعلی) برای موقعیت‌یابی صحیح، باید از خود سؤالات سختی بپرسید که پاسخ‌شان قابل اندازه‌گیری باشه
و اگر نمی‌تونید موقعیت فعلی را با یک عدد یا fact مشخص کنید، هنوز موقعیت‌یابی نکرده‌اید.

مرحله ۲: Gap Analysis (محاسبه فاصله واقعی) حالا که موقعیت فعلی رو می‌دونید، باید بفهمید دقیقاً یک سطح بالاتر کجاست. نه دو سطح، نه سه سطح؛ فقط یک سطح. این مفهوم را Vygotsky، روان‌شناس روس، دهه ۱۹۳۰ ذیل Zone of Proximal Development (ZPD) تعریف کرده (اگر دوست داشتید بیشتر بخونید). و نشون می‌ده یادگیری فقط در یک باند باریک اتفاق می‌افته:

خیلی آسون » Comfort Zone (یادگیری صفر)
کمی چالش‌برانگیز » Learning Zone (یادگیری حداکثر) ← ZPD همینجاست
خیلی سخت » Panic Zone (یادگیری صفر)

مرحله ۳: Action Planning (طراحی گام اول قابل اجرا) بعد از شناخت موقعیت و تعیین گام بعدی، باید یک برنامه خیلی کوچیک طراحی کنید که در عمل اجرا شدنی باشه.

آمار: ۶۸٪ از مهاجرت‌ها به microservices در سازمان‌هایی که بلوغ کافی نداشتن، منجر به کاهش productivity شد (منبع: ThoughtWorks Technology Radar 2019)
یا ۷۵٪ از برنامه‌های یادگیری سال نو تا پایان فوریه رها می‌شن! (منبع: University of Scranton research) دلیل اصلی: اهداف خیلی بالاتر از سطح فعلی

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

اگر پاسخ روشنی ندارید، قبل از هر برنامه‌ریزی دیگه‌ای، اول موقعیت‌یابی کنید.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍166🔥5👏2🤔1
💡 استفاده از GenAI در توسعه نرم‌افزار، خوب، بد، زشت!

چند سالیه که سهم عبارت «AI» لابلای جملات، تیتر اخبار، صحبت‌های یومیه‌ی عوام تا متخصصین، شهروند تا دولتمرد، مصرف‌کننده تا صنعت‌گر روز به روز بیشتر شده. ترم‌هایی مثل Vibe Coding یا AI-Driven Development یا AI Slop به دایره‌ی واژگانمون اضافه شدن. حالا این وسط یه عده سودهای کوتاه‌مدت می‌برن، مثل پکیج‌فروش‌ها، سرویس‌هایی که چند تا API رو صدا می‌کنن و یه سرویس مثلا هوشمند ارائه می‌کنن؛ و برخی هم بیزنس‌های بر پایه‌ی این تحول ایجاد کردن، مثل سازنده‌های مدل‌های پایه، سرویس‌های کاربردی مدیریت AI مثل Agent Manager یا Prompt Engineering Platform و… یا اینکه AI رو مثل یک ابزار دیدن و کاربری اون رو «صحیح و اصولی» یاد گرفتن و مرتبا به‌روز می‌شن تا مثل دورانی که اکثریت با محدودیت‌های نرم‌افزارهای دسکتاپ دست‌وپنجه نرم می‌کردن و عده‌ای خیلی زود و به موقع، توسعه مبتنی بر وب رو جایگزین کردن، بتونن از مواهب AI به نفع بهره‌وری، خلاقیت، و توسعه پایدار بهره ببرن.
این مطلب رو در چند بخش می‌نویسم، با توجه به فضای جامعه توسعه نرم‌افزار، متن رو خیلی مطالعه‌-محور می‌نویسم تا مقاومت کمتری نسبت به تحلیل شخصی داشته باشه؛ اول به «بد»، و در ادامه به «زشت» و نهایتا به «خوب» می‌پردازم:

هوش مصنوعی مولد (GenAI) می‌تونه بهره‌وری رو تا ۵۵٪ افزایش بده، اما اغلب، کدهای ناسازگار و شکننده تولید می‌کنه که نگهداری اون‌ها دشواره. (sloanreview.mit.edu)
توی تیم‌های نوپا، GenAI ضعف‌های فنی رو پوشش می‌دهد اما بدهی فنی ایجاد می‌کنه و حتی تغییرات کوچک‌تغییرات رو پرریسک می‌کنه. (sloanreview.mit.edu)
در شرکت‌های بالغ «با شیوه‌های استاندارد»، GenAI خطاها رو کاهش می‌ده و نوآوری رو تا ۶۴٪ بهبود می‌ده، هرچند نیاز به بررسی انسانی داره. (mckinsey.com)
مطالعات نشون می‌ده ۴۸٪ کدهای GenAI دارای آسیب‌پذیری‌های امنیتی هستن، که البته این یه موضوع بحث‌برانگیزه. (secondtalent.com)

💩 فصل اول: The Bad: بدهی فنی‌ای که نمی‌بینیم

- کد چرخشی (Code Churn): سیگنال خطر: تحقیقات GitClear روی ۲۱۱ میلیون خط کد تغییریافته بین سال‌های ۲۰۲۰ تا ۲۰۲۴ نشون می‌ده که Code Churn (درصد کدی که کمتر از دو هفته پس از نوشته شدن اصلاح یا حذف می‌شه) در سال ۲۰۲۴ دو برابر سال ۲۰۲۱ شده. این یعنی کدی که AI تولید می‌کنه، اغلب ناقص یا اشتباهه و نیاز به بازنگری سریع داره.

- کپی‌پیست به جای معماری: در سال ۲۰۲۴، GitClear افزایش ۸ برابری در بلوک‌های کد تکراری (۵ خط یا بیشتر) رو ثبت کرده (یعنی ۱۰ برابر بیشتر از دو سال پیشش). مشکل اینجاست که AI به جای refactor کردن و استفاده مجدد از کد موجود، ترجیح می‌ده کد جدید بنویسه. نتیجه؟ نقض اصل (DRY (Don't Repeat Yourself و کدبیسی که مدیریتش کابوسه.
در سال ۲۰۲۴، ۴۶٪ تغییرات کد، خطوط جدید بودند و کد کپی‌پیست شده، بیش از کد جابجا شده (moved) بوده (یعنی کمتر refactoring شده و بیشتر به صورت بی‌رویه کد اضافه شده).

- افزایش باگ و کاهش پایداری: مطالعه شرکت Uplevel که توسعه‌دهنده‌های با دسترسی به Copilot رو بررسی کرده، نشون می‌ده این دولوپرها به طور معناداری نرخ باگ بالاتری تولید کردن، در حالی که بهره‌وری کلی‌شون ثابت مونده. گزارش DORA 2024 گوگل هم تأیید می‌کنه: ۲۵٪ افزایش در استفاده از AI منجر به بهبود در code review و مستندات می‌شه، اما ۷.۲٪ کاهش در پایداری تحویل (delivery stability) ایجاد می‌کنه. همچنین گزارش Harness 2025 نشون داد اکثر توسعه‌دهندگان زمان بیشتری صرف debugging کد تولیدشده توسط AI و رفع آسیب‌پذیری‌های امنیتی می‌کنند.


💬 قبل از پردختن به بخش دوم، یعنی «زشت» و بخش سوم، یعنی «خوب» نظرتون رو در مورد استفاده خوب بگید و بنویسید که آیا این آسیب‌ها رو قبول دارین؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10741🤓1
💡💡 قسمت دوم: استفاده از GenAI در توسعه نرم‌افزار، خوب، بد، زشت!

🥴 فصل دوم: The Ugly: تبعات طولانی‌مدت

اگر "بد" نمایانگر اصطکاک عملیاتیه، "زشت" نمایانگر ریسک سیستمیه. داده‌های سال‌های ۲۰۲۴ و ۲۰۲۵ به بحرانی قریب‌الوقوع در قابلیت نگهداری و امنیت نرم‌افزار اشاره می‌کنن...

جنبه‌ی «زشت» ماجرا اینه که نتیجه‌ی نهایی استفاده از هوش مصنوعی مولد به‌شدت وابسته به بلوغ فنی و انضباط تیمه. اگر تیمی فرهنگ کدنویسی سالم، معیارهای کیفی و فرایندهای بازبینی روشن نداشته باشه، برای استفاده از GenAI دستورالعمل «فکر شده» و متناسب با نیازها و استعداد تیم نداشته باشه؛ AI می‌تونه هرج‌ومرج ایجاد کنه یا هرج‌ومرج موجود رو تشدید کنه. توی برخی نظرسنجی‌ها دیده شده که کارکنان احساس کردن بهره‌وری‌شون با وجود هوش مصنوعی کاهش یافته!

بدهی فنی که قابل پرداخت نیست
پروفسور Armando Solar-Lezama استاد دانشگاه MIT می‌گه: "AI مثل یه کارت اعتباری جدیده که به ما اجازه می‌ده بدهی فنی رو به روش‌هایی انباشته کنیم که هرگز قبلاً نتونسته بودیم."
مطالعه دانشگاه Carnegie Mellon روی ۸۰۷ ریپو GitHub که بین ژانویه ۲۰۲۴ تا مارچ ۲۰۲۵ که از Cursor استفاده کرده بودن، نشون می‌ده که با وجود بهبودهای مدل‌های AI (Sonnet، GPT و غیره)، الگوی کاهش کیفیت کد همچنان ادامه داره. حتی با ارتقای ابزارها، کیفیت کد مسیر خودش رو به سمت افول طی می‌کنه! دلایلی مثل زمان صرف زیاد برای آزمون‌وخطا با ابزار یا رفع خطاهای ناشی از اون رو می‌شه در نظر گرفت؛ و تفاوت نتایج بین شرکت‌های مختلف (از افزایش کارامدی تا معضلات عمیق) نشون می‌ده که صرف خریداری یا فعال‌سازی ابزار یا سرویس هوش‌مصنوعی تضمینی برای موفقیت نیست.

- نابودی دانش تیمی
: باز هم مطالعات نشون می‌دن در ۱۶.۸٪ از چت‌های ChatGPT، کد تولید شده به صورت دقیق (با تغییرات جزئی) توی پروژه‌های GitHub استفاده شدن. مشکل اینجاست: وقتی توسعه‌دهنده‌ها کد AI رو بدون درک عمیق copy می‌کنن، expertise model توی تیم توسعه آسیب می‌بینه و Truck Factor (تعداد اعضای تیم که از دست دادنشون پروژه را می‌تونه نابود کنه، گاهی هم bus factor گفته می‌شه) بدتر می‌شه.

- معضل Context Collapse در آینده: اگه کدهایی که مدل‌های آینده از روی اون‌ها train می‌شن، پیچیده‌تر و غیرقابل نگهداری‌تر بشه، خطر واقعی اینه که مدل‌های جدیدتر این روندها رو به صورت نمایی تقویت و تشدید می‌کنن و کد بدتری تولید خواهند کرد؛ دلیلش هم اینه که از روی کدهای شلوغ و بی‌کیفیتی آموزش دیده‌اند.

- مشارکت‌کننده دوره‌گرد: کدهای تولید شده توسط هوش مصنوعی شبیه کار یک پیمانکار کوتاه‌مدته: از نظر عملکردی در انزوا، صحیح، اما منفک از قراردادها و معماری سیستم کلی! این منجر به تکه‌تکه شدن (Fragmentation) سبک و منطق کد می‌شه.

- پارادوکس بهره‌وری مهندسی: ترکیب "خوب" (سرعت) و "زشت" (ریزش/کیفیت) منجر به شکل‌گیری "پارادوکس بهره‌وری مهندسی" شده. سازمان‌ها شاهد افزایش چشمگیر خروجی (پول‌ریکوئست‌ها، ویژگی‌ها) هستن، اما همزمان کاهش پایداری و افزایش هزینه‌های نگهداری رو تجربه می‌کنن. گزارش سال ۲۰۲۵ DORA از گوگل نشون داد که افزایش ۹۰ درصدی در پذیرش هوش مصنوعی با افزایش ۹ درصدی نرخ باگ و افزایش ۹۱ درصدی زمان بازبینی کد همبستگی داره (بدتر از گزارش DORA در سال ۲۰۲۴ که پیش‌تر در بخش افزایش باگ و کاهش پایداری قسمت اول اشاره کردم). زمان صرفه‌جویی شده در تایپ کردن کد، عملاً به مرحله بازبینی و دیباگ منتقل شده؛ با این تفاوت که هزینه این مرحله بالاتره، چون خوندن کد تولید شده سخت‌تر از نوشتنشه.

- انباشت بدهی فنی: انباشت کدهای ضعیف ساختاری، که با پیچیدگی بالا (Cyclomatic Complexity) و تکرار زیاد مشخص می‌شن؛ بدهی‌ای ایجاد می‌کنه که باید با بهره پرداخت بشه. Forrester پیش‌بینی می‌کنه که سال ۲۰۲۶، ۷۵٪ از شرکت‌ها به دلیل تولید کد کنترل‌نشد‌ه‌ی هوش مصنوعی، با بدهی فنی "متوسط تا شدید" مواجه خواهند شد.

💬 قسمت بعدی از بخش دارک ماجرا خارج خواهیم شد و به بخش «خوب 👌» خواهم پرداخت ولی نظر و تجربه شما رو دوست دارم بدونم...
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍432🤓2
💡 قسمت سوم: استفاده از GenAI در توسعه نرم‌افزار، خوب، بد، زشت!

🏆 فصل سوم: The Good: موفقیت در سازمان‌های بالغ


شنیدید که مارگزیده از ریسمون سیاه و سفید می‌ترسه؟ در حقیقت من هم اینقدر طی این سال‌ها شاهد جَوزَدگی اهالی نرم‌افزار بوده‌ام که سعی می‌کنم قبل از محاسن یک تکنولوژی مستعد به حباب و جَو و هیجان، مخاطرات و الزامات و موارد کاربردش رو بگم! طی دو قسمت اول، با توجه به اقبال و وابستگی زیادی که توی اکوسیستم نسب به GenAI پدید اومده، سعی کردم تا مبتنی بر بررسی‌ها و با حداقل رسوندن نظر شخصی، جنبه‌های بد و زشت رو اشاره کنم و سرنخ‌هایی برایی مطالعه عمیق‌تر به اشتراک بگذارم. حالا توی قسمت سوم، بریم سراغ جنبه‌ی خوب استفاده از GenAI در فرایند توسعه!

- کارایی در سازمان‌های بالغ و دارای دیسیپلین: توی شرکت‌ها و تیم‌هایی که اصول مهندسی نرم‌افزار و فرایندهای بازبینی کد، به‌خوبی درک و نهادینه شده باشه، هوش مصنوعی مولد می‌تونه بدون افت کیفیت به بهبود عملکرد کمک کنه. به عنوان مثال، eBay با یه آزمایش A/B روی ۳۰۰ توسعه‌دهنده بهبود ۱۷٪ روی زمان مرج شدن کدها و بهبود ۱۲درصدی Lead Time for Change روی گروهی که از Copilot استفاده می‌کردن دیده! علاوه بر این کیفیت کد (بر اساس آنالیز Sonar) بین دو گروه آزمایشی و کنترل تفاوت معناداری نداشته. (نتیجه زمینه‌سازی استفاده از AI و بعد، به خدمت گرفتنش)

- فرصتی برای بزرگ‌تر و پخته‌تر بودن: اگر به «شکل اصولی» استفاده بشه، آموزش داده بشه، و نه اینکه تجربی و آزمون و خطایی باشه؛ گام‌به‌گام و با برنامه، مرحله به مرحله به فرایندها بیاد؛ شما فرصت یادگیری مداوم، بسترسازی برای بهبودها و تحلیل‌های بعدی از طریق تیکت‌ها و مستندات بهتر، تست‌نویسی بهینه و یادگیری رو در تیمتون فراهم کردید. مثلا به جیرا وصلش کنید تا اگر تیکت دقیق و اصولی نوشتید، چک کنه توی PR/MR آیا همه Acceptance Criteria لحاظ شده یا چیزی از قلم افتاده! مثلا مستندسازی فرایندها روی از کدهای قدیمی برای بازنویسی سیستم تسریع کنید، یا مثلا با ابزارهای غیر GenAI ترکیب کنید تا پیش‌گیرانه مانع از ورود الگوهای تکراری و پیچیدگی اشتباه شید (لطفا اگر علاقه داشتید مطالب مرتبط با code metricها رو در کانال مطالعه کنید)

- ذره‌بینی برای واضح‌تر دیدن: تنبلی و رخوت و بی‌انگیزگی چیزی نیست که با GenAI از بین بره؛ شاید فردی که زمینه‌اش رو داره و عاشق «حل‌ِمسئله» نیست، کم‌کم تنبلی نهان یا غیرفعالش رو نشون بده، ولی می‌شه از یک منظر به سرویس‌های هوش مصنوعی به مثابه ذره‌بینی پرداخت که می‌تونن کمک کنن خصوصیات منفی افراد آشکارتر بشه؛ آیا این تبعات منفی داره؟ بله حتمن داره؛ ولی یادمون نره ریشه‌ی خصوصیات کسی که حاضره ۳ ساعت با کوپایلوت و کرسر ور بره ولی روی حل یه مسئله فکر نکنه، قدیمی‌تر از دوران پیدایش GenAI است و این آدم ۳ سال پیش، بدون خوندن توضیحات مردم، کدها رو از StackOverflow کپی‌/پیست می‌کرده. این آدم، در گذشته‌ی دورتر توانایی‌هایی رو کسب نکرده که حالا دیره! و من شخصا این رو یه مزیت GenAI میدونم.
یه نکته مهم و خوشبینانه اینه که ۶۸٪ سازمان‌ها طبق گزارش World Quality Report 2024 به طور فعال از GenAI استفاده می‌کنن یا roadmap دارن براش و «برخی» موفق هستن؛ این عدد توی گزارشات ۲۰۲۵ رشد معنی‌داری کرده؛

- نکته مهم: کلی آمار توی فیش‌ها و نوت‌هایی که حین بررسی جمع می‌کنم، برای این بخش در نظر گرفتم ولی به ذهنم رسید با این موضوع جایگزین کنم که کلی عدد و آمار وسوسه‌کننده از بهبود اعتماد به نفس تیم، افزایش بهره‌وری، لذت برنامه‌نویسی و... توسط مراکز معتبر منتشر شده و خواهد شد؛ دقت کنید که خیلی از این‌ها درسته، ولی مثلا مایکروسافت در مورد برنامه‌نویس‌هاش اعلام کرده، ولی نکته مستتر اینه که کلی تیم به صورت تخصصی در شرکت‌هایی مثل مایکروسافت، گوگل، اوبر و تسلا و... به صورت تخصصی دارن زیرساخت AI و GenAI برای تیم‌های توسعه فراهم می‌کنن، پس راه‌به‌خطا نرفتن اون تیم‌ها کمتر محتمل است تا شرکتی که توسعه‌دهنده‌هاش خودجوش دارن با یه سری ابزار وَر می‌رن یا به صورت غیرساختاریافته ازشون استفاده می‌کنن؛ بدون هیچ guideline درون‌سازمانی، agent داخلی و نظارت platform engineering. یا برخی از این آمارها با حمایت سرویس‌دهنده‌هایی تهیه شده که نتیجه بایاس است به سمت ترغیب شما به خرید copilot یا هر سرویس دیگه‌ایه؛ درست مثل تبلیغ بستنی است که طبیعتا کسی از چربی و شکر و عوارضش رنج نمیکشه و همه با لذت بستنی رو می‌خورن!

💬 این مطلب در نظرسنجی اخیر کانال، رتبه دوم رو داشت که سعی کردم به اندازه محدودیت و بضاعت تلگرام اندکی بهش بپردازم، اگر چه میشه ساعت‌ها در موردش صحبت و بحث کرد، ولی امیدورام حداقل سرنخ‌هایی ارائه کرده باشم.
Please open Telegram to view this post
VIEW IN TELEGRAM
64👏2💯2👍1
چه دسامبر؛ چه اسفند؛ چه آخر پاییز؛ باید بالاخره جوجه‌ها رو شمارد...

فیدبک، خصوصا از نوع سازنده‌اش خیلی خیلی از چیزی که فکر می‌کنیم مهم‌تره. فیدبک، یه مهارت، یه فرهنگ و یه ابزار مهم برای ایجاد و «حفظ» یک فضای سازنده توی تیم و سازمانه. نه فقط یه ابزار «بالا به پایین» با رویکرد هویج و چماق!
فیدبک باید از هر سطحی به هر سطحی از تیم و سازمان جاری و ساری باشه. و فیدبک سالانه هم در کنار فیدبک‌های دوره‌ایِ طی سال، لازم و مهمه...
با توجه به نزدیک‌شدن به آخر پاییز و آخر سال میلادی، شاید بد نباشه مرور کنیم فیدبک خوب، چجوریه؛ متدهای ساختاریافته فیدبک مثل SBI (Situation-Behavior-Impact) یا EEC (Example-Effect-Change/Continue) چی هستن و چرا باید «تبیین، آموزش، و پیاده‌سازی» بشن توی تیم/سازمان...


💬 مطلب بعدی‌مون این باشه؟
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍88😍3💯1
♻️ فیدبک، راه‌حل بهبود و توسعه مداوم...
فیدبک، یک فرهنگه، که برای ایجادش باید تلاش کرد، ممارست داشت و رهاش نکرد. باید مستندش کرد، آموزشش دارد، به عنوان ارزش و روش نهادینه‌اش کرد و از روز آنبوردینگ روش تکیه کرد؛ تا بتونه در میان/بلند مدت میوه بده.

🥕🪓 فیدبک: فراتر از هویج و چماق

خیلی از ما فیدبک رو با «نقد کردن» یا «تشویق کردن» اشتباه می‌گیریم. فکر می‌کنیم ابزاریه که الزاما مدیر از موضوع بالا نسبت به کارمند استفاده می‌کنه تا بتونه با تشویق و تنبیه یا ملقمه‌ای از هر دو وادارش کنه تا رفتار و کارآمدی دلخواهش رو دنبال کنه! (رویکرد هویج و چماق).

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

چرا فیدبک‌های "حسی" کار نمی‌کنند؟
همه ما جمله‌هایی مثل «کارت عالی بود» یا «باید بیشتر دقت کنی» را شنیدیم. این‌ها فیدبک نیستن؛ این‌ها نظرات گُنگ هستند! فیدبک مبهم نه تنها باعث بهبود یا اصلاح رفتارها نمی‌شه، بلکه می‌تونه باعث سوءتفاهم و گارد گرفتن طرف مقابل بشه. برای حل این مشکل، ما به مدل‌های ساختاریافته نیاز داریم تا بتونیم قبل از ارائه بازخورد محتوا رو بریزیم توی یک قالب استاندارد، ببینیم آیا قالب رو پر می‌کنه؟ یا باید ازش کم و زیاد کنیم!

۱. مدل SBI: شفافیت به جای قضاوت
مدل SBI (مخفف Situation-Behavior-Impact) یکی از بهترین روش‌ها برای حذف قضاوت شخصی و تمرکز روی واقعیت‌هاست.

- موقعیت (Situation): دقیقاً بگید این عمل کِی و کجا رخ داده. (عمل یا اتفاق می‌تونه مثبت یا منفی باشه)
- رفتار (Behavior): دقیقاً چه رفتاری دیدید؟ (بدون استفاده از صفاتی مثل تنبل، بی‌دقت، عالی، دقیق و...).
- اثر (Impact): آن رفتار چه تاثیری روی شما، تیم یا پروژه گذاشته.

مثال غلط: «تو توی جلسات خیلی بی‌نظمی.»
مثال با SBI: «امروز صبح در جلسه بررسی اسپرینت (موقعیت)، وقتی وسط صحبت جعفر پریدی و صدات رو بالا بردی (رفتار)، باعث شد بقیه اعضای تیم ساکت بشن و دیگه ایده‌هاشون رو مطرح نکنن (اثر).»

۲. مدل EEC: چرخه یادگیری و اصلاح
مدل EEC (مخفف Example-Effect-Change/Continue) هم برای بازخورد اصلاحی (منفی) و هم برای بازخورد تقویتی (مثبت) خوبه.

- مثال (Example): یک مثال مشخص از رفتار رو بیان کنید.
- اثر (Effect): نتیجه رو شفاف بیان کنین.
- تغییر/ادامه (Change/Continue): اگر بازخورد منفیه، چه تغییری انتظار دارید؟ اگر مثبته، به ادامه دادنش تشویق کنید.

مثال برای ادامه (Continue): «گزارشی که دیروز فرستادی (مثال)، خیلی داده‌های دقیقی داشت و باعث شد مشتری قانع بشه (اثر). لطفاً همین ساختار رو برای گزارش‌های بعدی هم حفظ کن (ادامه).»

⚠️خطر » سوگیری‌های ناخودآگاه در کمین ما هستن! (Unconscious Biases)
یه فیدبک رو می‌شه ریخت توی قالب SBI یا EEC یا هر مدل دیگه‌ای. ولی این کافیه؟ نه. باید حواسمون باشه که فیدبک دادن می‌تونه به سوگیری‌های ناخودآکاه ما یا Unconscious Biases آلوده بشه و از مسیر سازنده بودن خارج! ۳ دشمن نامرئی فیدبک سازنده:

۱. سوگیری شباهت (Similarity Bias)
ما ناخودآگاه با کسانی که شبیه به ما فکر می‌کنن، لباس می‌پوشن یا پیش‌زمینه مشابهی دارن، راحت‌تریم. توی فیدبک، این باعث می‌شه با افراد «شبیه به خودمون» مهربون‌تر باشیم و خطاهاشون را نادیده بگیریم، در حالی که نسبت به بقیه سخت‌گیرتریم. این سمِ تنوع و رشد تیمه.

۲. سوگیری تأییدی (Confirmation Bias)
اگر من باور داشته باشم که «فلانی کارمند بی‌دقتیه»، مغز من فقط لحظاتی رو ثبت می‌کنه که اون اشتباه کرده و تمام کارهای دقیقش رو نادیده می‌گیره تا باور قبلی‌ام تأیید بشه! فیدبک بر اساس این سوگیری، فقط تکرار مکرراتِ ذهن فیدبک‌دهنده است؛ نه واقعیتِ عملکرد فیدبک‌گیرنده.

۳. سوگیریِ رویدادهای اخیر (Recency Bias)
این آفتِ ارزیابی‌های پایان سال (Year-end reviews) است. ممکنه همکار شما ۱۰ ماه عالی کار کرده باشه، اما چون دو هفته پیش یک اشتباه کرده، تمام ارزیابی سالانه‌اش تحت‌الشعاع اون خطای اخیر قرار می‌گیره. یا برعکس؛ یک سال کم‌کاری کرده ولی با یک ماه تلاشِ دقیقه نودی، همه‌چیز پوشیده می‌شه!

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

💬 میشه ساعت‌ها در مورد شیوه‌های بیان فیدبک، اشتباهات رایج، عکس‌العمل در قبال سوءبرداشت‌ها و شرایط پیچیده‌ی تقابلی صحبت کرد. خوشحال می‌شم تجربیات و نظراتتون رو بشنوم 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍54
چک‌لیست پیشنهادی جامع پایان سال برای تیم‌های نرم‌افزاری

🧐 بخش اول: مرور و ارزیابی سال گذشته (Retrospective)

1️⃣ محصول و deliverableها:
- مقایسه اهداف تعیین‌شده با نتایج واقعی (roadmap vs. delivery)
- بررسی کیفیت تحویل‌ها: باگ‌های پرتکرار، incident های مهم، downtime ها
- تحلیل feature هایی که موفق بودن در مقایسه با اون‌هایی که استفاده نشدن (impact کمی داشتند)
- مرور feedback تیم، کاربرها و مشتریان در طول سال

2️⃣بدهی فنی (Technical Debt)
- فهرست بدهی‌های حل‌شده: چه چیزهایی refactor شد؟ کدوم dependency های قدیمی آپدیت شدن؟
- بدهی‌های باقی‌مونده: اولویت‌بندی بر اساس تأثیر و ریسک
بدهی‌های جدید: چرا اضافه شدند؟ آیا قابل اجتناب بودن؟
- تخمین زمان لازم برای پرداخت بدهی‌های critical در Q1 سال پیش‌ِ‌رو

3️⃣عملکرد تیم
- بررسی velocity تیم در sprint ها/iteration ها
- تحلیل bottleneck ها و موانع اصلی
- شناسایی skill gap های تیم
- مرور میزان رضایت و engagement تیم (اگر نظرسنجی کردید)

4️⃣ زیرساخت و DevOps
- مرور incident های سال و زمان میانگین بازیابی (MTTR)
- بررسی هزینه‌های cloud/infrastructure، آیا optimization لازمه؟
- وضعیت CI/CD pipeline: سرعت build، deploy، test coverage
- مرور امنیت: آسیب‌پذیری‌های شناسایی‌شده و رفع‌شده


📡 بخش دوم: تحلیل ترندها و آینده‌نگری

رصد ترندهای ۲۰۲۶
- مطالعه حداقل ۳ منبع معتبر مثل Gartner, Deloitte, ThoughtWorks Tech Radar, Pluralsight Tech Trends
- بررسی roadmap پروژه‌های کدباز مرتبط با stack شما
- شناسایی ۳-۵ ترند مرتبط با حوزه کاری شما
- ارزیابی: کدوم ترندها به اهداف کسب‌وکار/محصول شما کمک می‌کنن؟

بررسی رقبا و صنعت
- رقبای اصلی شما چه feature های جدیدی اضافه کردن؟
- از مسیر آینده استک‌تکنولوژی، لایبری‌ها و... مورد استفاده‌تون آگاهید؟
- چه تکنولوژی‌های جدیدی توی صنعت شما در حال adoption هستن؟
- استانداردها و regulation های جدید رو در شناسایی کردید؟


بخش سوم: برنامه‌ریزی سال جدید

اهداف استراتژیک (Strategic Goals)
- تعریف ۳-۵ هدف کلیدی سال (SMART goals)
- اولویت‌بندی: چه چیزی باید بشود و چه چیزی خوبه که بشود
- تخصیص بودجه و منابع به اهداف
- تعریف معیارهای موفقیت برای هر هدف (KPI ها)

تبیین Roadmap فنی
- تمرکز اصلی شما در Q1 چیه؟ (معمولاً stability + پرداخت بدهی فنی)
- تمرکز آتی یعنی Q2-Q4: اهداف کلیدی و milestone ها
- لیست تکنولوژی‌هایی که می‌خواهید adopt کنین (با justification)
- برنامه آموزش تیم برای مهارت‌های جدید

مدیریت ریسک
- شناسایی ریسک‌های فنی و کسب‌وکاری سال آینده
- برای هر ریسک: احتمال، تأثیر، و راهکار کاهش
- برنامه backup برای سناریوهای بدبینانه (team churn، budget cut و حوادث غیرمترقبه یا شرایط دشوارتر اقتصادی و...)


♻️ بخش چهارم: چرخه بهبود مستمر

بازنگری سه‌ماهه (Quarterly Reviews)

- پایان Q1 (اسفند ۱۴۰۴):
آیا اهداف Q1 محقق شد؟
آیا roadmap نیاز به تعدیل داره؟


- پایان Q2 (تیر ۱۴۰۵):
بررسی نیمه‌سال
نیاز pivot یا persevere؟

- پایان Q3 (مهر ۱۴۰۵):
آمادگی برای push نهایی سال


- پایان Q4 (دی ۱۴۰۵):
چرخه جدید retrospective

متریک‌های کلیدی برای tracking
- ایجاد dashboard های پایش پیشرفت
- تعیین cadence بررسی متریک‌ها (هفتگی/ماهانه)
- تعیین مسئول جمع‌آوری و گزارش هر متریک

💡 بخش پنجم: بهبود فرآیندها

فرآیند توسعه
- آیا Agile/Scrum/CMMI فعلی کارآمده؟ نیاز به تغییر داره؟
- وضعیت code review: کیفیت، سرعت، یادگیری تیم
- وضعیت testing strategy: manual و automated، test coverage مطلوبه؟

ارتباطات و مستندات
- وضعیت documentation: آیا به‌روزه؟ آیا accessible است؟ ساختار مناسب داره؟
- کیفیت ارتباط بین تیم‌ها (dev, product, design, QA)
- برنامه برای بهبود knowledge sharing

بررسی Developer Experience
- آیا onboarding برای اعضای جدید ساده است؟
- زمان setup محیط توسعه؟
- ابزارهای مورد نیاز تیم فراهمه؟

🎯 بخش ششم: Action Items

فوری (تا پایان دی‌ماه)
- برگزاری جلسه retrospective تیم
- نهایی کردن roadmap Q1
- به‌روزرسانی dependency های critical

کوتاه‌مدت (Q1 سال جدید)
- اجرای برنامه پرداخت بدهی فنی
- شروع training برای تکنولوژی‌های جدید
- پیاده‌سازی بهبودهای فرآیندی

بلندمدت (سال ۲۰۲۶)
- رصد و tracking پیشرفت نسبت به اهداف سالانه
- بازنگری و تطبیق با تغییرات بازار/صنعت

📌 مهم:

✔️ این چک‌لیست یک پیشنهاده، ولی چک‌لیست خودتون رو با تیمتون مرور کنید؛ مالکیت جمعی بسازید
✔️ واقع‌بین باشید؛ overcommitment دشمن اصلی موفقیته (سنگ بزرگ نشونه‌ی نزدنه)
✔️ مستند کنید، یک سال دیگه به این نوت‌ها نیاز خواهید داشت
✔️ انعطاف‌پذیر باشید، برنامه وحی منزل نیست، اما بدون برنامه هم قابل قبول نیست
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍411🙏1
tech-afternoon
بزرگ‌ترین چالش‌ اکوسیستم نرم‌افزار ایران به نظر شما کدوم گزینه است؟ (+ کامنت کنید)
در مورد این نظرسنجی، من گزینه‌هایی رو انتخاب کردم که به نحوی به هم مرتبط باشن و انتخاب «بزرگ‌ترین» چالش رو کمی به سمت بیان نحوه‌ی تحلیل مسئولیت‌ها ببره 😅

چهار عامل بین گزینه‌ها بود که ساده‌شده‌اش می‌شه:
- کارشناس
- مدیر
- حاکم
- محیط

حاکم فضایی ایجاد کرده که محیط غیر رقابتی، بدون چشم‌انداز و ثبات، جدا افتاده از جهان؛ مدیرها رو به حال خودشون رها کنه که نه در اثر تعامل با جهان آموزش ببینن، نه نیازی به پرورش کارشناس و جانشین‌پروری حس کنن؛ نه لزومی به برنامه‌ریزی میان|بلند مدت ببینن، نه احساس خطری برای سازمان‌سازی غیرمولد و تولید محصولات بی‌کیفیت!

تا اینجا می‌بینیم که کلی معضل به صورت زنجیره‌ای، و متصل به‌هم دارن شرایط رو دشوار می‌کنن؛ همگی هم صحیح هستن.

💡 ولی رکن چهارم که توی توصیف بالا از هر سه عامل متأثره چی؟

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

قضاوت من با ۱۱۹ نفری که بزرگ‌ترین چالش رو خارج از کارشناس دیدن، همسو است؛ ولی با یک تفاوت مهم!

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

بخشی از بدنه کارشناسی » وارد لایه مدیریتی می‌شن » بخشی از همین مدیران وارد بخش حاکمیتی می‌شن و محیط رو می‌سازن!
حالا سوال اینه: چرا کارشناسان ضعیف به مدیران ضعیف تبدیل می‌شن؟

اینجا دو تا سناریو داریم:

سناریو ۱، خوش‌بینانه: کارشناس قوی وارد مدیریت می‌شه ولی سیستم اون رو می‌بلعه. فشارهای سازمانی، فقدان حمایت، سیاست‌ورزی، و ساختارهای فاسد مجبورش می‌کنن یا سازش کنه یا بره. در این صورت مشکل ۱۰۰٪ ساختاری‌ست و ۹۴٪ نظرسنجی کاملاً درست.

سناریو ۲، واقع‌بینانه: بخش قابل توجهی از کارشناسان حتی قبل از ورود به لایه مدیریت، فاقد پیش‌نیازهای لازم هستن، نه به دلیل تقصیر شخصی، بلکه به این دلیل که همون سیستم معیوب اون‌ها رو پرورش داده.

نکته اساسی اینه که وقتی می‌گم کارشناس چالشه، منظورم سرزنش کردن قربانی نیست. کارشناس هم قربانی این سیستمه، هم بدون اراده و آگاهی، بازتولیدکننده اون!

چرا؟
۱. سیستم آموزشی فاجعه است » دانشجو با مهارت‌های تاریخ‌گذشته یا ناکارآمد فارغ‌التحصیل می‌شه
۲. فرصت یادگیری واقعی وجود نداره » شرکت‌ها روی رشد مهارت‌‌ها سرمایه‌گذاری نمی‌کنن
۳. شایسته‌سالاری نیست » کارشناس خوب پاداش نمی‌بینه، پس انگیزه از بین می‌ره
۴. فقر اقتصادی » کارشناس مجبوره توی حالت تلاش برای بقا کار کنه، نه حالت رشد

حالا این کارشناس که توسط سیستم شکل گرفته، وارد لایه مدیریتی می‌شه، نه به خاطر شایستگی، بلکه به خاطر seniority (قِدمت)، رابطه، خلأ لایه بالاتر، یا صرفاً گذشت زمان. و چون پیش‌نیازهای مدیریتی رو نداره (تحلیل، تیم‌سازی، استراتژی)، مدیر ضعیفی می‌شه که سیستم رو بازتولید می‌کنه.

پس چرا می‌گم کارشناس چالش بزرگه؟

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

چرا؟
۱. منتظر نشستن برای اصلاح حاکمیت = بی‌نهایت
اگر بخواهیم حاکمیت عوض بشه تا محیط بهتر بشه تا مدیران بهتر بشن تا کارشناسان رشد کنن، این ۵۰ سال طول می‌کشه (اگه اتفاق بیفته).

۲. کارشناس تنها لایه‌ایه که می‌تونه از پایین فشار بیاره
حاکمیت و مدیریت ضعیف وقتی می‌ترسن که جایگزین‌های قوی‌تر ببینن. اگر ۱۰٪ کارشناسان exceptional باشن، فشار ایجاد می‌کنن.

۳. در بخش خصوصی، عاملیت فردی واقعاً کار می‌کنه
دیوار، دیجیکالا، کافه‌بازار و.. همه توسط افرادی ساخته شدن که برای دریافت مجوز معصل نبودن! بله، شانس و زمانه دخیل بود، ولی اگر «قابلیت» نبود، هیچ‌کدوم موفق نمی‌شدن.
این به معنی گذاشتن تمام بار روی دوش کارشناس نیست. ما باید بین تشخیص و تجویز فرق بگذاریم:
تشخیص: لایه کارشناسی گلوگاه بحرانیه
تجویز: نه اینکه "کارشناس باید فقط تلاش کنه"، بلکه اینکه:

- باید یادگیری جمعی ایجاد شه
- و peer accountability شکل بگیره (اشتراک دانش و تجربه واقعی)
- استانداردهای خودِ ما بالا بره (قبول نکردن شرایط زیر خط قرمز)
- بهترین‌ها صدای خودشون رو بلند کنن و الگو باشن

این کافیه؟ قطعاً نه.
بدون این، چیز دیگه‌ای کافیه؟ باز هم نه.

در متن سوال نظرسنجی نوشتم بزرگ‌ترین چالش، و نه مقصرترین؛ چون چالش یعنی سخت‌ترین مانع برای عبور به آینده بهتر؛ حتی اگر ریشه اون در جای دیگه‌ای باشه.

نظر و تحلیل شما چیه؟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54💯21
شماره ۱۲۰ از The InfoQ eMag (دسامبر) مقالات جالبی داشت (بعد از چند شماره که به تکرار افتاده بود، این شماره دوباره جون گرفت)

مطالبی که من دوست داشتم از این شماره:

Holistic Engineering: Organic Problem
Solving for Complex Evolving Systems

Empowering Teams:
Decentralizing Architectural
Decision-Making

فایل PDF رو در کامنت می‌گذارم تا اگر دوست داشتید دانلود و مطالعه کنید.
👍75🤓21
پروژه Oh My Posh Visual Configurator

اگر شما هم بیشتر ساعات روز مستقیم یا به در حین کار با ترمینال کار می‌کنید (توی ادیتور یا IDE یا مستقل) احتمالا از ابزارهایی مثل oh my posh یا oh my zsh یا ... استفاده می‌کنید تا کار از طریق محیط ترمینال براتون سریع‌تر، و البته کم خطاتر بشه.

از اونجایی که زمان زیادی هم با ترمینال کار می‌کنیم، هرچقدر این ابزارها رو شخصی‌سازی شده‌تر و غنی‌تر کنیم (تا جایی که کُند و باعث از دست رفتن تمرکز نشن) سرمایه‌گذاری کردیم روی سرعت و کاهش خطا.

حالا جیمز مونته‌ماگنو که لید تیم ابزارهای توسعه‌دهنده‌های مایکروسافته؛ یه محیط گرافیکی برای ساختن کانفیگ Oh my posh ساخته که راحت‌تر تنظیمات دلخواه رو بسازیم. اگر دوست داشتید تست کنید.

پروژه oh my posh یه ابزار کدباز است که محیط ترمینال رو غنی‌ و کارامد می‌کنه (مک و لینوکس و ویندوز )

پست وبلاگ توسعه‌دهنده در مورد configurator
🔥8👍322
⚙️ آمار و میزان محبوبیت مطالب کانال + دسترسی به ویدیو و پادکست

⭐️ محبوب‌ترین مطالب کانال تا امروز
⬇️ خروجی وب مطالب کانال
(تولید شده با استفاده از TeleScribe)

📱ویدیوهای کانال یوتیوب
🎙 پادکست
Please open Telegram to view this post
VIEW IN TELEGRAM
123🙏1
به خاطر میخی، نعلی افتاد
به خاطر نعلی، اسبی افتاد
به خاطر اسبی، سواری افتاد
به خاطر سواری، جنگی شکست خورد
به خاطر شکستی، مملکتی نابود شد
و همه این ها به خاطر کسی بود که میخ را خوب نکوبیده بود

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

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

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

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

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

و دوستانی که علاقه دارن خودشون تحقیق کنن شاید این کلیدواژه‌ها بد نباشن:

- Segregation of Duties (SoD)
- End-to-End Traceability
- Audit Logging & Observability
- Data Quality Management (DQM)
- Master Data Management (MDM)
- Reference Data Management
- Single Source of Truth (SSOT)

و همیشه مهندس‌ها با ابزارها و روش‌های فنی جلو فساد رو نمی‌گیرن؛ بلکه با پیاده‌سازی روش‌های به ظاهر غیر نرم‌افزاری در دل نرم‌افزارها جلو فساد رو می‌گیرن؛ کلیدواژه‌های کمکی:
- Social visibility
- Self-regulation
- Nudge theory (تلنگرهای رفتاری)
- Accountability Mechanisms
- Awareness & Participation
- Principal-Agent Theory
- Theory of Change (ToC)
- Social Norms Theory
17👎5👍4💯1😐1
وقتی مهندسی شریک رنج می‌شه

در حالی این مطلب رو می‌نویسم که حدود یک هفته است که ارتباط ایران با اینترنت قطع شده و اونچه که به بیرون میاد ترکیب آشفته‌ای از خبر و شایعه است؛ اخباری که در خوش‌بینانه‌ترین حالتش، چیزی جز صدای درد و رنج و فقدان نیست…
حتی در مورد انتشار این مطلب مردد هستم...
ادامه
💔8