<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های MohammadM Momeni</title>
        <link>https://virgool.io/feed/@MohammadM404</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-25 04:57:51</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1243581/avatar/Uy0A5E.jpeg?height=120&amp;width=120</url>
            <title>MohammadM Momeni</title>
            <link>https://virgool.io/@MohammadM404</link>
        </image>

                    <item>
                <title>داستان یک پروژه نیمه‌تمام؛ وقتی مهارت‌های نرم از کدنویسی مهم‌تر شدند</title>
                <link>https://virgool.io/@MohammadM404/%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%86%DB%8C%D9%85%D9%87-%D8%AA%D9%85%D8%A7%D9%85-%D9%88%D9%82%D8%AA%DB%8C-%D9%85%D9%87%D8%A7%D8%B1%D8%AA-%D9%87%D8%A7%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D8%B2-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D9%87%D9%85-%D8%AA%D8%B1-%D8%B4%D8%AF%D9%86%D8%AF-ybbbqwieh7nd</link>
                <description>در بسیاری از پروژه‌های دانشگاهی، هدف اصلی، تحویل یک خروجی فنی یا ارائه یک گزارش نهایی است. اما گاهی مسیر پروژه شما را از چارچوب کلاس و دانشگاه بیرون می‌کشد و وارد فضایی می‌کند که قواعدش متفاوت است. جایی که علاوه بر دانش فنی، باید مهارت‌هایی به کار بگیرید که کمتر در کتاب‌ها پیدا می‌شوند: مهارت‌های نرم.این، داستان یکی از همین پروژه‌هاست. روایتی از شروعی ساده، مسیری پرچالش، موفقیت‌های کوچک، بحران‌های ناگهانی، و پایانی که هیچ‌کس انتظارش را نداشت.مقدمه؛ چرا این پروژه خاص بود؟پروژه‌ای که در ادامه روایت می‌کنم، بخشی از درس «مهارت‌های نرم» بود. استاد از ما خواسته بود که در طول ترم، یک پروژه واقعی را اجرا کنیم که ما را مجبور کند از مهارت‌هایی مثل مذاکره، مدیریت زمان، ارتباط موثر، حل مسئله و کار تیمی استفاده کنیم.ایده این بود که از قالب تمرین‌های ساده و محیط کنترل‌شده کلاس خارج شویم و با دنیای واقعی، با تمام پیچیدگی‌ها و غیرقابل پیش‌بینی‌بودنش، روبه‌رو شویم.شروع غیرمنتظره در یک مهمانی خانوادگیهمه‌چیز از یک مهمانی خانوادگی شروع شد. سر میز شام، بین بحث‌های روزمره، بحث بات‌های اینترنتی و بعد کپچا شد، منم گفتم:“من اسکریپت‌هایی می‌نویسم که از آدم‌ها سریع‌تر فرم‌های آنلاین رو پر می‌کنه”.یکی از مهمان‌ها، که مدیر یک شرکت معدنی کوچک بود، لحظه‌ای مکث کرد، لبخندی زد و گفت: “جالبه! “گفت‌وگو همان‌جا تمام شد و من هم فکر نکردم که این جمله ساده، نقطه شروع یک تجربه بزرگ شود.چند هفته بعد، شماره همان فرد روی گوشی‌ام افتاد.صدای او جدی و کمی هیجان‌زده بود:&quot;صدرا، سامانه ثبت مکان‌های معدنی رقابتیه. هر کس زودتر فرم رو ثبت کنه، برندست. می‌تونی این رو برای ما اتومات کنی؟&quot;لحظه‌ای قلبم تندتر زد. نه‌تنها باید یک سیستم سریع و دقیق می‌ساختم، بلکه این بار پای یک کار واقعی و پرریسک در میان بود.انتخاب شریک و برنامه‌ریزی اولیهبه محض اینکه تماس کارفرما قطع شد و هیجان اولیه کمی فروکش کرد، اولین فکری که به ذهنم رسید این بود که این پروژه را نمی‌توانم به‌تنهایی جلو ببرم. سرعت و دقتی که کارفرما می‌خواست، یعنی کار شبانه‌روزی، تست‌های مداوم و حل‌کردن مشکلات در لحظه.نام «محمدمتین» بلافاصله به ذهنم آمد. ما قبلا در چند پروژه کلاسی و شخصی کنار هم کار کرده بودیم و می‌دانستم که او هم از نظر مهارت فنی، هم از نظر روحیه کار تیمی، انتخابی ایده‌آل است.محمدمتین تجربه زیادی در کار با هدلس‌براوزرها، شبیه‌سازهای کاربر و تعامل با فرم‌های دولتی آنلاین داشت؛ همان چیزی که این پروژه دقیقا به آن نیاز داشت.بدون معطلی با او تماس گرفتم. صدایش کمی خسته بود، اما وقتی موضوع را گفتم، بلافاصله لحنش تغییر کرد:&quot;متین، پروژه‌ای داریم که به دقت میلی‌ثانیه حساسه. حاضری بیای وسط؟&quot;&quot;هستم. فقط بگو کی شروع می‌کنیم.&quot;در کمتر از یک ساعت، پشت لپ‌تاپ‌های‌مان نشستیم و اولین جلسه کاری‌مان را به‌صورت آنلاین برگزار کردیم. از همان ابتدا تصمیم گرفتیم این پروژه را مثل یک ماموریت حرفه‌ای مدیریت کنیم، نه صرفا یک تکلیف درسی.برای همین، سه اصل را تعیین کردیم:ساختارمند پیش‌رفتن –  هر مرحله از پروژه، از ایده تا تست نهایی، باید در قالب یک برنامه زمان‌بندی‌شده و مشخص انجام شود.مستندسازی کامل –  هر تغییری که انجام می‌دهیم، هر مشکلی که پیدا می‌کنیم و هر تصمیمی که می‌گیریم باید ثبت شود تا هم گزارش دقیقی برای استاد داشته باشیم و هم در آینده از تجربه‌هایمان استفاده کنیم.شفافیت در مسئولیت‌ها –  از همان روز اول مشخص کردیم چه کسی روی چه بخش‌هایی کار می‌کند تا از تداخل یا دوباره‌کاری جلوگیری شود.این جلسه کوتاه اما سرنوشت‌ساز، پایه و اساس همکاری ما را ساخت؛ همکاری‌ای که در روزهای بعد بارها در برابر بحران‌ها و فشار زمان محک خورد.اولین گام؛ شناخت مسئله قبل از نوشتن کدبرخلاف تصور خیلی‌ها، اولین کار ما باز کردن لپ‌تاپ و شروع کدنویسی نبود.یک روز کامل به دفتر کارفرما در روزی که ثبت نام معدن شروع شده بود، رفتیم. محیط پر از صدای کلیک‌های مداوم، صفحه‌نمایش‌هایی که با سرعت ریفرش می‌شدند و چهره‌هایی که تمرکز و استرس را با هم داشتند.اپراتورها را تماشا کردیم؛ هر چند ثانیه یک‌بار کلید F5 را می‌زدند، منتظر ظاهر شدن فرم. وقتی فرم باز می‌شد، با عجله اطلاعات را وارد می‌کردند تا کسی دیگر زودتر ثبت نکند.ما همه‌چیز را یادداشت کردیم: زمان واکنش، مسیر کلیک‌ها، حتی مکث‌های کوچک بین تایپ و ارسال.اما به‌زودی فهمیدیم که مشکل اصلی، فنی نیست—بلکه انسانی است.چالش‌های انسانیسه مانع اصلی داشتیم:ترس از بیکارشدنبعضی کارکنان می‌ترسیدند که اتوماسیون، شغلشان را حذف کند.با آن‌ها صحبت کردیم و توضیح دادیم که این سیستم فقط سرعت ارسال را بالا می‌برد و کار آن‌ها را به سمت کنترل و تائید نهایی می‌برد.بی‌اعتمادی فنیمسئول IT گفت: &quot;ما قبلاً اسکریپتی داشتیم که همیشه وسط کار خراب می‌شد.&quot;تصمیم گرفتیم با ارائه تجربه‌های قبلی موفقیت‌آمیز و پیشنهاد اجرای مرحله‌ای، این نگرانی را برطرف کنیم.مقاومت سازمانیبعضی تصمیم‌گیران کلیدی، ذاتا نسبت به تغییر محتاط بودند. جلسات کوتاه ولی مکرر با آن‌ها گذاشتیم تا هم اعتمادشان جلب شود و هم حس کنند در تصمیم‌گیری شریک هستند.نتیجه این تلاش‌ها، بازشدن درهای همکاری بود. همان مخالفان اولیه، شروع کردند به گفتن نکات و سناریوهایی که خودش برایمان حکم طلا داشت.تقسیم کار و سه فاز اصلی پروژهبعد از مرحله تحلیل اولیه و جلب اعتماد کارفرما، نوبت به اجرای واقعی پروژه رسید. برای جلوگیری از سردرگمی، تصمیم گرفتیم از همان ابتدا کار را به سه فاز مشخص تقسیم کنیم و برای هر فاز اهداف، زمان‌بندی و مسئولیت‌های روشن داشته باشیم.فاز اول – نمونه‌سازی سریعدر کمتر از یک هفته، باید یک نسخه ابتدایی بسازیم که حداقل بتواند فرم را به‌صورت خودکار پر کند و ارسال نهایی را انجام دهد. این نسخه قرار نبود بی‌نقص باشد، اما باید از نظر سرعت و عملکرد، قابل‌قبول می‌بود تا بتوانیم آن را به کارفرما نشان دهیم و بازخورد فوری بگیریم.برای هماهنگی بهتر، یک رویکرد جالب انتخاب کردیم: جلسات فوق‌کوتاه روزانه. هر روز راس ساعت مشخص، جلسه‌ای 5 دقیقه‌ای برگزار می‌کردیم که در آن فقط درباره کارهای همان روز صحبت می‌کردیم، نه بیشتر. این باعث شد که همه روی وظایف اصلی متمرکز بمانند و وقت‌مان صرف بحث‌های حاشیه‌ای نشود.فاز دوم – حل اختلافاتبا اینکه نمونه اولیه کار می‌کرد، ولی خیلی زود بر سر جزئیات پیاده‌سازی اختلاف نظر پیدا کردیم. من به‌عنوان مسئول بخش ثبت و مانیتورینگ، اصرار داشتم که سیستم همه لاگ‌ها و جزئیات عملکرد را ذخیره کند تا در صورت بروز مشکل بتوانیم سریعا علت را پیدا کنیم.در مقابل، محمدمتین که بیشتر روی سرعت و بهینه‌سازی تمرکز داشت، معتقد بود هر میلی‌ثانیه اهمیت دارد و لاگ‌گیری اضافی باعث کندی سیستم می‌شود.برای جلوگیری از کش‌آمدن بحث، یک جلسه فوق‌العاده گذاشتیم که قانونش ساده بود: سه دقیقه وقت. هر کدام ۶۰ ثانیه وقت داشتیم تا دیدگاه‌مان را بیان کنیم، ۶۰ ثانیه هم برای جمع‌بندی مشترک.نتیجه، یک راه‌حل میانه بود: لاگ‌های حیاتی را پشت یک سوئیچ فعال کردیم که فقط در مواقع ضروری روشن شود. این تصمیم هم نیاز من به کنترل و شفافیت را برطرف کرد، هم دغدغه سرعت محمدمتین را.فاز سوم – آماده‌سازی ارائهدر این مرحله متوجه شدیم که حتی اگر بهترین سیستم فنی دنیا را بسازیم، تا وقتی نتوانیم آن را به زبان ساده و قابل‌درک برای مدیران غیرفنی توضیح دهیم، شانس موفقیت کمی داریم.پس شروع به تمرین ارائه کردیم. چندین بار در محیط شبیه‌سازی‌شده، محصول را معرفی کردیم و هر بار سعی کردیم جملات را کوتاه‌تر، روشن‌تر و تاثیرگذارتر کنیم. در نهایت به یک جمله طلایی رسیدیم که در جلسات بعدی بارها استفاده شد:«این ربات، یک کارمند دیجیتال شبانه‌روزی است که هیچ‌وقت خسته نمی‌شود، مرخصی نمی‌گیرد و حتی یک لحظه هم از پای سیستم بلند نمی‌شود.»بحران نیمه‌شببعد از اینکه نسخه اولیه را بهشون دادیم، بعد حدود دوهفته، ساعت حدود دو بامداد بود و من تازه لپ‌تاپ را بسته بودم که تلفنم با صدای بلند زنگ خورد. روی صفحه، نام مدیر شرکت را دیدم. چنین تماس‌هایی آن هم در نیمه‌شب، فقط یک معنی داشت: اتفاق بدی افتاده است.با صدایی مضطرب گفت:&quot;پرداخت انجام شده، ولی وضعیت خرید هنوز روی ‘در انتظار تائید’ گیر کرده! فردا صبح باید این مجوز ثبت بشه، وگرنه فرصت رو از دست می‌دیم.&quot;چند ثانیه مکث کردم، ولی ذهنم با سرعت به سمت همه سناریوهای ممکن دوید. سریع لپ‌تاپ را باز کردم و به محمدمتین پیام دادم: «فوری آنلاین شو، مشکل حیاتی داریم.»کمتر از پنج دقیقه بعد، هر دوی ما روی سیستم بودیم. بررسی اولیه نشان داد که مشکل از یک تغییر کوچک در نسخه جدید سامانه بود؛ گزینه‌ای که قبلا به‌صورت پیش‌فرض فعال بود، حالا به حالت غیرفعال درآمده بود و باعث توقف فرآیند ثبت می‌شد.تصمیم گرفتیم علاوه بر رفع مشکل، یک تغییر اساسی در شیوه مدیریت بحران‌مان بدهیم: شفافیت کامل با کارفرما. به‌جای پنهان کردن جزئیات یا گفتن جملاتی مثل «همه‌چیز تحت کنترل است»، پنجره‌ای از لاگ‌های زنده سیستم را برای مدیر مالی باز کردیم. هر ۳۰ دقیقه گزارشی کوتاه و شفاف ارسال کردیم که چه کرده‌ایم، چه چیزی درست شده و چه بخش‌هایی هنوز نیاز به بررسی دارد.در طول این چند ساعت، نه‌تنها مشکل برطرف شد، بلکه فضای اعتماد بین ما و کارفرما عمیق‌تر از قبل شد. او صبح همان روز به من پیام داد:&quot;شاید مشکل پیش اومده باشه، ولی نحوه مدیریت شما باعث شد خیالم راحت بشه. این برای ما خیلی ارزشمنده&quot;.این بحران نیمه‌شب، به ما نشان داد که گاهی کیفیت رابطه با مشتری از خود محصول مهم‌تر می‌شود.مسیر توسعه بازاربعد از عبور از چند بحران فنی و انسانی، بالاخره احساس کردیم که پروژه به نقطه‌ای رسیده که می‌توانیم به رشد و گسترش فکر کنیم. دیگر فقط مسئله «کارکردن سیستم» مطرح نبود، بلکه می‌خواستیم آن را به ابزاری تبدیل کنیم که در بازار معدنی شناخته شود.در یک جلسه داخلی، فهرستی از مشتریان بالقوه تهیه کردیم. بعد از بررسی ظرفیت و شرایط هرکدام، سه معدن را انتخاب کردیم که از نظر حجم عملیات، نیاز به ثبت سریع مجوزها و توانایی مالی، بیشترین شانس همکاری را داشتند. برای هر معدن، یک بسته معرفی اختصاصی تهیه کردیم که شامل ویدئوهای کوتاه از عملکرد سیستم، نتایج تست‌های سرعت و دقت، و یک سناریوی واقعی از ثبت موفق مجوز بود.جلسات معارفه یکی پس از دیگری برگزار شد. در اولین جلسه، مدیرعامل معدن با دقت به ویدئو نگاه کرد و در پایان فقط یک جمله گفت:&quot;اگر نسخه شما واقعا زیر یک ثانیه ثبت کند، ما مشتری دائمی می‌شویم&quot;.این جمله مثل سوخت تازه‌ای برای تیم ما بود.جلسه دوم کمی متفاوت بود. آن‌ها افراد بخش IT و اپراتورها را هم آورده بودند تا از همان ابتدا در جریان جزئیات قرار بگیرند. پرسش‌های دقیق فنی مطرح شد و ما با اعتمادبه‌نفس پاسخ دادیم. آخر جلسه، یکی از آن‌ها گفت: &quot;ما مدت‌هاست دنبال چنین چیزی هستیم، ولی هنوز می‌خواهیم عملکردش را در عمل ببینیم&quot;.جلسه سوم، در یک شهر معدنی کوچک برگزار شد. محیط صمیمی‌تر بود، اما مدیران به‌وضوح محتاط بودند. در نهایت، قول دادند در صورت دریافت مجوز سرمایه‌گذاری جدید، پروژه را بررسی کنند.در مجموع، حس می‌کردیم قطار توسعه بازار به حرکت افتاده است. حتی شروع کردیم به برنامه‌ریزی برای گسترش تیم، اضافه‌کردن قابلیت‌های جدید و تهیه سرورهای قدرتمندتر برای پشتیبانی همزمان چند مشتری.همه‌چیز خوب پیش می‌رفت… تا اینکه حادثه‌ای بیرونی، درست مثل ترمز اضطراری، این حرکت رو به جلو را متوقف کرد.جنگ و اثرات دومینووارشدرست زمانی که آماده عقد قرارداد با دو مشتری جدید بودیم، جنگ ۱۲ روزه ایران و اسرائیل آغاز شد.در ابتدا فکر کردیم تاثیر مستقیمی بر ما ندارد. اما زنجیره اتفاقات، برق‌آسا رخ داد:ورشکستگی سرمایه‌گذار اصلیصادرات مواد معدنی متوقف شد، سرمایه‌ها بلوکه شدند و مالک معدن اول، که سرمایه‌گذار پروژه بود، در عرض یک هفته ورشکسته شد.لغو قراردادها توسط مشتریان جدیدهر دو مشتری جدید تماس گرفتند و گفتند تمام طرح‌های توسعه را متوقف کرده‌اند.آن‌ها حتی برنامه تعدیل نیرو را آغاز کرده بودند و حاضر نبودند کوچک‌ترین هزینه اضافی انجام دهند.تعلیق سرمایه‌گذاری‌های صنعتیبسیاری از معادن کوچک و متوسط، به‌دلیل نااطمینانی بازار، پروژه‌های نوسازی و خرید تجهیزات را متوقف کردند. این یعنی بازار هدف ما به‌یک‌باره کوچک شد.اختلال در زنجیره تامینحتی اگر پروژه ادامه پیدا می‌کرد، تجهیزات موردنیاز برای سرورها و به‌روزرسانی سخت‌افزاری، به‌دلیل محدودیت واردات، با تاخیر چندماهه مواجه می‌شد.مذاکرات ناموفقما تسلیم نشدیم و تصمیم گرفتیم آخرین تلاش‌هایمان را انجام دهیم. چندین جلسه آنلاین و حضوری با مشتریان فعلی و بالقوه برگزار کردیم. هر جلسه حال و هوای خاص خودش را داشت؛ بعضی در فضای رسمی اتاق کنفرانس با نگاه‌های سنگین مدیران برگزار شد، بعضی در کافه‌های نیمه‌خالی که مشتریانش بیشتر به اخبار روز گوش می‌دادند تا صدای قهوه‌ساز.در این جلسات، سعی کردیم تمام مزیت‌های پروژه را دوباره به زبان ساده توضیح دهیم. حتی برای رفع نگرانی‌ها، پیشنهادهای زیر را روی میز گذاشتیم:• کاهش ۵۰ درصدی هزینه اجرای پروژه تا فشار مالی به حداقل برسد.• اجرای پایلوت رایگان به‌مدت یک ماه تا بتوانند بدون ریسک، کارایی سیستم را از نزدیک ببینند.• امکان پرداخت مرحله‌ای بعد از بهره‌برداری تا هزینه‌ها با جریان درآمدی خودشان هماهنگ شود.با وجود این امتیازها، واکنش‌ها تقریبا مشابه بود. بعضی با لحنی مودبانه ولی ناامید گفتند:&quot;در این شرایط، اولویت ما بقاست، نه توسعه.&quot;برخی دیگر حتی صریح‌تر بودند: &quot;حتی اگر سیستم شما فوق‌العاده باشد، الان پولی برای هیچ چیز اضافی نداریم. ما در حال کاهش شیفت‌ها و بستن بخشی از معدن هستیم&quot;.احساس می‌کردیم نه با کیفیت فنی یا قیمت رقابت می‌کنیم، بلکه با ترس و نااطمینانی اقتصادی که هر روز سنگین‌تر می‌شد. این نقطه‌ای بود که فهمیدیم بعضی موانع، نه با منطق کسب‌وکار و نه با تکنولوژی، بلکه فقط با گذر زمان و تغییر شرایط کلان برطرف می‌شوند.پایان تلخ اما آموزندهبه این ترتیب، پروژه‌ای که از نظر فنی آماده و از مرحله آزمایش‌های نهایی عبور کرده بود، به‌دلیل عواملی کاملا خارج از کنترل ما، به نقطه توقف رسید. این توقف، مثل کشیدن ترمز دستی وسط یک جاده صاف و هموار بود؛ ناگهانی، پر سروصدا و همراه با ابر غلیظی از ناامیدی.چند روز اول، فضای تیم ساکت و سنگین بود. هرکدام از ما در ذهن خود مرور می‌کردیم که آیا می‌شد کاری کرد تا سرنوشت پروژه تغییر کند؟ اما واقعیت این بود که مشکل نه در کدها، نه در زمان‌بندی، و نه حتی در ارتباط با مشتریان بود. عامل اصلی، تغییرات کلان اقتصادی و سیاسی‌ای بود که در عرض چند روز، کل صنعت هدف ما را به حالت انجماد برد.این تجربه برایمان ثابت کرد که حتی بهترین برنامه‌ریزی‌ها، دقیق‌ترین اجراها و قوی‌ترین انگیزه‌ها هم در برابر شوک‌های بیرونی مصونیت ندارند. اما در عین حال، به ما یاد داد که چطور می‌توان با حفظ حرفه‌ای‌گری، شکست را به یک منبع یادگیری تبدیل کرد—درسی که شاید ارزشش از خود موفقیت کمتر نباشد.نگاه رو به جلوهرچند پروژه به سرانجام نرسید، اما تجربه آن برای ما حکم یک آزمایشگاه واقعی را داشت. شبکه‌ای از ارتباطات کاری شکل گرفت که هنوز حفظ شده است. حتی بعضی مشتریان، بعد از بهبود شرایط اقتصادی، قول داده‌اند دوباره پای میز مذاکره بیایند.از طرفی، بخش‌هایی از کد و مستندات پروژه، اکنون پایه یک محصول جدید شده که قابلیت تطبیق برای صنایع دیگر را دارد. این یعنی حتی شکست هم می‌تواند نقطه شروع مسیر تازه‌ای باشد.آموخته‌هااین پروژه برای ما فرصتی بی‌نظیر بود تا مهارت‌هایی را در عمل بیازماییم که در کلاس‌ها کمتر آموزش داده می‌شوند و اغلب فقط در میدان واقعی کار می‌توان آن‌ها را یاد گرفت.برگزاری جلسات روزانه و مدیریت مؤثر زمانیاد گرفتیم که حتی کوتاه‌ترین جلسه‌ها، اگر منظم و هدفمند باشند، می‌توانند تاثیر بزرگی بر پیشرفت پروژه بگذارند. ما هر روز، بدون استثنا، حتی اگر فقط ۳۰ ثانیه وقت داشتیم، دور هم جمع می‌شدیم تا بگوییم چه کاری انجام شده و چه کاری باید انجام شود. این نظم باعث شد از انباشت مشکلات جلوگیری شود و تمرکزمان روی اولویت‌های روز باقی بماند.حل اختلافات کاری به‌صورت سریع و منصفانهدر طول پروژه، بارها بر سر جزئیات فنی اختلاف‌نظر داشتیم؛ از نحوه ذخیره‌سازی لاگ‌ها گرفته تا انتخاب تکنولوژی برای بخشی از کد. یاد گرفتیم که اختلاف، دشمن پروژه نیست—به شرطی که بتوان سریع و منصفانه آن را حل کرد. جلسات کوتاه و رویکرد «هر کس یک دقیقه برای بیان نظر» کمک کرد تا تصمیم‌گیری‌ها بی‌طرفانه و سریع انجام شود.ایجاد اعتماد با مشتریان از طریق شفافیتشفافیت، کلید ادامه همکاری با مشتریان بود. هر بار که مشکلی پیش می‌آمد، سعی کردیم پنهان‌کاری نکنیم و مرحله‌به‌مرحله توضیح دهیم که چه اتفاقی افتاده، چرا افتاده و برای حلش چه می‌کنیم. این رویکرد باعث شد حتی در بحران‌ها، اعتماد کارفرما به ما بیشتر شود.مستندسازی بحران‌ها و ارائه راه‌حلهر بحران یک درس داشت، اما فقط وقتی آن را ثبت می‌کردیم، این درس ماندگار می‌شد. ما در یک فایل مشترک، شرح کامل هر مشکل، روش‌های بررسی و اقداماتی که نتیجه داده یا نداده را ثبت کردیم. این مستندات حالا برای پروژه‌های آینده حکم یک نقشه راه دارد.سازگاری با شرایط غیرقابل پیش‌بینی و توقف حرفه‌ای پروژهبزرگ‌ترین درس، پذیرفتن این واقعیت بود که گاهی پروژه، صرف‌نظر از کیفیت کار یا تلاش تیم، به پایان نمی‌رسد. یاد گرفتیم که توقف پروژه هم می‌تواند حرفه‌ای باشد—یعنی با جمع‌بندی شفاف، مستندسازی کامل و حفظ ارتباط محترمانه با مشتریان، پروژه را به شکلی تمام کنیم که اگر روزی شرایط بهتر شد، بتوانیم دوباره آن را ادامه دهیم.جمع‌بندیاین تجربه به ما یاد داد که موفقیت یک محصول، تنها به کیفیت کد یا سرعت تحویل بستگی ندارد.مهارت‌های ارتباطی، توان مذاکره، مدیریت بحران و درک شرایط بازار، گاهی مهم‌تر از هر خط کدی هستند که می‌نویسیم.</description>
                <category>MohammadM Momeni</category>
                <author>MohammadM Momeni</author>
                <pubDate>Wed, 13 Aug 2025 22:17:29 +0330</pubDate>
            </item>
                    <item>
                <title>آموزش نصب کامپایلر LLVM با استفاده از نسخه از پیش کامپایل شده</title>
                <link>https://virgool.io/@MohammadM404/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B5%D8%A8-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84%D8%B1-llvm-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%86%D8%B3%D8%AE%D9%87-%D8%A7%D8%B2-%D9%BE%DB%8C%D8%B4-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%DB%8C%D9%84-%D8%B4%D8%AF%D9%87-sh5sfv7ijelt</link>
                <description>پیشنهاد می‌شود که حتما از ماشین مجازی استفاده کنید :)همچنین پیشنهاد می‌شود از Ubuntu 20.04 استفاده کنید. در ابتدا با استفاده از دستورcat /etc/os-releaseمشخصات سیستم عامل خود را پیدا کنید. خروجی دستور بالا مشابه مورد زیر خواهد بود:حال وارد آدرس زیر شوید و با توجه به ورژن سیستم عامل خود فایل باینری مناسب را دانلود کنید:https://github.com/llvm/llvm-project/releases/tag/llvmorg-12.0.0برای مثال برای سیستم عامل مشخص شده در تصویر بالافایل مناسب فایل با نام clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xzخواهد بود که حجمی برابر ۴۳۲ مگابایت دارد.بعد از دانلود فایل مناسب در پوشه ای که فایل را دانلود کرده اید دستور زیر را داخل ترمینال وارد کنید:sudo mkdir /opt/llvmسپس فایل دانلود شده را با استفاده از دستور زیر به پوشه ساخته شده منتقل کنید:sudo cp X /opt/llvm/
# use mv instead of cp to cut it
# X is the name of the file. in this case X would be:
# clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xzحال با استفاده از دستور زیر وارد پوشه ای که ساخته ایم می‌شویم و فایل دانلودی را از حالت فشرده خارج می‌کنیم:cd /opt/llvm
sudo tar -xvf X
# X is the name of the file. in this case X would be:
# clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xzدر صورت تمایل می‌توانید فایل فشرده را با دستور زیر حذف کنید:sudo rm X
# X is the name of the file. in this case X would be:
# clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04.tar.xzحال نیاز است تا مسیر کامپایلر را به PATH اضافه کنیم. برای این کار به این صورت عمل می‌کنیم:ابتدا با دستور زیر فایل مورد نیازمان را باز می‌کنیم:sudo gedit ~/.bashrcسپس به انتهای این فایل خطوط زیر را اضافه می‌کنیم:# LLVM Compiler

export LLVM_DIR=/opt/llvm/X
# X is the name of the extracted folder. in this case X would be:
# clang+llvm-12.0.0-x86_64-linux-gnu-ubuntu-20.04
export LLVM_CONFIG=$LLVM_DIR/bin/llvm-config
export PATH=$PATH:$LLVM_DIR/binمشابه تصویر زیر:سپس فایل را ذخیره کرده و می‌بندیم.حال با استفاده از دستور زیر از صحت نصب کامپایلر اطمینان حاصل می‌کنیم:clang --versionخروجی این دستور باید مشابه تصویر زیر باشد:در ادامه دستور زیر را نیز وارد می‌کنیم:llvm-config --versionکه خروجی این دستور نیز باید به مانند این تصویر باشد:در مرحله نهایی دستور زیر را وارد کنید:(این دستور برای نصب کامپایلر ضروری نمی‌باشد اما برای make کردن پروژه خود احتمالا نیاز است تا این کار را انجام دهید)cd /usr/lib/x86_64-linux-gnu/
sudo cp libtinfo.so.6 libtinfo.soنکته: دایرکتوری گفته شده در دستور بالا ممکن است در نسخه های مختلف لینوکس که معماری های متفاوت دارند وجود نداشته باشد. در صورت نیاز و برخوردن با ارور فایل مدنظر را با سرچ در سیستم خود پیدا کنید.</description>
                <category>MohammadM Momeni</category>
                <author>MohammadM Momeni</author>
                <pubDate>Sun, 10 Dec 2023 02:06:34 +0330</pubDate>
            </item>
            </channel>
</rss>