<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های افشار محبی</title>
        <link>https://virgool.io/feed/@afsharm</link>
        <description>مهندس نرم افزار، توسعه دهنده، برنامه نویس</description>
        <language>fa</language>
        <pubDate>2026-06-07 03:30:17</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/7007/avatar/VT7gnM.png?height=120&amp;width=120</url>
            <title>افشار محبی</title>
            <link>https://virgool.io/@afsharm</link>
        </image>

                    <item>
                <title>داستان پشت داستان</title>
                <link>https://virgool.io/@afsharm/%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%D9%BE%D8%B4%D8%AA-%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-vbjwnfzrekhd</link>
                <description>سال‌های سال هست که اینترنت درست و حسابی نداریم. یا از داخل فیلتر هستیم یا از بیرون تحریم. با شروع اعتراضات ۱۴۰۱ همان اینترنت نیم بندی هم که وجود داشت به کما رفت. Vpn ها از کار افتادند و دسترسی به سرویس های خارجی مثل Amazon و Jira هر روز سخت تر و سخت تر شد. وضع اینقدر خراب شد که بعضی روزها باید از اعضای غیر ایرانی تیم خواهش می‌کردم که مثلاً در فلان دیتابیس، فلان تغییرات را اعمال کند. دور و بر خودم را با انواع و اقسام اینترنت سیم کارتی، ADSL، شرکتی و LTE و … پر کردم. یک کلکسیون کامل و البته گران قیمت از VPN جمع کردم ولی چندان فایده‌ای نداشت. بعضی روزها تنهایی جایی که اینترنت موبایل داشت، ایستگاه های مترو بودند. اگه می‌خواستم یک ایمیل ساده بفرستم باید خودم رو به یک ایستگاه مترو می رساندم.شرکت حاضر نبود و نیست که مبالغ حقوق را با کریپتو بفرستد. می‌گوید خلاف قوانین داخلی شان است. به حساب بانکی هم حساس هستند. حساب باید غیر ایرانی و به نام شخص صاحب حقوق باید باشد. ولی همین حساب بانکی خارجی به نام هم مشکل را برطرف نکرد. یکی از دوستان از حساب بانکی خودش در ترکیه استفاده کرده بود. بانک مبدأ درخواست قرارداد کاری کرد و وقتی دید آدرس کارمند در ایران واقع شده، نه تنها انتقال وجه را انجام نداد بلکه حساب شرکت را هم به تعلیق در آورد. البته قبل از این هم از روش دیگری استفاده می‌شد که آن هم مسدود شد. از این به بعد باید پول‌ها را با کبوتر جابجا کنیم.در کنار این‌ها کلی بدبختی دیگه هم داریم. وضعیت اسفناک آزادی‌های فردی که اعتراضات ۱۴۰۱ بخشی از آن بود. تورم بی حساب و کتاب و افزایش قیمت روزانه دلار که از حدود ۳۰ در ابتدای اعتراضات به ۴۱ در اواخر دی رسیده. تحریم های گسترده و زمستان سخت اروپا که سر از کرج در آورد. و لغو برگزاری IELTS هم خودش به اندازه کافی احمقانه هست.روز ۹ آذر ۱۴۰۱ مدرسه به خاطر آلودگی هوا تعطیل شدند. هفته بعدش مدرسه دایر بود ولی بعد از اون مدت ها به علت آلودگی هوا غیر حضوری بود. بعدش یک هفته حضوری شد و دوباره چند روز است به خاطر سرما و کمبود گاز تعطیل شده. تا آخر این هفته احتمالا تعطیلی سرما برقرار باشد. یعنی در ۵۱ روز منتهی به ۳۰ دی فقط دو هفته مدرسه حضوری داشته ایم. چیزی مدرسه چیزی حدود 27 درصد ایام حضوری بوده. غیر حضوری بودن مدرسه ها هم که نگم. روزی ۲ ساعت از ساعت ۱۱ قبل از ظهر تا ساعت ۱ بعد از ظهر است. که آن هم یا اینترنت معلم قطع است یا اینترنت بچه ها.همه این‌ها کم بود که یک مصیبت دیگر هم وارد شد. کارخانه نوآوری آزادی که محل استقرار کلی شرکت و تیم و freelancer و remote worker بود در آستانه تعطیلی قرار گرفت. یعنی الان باید برای یک میز و صندلی هم دوره بگردیم ببینیم کجا می تونیم جایی پیدا کنیم برای کار کردن.از بس که اعتراض کردیم و بد و بیراه گفتیم و توضیح دادیم که زبان مان بند آمده. اصلاً به حالت بی حسی و کرختی رسیده ایم. اینجا هر روز یک مصیبت جدید داریم.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Sun, 15 Jan 2023 23:24:23 +0330</pubDate>
            </item>
                    <item>
                <title>مصیبت خرید لپ تاپ</title>
                <link>https://virgool.io/@afsharm/%D9%85%D8%B5%DB%8C%D8%A8%D8%AA-%D8%AE%D8%B1%DB%8C%D8%AF-%D9%84%D9%BE-%D8%AA%D8%A7%D9%BE-clmd2lnsxrs0</link>
                <description>سال ۹۸ کمی بعد از فروکش کردن اعتراضات بنزینی یک لپ تاپ جدید خریدم که از اساس یک مصیبت بود. لپ تاپ را از دیجی کالا و بر اساس نظرات گمراه‌کننده مربوط به اون لپ تاپ خریداری کرده بودم. آن موقع قصد نداشتم پول زیادی خرج لپ تاپ کنم و یک Asus معمولی انتخاب کرده بودم. آنقدر که تعریف و تمجید زیر توضیحات لپ تاپ دیدم که مجاب شدم آن را بخرم. تا اینجای کار قربانی اشتباه خودم و نظرات به درد نخور دیجی کالا شده بودم. اما وقتی که لپ تاپ را سفارش دادم ضعف‌های بزرگی را هم از دیجی کالا دیدم. وقتی لپ تاپ دستم رسید رنگش با آن چیزی که سفارش داده بودم فرق داشت و پورت هایی که روی آن‌ها حساب باز کرده بودم را نداشت. پیگیری دیجی کالا هفته یک بار جواب می داد. تازه لپ تاپ را وسط یک جعبه خیلی بزرگ برای من ارسال کرده بودند که مطمئنم از انبار دیجی کالا تا آدرس من صد تا ملق زده بود.وقتی ویندوز ۱۰ روی آن نصب کردم دیدم ویندوز به زور بالا میاد. کروم که تقریباً اصلاً کار نمی کرد. وقتی ویژوال استودیو و یک سری چیزای دیگه نصب کردم که دیگه وضع خیلی خراب تر شد. چند وقت بعد در مصیبت های کرونا لپ تاپ کف اتاق مانده بود و پای یک نفر روی آن رفت که باعث شد بخشی از درب آن به راحتی بشکند. چند بار تلاش کردم RAM اون را اضافه کنم که امکان‌پذیر نبود. یک SSD به اون اضافه کردم که تأثیر چشم گیری نداشت. با اینکه بیشتر وقت‌ها اوبونتو بودم به جای ویندوز، اما باز هم به شدت CPU کم می آوردم. با دو تا تب کروم و یک تماس ویدیویی CPU می چسبید به سقف و همه چیز دچار مشکل می شد. به خاطر همه این مصیبت ها به خودم گفتم دیگه هیچ وقت از دیجی کالا چیزی نمی خرم، اقلاً لپ تاپ نمی خرم.سه سال سخت را با کندی لپ تاپ سر کردم تا اینکه سه هفته پیش مجبور شدم لپ تاپ جدید بخرم. بنا به قولی که به خودم داده بودم راهی چهار راه و میدان ولیعصر شدم. کلی لپ تاپ های مختلف را زیر و رو کردم تا اینکه رسیدم به یک مدل از Asus و یک مدل از Lenovo. هر کدام از فروشنده ها چیزی می‌گفت و قسم می‌خورد که حرف خودش درست است. فروشنده Asus می‌گفت که Lenovo کاستوم شده و فروشنده Lenovo هم می‌گفت که Asus کاستوم شده. هر دو هم قسم می‌خوردند که حرف خودشان درست است و هزار جور فحش هم به بقیه می دادند. همین داستان در مورد گارانتی و قیمت هم برقرار بود. آخر سر تصمیم گرفتم Lenovo   را بخرم چون بدنه به ظاهر محکم تری داشت.فروشنده که در طبقه هم کف مرکز کامپیوتر ایران واقع بود توضیح داد که برچسب بالای جعبه لپ تاپ نشانه اصل بودن کالا است. این را در حالی می‌گفت که چسب زیر جعبه به راحتی قابل باز شدن بود. لپ تاپ را باز کرد و یک توضیحاتی راجع به آکبند بودن و صدای اولین ورود شارژر به لپ تاپ ارائه کرد و گفت برای اینکه خیالم از کاستوم نبودن راحت باشد این را در فاکتور قید خواهد کرد. البته بماند که آخر سر یک فاکتور دستی با خط خیلی افتضاح به من داد که حتی مهر هم نداشت. به هر حال لپ تاپ را دیدم و به ظاهر هیچ مشکلی نداشت. به خاطر اعتراضات مهسا امینی، میدان و چهار راه ولیعصر پر از مامور بود. خستگی خودم هم مضاف بر علت شد و زود آنجا را ترک کردم. فردای آن روز که شروع به نصب سیستم عامل کردم تازه فهمیدم که حواس پرتی باعث شده چه مشکلی برایم به وجود بیاید. کیبورد لپ تاپ استاندارد نبود. یعنی فارسی که هیچی، انگلیسی یا آمریکایی هم نبود. روی کلیدهای عددی ۱ تا ۳ و یک کلید کناری، علایم غیر استاندارد چاپ شده بود. مثلاً به جای علامت @ علامت دابل کوتیشن و به جای علامت # علامتی شبیه پوند قرار داشت. کلید شیفت چپ نسبت به کلید شیفت راست دو تیکه شده بود و یک تیکه اختصاص پیدا کرده بود به علامت بک اسلش. همین بلا سر کلید enter هم آمده بود. کلید menu هم وجود نداشت اصلا. برای من که خیلی به کیبورد وابسته‌ام، این یعنی خود فاجعه.با اینکه می‌دانستم زنگ زدن به مغازه و شاکی شدن هیچ فایده‌ای نداشت اما تصمیم گرفتم شانسم را امتحان کنم. مطابق آنچه انتظار داشتم چند بار تلفن را جواب ندادند، چند بار سر کارم گذاشتند، چند بار پاس کاری کردن و آخر سر هم گفتند تقصیر ما نیست و تقصیر Lenovo است. راه حل شان این بود که روی صفحه‌کلید برچسب بزنم.فایده‌ای نداشت. کار از کار گذشته بود. شکایت در اتحادیه و فلان و بهمان هم بی‌فایده بود. سال ۹۷ یک بار مسیر شکایت را تا ته پیش برده بودم برای خرید موبایل از پاساژ چهارسو اما هیچ چیزی عایدم نشد. من نمی‌دانم چه چیزی در پاساژ ایران وجود دارد که باعث می‌شود فروشنده هایش اینقدر داستان دار باشند. پارسال طبقه زیر هم کف نزدیک بود برای نصب SSD کل لپ تاپ را نابود کند. چند سال پیش Mainboard فروخته بودند به من در حالی که جای پیچ شدگی روی شاسی آن پیدا بود. کلاً هیچ سابقه خوبی از این پاساژ به طور خاص و صنف فروشندگان IT به طور کلی ندارم. همیشه آماده هستند تا سر تویی که سال‌ها مشتری این صنف هستی کلاه بگذارند. من از این آدم‌ها انتظار دارم با داشتن اطلاعات کافی مشتریان را راهنمایی کنند نه اینکه آن‌ها را سر کار بگذارند. من انتظار دارم که هر چیزی وجود دارد را در مورد جنس به خریدار بگویند. مثلاً اگر کیبورد غیر استاندارد همان اول بگویند که استاندارد اسلونی یا اسلواکی دارد نه بعد از خرید.خلاصه اینکه یک بار دیگر تجربه تلخ خرید کامپیوتر و لوازم آلات تکرار شد و به جای اینکه بعد از صرف نزدیک به سی میلیون تومان (۸۰۰ دلار) پول خوشحال باشیم و راحت به کارمان برسیم، زانوی غم بغل کنیم که یک بار دیگر کلاه سرمان رفت. مثل اینکه اصلاً این صنف دیجی کالا و حضوری و غیر حضوری ندارد، هر کس به هر طریقی که بتواند جنسش را می‌اندازد به مصرف کننده.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Wed, 26 Oct 2022 00:24:03 +0330</pubDate>
            </item>
                    <item>
                <title>تیم جدید</title>
                <link>https://virgool.io/@afsharm/%D8%AA%DB%8C%D9%85-%D8%AC%D8%AF%DB%8C%D8%AF-mg61d0y1uvwu</link>
                <description>بعد از نزدیک به یک سال کار در یک شرکت انگلیسی-لهستانی، نزدیک به دو هفته است که کار در یک تیم آسیایی-هندی را شروع کرده ام. همین اول کار خیلی تفاوت‌ها به چشم می آیند. با اینکه تیم های ایرانی توسعه نرم‌افزار به طور متوسط خیلی هم بی کیفیت نیستند، اما این تیم جدید یادآور تجربیات و ویژگی‌های تیم های ایرانی است برای من.زمانی که در تیم اروپایی قبلی کار می‌کردم تفاوت خیلی سنگینی بین ایران (تیم های خوب البته) و اروپا حس نمی کردم. در بحث فنی که خیلی شبیه به هم بودیم و در مباحث انسانی و مدیریتی هم که حس می‌کردم فاصله را می‌توان پر کرد. اما این تیم آسیایی-هندی فاصله اش با آن تیم اروپایی خیلی قابل توجه است. آن‌ها در حد تیم های خیلی بد ایرانی هستند ولی به پای تیم های خوب ایرانی نمی رسند.ادامه بحث را با مثال پیش می برم. در تیم اروپایی کل تیم برای هر کاری از یک ابزار مشخص و واحد استفاده می کرد. مثلاً برای مدیریت تسک ها از جیرا و برای تماس ها از zoom استفاده می شد. اما دوستان ما در تیم جدید هر روز از یک ابزار استفاده می کنند. با اینکه جیرا دارند اما بعضی وقت‌ها از اکسل استفاده می‌کنند و بعضی وقت‌ها هم فقط روی شفاهیات کار می کنند. برای تماس ها هم از zoho و هم از خود slack و هم از google meet استفاده می کنند. برای api test بعضی‌ها از postman بعضی‌ها از jMeter و بعضی‌ها از swagger استفاده می کنند.در تیم اروپایی هر روز جلسه منظم ۱۰ دقیقه‌ای Daily Standup داشتیم به علاوه دو سه مدل جلسه دیگر. ولی واقعاً این‌طور نبود که کل روز را در جلسات بگذارنیم. زمان جلسات هم مشخص بود و خود جلسه از چند روز قبل مشخص می شد. اما در تیم جدید تمام روز جلسه هستیم. خیلی کارها را می‌شود با جلسات کوتاه تری انجام داد اما باز هم جلسات طولانی داریم. بعضا جلسات ۱۵ نفره  داریم که نصف افراد در اون جلسات اصلاً صحبت نمی کنند. در جلسات اروپایی صحبت کردن بین هم تقسیم می‌شد و هر کسی بدون بی انگیزگی از کارهای خودش می گفت. اما اینجا scrum master یک طورهایی مثل بازخواستن کردن از همه سؤال می پرسد. در تیم اروپایی هیچ وقت گفته نمی‌شد این کار باید امروز انجام شود اما در تیم جدید مدام از افراد خواسته می‌شود که این تسک باید امروز یا فردا تمام شده باشد. در تیم اروپایی حتی یک بار هم پیش نیامد آخر هفته یا بعد از ساعت کاری آنلاین بشوم اما اینجا دقیقاً اولین آخر هفته دیدم که نصف تیم کار اجباری به خاطر تحویل پروژه دارند.این بی برنامگی و بی نظمی ها همین جا تمام نمی شود. اولین روز تیم اروپایی، نیم ساعت قبل از شروع روز، scrum master به من پیام داد و هماهنگ کرد. همان ابتدای روز همه اکانت ها ساخته شد و همه ابزارها به من معرفی شد. با آنکه کد بسیار پیچیده‌تری هم داشتند اما تا ظهر همان روز اول جلسه onboarding من برگزار شد، همان هفته اولین task به من assign شده بود و اولین commit و deploy هم انجام شده بود. اما در تیم جدید تا روز هفتم کار هیچ خبری از onboarding نبود. این خود من بودم که مدام پیگیری می‌کردم و پیام می گذاشتم. البته دلیل آوردند که چون این هفته مشغول نسخه آلفا بوده‌ایم این‌طوری شده. اسکرام مستر تیم اروپایی تا چند هفته اول مدام بررسی می‌کرد که آیا من همه چیز را یاد گرفته‌ام یا نه. مدام همه تیم و شرکت را به من معرفی کرد. اما در تیم جدید هیچ کسی منتظر من نبود اصلاً!در جلسات اروپایی آن‌هایی که کمی زودتر می‌رسیدند یکی دو دقیقه خوش و بش می‌کردند و احوالپرسی می کردند. اما در تیم جدید انگار همه ربات هستند و هیچ نوعی احساس انسانی وجود ندارد. حالا بگذریم از لهجه های خیلی غلیظ و انگلیسی خیلی ضعیف و کد پر ایراد و…در تیم اروپایی هر وقت چیزی می‌خواستم فوری فراهم بود ولی اینجا باید مدام تکرار و پیگیری کنم تا کسی کاری را انجام دهم. در تیم جدید مثل خیلی تیم های ایرانی، نقش افراد خیلی مشخص نیست. یعنی معلوم نیست من با کی باید هماهنگ باشم و نظرات چه کسی را باید اعمال کنم. هر کسی می‌تواند از گرد راه رسیده و از من گزارش بخواهد ولی کسی نیست که بگوید کار این هفته یا امروز من چیست.حالا ببینیم برای آخر ماه و پرداخت حقوق چه سورپرایزهایی خواهیم داشت ;)</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Wed, 14 Sep 2022 15:49:11 +0430</pubDate>
            </item>
                    <item>
                <title>میکروفون</title>
                <link>https://virgool.io/@afsharm/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D9%81%D9%88%D9%86-rbabjj3agjmz</link>
                <description>اول از همه کار ریموت و بعدش کرونا خیلی از ماها را مجبور کرده که مثل استودیوهای ضبط برنامه به فکر کیفیت نور و صدا باشیم، ظاهر خود را مرتب کنیم، یاد بگیریم مثل مجری ها و بازیگرها به جزییات دقت کنیم و با کلی مشخصات فنی، سخت‌افزار ها و اصطلاحات آشنایی بیشتری پیدا کنیم.این فقط شامل حال برنامه نویس های دور کار نیست، معلم‌ها و حتی دانش آموزهای دوران کرونا هم مجبور شده‌اند یک گوشه مناسب خانه را برای فیلم گرفتن و ضبط صدا در نظر بگیرند، میکروفون اضافی بخرند، به محل قرار گیری منبع نور دقت کنند و با تدوین سر و کله بزنند.از برنامه نویس ها و افراد فنی انتظار می‌رود که خیلی خوب روی این مباحث مسلط باشند، ابزارها را بشناسند و کیفیت صدا و تصویر خوبی داشته باشند. اما متأسفانه موضوع به این سادگی‌ها هم نیست.زمانی که برای سرگرمی، کیت های الکترونیک می ساختم اطلاعات نسبتاً خوبی راجع میکروفون، بعضی انواع آنها، امپدانس و این‌طور چیزها داشتم. اما این مال چندین سال قبل و زمانی است که همه چیز آنالوگ بود. آن اطلاعات، الان کاربرد زیادی ندارد.الان چندین روز است که به خاطر نداشتن اطلاعات کافی و ابزار مناسب دچار مشکل کیفیت خیلی پایین صدا هستم. من از یک لپ تاپ ASUS استفاده می‌کنم که CPU ضعیفی دارد ولی عمرش تازه به دو سال رسیده. میکروفون خود لپ تاپ که فقط برای داد زدن به در می‌خورد و هیچ کاربردی ندارد. مدت‌ها از هندزفری که توی جعبه موبایلم بود استفاده می کردم. کمی پارازیت داشت و دقت صدا پایین بود ولی قابل تحمل بود. اما چند روزه که همین هم مشکل پیدا کرده.از قبل یک میکروفون یقه ای ارزان‌قیمت داشتم اما چون جک آن به لپ تاپ که مشابه گوشی موبایل ها است نمی‌خورد از آن استفاده نمی کردم. دیروز یک تبدیل AUX 2 to 1 خریدم که به نظر کیفیت متوسطی داشت. اما وقتی که به لپ تاپ وصل کردم دیدم مقدار خیلی زیادی نویز دارد. تازه بدون نویزش هم خیلی بهتر از هندزفری نبود، فقط صداهای ضبط شده کمی بلند تر بودند. مشکل هر دو نوع میکروفون جدا از قضیه نویز این است که مقداری صدای پس زمینه در آن‌ها وجود دارد. مثل همان‌ها که دوره نوار کاست وجود داشت. قدیم‌ها به این‌طور صدا ها می‌گفتند هوا دارد (!). در‌واقع صدای ضبط شده با این میکروفون ها هیچ وقت سکوت مطلق ندارد. وقتی با این میکروفون ها سطح صدا را چک می‌کنم هیچ وقت سطح صدا صفر نیست.برای اینکه همه این چیزها را بهتر بفهمم از نرم‌افزار Audacity استفاده کردم. چندین بار در شرایط مختلف ضبط کردم و نمودارها را چک کردم. ولی نفهمیدم چرا میکروفون یقه ای اینقدر نویز دارد. اول فکر کردم به خاطر الکلی است که به خاطر شرایط کرونا استفاده شده. اما فردا هم همین وضعیت بود. البته یک وقت‌هایی نویز خیلی کم می‌شد که من فکر می‌کردم شانسی است. بالاخره بعد از کلی سعی و خطا چیز عجیبی را پیدا کردم: وقتی که شارژر لپ تاپ وصل بود نویز وجود داشت و وقتی که شارژر وصل نبود مقدار نویز خیلی کمتر می شد.یک هدفون وایرلس هم از قبل داشتم. با اون هم یک امتحان کردم. کلی با bluetooth اون دردسر کشیدم. چون لوبونتو آن را به خوبی نمی شناخت. مجبور شدم blutoothctl را در خط فرمان اجرا کنم. وقتی هم که درست شد، کیفیت میکروفون خیلی پایین بود در حد همون دو تای قبلی.الان مانده‌ام میکروفون حرفه‌ای تری بخرم یا نه. اگر مشکل از جک تبدیل بود چه می شود. اصلاً چه‌جور میکروفونی باید بخرم. فرق آن‌ها به غیر از قیمت و برند چیست؟ به همین خاطر مجبور هستم کمی اطلاعات فنی ام را راجع به این موضوع بالا ببرم.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 07 Feb 2022 19:04:38 +0330</pubDate>
            </item>
                    <item>
                <title>پروژه جدید</title>
                <link>https://virgool.io/@afsharm/%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%AC%D8%AF%DB%8C%D8%AF-r0ktgcqsqc6s</link>
                <description>هفته‌ای که گذشت هفته پر ماجرایی بود. از ابتدای هفته به پروژه جدیدی Assign شده بودم که اولش حتی نمی‌دانستم Back-end آن چیست. بعد از توضیحات اولیه متوجه شدم که این پروژه روی دات نت نیست بلکه روی Node.js است. از کار مجدد روی Node.js خیلی خوشحال شدم. خصوصا اینکه می‌توانستم و البته مجبور شدم که روی لینوکس برگردم اما کمی هم ترسیدم که نکند استاندارهای آن‌ها در این پروژه خیلی خاص باشد و مهارت Node.js من کافی نباشد.انگلیسی حرف زدن PM خیلی بد بود. کیفیت میکروفون و تصویرش هم همین طور. خیلی لهجه داشت و خیلی از کلماتش را به سختی متوجه می شدم. کلی راجع به Amazon و AWS و داکر حرف زد، راجع به EC2 و دیتابیس cloud و این‌طور چیزها. حتی گفت که خودش چون لینوکس دارد از Azure برای کار با یک دیتابیس MSSQL استفاده می کند. این‌قدر راجع به این چیزها حرف زد که فکر کردم بیچاره شدم. چون دسترسی قبلی به AWS نداشتم و هیچ وقت با دیتابیس اون کار نکرده و برایم ملموس نبود. از همان شب شروع کردم به جستجو راجع به AWS. یک اکانت ساختم. مشکل SMS و شماره موبایل غیر ایرانی را برطرف کردم. حتی یک شماره credit card غیر واقعی هم وارد کردم. اما توی مرحله credit card گیر کرد و اکانتم فعال نشد.اولین تسکی که به من سپرده شد مربوط به کد و API نبود بلکه راجع به restore یک دیتابیس MSSQL در یک سرویس EC2 بود. با کلی ترس و دردسر cert ها را آماده کردم و به سرور SSH زدم. همینجا بود که فهمیدم داستان AWS و EC2 و غیر خیلی اهمیت نداشته اند. چون تمام آن چیزی که من لازم داشتم این بود که از طریق SSH به یک سرور Ubuntu وصل بشوم. فقط به جای داشتن user/pass از یک cert استفاده می شد. از SSH به بعد داستان خیلی ساده بود. فقط کافی بود که با SQLCMD کارهایم را انجام بدهم. که برای من کار سختی نبود. چون سالها با MS SQL سر و کله زده بودم و می‌دانستم دردسرهای backup/restore چیست. در ادامه کار به مشکل نبود فضای آزاد کافی برخورد کردم. DevOps مشکل را برطرف کرد و بالاخره دیتابیس Restore شده. حجم دیتابیس حدود صد گیگا بایت شده بود. به جای ابزارهایی مثل Windows Azure از dbeaver لوکال استفاده کردم و صحت دیتابیس برایم احراز شد.سمت gitlab را شروع کردم. چون معماری طبق معمول میکروسرویس بود، هر کدام از میکروسرویس یک repo جداگانه داشتند. در Node.js بر خلاف .Net امکان استفاده از DLL و share کد از این طریق را ندارد. پس اجبار هست که کدها به شکل پکیج منتشر بشوند. اما پکیج ها که عمومی نیستند که بتوان در npmjs قرار بدهیم. چاره کار؟ علی الظاهر gitlab امکانی برای انتشار package البته به صورت خصوصی دارد که اینجا از این امکان استفاده شده. در دات نت هم از یک nuget package خصوصی مشابه استفاده می شود. به هر صورت فرصت نشد که روی کد node.js بیش از این مانور بدهم چون تغییراتی در اولویت ها به وجود آمده بود و من مجبور شدم که به پروژه دات نتم برگردم.بماند که چقدر بابت setup کردن vpn در اوبونتو و update کردن پکیج ها و نرم‌افزارها وقتم تلف شد. اما به هر حال خوب شد که دوباره به لینوکس برگشتم. چون سورس کد پروژه مدتی هست که به دات نت ۵ آپگرید شده، من هم دات نت ۵ را نصب کردم و دیدم که پروژه دات نت در اوبونتو اجرا می شود.تا بعد…</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 24 Jan 2022 10:56:40 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت ما و آنها</title>
                <link>https://virgool.io/@afsharm/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%85%D8%A7-%D9%88-%D8%A2%D9%86%D9%87%D8%A7-etwhbf8qcmir</link>
                <description>قسمت چهاردهم – 1400/9/29امروز تقریباً سه ماه از کار با شرکت جدید می گذرد. بر اساس صحبت‌هایی که با دوستان مختلف داشته‌ام می‌توانم یک سری تفاوت را بین کار خودمان و آن‌ها و بین شرکت های خودمان و آن‌ها از دیدگاه فنی و غیر فنی لیست کنم.منظر فنیما تئوری بازی زیاد داریم: design pattern در مقیاس وسیع، Domain Driven، انواع messaging در معماری میکرو سرویس، transaction و query های مختلف در دیتابیس، کانبان، کایزن و ده چیز دهن پر کن دیگر. اما آن‌ها با اینکه از خیلی از مفاهیم استفاده می‌کنند اما اینقدر هم رویشان تکیه نمی کنند. برنامه نویس ها بیخود و بی جهت زیر انبوهی از این اصطلاحات و روش‌ها مدفون نمی شوند. ما در ایران اینقدر درگیر این تئوری‌ها هستیم که وقتی می‌خواهیم حتی یک کار ساده در حد اضافه کردن یک فیلد به فلان بخش انجام بدهیم مجبور می‌شویم دل و روده کل سیستم را به خاطر آن یک کار بیرون بریزیم. اما خوب در شرکت های آن‌ها قرار نیست همه چیز را همه‌کس بدانند، مسلط باشند، صبح تا شب راجع بهشان حرف بزنند و در نهایت هم کاری از پیش نبرند.مسیر آن‌ها و برنامه کاری آن‌ها مشخص است و کمتر تغییر می‌کند ولی مال ما نه. اول اسپرینت با دو جدول و 20 فیلد شروع می‌کنیم ولی تا آخر اسپرینت دو بار دیگر هم عوضش می کنیم. توجیه مان هم این است که تغییر در ذات نرم‌افزار است. آن‌ها یک version تعریف کرده و داخل آن یک سری feature در نظر می گیرند. این feature ها را از قبل به خوبی صیقل کاری کرده و تأیید مشتری و مدیر محصول را دریافت کرده اند. بعد شروع می‌کنند به پیاده سازی.آن‌ها خیلی خوب unit test و component test دارند ولی ما نه. این شاید بزرگترین تفاوت عملی بین ما و آن‌ها باشد. آن‌ها خیلی زیاد automated test در انواع مختلف می نویسند. به pass شدن آن‌ها هم حساس هستند. اما ما تقریباً تست نمی نویسیم.از همه این‌ها که بگذریم، تفاوت کدی که ما می نویسیم با آن‌ها خیلی زیاد نیست. روش دسترسی به دیتابیس یا پیاده‌سازی businness logic ما با آن‌ها خیلی متفاوت نیست. اصلاً کدها را که کنار هم می‌گذاریم به این راحتی معلوم نمی‌شود کدامش مال ماست و کدامش مال آنها.منظر غیر فنیپلتفرم توسعه نرم‌افزار ما با آن‌ها یکی است. ما دات نت داریم، آن‌ها هم همینطور. IDE و دیتابیس هم یکی است، روش نوشتن کد هم یکی است. حتی متودولوژی توسعه نرم‌افزار هم یکی است. ما اسکرام داریم آن‌ها هم اسکرام. جزییات استفاده از اسکرام هم یکسان است. جلسات palnning و retro و daily و غیره یکی است. شاید از معدود تفاوت‌هایی که داریم یکی استفاده بیشتر و جدی‌تر آن‌ها از test است و دیگری استفاده آن‌ها از سرویس های ابری مثل amzon است. که حداقل این مورد دوم تفاوت حادی نیست. اما در چند چیز متفاوت هستیم.نرم‌افزار در سیستم اقتصادی آن‌ها با‌ارزش تر از ماست. مثال می زنم. نرم افزاری که تقریباً توسعه اش کامل شده و وارد فاز maintenance شده باز هم نیاز به تغییرات دارد. این تغییرات توسط مشتری در قالب درخواست تغییر یا به قول آن‌ها Change Request بیان می شود. ما در ایران بابت یک CR دو هفته‌ای تقریباً پول دو ماه حقوق یک developer را از مشتری می‌گیریم اما در آنجا نزدیک به چهار ماه. یعنی همین‌جوری سر انگشتی هم که حساب کنیم نرم‌افزار در آنجا اقلاً دو برابر با‌ارزش تر از ایران است. نتیجه این موضوع هم این می‌شود که آن‌ها می‌توانند منابع بیشتری برای انجام CR اختصاص دهند. در نتیجه هم کیفیت کار بالاتر می‌رود و هم استرس تیم کاهش می یابد.قدرت پول یک تفاوت جالب دیگر است. در ایران، پول دست هر کس که باشد قدرت هم دست اوست. سفارش دهنده های نرم‌افزار در ایران (خصوصا دولتی ها) خدایی می کنند. چون پول دست آنهاست هر جور که دلشان می‌خواهند قرارداد را می نویسند. و هر وقت که دلشان بخواهد پول را پرداخت می کنند. از طرفی مجری هم با کارمند خودش چنین رفتاری دارد. چون حقوق پرداخت می‌کند هر طور که دلش می‌خواهد با کارمندش رفتار می کند. حقوق را با تأخیر می دهد، بیمه را حداقل رد می کند، سفته می‌گیرد و همین‌طور الی آخر. اما آن طور که تا امروز فهمیده ام این مدل زروگویی و قلدری در اینجا کمتر رایج است. هم زور مشتری کمتر است و هم شرکت زورگویی کمتری نسبت به کارمندانش دارد.با آن که روش تولید نرم‌افزار ما با آن‌ها یکی است (تقریبا) و سرعت توسعه نرم‌افزار در ایران اگر بیشتر از آنجا نباشد، کمتر از آنجا هم نیست. اما یک تفاوت ریز وجود دارد. خیلی از نرم‌افزارها در ایران هیچ وقت زیر بار نمی روند. در خیلی از نرم‌افزارها هم که زیر بار می روند، باز هم بخش قابل توجهی از ویژگی‌ها مورد استفاده قرار نمی گیرند. حتی بخش قابل توجهی از نرم افزارهایی که زیر بار می‌روند و همه ویژگی هایشان مورد استفاده قرار می‌گیرند هم عمر طولانی ندارند. یعنی مثلاً دو سال یا سه سال استفاده می‌شوند و بعد کنار گذاشته می شوند.دلیل؟ از همان اول نیازی به آن نرم‌افزار نبوده یا اینکه نیازسنجی درست انجام نشده. مشتری یا دید کافی از نیازمندی هایش نداشته یا شخص و تیم نامناسبی برای طراحی محصول در نظر گرفته. گاهی اوقات رانت های مختلف یا عوض شدن‌های پی در پی باندهای سیاسی باعث شدت وقوع این حوادث می شوند. گاهی اوقات نیازهای بازار به خوبی تحلیل نمی شود و گاهی اوقات هم موازی کار اتفاق می‌افتد یا اینکه تحقیقات در بازار ناقص بوده یا اصلاً انجام نشده.همه این‌ها در حالی است که حس می‌کنم در سیستم اقتصادی آنها، دوباره کاری کمتری اتفاق می افتد. اگر نیاز به یکی چیزی دارند برایش وقت و انرژی می گذارند و نصفه رهایش نمی کنند. نیازمندهای را بهتر از ما تحلیل می‌کنند و کار را جدی می گیرند. نتیجه اینکه پول و وقتی که برای تولید نرم‌افزار می‌گذارند کمتر هدر می رود.میانگین حضور کارمندان در این شرکت 5 سال است. در حالی که میانگین حضور برنامه نویس ها در شرکت های ایرانی گاهی اوقات به دو سال و حتی یک سال هم نمی رسد. جابجایی نیرو در ایران خیلی زیاد است. برای خیلی‌ها عادی است که هر سال به جای جدیدی بروند. برای شرکت ها هم عادی شده که هر سال بلکه هر چند ماه جابجایی نیرو داشته باشند. علی الظاهر ثبات کار خود شرکت ها هم در ایران و آنجا تفاوت زیادی با هم دارد. ما در ایران شرکت هایی (حوزه IT) داریم که بیش از ده سال عمر نمی کنند. در حالی که به نظر می‌رسد میانگین عمر شرکت ها در آنجا خیلی بیشتر از ایران باشد. شما خودتان تصور کنید این ثباتی که آنجا هست چقدر هم به نفع شرکت است و هم به نفع کارمندهایش.ضعف، حقارت و فساد بخش خصوصی در ایران در مقابل بزرگی، قدرت و توان حمایت گر بخش خصوصی آنجا تفاوت بعدی است. کارمند بخش خصوصی در ایران (حداقل شرکت های کوچک که این‌طور هستند) جدی گرفته نمی شود. عموم جامعه آن را یک شغل دست دوم می دانند، بانک ها در ارزیابی هایشان روی کارمند بخش خصوصی حساب باز نمی کنند. نه به این راحتی دسته چک می‌دهند نه ضمانت او را قبول می کنند. بیمه ها خیلی سخت به بخش خصوصی بیمه تکمیلی می‌دهند و همین‌طور الی آخر. از طرف دیگر مقدار قابل توجهی از بخش خصوصی در ایران بر اساس رانت و انحصار ساخته شده. در کنار این‌ها، ماهیت سلطه گر بخش خصوصی در ایران غیر قابل انکار است. بخش خصوصی در حالی که انتظار کار خوب دارد و از این کار خوب بهره می برد، اما از کارمندش ضامن و معرف و چک و سفته هم که می‌خواهد هیچ، بعضی وقت‌ها هم بیمه اش را رد نمی‌کند یا به بهانه‌های مختلف به صورت حداقل رد می کند. از طرفی خود همین بخش خصوصی هم در برابر دولت ضعیف و ناتوان است. دولت با تغییر مداوم قوانین و رقابت ناسالم هر کاری که دلش بخواهد با بخش خصوصی می کند. اما آیا بخش خصوصی در اروپای غربی یا آمریکای شمالی هم همین‌طور است؟در مدت این سه ماه یک چیز برایم هنوز عادی نشده. اینکه چطور این شرکت به کارمندهایش اینقدر اعتماد دارد. ما مدام جلساتی داریم که پیشرفت پروژه های بازاریابی در آن به همه گفته می شود. در همین جلسات میزان سود و زیان شرکت و پیش‌بینی از وضعیت مالی به همه گفته می شود. اینکه قرار است در آینده چه پروژه ای را به چه قیمتی برنده شویم مدام به همه گفته می شود. وضعیت استخدام و موقعیت های خالی از جمله همین اطلاع رسانی های مداوم است.بخش دیگری از اعتماد در بخش فنی دیده می شود. من از همان روز اول به همه git repo ها دسترسی داشتم. از همان روز اول معماری پروژه و ساختار API را یاد گرفتم. آن هم بدون آنکه از قبل چک و سفته داده باشم. این را مقایسه می‌کنم با شرکت های داخلی که هر روز باید در حال درخواست دادن برای دسترسی به بخش‌های مختلف پروژه باشیم.پی نوشت: این آخرین قسمت از این سری مطالب بود. از اینجا به بعد باز هم از کار جدیدم می‌نویسم، ولی نه عنوان بخشی از این سری مطالب، بلکه به عنوان مطلبی جالب در کنار دیگر مطالب بلاگ.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Sat, 22 Jan 2022 14:47:22 +0330</pubDate>
            </item>
                    <item>
                <title>میکروسرویس ها و به هم ریختگی های آخر سال</title>
                <link>https://virgool.io/@afsharm/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7-%D9%88-%D8%A8%D9%87-%D9%87%D9%85-%D8%B1%DB%8C%D8%AE%D8%AA%DA%AF%DB%8C-%D9%87%D8%A7%DB%8C-%D8%A2%D8%AE%D8%B1-%D8%B3%D8%A7%D9%84-iorx9jmxrj2r</link>
                <description>قسمت سیزدهم – 1400/9/10امروز دو ماه از حضورم در شرکت می‌گذرد. این سه هفته اخیر و به‌خصوص این سه روز اخیر یک مقدار سخت گذشت. سه روز گذشته را شدیداً درگیر یک task ساده برای عدم ارسال بعضی مقادیر خاص بودم. اما به دلایل فنی خیلی خیلی طول کشید. الان که این‌ها را می‌نویسم کار تمام شده و منتظر QA است ولی تا اینجا برسم خیلی اذیت شدم.در اولین تلاش، یک کامیت کردم و مطمئن بودم که مشکل برطرف می شود. بعد از اینکه به سرور تست منتقل شد، هر کاری کردم دیدم که خروجی اصلاً تغییری نکرده و آن مقادیر اضافه هنوز موجود هستند. دوباره build کردم، چند بار هم با jenkins سر و کله زدم ولی مشکل برطرف نشد. تلاش کردم خطا را در local خودم به وجود بیاورم ولی موفق نشدم. اینقدر که میکروسرویس ها به هم وابسته بودند که اصلاً موفق به انجام این کار نشدم. از همکارم راهنمایی خواستم. سه تا میکروسرویس را معرفی کرد که اگر با هم اجرا کنم، اصل خطا را خواهم دید. اما اصلاً خود برنامه هم اجرا نمی شد. نوشتن component test هم خیلی کمکی نمی کرد.به هر صورت یک روز گذشت و فردای آن روز همکارم دلش سوخت و کمک کرد تا خطا را در local خودم به وجود بیاورم. سر و کله زدن با این همه میکروسرویس نیاز به داشتن تجربه قبلی روی آن دارد. من که تازه دو ماهه اینجا هستم و در جریان نوشتن کدها نبوده ام. اما همکارم یک سال است که با این code base سر و کله می زند. به هر صورت با comment کردن یکی دو جای به‌خصوص و اضافه کردن دو میکروسرویس دیگر، خطا قابل مشاهده شد. هر چند که RAM و CPU Usage سیستم ضعیف من تمام روز بالای 90 درصد بود.بعد از آنکه فهمیدم مشکل از کجا است تازه باید حلش می کردم. کلی بالا و پایین کردم و در کمال ناباوری دیدم که Automapper یک جای کار به collection مربوطه رکورد اضافه می‌کند. اصلاً این code base استفاده بسیار شدیدی از Automapper دارد و نصف کدهای سیستم در Automapper قرار دارد. مشکل را برطرف کردم ولی این بار component test ها ناز می کردند. از شانس بدم، تست ها روی سیستم لوکال درست اجرا نمی شدند و من مجبور بودم از Pipeline بیت باکت برای چک کردن آن‌ها استفاده کنم. بالاخره تست ها را هم درست کردم و کار را به QA سپردم. ولی خیلی خیلی طول کشید. حتی صدای PM هم در آمده بود.کلاً استفاده به شدت غلیظ از Automapper، تعدد میکروسرویس ها و config نامناسب jenkins از مشکلات اساسی این کار هستند. بماند که بیشتر سرویس ها روی Amazon هستند و من می‌ترسم VPN من به درستی کار نکرده و خود این هم محل اشکال باشد.یک مشکل دیگر که این اواخر خیلی اذیت کرده کرونای یکی از افراد کلیدی، مرخصی طولانی مدت یکی از همکاران و به هم ریختگی آخر سال است. همه در حال مرخصی گرفتن و برنامه‌ریزی برای تعطیلات هستند. بعضا جایگزین مشخصی برای شخص وجود ندارد. علاوه بر این تکلیف خودم برای مرخصی روشن نیست. یک بار شنیدم که در شش ماه اول قرارداد امکان مرخصی ندارم ولی یک بار هم گفتند که می‌توانم مثل بقیه تعطیلات سال نو را تعطیل باشم. این در حالی است که تعطیلات رسمی 25 دسامبر و 1 ژانویه بوده که هر دو شنبه بوده و خود به خود تعطیل هستند. اصل تعطیلات مرخصی پایان سال است که در فاصله این دو روز گرفته می‌شود و من هم ندارم. علی الظاهر مرخصی های 2021 به سال جدید منتقل نمی‌شوند و این خودش یک ابهام دیگر در قوانین مرخصی برای من است.تا بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Fri, 21 Jan 2022 08:22:32 +0330</pubDate>
            </item>
                    <item>
                <title>جابجایی پول</title>
                <link>https://virgool.io/@afsharm/%D8%AC%D8%A7%D8%A8%D8%AC%D8%A7%DB%8C%DB%8C-%D9%BE%D9%88%D9%84-qcvvjggahzhp</link>
                <description>قسمت دوازدهم – 1400/8/25امروز کمی بیش از یک ماه و یک هفته از شروع به کار من گذشته. این یعنی تا الان باید فکری به حال انتقال پول حقوق ماه اول کرده باشم. انتقال پول از چالش های اصلی کار ریموت است.اول اینکه بدانید اصل موضوع تحریم و عدم کار با ایران به موضوعات قراردادی و مالیات و مجوز کار و این‌طور چیزها بر می‌گردد نه خود انتقال پول. یعنی اصل قضیه است که شرکت ها اجازه ندارند پولی خارج از دفاتر حسابداری منتقل کنند. بلکه باید قرارداد استخدام یا قرارداد خدمات یا چیز مشابهی وجود داشته باشد که بتوانند بر اساس آن پول پرداخت کنند. خود این قرارداد ها معمولاً یا مستلزم وجود شرکت ها یا افراد واسطه است یا مستلزم وجود ویزای کاری. علاوه بر این‌ها، قرارداد و نقل و انتقال مالی باید تحت قوانین کار و بیمه و مالیات کشور مبدأ انجام بگیرد. یعنی باید مالیات آن کسر شود و اگر مثل ایران بیمه اجباری وجود دارد، بیمه آن پرداخت شود.  اگر از این مراحل رد شده باشید پس یعنی در نقطه‌ای قرار گرفته‌اید که حقوق ماهانه شما نزد شرکت آماده پرداخت است. از اینجا به بعد موضوع انتقال پول شروع می‌شود که به نظرم از مراحل قبلی ساده‌تر است.برای من هم تا امروز همه مراحل قرارداد طی شده، بیش از یک ماه از شروع به کار گذشته، همه timesheet ها پر شده، حقوق اختصاص داده شده و نوبت به انتقال پول به ایران رسیده. طرف خارجی از ابتدای کار اعلام کرده بود که می‌تواند انتقال وجه را از طریق بانک ملت انجام دهد. من از همان اول روی این موضوع حساب باز کرده بودم، اما تا وقتی پایان ماه نرسیده بود سراغ بانک نرفته بودم. ولی وقتی که سراغ بانک رفتم کمی سورپرایز شدم.به یک شعبه نزدیک میدان انقلاب (تهران) رفتم. کارمندها گفتند ما انجام نمی‌دهیم اما رئیس شعبه بعد از اینکه پرسید مبالغ چقدر است و چقدر آن‌ها را در حساب نگه می‌دارم گفت که می‌تواند این کار را انجام دهد. اول باید 200 یورو در حساب بگذارم و بعدش کد سویفت می‌دهند که جابجا کنم. چون رفتار باجه ها کمی عجیب بود به یک شعبه دیگر رفتم.شعبه دانشگاه تهران گفت نه حساب ارزی باز می‌کنیم نه امکان جابجایی پول هست، چون سویفت قطع است. به شعبه مرکزی (طالقانی) مراجعه کردم. آنجا گفتند که ما فقط با مشتریان حقوقی کار می‌کنیم اما اداره بین الملل باید بگوید که آیا امکان جابجایی پول هست یا نه. در ادامه به شعبه هجرت رفتم. اینجا آب پاکی را روی دستم ریختند. اول گفتند که حساب ارزی با 200 یورو باز کنم. بعد گفتند که باید خودم از اداره بین الملل بپرسم. اما وقتی اصرار کردم خودشان زنگ زدند و گفتند که بله امکان‌پذیر هست. اما خانم مسئول این موضوع از سر دلسوزی گفت که بانک را بگذارم آخرین گزینه. چون وقتی یورو به حساب من بیاید نمی‌توانم از بانک یورو نقد دریافت کنم بلکه باید معادل ریالی آن را دریافت کنم. آن هم با نرخ نیمایی ETS که تا 20 درصد پایین‌تر از نرخ بازار آزاد است. محض اطمینان به شعبه فردوسی هم رفتم. آنجا هم گفتند حساب 200 یورویی باز کنم و از کد سویفت آن‌ها برای جابجایی پول استفاده کنم. اما تا وقتی خودم نگفتم، صحبتی از نرخ نیمایی نکرد.از خیر بانک گذشتم و به راسته صرافی ها رفتم. آنجا که فقط جواب‌های سر بالا شنیدم. گفتند اصلاً جابجایی پول انجام نمی دهیم. یکی از آن‌ها یک شماره موبایل یواشکی به من داد که بعداً بهش زنگ بزنم. بعداً هم که زنگ زدم سر کارم گذاشت.از صرافی هم نا امید شدم و به چند تا از دوستانم زنگ زدم. یک نفر پیشنهاد کرد از تجاری که در کشور خارجی طرف قرارداد و ایران فعالیت می‌کنند کمک بگیرم. یعنی پول را در کشور خارجی به آن‌ها برسانم و در ایران معادل ریالی تحویل بگیرم. چون آدم مطمئنی نمی شناختم این کار را نکردم. انتقال ارز مسافری هم یکی از توصیه‌ها بود ولی به نظرم برای حالتی مناسب است که خودم در کشور خارجی ساکن باشم و بخواهم به ایران پول ارسال کنم. یک دوست دیگری شخصاً به استانبول رفته بود و با دادن دو سه میلیون تومان پول به یک واسطه موفق شده بود در یک بانک به ظاهر معتبر حساب بانکی باز کند. از پول آن حساب می‌توانست آنلاین خرج کند ولی اگر پول نقد می‌خواست باید ترکیه می رفت. این هم به خاطر هزینه‌های سفر خوب نبود.وقتی که در همه این مسیرها به بن‌بست برخوردم با طرف خارجی تماس گرفتم و موضوع را مطرح کردم. آن‌ها گزینه دومی هم داشتند به اسم رمز ارز. اما مشکل اینجا بود که اطلاعات من راجع به رمز ارز خیلی محدود بود، تجربه قبلی نداشتم و خلاصه اینکه از آن می ترسیدم. شنیده بودم که معامله crypto در ایران ممنوع است. تازگی‌ها شنیده بودم که بایننس دسترسی ایرانی‌ها را قطع کرده و حتی یک صرافی در ترکیه مقدار بسیار زیادی پول جمع کرده و صاحب آن فرار کرده. از قبل می‌دانستم که crypto را می‌توان به صورت فیزیکی در فلش یا هارد لپ تاپ نگهداری کرد و خرابی وسیله نگهداری یعنی خداحافظی با آن مقدار crypto. می‌شود در صرافی ها و wallet ها هم نگهداری کرد که باز هم خطر هک شدن آن صرافی، قطع دسترسی ایرانی‌ها یا کلاهبرداری وجود داشت. از طرفی می‌دانستم که crypto ها نوسانات شدیدی دارند.با آنکه دوستان زیادی در کار رمز ارز دارم که با خیال راحت trade و سرمایه‌گذاری می‌کنند و با آنکه خیلی سعی کرده بودند خیال من را بابت این موضوع راحت کنند، باز هم می ترسیدم. اما چاره‌ای نداشتم و بالاخره وارد گود شدم. طرف خارجی گفت که پول را از طریق Tether انتقال می‌دهد که چون معادل دلاری است پس از خطر نوسانات شدید به دور هستم. اطلاعاتی راجع به کیف پول نداشتم، کلی مطلب خواندم تا یک روش به ظاهر مطمئن انتخاب کردم. قبل از آنکه آدرس wallet را به طرف خارجی بدهم خودم از یک صرافی ایرانی مقداری Tether خریدم، به کیف پولم منتقل کردم و دوباره فروختم. البته صرافی که می‌گوییم واقعاً صرافی نیستند بلکه یک‌جور فروشگاه دیجیتال رمز ارز هستند. بالاخره آدرس کیف پول را به طرف خارجی دادم. یک ساعت بعد پول در wallet من نشسته بود. اما من هنوز به ابزارها مسلط نبودم. مثلاً نمی‌توانستم تراکنش ها را به خوبی دنبال کنم. انقدر که سؤال پرسیده بودم از طرف خارجی و دوست ایرانی‌ام که راهنمای من بود که فکر می‌کنم آن چند روز حسابی به من خندیده اند که این چرا هیچی بلد نیست!برای آنکه پول‌ها را نقد کنم از سه صرافی استفاده کردم. همه آن‌ها مراحل خسته‌کننده ای برای احراز هویت داشتند. کلی عکس و مدرک و شماره حساب فرستادم. تازه هنوز که هنوز است در بعضی از آن‌ها مراحل احراز هویت را کامل نکرده ام. در نهایت به این سه تا صرافی رسیدم و از هر سه تا برای تبدیل Tether به ریال استفاده کردم (لینک ها حاوی کد معرف من هستند):نوبیتکس - کد معرف 4224535سرمایکس (ارزجو)  - کد معرف 275990234بیتستان - کد معرف 1222015مسیر نوبیتکس کمی پیچ دارد. اول باید crypto را به کیف پول خود نزد نوبیتکس منتقل کنید. بعد از آنجا بفروشید. بعدش برداشت از حساب می زنید. سرمایکس برای من خیلی سر راست تر بود. یک کیف پول موقت به شما می‌دهد، در همان دیالوگ شماره حساب بانکی را انتخاب می‌کنید و سپس انتقال می دهید. بیتستان هم شبیه سرمایکس بود اما باید کد تراکنش را هم وارد کنید. بار اول نتوانستم کد تراکنش را وارد کنم ولی کلی از این بابت ترسیدم.در کار با هر سه این صرافی این ترس را داشتم که کیف پول مقصد را اشتباهی وارد کنم یا شبکه انتقال ارز نامناسب را انتخاب کنم. حتی نگران این بودم که صرافی مسئولیت پذیری کافی نداشته و ادعا کند که crypto را اصلاً دریافت نکرده. همین ترس در مورد wallet خودم هم بود.هر کدام از این سه تا فرمول های خودشان را برای کسر کارمزد داشتند. مبلغ خرید و فروش هم شبیه به هم بود ولی باز هم متفاوت بود. من برای آنکه بتوانم مقایسه سر راست تر داشته باشم مبالغ یکسانی را در زمان مشابه در هر کدام به ریال تبدیل می‌کردم و ریال نهایی را مقایسه می کردم. در ابتدا به نظر می‌رسید که نوبیتکس از همه به صرفه تر است اما دفعات بعد دیدم که بعضی وقت‌ها آن دو تای دیگر به صرفه هستند. در نهایت به این نتیجه رسیدم که هر سه شبیه به هم هستند و تفاوت عمده‌ای ندارند.رمز ارز Tether یا همان USDT معادل یک دلار آمریکا است. پول من بعد از جابجایی از کشور مبدأ و نشستن در wallet و در نهایت تبدیل به ریال از طریق صرافی ها مورد اشاره، یعنی بعد از کسر انواع کارمزدها و حتی Tron مورد نیاز، با نرخ تبدیلی بین قیمت فروش دلار در صرافی های بانکی و نرخ فروش دلار در بازار آزاد در حساب ریالی ام نشسته بود. یعنی اگر قیمت فروش دلار بانکی 28 تومان و قیمت فروش دلار آزاد 29 تومان بود، پول من با نرخ حدود 28.5 تبدیل به ریال شده بود. از این بابت خیلی خوشحال شدم. چون اگر دلار نقد هم دستم بود شاید به زحمت می‌توانستم با این نرخ تبدیل به ریال کنم. دست crypto درد نکند! دست دوست عزیزم که راهنمایی زیادی در این مورد کرد هم درد نکند.انجام این مراحل، آن هم برای اول، خیلی استرس زا بود. کلی نگران بودم که بخشی از پول گم نشود. ولی به هر حال گذشت و هیچ مشکلی هم به وجود نیامد. قاعدتاً دفعات بعد خیلی کم استرس تر خواهد بود..تا بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Tue, 18 Jan 2022 23:33:28 +0330</pubDate>
            </item>
                    <item>
                <title>فاکتور سن</title>
                <link>https://virgool.io/@afsharm/%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1-%D8%B3%D9%86-gloybcvlo8mt</link>
                <description>قسمت یازدهم – 1400/7/30امروز سه هفته کامل از حضور من در شرکت جدید می گذرد. این مطالب در ادامه مطلب قبلی است که همین امروز نوشته ام. اما چون مطلب قبلی خیلی طولانی شد به اینجا منتقل می کنم. در اینجا می‌خواهم از میانگین سنی شرکت و مقداری هم از راه حل‌های فنی شرکت برای یک درخواست مشتری صحبت کنم.در ایران رایج است که میانگین سن تیم های فنی خیلی پایین باشد. در حد سی سال و یا حتی کمتر. البته موضوع منحصر به تیم های فنی نیست. اصلاً در شرکت های خصوصی کوچک، دیدن افراد بالای چهل سال خیلی رایج نیست. نمی‌دانم چه بلایی بر سر آن‌ها می آید.  شاید بعد از چهل سالگی بازنشسته می‌شوند، غیب می‌شوند یا سر از بهشت زهرا در می آورند. عجیب است واقعا. شاید هم بیزنس خودشان را شروع می‌کنند یا شاید هم از فیلد فنی به طور کامل خارج می شوند.به هر حال این موضوع در تیم های برنامه نویسی خیلی حادتر است. با وجود آنکه همیشه در ارتباط با آدم‌ها به این چیزها دقت نکرده و توانایی ارتباط برقرار کردن بر فراز این شکاف سنی را داشته ام، اما مشکلاتی را هم از ناحیه تجربه کرده ام. در بخش قابل توجهی از مصاحبه‌های node.js که در طول سال 1400 داشته ام، عامل سن یک علامت سؤال بزرگ برای مصاحبه کننده ها بوده و در بعضی موارد هم یک نکته منفی بوده. یکی از مصاحبه کننده ها رسما گفت که من مصاحبه می‌کنم ولی احتمالاً تیم مدیریت اجازه کار با افراد بالای چهل سال را نخواهد داد.در فضای کاری شرکت ها هم مشکل وجود داشته. برای خیلی‌ها عجیب بوده که چرا من با وجود سن بالای 40 هنوز برنامه نویس هستم یا اصلاً چرا مدیر نشده‌ام یا چرا هنوز دنبال کار می گردم. یا اینکه چرا الان توی شرکت های خیلی بزرگ نیستم. بعضی‌ها فکر می‌کنند چون بالای 40 هستم احتمالاً خیلی فسیل شده‌ام و چیزی بیش از FORTRAN و FoxPro بلد نیستم. بعید نیست که بعضی‌ها انتظار داشته‌اند جلوی کامپیوتر چرت بزنم و فراموشی داشته باشم! بعضی تیم ها انتظار داشتند که من جواب هر سؤالی راجع به برنامه نویسی را بدانم، با همه دیتابیس های دنیا کار کرده باشم، همه command ها و سویچ های git را بدانم و حتی password سرورهای شرکت را بتوانم حدس بزنم!به هر حال برای خود من هم با آنکه از جوان بودن تیم ها و انرژی آن‌ها لذت می‌برم جالب است بدانم که چرا میانگین سنی اینقدر پایین است. و چرا کمتر تیمی پیدا می‌شود که میانگین سنی بیش از 40 سال داشته باشد. جالب اینکه بیشتر برنامه نویس هایی که در شرکت ها می‌بینم هنوز نه ازدواج کرده‌اند و نه بچه دارند. حتی بعضا هنوز در منزل والدین به سر می برند.روز اولی که برای شرکت جدید مصاحبه می‌شدم همین تصور را داشتم. مصاحبه کننده ها حدود 40 بودند ولی فرض را بر این گذاشتم که تیم توسعه و بقیه شرکت (بازاریابی، مدیریت، ارتباط با مشتری و …) مثل ایران تازه به سن بلوغ رسیده باشند (!). به هر حال روز اول کار رسید و در کمال تعجب دیدم که اکثریت با هم سن و سال‌های خودم است. PM و BE هر دو 35 تا 40 را داشتند. تیم HR هم همین طور. بعداً دیدم که TDM نزدیک به 60 سال سن دارد. خیلی از اعضای غیر فنی شرکت بالای 35 سال بودند. و همین‌طور الی آخر. البته زیر 30 هم داریم. هم Android Developer و هم iOS Developer زیر 30 هستند. نمایندگان مشتری هم گویا میانگین 40 هستند.یکی از حس‌های خوب این چند وقته همین بوده که دیگر حس دایناسورهای منقرض شده را نداشتم!</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Fri, 14 Jan 2022 20:24:29 +0330</pubDate>
            </item>
                    <item>
                <title>بی رحمی</title>
                <link>https://virgool.io/@afsharm/%D8%A8%DB%8C-%D8%B1%D8%AD%D9%85%DB%8C-rvf5won2ossh</link>
                <description>قسمت دهم – 1400/7/30امروز سه هفته کامل از حضور من در شرکت جدید می گذرد. امروز می‌خواهم از مشکلات کاری خودم که به خاطر آن مجبور شده‌ام پنهان کاری کنم بگویم. و توضیح دهم که چطور به شرکت جدید مربوط است و چرا روی اعصاب و روان است.زمانی که کرونا شروع من از اولین کسانی بودم که به آن مبتلا شدم. 30 بهمن یا 1 اسفند 1398 بود که این اتفاق افتاد. در آن زمان شایعه شده بود که کرونا در ایران وجود دارد اما به خاطر راهپیمایی 22 بهمن و انتخاب آن را کتمان می کنند. تازه همان روز یا یک روز قبلش بود که وجود کرونا در ایران به طور رسمی اعلام شده بود. خیلی‌ها در قم مبتلا شده بودند ولی بیماری تازه به تهران رسیده بود. دقیقاً از همان زمان مدرسه‌ها تعطیل شد، شرکت ها دور کار شدند و دستکش و ماسک و الکل نایاب شد. نه کیت کرونا وجود داشت و نه بیمارستان ها بیماران کرونا را پذیرش می کردند. من دوران کرونا را به سختی گذارندم. خودم خوب شدم ولی همسرم که شرایط ویژه ای داشت دچار مشکلات شدیدی شد.آن زمان دو جا کار می کردم. با آنکه هنوز هم احترام زیادی برای هر دو شرکت آن موقع قائل هستم اما شرایطی که آن زمان و کمی بعدتر رخ داد باعث شد به بد بینی ام نسبت به بخش خصوصی بیش از پیش افزوده شود. تا بهبودی کامل 8 روز استراحت کردم. شرکت الف (اول) این 8 روز را با مرخصی های ذخیره شده خودم یا مرخصی اضافی (یادم نیست) جبران کرد. شرکت ب (دوم) هم بابت آن مدت حقوقی پرداخت نکرد که البته حق هم داشتند چون قرارداد من با آن‌ها ساعتی بود. نه خبری از مرخصی استعلاجی بیمه بود نه هیچ چیز دیگر. اینجا شکایت من از کلیت بخش خصوصی و بیمه است نه این دو شرکت خاص. اگر بیماری من ادامه پیدا می‌کرد و اگر پس انداز نمی داشتم باید در عین مریضی، زندگی را با باد هوا می گذاراندیم. طبق یک عرف نامبارک، بیمه شرکت ها بر اساس حداقل حقوق است. یعنی اگر الان ده تومان حقوق بگیرم، بیمه ام بر اساس حدود سه تومان رد می شود. نتیجه اینکه وقتی مریض می‌شوم یا بیکار می‌شوم یا می‌میرم بر اساس همان سه تومان هم مزایا دریافت خواهم کرد (یا مستمری توسط بازمانده هایم دریافت خواهد شد). علاوه بر این، بیمه تأمین اجتماعی همکاری خوبی بابت بیمه استعلاجی ندارد و نمی‌شود همان حداقل حقوق را هم از آن‌ها انتظار داشت. بماند که بیشتر شرکت های IT فاقد بیمه تکمیلی درست و حسابی هم هستند. خلاصه اینکه وقتی کارمند شرکت خصوصی هستید، نه تنها امنیت شغلی وجود ندارد، بلکه معلوم نیست که اگر گرفتاری برایتان به وجود آمد چه خاکی باید بر سر کنید.به جز کرونا، یک عامل دیگر هم در طول این سه سال باعث شده بی رحمی زندگی را بیشتر حس کنم. تورم شدید و افزایش قیمت دلار اثرات منفی زیادی ایجاد کردند. این عوامل، ارزش حقوق دریافتی را روز به روز کمتر کرد. شرکت هم نمی‌توانست پا به پای تورم افزایش حقوق بدهد. به مبنای قدرت خرید یا قیمت دلار و ماشین و ملک، حقوقی که خرداد دریافت می‌کردیم کمتر از حقوقی بود که اردی‌بهشت دریافت کرده بودیم. بخش خصوصی نه توان مالی مبارزه با چنین بحرانی را داشت نه مدیریت آن تجربه چنین چیزی را داشت. بازار هم که خراب تر از همیشه بود.بی‌ارزش بودن پول کم بود، تعدیل هم اضافه شد. شرکت الف هم چون پول به اندازه کافی نداشت شروع به تعدیل کرد. یعنی از بعضی کارمندهایش خواست که دیگر نیایند. صد البته که من هم جزیی از تعدیل بودم. همان حدودها شرکت های دیگر هم شروع به تعدیل کرده بودند و موج تعدیل حتی به بیمارستان ها هم کشیده شده بود. اما هیچ کدام این‌ها باعث نشده بود که درد تعدیل کاهش یابد. به جز مشکلات مالی که می‌توانست به بار بیاورد یک اثر روحی روانی بدی را هم ایجاد می کرد.به هر حال در کمتر از شش ماه از شروع کرونا در ایران که هم‌زمان با تورم شدید بود، ارزش پس اندازی ما به شدت کاهش یافته بود، در اثر کرونا مشکلات سلامتی پیدا کرده بودیم، هم من و هم همسرم از کار بیکار شده بودیم و یک سری مسائل داخلی کشنده هم دامن ما را گرفته بود. درست است که این چیزها برای خیلی‌های دیگر هم پیش آمد اما این موضوع باعث نشد که از شدت ناراحتی ام از بخش خصوصی کم شود.به هر حال از آن زمان به بعد تصمیم گرفتم خیلی دلم را به شرکت ها خوش نکنم و بیشتر از کار و شرکت نگران این باشم که کلاه خودم را باد نبرد. همین شد که مقداری بی رحمی و شاید بی‌اخلاقی وارد رفتارم شد. دو تا شرکت بعدی بعد از آن ماجرا را بدون آنکه تا آخر پروژه بمانم ترک کردم. البته مهلت یک ماهه را صبر کردم ولی دیگر برایم اهمیتی نداشت که بعد از من چه بلایی سر شرکت می آید. یک شرکت دیگر هم قبل از شرکت جدید حال حاضر رفتم و همین شرکت دلیل نوشتن این مقدمه خیلی طولانی ناراحتی از بخش خصوصی است.قرار بود شرکت قبلی را اول به صورت part time و بعد از یک ماه full time بروم. اما حین همین ماجرا بود که کار جدید جور شد. بی رحمی (و بی‌اخلاقی) من اینجا بود که در حالی که قول داده بودم full time شوم، هیچ وقت (اقلاً تا این لحظه) full time نشدم. پنهان کاری و قسمت بد ماجرا هم این بود که به خاطر محافظه کاری و به خاطر عدم اعتماد به شرایط، به آن‌ها نگفتم که به زودی همین part time را هم قطع خواهم کرد. و دیگر نخواهم آمد. در حالی که آن‌ها به امید من به دنبال developer دیگری نگشته بودند. کارشان هم خیلی گیر بود و پیدا کردن نیروی جدید برایشان سخت بود. با افراد این شرکت ارتباط خوبی داشتم و این باعث شده که پنهان کاری نسبت به آن‌ها برایم اینقدر آزار دهنده باشد. امیدوارم که دوستان این شرکت مرا ببخشند.حالا دلیل این یادآوری تلخ از مشکلات بخش خصوصی چیست؟ شرکت جدید در صفحه LinkedIn یک Welcome post برای من نوشته و ورود من را به تیم خوشامد گفته. من هم جرأت ندارم که آن را like کنم یا comment بگذارم آن هم در حالی که این post برای من با ارزش بوده و می‌تواند فرصت خوبی باشد برای بهبود ارتباطاتم با شرکت جدید. بیچاره شرکت قبلی هم هنوز فکر می‌کند که امروز و فرداست که حضوری و full time می‌شوم. اگر این post لو برود هم اعتبارم از بین می‌رود و هم باید خداحافظی کردنم را زودتر از موعد انجام بدهم. اینجاست که می‌گویم بخش خصوصی بی رحم بود، باعث بی رحمی متقابل شد و همین باعث شده که الان نتوانم با شرکت جدید خوب در ارتباط باشم.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 03 Jan 2022 13:11:02 +0330</pubDate>
            </item>
                    <item>
                <title>ساختار کد</title>
                <link>https://virgool.io/@afsharm/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%DA%A9%D8%AF-av1nf9vel90l</link>
                <description>قسمت نهم – 1400/7/26در قسمت قبلی راجع به ساختار تیم صحبت کردم. اینجا می‌خواهم در ادامه همان موضوع راجع به ساختار کد و ابزارها صحبت کنم. البته فقط کد Back-end.کل Back-end با دات نت توسعه داده شده. با اینکه پروژه نهایتاً دو سال پیش شروع شده، اما با .Net Core 2.1 توسعه داده شده که البته خیلی هم بد نیست. چون در زمان شروع پروژه چیزی حدود شش ماه از انتشار 2.1 گذشته بوده. اما عجیب این است که ارتقا به .Net 5 تازه همین دو روز پیش انجام شد، در زمانی کمتر از یک ماه مانده به .Net 6. همین ارتقا به .Net 5 هم خیلی تر و تمیز نیست. چون package ها داخلی Entity Framework هنوز روی 2.1 باقی‌مانده اند.معماری نسبتاً به روز است. حدود 30 میکروسرویس داریم. به ازای تقریباً هر کاری، یک میکرسرویس داریم. بعضی میکرسرویس ها دیتابیس ندارند بعضی‌ها یک دیتابیس در حد یک یا سه جدول دارند. ارتباط بین میکرسرویس ها بر خلاف تصور من با HTTP است. از هیچ message broker مثل Kafka یا RabbitMQ استفاده نمی شود. میکروسرویس ها آنقدر زیاد هستند که کسی نمی‌تواند پروژه را روی local خودش بالا بیاورد. مگر اینکه بتواند صد تا VS باز کرده و همه را با هم Run کند. برای تست و اجرای آن‌ها از component test استفاده می شود. گاهی هم روی سرور QA یا Dev پابلیش شده و از آنجا به طور دستی چک می شود.هر کدام از میکرسرویس ها یک solution کامل دات نت هستند. بین 5 تا 8 پروژه. یکی به عنوان REST API، یکی یا دو تا برای Test و الباقی به شکل library های مختلف. هر میکرسرویس ها به یک سری REST request های جواب می‌دهد و خودش هم یک سری REST request ارسال می کند. این ساختار و حتی نام گذاری ها، عیناً در همه میکرسرویس ها تکرار شده. یعنی یاد گرفتن یکی از میکرسرویس ها باعث می‌شود بقیه را هم یاد بگیرید. یک سری میکروسرویس ویژه داریم که با الگوی Facade رابط دنیای بیرون و میکرسرویس های داخلی هستند. استفاده از test تقریباً روزمره هست. انجام تسک ها معمولاً با یک سری component test همراهی می شود.برای نگهداری کد از Bitbucket استفاده می شود. برای انجام هر کاری یک Branch ویژه آن Task ایجاد می شود. پس از تکمیل تسک یک pull request ایجاد می شود. سپس یک نفر کد را review می کند. بعدش مراحل deploy انجام می شود. این کار با Jenkins و یک سری docker image انجام می شود. تازه اینجاست که تغییرات به دست QA می رسد. بعد از تأیید QA، تغییرات به دست مشتری نهایی خواهد رسید.همکارم از Visual Studio 2019 روی Mac استفاده می کند. من فعلاً VS Code هستم روی ویندوز. ولی حالا که روی .Net 5 رفته ایم، احتمالاً به زودی به لینوکس بر می گردم. دیتابیس ها روی MySQL هستند. فعلاً هیچ استفاده‌ای از Redis نداریم. از یک تعداد ابزار جانبی مثل jaegar و kibana برای کارهای متفرقه استفاده می شود.برای مدیریت Task ها از Jira استفاده می شود. استفاده خیلی جدی از google calendar و zoom داریم. همه تماس ها ویدیویی هستند. از Confluence به عنوان یک wiki برای نگهداری اطلاعات پروژه استفاده می‌شود که البته خیلی هم جدی و مفید است. مثلاً من برای اینکه آدرس فلان سرور را بفهمم لازم نیست که با شش نفر تماس بگیرم، فقط صفحه مربوطه را در Confluence بررسی می کنم. تا آنجا که متوجه شده ام، نتایج همه sprint retro های گذشته در Confluence موجود است. خیلی راحت می‌شود فهمید در هر دوره زمانی در تیم چه خبر بوده. اطلاعات داخل Task و Issue ها به همین نسبت جامع هستند. دیاگرام های متعددی از معماری پروژه و دیگر بخش در داخل Confluence موجود هستند. برای messaging از Slack استفاده می کنیم. البته ایمیل شرکتی هم هست.تا بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Wed, 29 Dec 2021 20:25:59 +0330</pubDate>
            </item>
                    <item>
                <title>ساختار تیم</title>
                <link>https://virgool.io/@afsharm/%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1-%D8%AA%DB%8C%D9%85-m3n2yoaikwpm</link>
                <description>قسمت هشتم - 1400/7/24الان که اواسط اکتبر 2021 است دو هفته از شروع به کار من گذشته. همه این مدت برای من Onboarding محسوب می‌شده و به همین دلیل با کل ساختار تیم و کلی ابزارهای مختلف آشنا شده و به خیلی جاها سرک کشیده ام. خوب است که برداشتی از این دو هفته داشته باشم.ساختار پروژه و سورس خیلی متفاوت از پروژه های ایران نیست. به همین خاطر از ساختار تیم شروع می کنم. البته کلیت ساختار تیم هم خیلی متفاوت از تیم های ایرانی نیست. اینجا از اسکرام استفاده می کنیم. ولی به جای ScrumMaster نقش PM یا همان Project Manager را داریم. یک نقش دیگر هم در تیم وجود دارد که گویا وظایف آن خیلی شبیه PM است با این تفاوت که بیشتر سمت مشتری است تا فنی. اسم این نقش را تا قبل از این اصلاً نشنیده بودم. اسم آن Technical Delivery Manager یا به اختصار TDM است. بقیه نقش‌ها عیناً مثل ایران است. نیروهای Back-end، برنامه نویس های Android و iOS، نیروی DevOps و قس علی هذا. راجع به PM در یکی از مطالب قبلی گفته بودم. اینجا صرفاً نقل مجدد می کنم:به جای scrum master شخصی با نقش PM یا Project Manager داریم که فعال ترین فرد تیم است. از یک طرف با تیم فنی در ارتباط است، از یک طرف با افراد غیر فنی در شرکت و از طرفی دیگر با مشتری و تیم پشتیبانی در ارتباط است. خودش چندین سال برنامه نویسی وب و غیر وب کرده و دستی در برگزاری جلسات مختلف و کار با ابزارهایی مثل Jira دارد. او Task ها یا Backlog ها را به طور کامل در Jira مکتوب دارد، جزییات هر item کاملاً وارد شده. و یکی از کارهایش حین جلسات sprint planning و حتی SU (همان stand up daily) این است که مدام task جدید اضافه کرده، تسک های موجود را بهبود داده و آن‌ها را به افراد مختلف assign می کند. در یک هفته و خرده ای مدام در دسترس بوده. هر سؤالی که پرسیده ام یا خودش جواب داده یا به فرد مرتبط ارجاع داده. آن هم در حد دقیقه. گاهی اوقات دیده‌ام که وسط یک جلسه در حال جواب دادن به سؤالات دیگران است. Business Logic را کاملاً حفظ است.من به عنوان Back-end developer یک manager دارم. تا این لحظه وظیفه داشته ام برای هر کدی که می‌نویسم pull request ایجاد کرده و او هم آن‌ها را code review کند. ولی گویا قرار است code review اجباری به زودی برداشته شود. طی این مدت نکته خیلی عجیبی از اون ندیده ام. تقریباً همن سن و سال خودم است. در تلفظ اسم من به شدت مشکل دارد. از من بهتر انگلیسی صحبت می‌کند ولی خیلی روان صحبت نمی کند. همین که می‌بیند کدها باعث build error نمی‌شوند و کار خواسته شده را انجام می‌دهند رضایت می دهد. ولی به شدت موافق ایده if it works, don’t touch it است. البته حق هم دارد. چون پروژه در مود maintenance بوده و خیلی هم حجیم است. علاقه دارد حداقل دستکاری را در کد انجام دهیم. اصلاً مشتاق راه حل‌های پیچیده نیست. بعضی روزها از خانه کار می‌کند ولی بیشتر وقت‌ها در دفتر است.در این تیم یک نفر iOS، یک نفر android و یک نفر هم front داریم. اینجا رایج است که برای front از CMS ها استفاده کنند. مثل SiteCore یا LifeRay یا حتی Drupal. با این افراد فعلاً تسک مستقیمی نداشته ام. به نظر می‌آید که سرشان هم خیلی شلوغ نباشد. به جز این‌ها فقط یک نیروی QA داریم. بقیه نقش‌ها اختصاصی تیم ما نیستند. بلکه بین چند تیم مشترک هستند. از جمله DevOps.تیم ما خیلی بزرگ نیست. واقعاً همین‌هاست. یک  تیم دیگر وجود دارد که مشابه ماست ولی روی یک پروژه دیگر. ما دو تیم با هم یک Tribe را تشکیل داده ایم. شرکت داری چند Tribe مشابه هست. هر Tribe یک اسم دارد. اسم گذاری Tribe ها بی شباهت به اسم گذاری حکومتی ایرانی نیست. چند شرکت دیگر هم مشابه شرکت ما وجود دارند که همگی با هم توسط یک شرکت parent اداره می شوند. این کل ساختار است. به نظرم همان‌طور که کد های پروژه ها شبیه به هم هستند، ساختار تیم ها هم کپی هم هستند.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Sun, 26 Dec 2021 14:49:04 +0330</pubDate>
            </item>
                    <item>
                <title>پایان هفته دوم</title>
                <link>https://virgool.io/@afsharm/%D9%BE%D8%A7%DB%8C%D8%A7%D9%86-%D9%87%D9%81%D8%AA%D9%87-%D8%AF%D9%88%D9%85-zsfdkkuqyj6i</link>
                <description>قسمت هفتم - 1400/7/23خوب بالاخره هفته دوم هم به اتمام رسید.به عنوان یک عشق ویکی پدیا نمی‌توانستم جلوی خودم را بگیرم و راجع به شهرها و کشورهایی که تیم و اعضای آن در آن قرار داشتند چیزی نخوانم. عمده تیم در اروپای مرکزی و مقداری هم در اروپای شرقی قرار دارند. در نتیجه، کلی علاقمند شدم راجع به این کشورها و رویدادها و شرایطشان مطلب بخوانم. از هولودومور در اوکراین و تورم صد برابری در برخی از این کشورها تا بهار پراگ و وقایع دهه نود (میلادی). این پراکنده خوانی ها منجر به refresh شدن بخش‌هایی از خاطراتم شد که سال‌های سال فراموش کرده بودم. وقتی که ده ساله بودم برایم جالب بود که در برخی زبان‌های اروپایی روی حروف، علایم خاصی می گذاشتند (مثل علامت دو نطقه افقی روی u در آلمانی). این را بیشتر از کارتون های رایج آن موقع مثل بولک و لولک یادم می آید. توی همون کارتون خیلی از s ها دارای یک علامتی شبیه آپاستروف بالای سرشان بودند. از آن زمان تا حالا چیزهای زیادی عوض شده. من تا همین دو هفته پیش فکر می‌کردم چکسلواکی هنوز به شکل یک کشور واحد وجود دارد! کلاً از یک زمانی به بعد توجه من هم مثل خیلی‌های دیگر به غرب (اروپای غربی و آمریکای شمالی) معطوف شده بود و کلاً اروپا و جنگ سرد و همه چیزهای مرتبط را فراموش کرده بودم. اینقدر هم که در ایران به همه چیز گیر داده ایم، برایم تعجب‌آور بود (است) که در اروپای مرکزی و اروپای شرقی این همه انقلاب و جنگ و تغییرات سیاسی وجود داشته.از این خاطره بازی‌ها که بگذریم می‌رسیم به تشابه اسمی زیادی که در در این کار جدید مشاهده می کنم. کلاً در طول این دو هفته (و احتمالاً تا مدت‌ها بعد) مدام در حال مقایسه آنچه که می‌بینم با ایران هستم. یکی از این مقایسه ها، تشابه اسم‌ها و اسامی فامیلی است. بعضی اسم‌ها در ایران آنقدر بین دوستان و همسایه و فامیل پر تکرار است که خودم را عادت داده‌ام که اسم فامیل را هم در ادامه اسم کوچک ذکر کنم. مثل مهدی، رضا، محمد در نسل جدید و اسامی مثل فریده در نسل قبلی. اسم فامیل تکراری هم که در ایران خصوصا در شهرهای زیر یک میلیون نفر تا دلت بخواهد داریم. نکته جالب این است که این پدیده در شرکت جدید هم وجود دارد. انگار آنجا هم مشکل مد شدن چند اسم در یک دوره زمانی خاص وجود دارد. اسامی Stanisław و Peter از جمله این اسامی پر تکرار هستند. پدیده دیگر که هم ایران هم اینجا مشاهده می‌کنم فامیلی بازی توی شرکت ها است. توی ایران هم خیلی پیش می‌آید که توی یک شرکت واحد، زن و شوهر داشته باشیم، یا برادر و برادر داشته باشیم. نمی‌دانم علت آن پارتی بازی یا علایق مشترک خانوادگی است یا هر چیز دیگر، ولی به هر حال این ارتباط فامیلی اینجا هم وجود دارد. از یک گروه سی نفره تا حالا دو تا زن و شوهر کشف کرده ام!این نظم نسبی که اینجا وجود دارد یک وجه منفی هم دارد انگار: بروکراسی. توی این هفته مجبور بوده‌ام به ازای هر روز کار سه سری تایم شیت پر کنم. دو تا برای واسطه ها و یکی هم برای خود شرکت. البته time log جداگانه برای Jira هم داریم که مزید بر علت است. کلاً داشتن واسطه علاوه بر خوبی‌هایی که دارد یک سری مشکل هم دارد. از جمله یکی نبودن تقویم. چون هر کدام از واسطه ها در کشورهای مستقلی حضور دارند، پس از تقویم های جداگانه ای پیروی می کنند. یک روز در کشور الف روز ملی و تعطیلی است. یک روز در کشور ب، سالگرد فلان رویداد است و همین‌طور الی آخر. تازه تعطیلات همیشه چرخان خودمان هم هست. هماهنگ کردن همه این‌ها مقداری دردسر زا استتا بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Fri, 24 Dec 2021 18:22:59 +0330</pubDate>
            </item>
                    <item>
                <title>روز ششم</title>
                <link>https://virgool.io/@afsharm/%D8%B1%D9%88%D8%B2-%D8%B4%D8%B4%D9%85-yf3nzj9hvmuw</link>
                <description>قسمت ششم - 1400/7/19امروز روز ششم بود. در واقع اولین روز از هفته دوم بود. گذشت یک هفته کامل و پشت سر گذاشتن تعطیلات آخر هفته یک مورد پیش بینی شده را رو کرد: عدم تطابق روزهای کاری هفته در ایران و اروپا.پنج شنبه و جمعه گذشته را مجبور بودم تا ساعت ۶:۳۰ ب.ظ. کار کنم. جمعه چون آخر هفته آنها است قابل حذف نیست. خواستم شنبه یکشنبه را استراحت کنم که به عنوان اولین سری قابل انجام نبود. چون هنوز نه خودم و نه بقیه آماده انجام آن نبودیم. بچه تمام صبح هر دو روز شنبه یکشنبه را در شاد کلاس داشت. بعد از ظهر هم اختصاص به انجام تکالیف داشت. نتیجه این که هر دو روز را زمین گیر بودیم. البته کارهای جانبی که از قبل داشتم هم مانع بود. چون در طول هفته گذشته انرژی زیادی برای کار جدید گذاشته بودم اصلا به آن کارهای جانبی نرسیده بودم. در نتیجه مجبور شدم شنبه یکشنبه را برای آنها وقت بگذارم. همه اینها باعث شد که امروز، دوشنبه، خیلی خسته باشم. قبل تر ها اگه روز اول کاری هفته احساس خستگی داشتم امیدم به پنج شنبه بود که استراحت خواهم کرد. اما فعلا در کوتاه مدت این امید را هم از دست داده ام.مشکل عمده بعدی داستان همیشگی context swithcing است. دو تا کار جانبی که دارم هر دو در Node.js و با JavaScript و MongoDB و در لینوکس هستند. اما کار جدید با .NET و C# و MySQL و در ویندوز است. هم Business Logic ها خیلی با هم متفاوت است و هم تیم ها. صبح شنبه که Node.js بودم کلی طول کشید یادم بیاید که قرار است چه چیزی را ادامه بدهم. صبح دوشنبه هم بر عکس داستان را داشتم. با این که هفته پیش حسابی با میکروسرویس ها ور رفته بودم، دات نت را به ضرب و زور راه انداخته بودم و روتین های Jira و بقیه چیزها دستم آمده بود، ۲ ساعت اول صبح دوشنبه را گیج می زدم.با اینکه دو سال اخیر را روی JS بودم ولی این پروژه روی دات نت است. پروژه در حالت maintenance است و درصد feature های جدید خیلی زیاد نیست. پروژه تشکیل شده از تعداد زیادی میکروسرویس که بر خلاف تصور خودم از REST برای ارتباط بین میکروسرویس ها استفاده می شود. به روال خیلی از پروژه های دات نتی، اینجا هم مملو است از پروژه، solution ها و اسم‌های خیلی طولانی. دیتابیس میکروسرویس ها مستقل از هم و عمدتا MySQL است. ساختار پروژه در عمده میکروسرویس ها کپی همدیگر هستند. Publish نهایی از طریق داکر است. نکته جالب این است که به علت تعدد میکروسرویس ها تقریباً غیر ممکن است که یک نفر بتواند همه آن‌ها را روی local خودش بالا بیاورد. انجام تغییرات عمداً از طریق component test بررسی می شود. البته نیروی کافی در بخش QA و DevOps وجود دارد که مشکلات به دست مشتری نرسند.کلیت کار در بخش فنی و ساختار تیم خیلی با آن چیزی که در ایران می‌بینیم فرقی ندارد. جلسات روزانه Daily Scrum، نقش‌های Back-end و Mobile dev و PM و چیزهای دیگر خیلی به هم شبیه هستند. در مورد ساختار پروژه ها و کد که شباهت خیلی بیشتر است. در کد چیز خیلی نا آشنایی وجود ندارد. ولی با وجود همه این شباهت ها، جزییات زیادی وجود دارند که نیاز به توجه و عادت کردن دارند. به عنوان مثال به جای scrum master شخصی با نقش PM یا Project Manager داریم که فعال ترین فرد تیم است. از یک طرف با تیم فنی در ارتباط است، از یک طرف با افراد غیر فنی در شرکت و از طرفی دیگر با مشتری و تیم پشتیبانی در ارتباط است. خودش چندین سال برنامه نویسی وب و غیر وب کرده و دستی در برگزاری جلسات مختلف و کار با ابزارهایی مثل Jira دارد. او Task ها یا Backlog ها را به طور کامل در Jira مکتوب دارد، جزییات هر item کاملاً وارد شده. و یکی از کارهایش حین جلسات sprint planning و حتی SU (همان stand up daily) این است که مدام task جدید اضافه کرده، تسک های موجود را بهبود داده و آن‌ها را به افراد مختلف assign می کند. در یک هفته و خرده ای مدام در دسترس بوده. هر سؤالی که پرسیده ام یا خودش جواب داده یا به فرد مرتبط ارجاع داده. آن هم در حد دقیقه. گاهی اوقات دیده‌ام که وسط یک جلسه در حال جواب دادن به سؤالات دیگران است. Business Logic را کاملاً حفظ است.جزییات دیگری نیز وجود دارد که بعداً سر فرصت درباره آن‌ها خواهم نوشت.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 20 Dec 2021 13:21:05 +0330</pubDate>
            </item>
                    <item>
                <title>روز سوم و چهارم</title>
                <link>https://virgool.io/@afsharm/%D8%B1%D9%88%D8%B2-%D8%B3%D9%88%D9%85-%D9%88-%DA%86%D9%87%D8%A7%D8%B1%D9%85-jrez7hjgfamt</link>
                <description>قسمت پنجم - 1400/7/15هر چقدر که جلوتر می‌روم ترافیک جلسات کمتر می‌شود و من می‌توانم با تمرکز بالاتری کار کنم. امروز PO مریض بود، یک نفر دیگر هم مراسم ختم رفته بود. هر دو غایب بودند. دوست لاهوری مان مثل هر روز مشکل اینترنت داشت. دو نفر هم داریم که کلاً در daily scrum بیشتر از 45 ثانیه صحبت نمی کنند. هدایت جلسه امروز به عهده مدیر خودم بود. ولی فکر کنم اگر اینجوری پیش برود جلسات بعدی را خودم باید هندل کنم.استرس روز اول و روزهای قبل از آن خیلی زیاد بود. در حدی که بعضی ترس‌هایی که شاید 25 سال پیش در وجودم مرده بودند دوباره زنده شدند. در کنار این استرس ها تا حدی نگران زبان انگلیسی هم بودم. روز مصاحبه HR به من گفتند که در همین حد زبان و با همین مقدار سرعت صحبت کردن در شرکت مشکلی پیدا نمی کنم. با این وجود، همچنان نگران بودم که توی جلسات مدام بگم Would you repeat please. اما در این چهار روز متوجه شدم که مشکل دیگری هم وجود دارد: سطح پایین انگلیسی تیم. لهجه های غلیظ، اشتباهات گرامری، کندی در صحبت و حتی متوجه نشدن صحبت‌های دیگران از جمله مشکلاتی است که با هم تیمی ها وجود دارد. فکر کنم باید یکی دو تا زبان اروپایی دیگر هم یاد بگیرم.دیروز و امروز حادترین مشکلی که داشتم رفع مشکلات فنی بوده. مجبور شدم راهی پیدا کنم .NET 5 را از سیستم پاک کنم. مقدار زیادی با docker و docker-compose سر و کله زدم تا MySQL را بالا بیاوریم. آخر سر هم کلی دردسر کشیدم با کندی لپ تاپ. اوج این گرفتاری لحظه‌ای بود که در حال present کارم بود که داکر 92 درصد RAM موجود را مصرف کرد. هم خودش گیر کرد و هم نزدیک بود zoom را از کار بیندازد.دیروز هم یک سوتی دیگر داده بود. توی یک جلسه آموزشی صدای طرف مقابل را فوق‌العاده ضعیف می شنیدم. دو بار هم بهش گفتم این موضوع را. او هم گفت باشه بلند تر صحبت می کند. مشکل VPN هم داشتم که نهایتاً باعث شد بخش عمده جلسه را از دست بدهم. بعد از پایان جلسه متوجه شدم که صدا وصل بوده به یک هدفون Bluetooth که روی میز بود. اون صدای ضعیف را هم از هدفون روی میز می شنیدم.مشکل webcam امروز به نوعی حل شد. از یک app اندروید به اسم DroidCam استفاده کردم تا بتوانم از موبایلم به عنوان webcam استفاده کنم. خیلی بدقلق بود. دیروز هم کلی گیر داشت ولی امروز حدود نیم ساعت بدون دردسر کار کرد.احتمالاً روزهای بعدی هیجان و چیزهای جدید خیلی کمتری وجود خواهد داشت. بنابراین فرکانس این سری نوشته خیلی پایین‌تر خواهد آمد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Fri, 17 Dec 2021 16:09:43 +0330</pubDate>
            </item>
                    <item>
                <title>روز دوم</title>
                <link>https://virgool.io/@afsharm/%D8%B1%D9%88%D8%B2-%D8%AF%D9%88%D9%85-thfxco3ki0l6</link>
                <description>قسمت چهارم - 1400/7/13روز دوم خیلی آرام‌تر از روز اول گذشت. آمادگی بهتری برای جلسه sprint planning داشتم. حداقل می‌دانستم قرار است با چه چیزی مواجه شوم. جلسه sprint planning کمتر از 15 دقیقه بود. بعد از PO من اولین نفری بودم که صحبت کردم. فرمول صحبت کردنش مثل همه جلسات sprint planning ایران بود. باید می‌گفتم که دیروز روی چی کار کرده ام، برنامه امروزم چیست و آیا مشکل خاصی دارم یا نه.نقش های PO و Scrum Master هر دو یک نفر هستند. او محصول را به خوبی می شناسد. با معماری آشناست، وقتی که محصول را از طریق browser روی سرور dev یا سرور مشتری چک می‌کند developer console را باز دارد. فکر می‌کنم حداقل تعدادی از API ها را به خوبی می‌شناسد و با ساختار json آن‌ها آشناست. حتی با کد هم آشناست. هم از طریق وب و هم از طریق IDE سراغ کد می‌رود و بخش‌هایی را توضیح می‌دهد. او در تمام طول جلسات مختلف تیم دست به keyboard است. مدام در حال تایپ کردن است. در‌واقع هر چیزی که صحبت می‌شود را همان لحظه یا تبدیل به Task و Comment می کند، یا وارد Wiki شرکت می کند، یا از طریق Slack برای اشخاص مرتبط با آن موضوع پیغام می فرستد، یا در google calendar قرار جلسه می گذارد. هر کدام از اعضای تیم که شروع به صحبت می‌کند، او Task مربوط به صحبت‌های شخص را شروع به نمایش می کند.یکی از کارهای روز دوم راه انداختن VPN بود. راهنمای طول و درازی داشت به همین خاطر مجبور شدم دو بار connection بسازم. ولی بالاخره راه افتاد. یک نفر از شرکت در طول این مدت به من راهنمایی می‌داد و جواب پیغام ها را زود به زود می داد. بعضی از نفرات شرکت خیلی دیر به دیر جواب می‌دهند ولی بعضی‌ها در حد دقیقه جواب می دهند.مشکل 2FA با گوگل اکانت در روز دوم هم پیگیری شد. ادمین مربوطه گفت که اجباری شدن 2FA کار خودشان است. این یک سیاست کلی شرکت است و قصد ندارند در مورد من استثناء قایل شوند. ولی خودش هم تلاش کرد که مشکل برطرف شود. آخر سر هم گفت مشکل از کد +98 است. احتمالاً مجبور شوم یک SIM Card خارجی که توی ایران آنتن بدهد تهیه کنم.معروف است که صنعت IT در بیشتر دنیا یک صنعت مردانه است. بنا به چیزهایی که تا همین حالا فهمیده ام تیم های development در این شرکت تمام اروپایی هم عمدتا مردانه است. چند زن که تا حالا برخورد داشته‌ام مسئولیت های نیروی انسانی، حسابداری و این‌طور چیزها داشته اند. البته ممکن است همین فردا متوجه شوم برداشتم اشتباه بوده. این فقط یک برداشت اولیه است.امروز یک جلسه توجیهی با واحد نیروی انسانی داشتم. توضیحاتی راجع به مرخصی، مسئولیت افراد مختلف و این‌طور چیزها داد. از من خواست به هیچ وجه بیش از 8 ساعت در روز کار نکنم مگر اینکه فلانی و فلانی مستقیماً درخواست کرده باشند. گفت علاقه‌ای به خسته کردن افراد ندارند. یک چیزهایی هم در مورد تهیه سخت‌افزار مورد نیاز گفت که من خیلی جدی نگرفتم. بعید می‌دانم با این سطح حقوق، امکانات مناسبی برای خرید laptop مناسب داشته باشند. تا ببینیم بعداً چطور می شود.قسمت جالب امروز جلسه برای آموزش استفاده از ابزار مدیریت پروژه بود. ظاهراً ساعت کاری باید هر روز در این ابزار وارد شود. یک جلسه چهار نفره بود. من و یک نفر که تازه وارد تیم شده بودیم، یک نفر برگزار کننده و یک نفر دیگر. من و نفر جدید راس ساعت در zoom آماده شدیم. جلسه کلاً نیم ساعت بود و ما 20 دقیقه کامل اونجا بودیم در حالی که برگزار کننده اصلاً نیامد. هیچ خبری هم نداد. به همین سادگی. حتی بعداً که در اسلک صحبت شده که جلسه به فردا موکول شود نه توضیحی داد نه عذر خواهی کرد.بعد از ظهر اولین تسک به من توضیح داده شد. یک مقدار business logic یک مقدار کد و یک مقدار توضیحات. از اواخر بعد از ظهر شروع کردم به کامپایل کردن و چسباندن میکروسرویس ها به هم. کار کد خیلی کند پیش می رود. با اینکه ساختار همه میکرسرویس ها کپی همدیگر هستند اما عادت کردن به آن‌ها کمی زمان بر است.درست در آخرین لحظه ایمیلی دریافت کردم که خواسته بود کارمندها هر چقدر مرخصی دارند استفاده کنند. چون مرخصی ها به 2022 منتقل نمی شوند. گفته که می‌دانم سرتان شلوغ است ولی مرخصی ها را بی استفاده نگذارید تا تعادل کار و زندگی‌تان به هم نخورد..تا بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Wed, 15 Dec 2021 14:42:22 +0330</pubDate>
            </item>
                    <item>
                <title>روز اول</title>
                <link>https://virgool.io/@afsharm/%D8%B1%D9%88%D8%B2-%D8%A7%D9%88%D9%84-jun8npjxynyi</link>
                <description>قسمت سوم - 1400/7/12از روزهای قبل خیلی نگران این بودم که شرکت برای ورود من برنامه ریزی نکرده باشد یا اصلا دچار مشکلات اطلاع رسانی باشد. به نحوی که بعضی ها از ورود من با خبر باشند و بعضی ها نه. و روز اول تازه باید با آدم های مختلف تماس بگیرم، خودم را معرفی کنم و درخواست کنم فلان چیز را به من بدهند یا ندهند. یا حتی بدتر از این، چون واسطه های زیاد در کار بودند می ترسیدیم شرکت دچار اختلاف داخلی باشد، بعضی ها با ورود من موافق باشند و بعضی ها مخالف. این دوگانگی را توی ایران توی بعضی شرکت ها دیده بودم. یکی از سردرگمی های کلی که روز اول شدت زیادی داشت این بود که آیا بگویم از ایران هستم یا نه. نمی دانستم واسطه ها اعلام کرده بودند که ایرانی هستم یا نه. البته حداقل از یک طرف قضیه این موضوع را پرسیده بودم و او هم با با شک و تردید جواب داده بود. توی سیستم HR آدرس و تلفن خواسته بود. با شک و تردید فراوان، آدرس و شماره ایران را وارد کردم. در موضوع ارسال کپی پاسپورت اینقدر شک نداشتم چون اصل موضوع، ایرانی بودن نبود، بلکه ساکن فعلی ایران بودن بود. برای موضوع proof of address مجبور شدم کپی قبض برق بفرستم که دیگه به طور کامل قضیه را لو می داد. البته علی الظاهر نگرانی من راجع به موضوع سکونت داخل ایران خیلی هم بیراه نبود، پایان روز اول دیدم که توی یکی از سیستم های داخلی زیر اسم من به جای ایران اسم یک کشور اروپایی را نوشته. حس کردم این موضوع عمدی است و آنها هم نگرانی مشابهی دارند. وقتی که راجع به ساعت جلسات صحبت می کردیم و صحبت به تایم زون می کشید باز هم احتیاط می کردم که همان ابتدای صحبت به +3:30 اشاره ای نکنم. ظاهر تنها تایم زون دنیا هستیم که اختلافش با بقیه به صورت یک ساعت یک ساعت نیست، بلکه از نیم ساعت استفاده شده. این قضیه کمی تابلو است به نظر من.راستش را بخواهید کمی از اعلام ایرانی بودن هم نگران بودم. می ترسیدم که دچار مشکلات نژاد پرستی یا پیش داوری شوم. می دانم که مردم در آمریکای شمالی یا استرالیا یا حتی انگلیس راحت تر با ایرانی های کنار می آیند. اما من اولا ریموت هستم و برخورد خیلی نزدیکی با مخاطبم ندارم که بتوانم واکنش او را بسنجم و ثانیا بخش عمده ای از همکاران جدیدم از اروپای شرقی هستند. آنها از مللی هستند که من شناخت فرهنگی زیادی از آنها ندارم. نمی دانم قضاوتشان راجع به ایرانی ها یا دیگر ملل خاور میانه چطور است. قبلا از یک نفر که در دوبی کار می‌کرد شنیده بودم که اماراتی ها یک پیش داوری اولیه راجع به ایرانی ها دارند ولی بعد از یکی دو برخورد اولیه، بی اعتمادی شان از بین می رود و یک رابطه عادی شکل می گیرد. البته همان روز اول یک مقدار از نگرانی هایم از بین رفت. چون دیدم اعضای تیم خیلی توجهی به لهجه یا ملیت من ندارند. PM همان ابتدای کار دقیقا پرسید که ساکن کدام کشور هستم ولی در ادامه روز چیزی غیر عادی از اون ندیدم. یک دلیل همه این نگرانی ها این بود که چه تیم development و چه تیم management عمدتا از سه کشور خاص اروپایی بودند. اون تنوع ملیتی که مثلا شما در کانادا می شنوید اینجا وجود نداشت (بنا به اطلاعات روز اول). بر اساس directory شرکت هم کسی را پیدا نکردم که از خاورمیانه باشد. این عدم تنوع ملیتی برای من زنگ خطر بود. به هر حال همان ابتدای روز اول متوجه شدم که یکی از اعضای ریموت تیم از لاهور پاکستان است. هر چند که پاکستانی ها خیلی کمتر از ما ایرانی ها از لحاظ سیاسی، مذهبی و فرهنگی ایزوله هستند اما باز هم وجود شخصی از غرب آسیا دلگرم کننده بود.از هر چیزی که بتوانیم رد کنیم از تحریم ها نمی توانیم به سادگی رد کنیم. تحریم های گوگل و بقیه شرکت ها مثل مرگ یک حقیقت غیر قابل انکار است. شرکت ما همه چیزش را روی گوگل بنیان گذاشته. یعنی همان اول کار یک اکانت سازمانی گوگل دست شما می دهد و بعدش هر چه که هست و نیست را عمدتا بر اساس google single sign on دوباره به گوگل حواله می دهد. با این که بقیه سرویس ها حساس به ip ایران نیستند اما همین گوگل تلافی همه را کرده. خصوصا این که همان اول کار نشسته و همه sign in ها از زیر دست او رد می شود. گوگل دقیقا در اولین قدم خطا داد که this service is not available in your country. مجبور شدم vpn که قبلا برای مصاحبه آماده کرده بودم را روشن کنم. خوشبختانه گوگل خیلی گیر نداد و اجازه لاگین و استفاده داد. البته شب همان روز که به خاطر قضیه two factor authentication مجبور شدم از موبایلم استفاده کنم، همان vpn دیگر جواب گو نبود و گوگل مدام می گفت که این سرویس در کشور شما در دسترس نیست. به جز گوگل بقیه سرویس ها مثل آدم کار کردند، خصوصا zoom که انتظار نداشتم به این خوبی کار کند. نه مشکل تحریم داشت نه مشکل کندی. با اینترنت مزخرف موبایل من به خوبی کار کرد. چند جلسه 10 دقیقه ای تا 1 ساعته را به خوبی کار کرد. بدون مشکل عمده در انتقال صوت یا ویدیو. در تمام طول جلسات هم یا ویدیوی صحبت کنندگان روشن بود یا share screen داشتیم. خوشبختانه خیلی خوب کار کرد. بقیه سرویس عمدتا از زیر مجموعه های Atlassian بودند. کمی کند بودند ولی مشکل حادی نداشتند. مشکل اصلی فقط گوگل بود (هست). در اولین استفاده از گوگل یک هشدار دریافت کردم که استفاده از two factor authentication از فردا اجباری می شود. من هم چون روی یک تماس بودم خیلی با عجله از موضوع رد شدم و نتوانستم بفهمم این اجبار از طرف گوگل است (این یک اکانت سازمانی است) یا از طرف شرکت خودمان. با خودم گفتم بعد از ساعت اداری به این موضوع رسیدگی می کنم. وقتش که رسید هر جا گشتم نتوانستم خبری از اجباری شدن 2fa توسط گوگل در آن تاریخ خاص پیدا کنم. به همین خاطر حدس زدم این یک سیاست درون سازمانی است. به هر حال حدود دو ساعت کامل برای فعال سازی 2fa وقت گذاشتم. با آن که شماره موبایلم ایرانم را برای verfication در اکانت سازمانی گوگل ثبت کرده، sms دریافت کرده و فعال سازی کرده بودم اما گوگل اجازه نمی داد از شماره موبایل ایران برای فعال سازی 2fa استفاده کنم. مدام خطا می داد که این شماره موبایل نامعتبر است. شماره همراه اول و ایرانسل فرقی نداشت. عوض کردن فرمت شماره موبایل هم هیچ فایده ای نداشت. تلاش کردم اکانت جدید را به گوشی اندرویدم اضافه کنم. اما با دو vpn مختلف موفق نشدم. گوگل می گفت که این سرویس در کشورشما فعال نیست. ساعت 1 نصفه شب تسلیم شدم و خود را به دست سرنوشت سپردم. فقط یک پیغام برای PM گذاشتم که اگه توی شرکت کسی را می شناسی که می تواند در این موضوع به من کمک کند تو را به خدا به من بگو. صد البته که باید حواسم باشد موضوع تحریم در ایران را پنهان کنم (حداقل توی روزهای اول).روز اول کلا روز فوق العاده پر استرسی بود. البته روزهای قبلی هم با توجه به حمله کرونا به یکی از بستگان و داستان های بستری و رمدسیویر و کپسول اکسیژن و اینها، روزهای راحتی نبودند. روز اول اینترنت خوبی داشتم، تماس ها خوب برگزار شد و به جز گوگل مشکل زیادی در ارتباطات بیرونی نداشتم. اما در موضوع داخلی مشکلاتی وجود داشتند که باعث شدند نیمه دوم روز بر خلاف نیمه اول پایان خوش نداشته باشند. مشکل شماره یک این بود که از وقتی که توی زیر زمین پاساژ کامپیوتر ولیعصر داده بودم SSD و RAM اضافه برای لپ تاپم نصب کنند، وب کم آن از کار افتاده بود. من این موضوع را خیلی دیر متوجه شد. اصلا اولش فکر می کردم مشکل درایور دارم. بعدا فهیدم وبکم مشکل سخت افزاری پیدا کرده و شاید کابل آن شل شده. نتیجه این شد که جلسات zoom بدون تصویر من انجام می شد در حالی که دوربین همه بدون وقفه روشن بود. من حتی روز مصاحبه این مشکل را داشتم. روز مصاحبه از لپ تاپ برای screen share استفاده کردم و zoom دوم را از موبایلم لاگین کردم که تصویر من را هم ارسال کند. البته مصاحبه انجام شد ولی خیلی مسخره شد، مصاحبه کننده ها هم حسابی تعجب کردند.مشکل دوم دات نت بود (هست). من در طول چند سال گذشته در دوره های مختلفی لینوکس کار بوده ام. اما در طول یک سال گذشته به طور کامل از لینوکس استفاده می کرده ام. چون کلا هم سویچ کرده بودم به Node.js دیگر هیچ نیازی به ویندوز نداشتم. حتی زمانی که هنوز از دات نت استفاده داشتم، لینوکس همه نیازمندی ها را جواب گو بود. همه ابزارهای اصلی رایج در ویندوز را توی لینوکس داشتم و به خوبی هم کار می کرد. اما چون شرکت جدید دات نت کار هستند، لپ تاپ را به طور کامل refresh کردم. روی SSD اون یک ویندوز و روی HDD هم یک Lubuntu نصب کردم. بعد از جلسه معرفی سورس کد متوجه شدم که همکار جدید اصلا ویندوز ندارد بلکه از روی Mac و VS 2019 for Mac کار می کند. گفت که نصف شرکت Mac و نصف دیگر Windows و یک نفر هم Linux هستند. یک مشورت اولیه ازش گرفتم و با این دید که با لینوکس و دات نت مشکلی ندارم، دوباره از ویندوز خارج شدم و با لینوکس شروع کردم. اینجا بود که با وجود تجربه طولانی مدت در لینوکس و دات نت در لینوکس به مشکل برخورد کردم. پروژه های شرکت روی .Net Core 2.x بودند. این نسخه از دات نت را مایکروسافت دیگر پشتیبانی نمی کند. اول نسخه .NET 5 را نصب کردم. اما پروژه کامپایل نمی شد. خطا می داد که نیاز به .Net Core 2.x هست. نسخه 5 را دستی پاک کردم و با هزار دردسر یک نسخه قدیمی مخصوص لینوکس پیدا کردم و به شکل دستی نصب کردم. حتی مجبور شدم کمی ساختار داخلی apt-get و package های لینوکس را یاد بگیرم. نصب درست انجام شد ولی با خطایی شبیه به ssllib متوقف شدم. .net core 2.x از نسخه 1.0 آن library استفاده می کند و لینوکس های جدید از نسخه 1.1 استفاده می کنند. هر چه تلاش کردم downgrade کنم موفق نشدم. خسته شده بودم، وقتم تمام شده بود و باید مقداری doc معماری و سورس کد را مطالعه می کردم. بی خیال شدم و دوباره برگشتم به ویندوز! هر چند که می دانم وسوسه برگشت به لینوکس خیلی قوی تر از اینهاست و همین که فرصت کنم دوباره بر می گردم و روی downgrade وقت می گذارم. خصوصا این که وسط یکی از جلسات zoom دیروز که screen share بود، ویندوز تازه نصب شده ام پیغام داد که Activate Windows - Got to settings …در این لحظه حدود 30 دقیقه به شروع روز کاری دوم باقیمانده. تمام دیروز از حدود 9:00 تا 1:00 نصفه شب درگیر یاد گرفتن اسم‌های جدید، روتین ها، معماری، لهجه های غلیظ اعضای تیم، 2fa گوگل و مشکل دات نت قدیمی روی لینوکس جدید بودم. امیدوارم اینترنت مثل دیروز خوب باشد و مشکلات فنی هر چه زودتر برطرف شوند.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 13 Dec 2021 10:52:29 +0330</pubDate>
            </item>
                    <item>
                <title>مصاحبه بعدی</title>
                <link>https://virgool.io/@afsharm/%D9%85%D8%B5%D8%A7%D8%AD%D8%A8%D9%87-%D8%A8%D8%B9%D8%AF%DB%8C-hhythyirwret</link>
                <description>قسمت دوم – 1400/9/12در قسمت قبل گفتم که چند مصاحبه برگزار شد و هنوز موفقیتی کسب نکرده بودم. از طرفی قرارداد شرکت جدید ایرانی را یا باید هر چه سریع‌تر می پذیرفتم یا رد می کردم. به هر حال زمان گذشت و روز مصاحبه بعدی (اواخر شهریور) فرا رسید.مصاحبه کننده، خانم مسئول HR بود. روال مصاحبه با بقیه مصاحبه‌های HR فرق زیادی نداشت. من حدود 10 دقیقه راجع به خودم و تجاربم صحبت کردم. راجع به پلتفرم هایی که کار کردم و متودولوژی هایی که آشنا هستم. از کارهای قبلی‌ام که به آن‌ها افتخار می‌کنم گفتم. راجع به علایقم و این‌طور چیزها. و یک مقدار به این سؤالات جواب دادم که آیا تجربه قبلی با cloud و ci/cd دارم یا نه.آن روزها webcam لپ تاپم خراب بود (تعمیرگاهی که SSD نصب کرده بود یادش رفته بود کابل webcam را سفت کند). به همین خاطر مصاحبه نیم ساعته را با موبایل انجام دادم. الان که به آن روزها فکر می‌کنم به خودم می‌گویم چه احمقی بودم که حاضر نبودم همان روز مشکل لپ تاپ و نور اتاق را سریعاً حل کنم. یک هزینه خیلی کم که تأثیر خیلی زیادی روی کیفیت مصاحبه داشت.نوبت به مصاحبه کننده رسید. حدود 15 دقیقه از شرکت و پروژه هایش گفت. از ترکیب تیم گفت. از تکنولوژی های مورد استفاده و نحوه ارتباط تیم با هم. 5 دقیقه آخر هم حالت پرسش و پاسخ داشت. من پرسیدم که آیا وضعیت زبان انگلیسی من قابل قبول است. گفت بله مشکلی ندارد. بعداً فهیدم که بخشی از تیم خودشان به زور انگلیسی حرف می‌زنند و وضعشان حتی از من هم بدتر است. راجع به اختلاف تایم زون صحبت کردیم. راجع به ماندگاری کارمندان در شرکت که خودش می‌گفت میانگین 5 سال است. در نهایت راجع به مراحل بعدی مصاحبه صحبت کردیم. و تمام. مصاحبه به نظر خود خیلی می آمد. به نظرم رسید که طرف مقابل هم راضی است.بعد از چند روز، خبر رسید که در مرحله اول پذیرفته شده ام و باید برای مرحله بعدی که مصاحبه فنی است آماده شوم. روز مصاحبه فنی را تعیین کردیم ولی متأسفانه همان روز تنها یک یا دو ساعت قبل از شروع مصاحبه، شرایط سلامتی یکی از بستگان که چند روزی بود کرونا گرفته وخیم شده و از طریق اورژانس به بیمارستان منتقل شد. من با عجله به بیمارستان رفتم و تنها فرصت کردم موضوع را خبر بدهم. به بیمارستان که رسیدم و کارهای بیمارستان که کمی انجام شد دوباره تماس گرفتم اما متأسفانه مصاحبه cancel شده بود. فردا دوباره صحبت کردیم و قرار جلسه را برای یک روز دیگر گذاشتیم.جلسه بعدی روز چند روز بعد برگزار شد. مصاحبه کنندها عبارت بودند از Principal Tech Lead و Back-end developer. از روی CV یک مقدار سؤال پرسیدند. کار با دیتابیس، استفاده از Open API، میکروسرویس و یک سؤال عجیب راجع به Http Request Call پرسیدند. راجع به پروژه trade در شرکت قبلی پرسیدند. سؤال فنی جداگانه نپرسیدند. کلاً ساده بود.تا اینجا حس می‌کردم خیلی شانس آورده بودم. کلی Design Pattern و سؤالات الگوریتمی را آماده کرده بودم که جواب بدهم. آماده بودم که از آن feature های C# که خود مایکروسافت هم استفاده نمی‌کنند سؤال بپرسند. حتی منتظر بودم وارد حوزه دیتابیس و DevOps شوند و از Kubernetes و Database sharding و config های پیچیده message broker ها بپرسند. یا حتی بخواهند همان لحظه یک سیستم طراحی کنم که چند صد request بر ثانیه جواب بدهد.اما هیچ کدام این‌ها اتفاق نیفتاد. سؤالات واقعاً ساده بودند. در این حد که با فلان چیز کار کردی یا نه و اگر بله یک مقدار توضیح بده. همین سؤالات هم در مورد کلیات بود. در مورد میکروسرویس، در مورد Open Api، در مورد Http و قس علی هذا. اصلاً وارد جزییات نشدیم. مثلاً کسی نپرسید stream در C# را توضیح بده یا بگو چرا Multi Inheritance در C# نداریم.این تیپ سؤالات دور از ذهن را که می‌گویم واقعاً برایم پیش آمده که در مصاحبه‌های ایرانی ازم بپرسند. یک بار برای یک پروژه نیمه بانکی در یک مؤسسه اعتباری مصاحبه شدم، طرف تازگی‌ها یک کتاب راجع به مفاهیم پیشرفته دیتابیس خوانده بود، هر چه سؤال ریز و درشت را از من پرسید. انگار که داشتم امتحان می دادم. کل مصاحبه هم فقط دیتابیس بود و نه چیز دیگر. سؤالاتی مثل Distributed Transaction ها و انواع آن و روش‌های پیاده‌سازی و این‌طور چیزها. در مورد Design Pattern ها هم دو بار گیر افتاده بودم یک بار همین اواخر بود و یک بار هفت هشت سال پیش. هر دو جا مصاحبه را با Design Pattern ها شروع کردند و انواع الگوهای رایج و غیر رایج و فلسفه وجودی آن‌ها و مثال‌ها را از من پرسیدند و وقتی که به نتیجه دلخواه نرسیدند، کل پروسه را متوقف کردند. همین اواخر سال پیش یک جا مصاحبه دادم و مواجه شدم با سؤالات الگوریتم در حد المپیاد. از این خاطرات مزخرف کم ندارم…به هر حال در جلسه مصاحبه فنی از پرسش و پاسخ رد شدیم و به live coding رسیدیم. جایی که نمی‌دانستم چه تیپ سؤالاتی پرسیده خواهد شد. آن‌ها سه task مطرح کردند. هر کدام از آن‌ها یک کد نیم کاره C# بودند که باید کامل می کردم. بعد از تکمیل، سؤالاتی پرسیده می‌شد یا می‌خواستند که کدها را بهبود یا تغییر دهم.سؤال اول فوق‌العاده ساده بود. دو تا Exception بود که یکی از آن یکی ارث برده بود. حالا می‌خواستند در قسمت catch هر کدام از این Exception ها را جداگانه متوجه شده و پردازش کنند. سؤال دوم در مورد interface ها بود. دو کلاس متفاوت یک interface واحد را پیاده‌سازی کرده بودند. حالا باید بر اساس یک ورودی ساده string تصمیم گرفته می‌شود که از کدام کلاس instance ساخته شود. سادگی در حد همان سؤال اول بود. سؤال سوم هم مثل سؤالات اول و دوم خیلی ساده بود. این یکی در مورد استفاده از Extension method بود. در حد تعریف و به کارگیری آن.بله درست است. Task ها هم خیلی ساده بودند در حد سؤالات فنی بخش اول مصاحبه. در حدی که نگران شدم که شاید کل فرایند مصاحبه سرکاری است. با این نگرانی یکی دو تا پرسش و پاسخ آخر مصاحبه را هم راجع به متودولوژی انجام کار و وضعیت ریموت انجام دادم و منتظر نتیجه مصاحبه ماندم.فردای آن روز نتیجه مصاحبه فنی اعلام شد. آن‌ها از مصاحبه فنی هم راضی بودند. کاغذ بازی‌های قرارداد نویسی چند روزی طول کشید و قرار شد اولین روز کاری من اواسط مهر باشد. همه امضاها الکترونیک بود و هیچ چیز کاغذی بین ما رد و بدل نشد. ولی متن قراردادها کاملاً حقوقی و رسمی بود. حالا تنها کاری که داشتم این بود که منتظر روز شروع کار باقی بمانم..تا بعد...</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Fri, 10 Dec 2021 00:25:24 +0330</pubDate>
            </item>
                    <item>
                <title>شروع ماجرا</title>
                <link>https://virgool.io/@afsharm/%D8%B4%D8%B1%D9%88%D8%B9-%D9%85%D8%A7%D8%AC%D8%B1%D8%A7-uvlmvy29qbsp</link>
                <description>قسمت اول - 1400/9/11اواخر مرداد 1400 که خیلی هم سرم شلوغ بود یک پیغام روی واتساپ دریافت کردم از یک کشور خارجی. همان حدود برای چندین شرکت ایرانی رزومه فرستاده بودم و گهگاه در همین ارتباط تلفن‌ها و پیام‌های آن‌ها را جواب می دادم. اما این پیغام واتساپ و یک تلفن دیگر که فردای آن روز از یک شرکت دیگر دریافت کردم با بقیه فرق داشت. چون من اصلاً یادم نمی‌آمد که برای آن‌ها اقدام کرده باشم. از آنجا که خیلی گرفتار بودم به موضوع ارسال قبلی رزومه گیر ندادم و پروسه مصاحبه را ادامه دادم. اما چند هفته بعد متوجه شدم که شخص دیگری به جای خودم به آن‌ها رزومه داده.به هر حال پیغام آن روز واتساپ را پیگیری کردم. کارهای خواسته شده را انجام داده و مراحل را یک به یک جلو بردم. تلفن فردای آن روز را هم به همین شکل تا آخرین مرحله پیگیری کردم. اما همچنان این علامت سؤال در ذهنم بود که چه کسی بدون آنکه از او بخواهم یا بدون آنکه خودش از من چیزی بخواهد من را به این دو موقعیت معرفی کرده است.این موضوع و کانال آشنایی برایم خیلی مهم بود. اول اینکه اطمینانم نسبت به همین دو تا موقعیت کاری بالا می‌رفت و دوم آنکه می‌توانستم حضورم در آن کانال را تقویت کنم برای موقعیت های احتمالی بعدی. من خودم زمستان گذشته تلاش خیلی زیادی کردم که چند مصاحبه یا offer بگیرم. ولی به جز چند مورد چیزی پیدا نکرده بودم. حالا که یک نفر من را به راحتی به مصاحبه رسانده بود خیلی برایم با‌ارزش بود. با پیگیری هایی که کردم فهمیدم آن شخص یک recruiter ایرانی است که آشنایی قبلی هم با من نداشت. صرفاً رزومه من را از توی بانک رزومه اش که احتمالاً از IranTalent یا LinkedIn آمده بوده برداشته و به چند موقعیت کاری که فکر می‌کرده رزومه ها من به آن‌ها می‌خورده ارسال کرده بوده.به هر جهت تماس واتساپی آن روز را با آنکه امیدی به آن نداشتم پیگیری کردم. بخشی از پیشنهادهای کاری قبلی را صرفاً به خاطر ساکن ایران بودن از دست داده بودم. به همین دلیل به این یکی هم خیلی امیدوار نبودم. در اولین قدم چند بار رزومه ام را در قالب آن‌ها ویرایش کردم. کمی راجع به مهارت هایم گفتم و وضعیت زبان انگلیسی ام را تشریح کردم و مبلغ پیشنهادی آن‌ها را پذیرفتم. همینجا بود که فهمیدم خود آن‌ها هم یک شرکت staffing هستند. یعنی خودشان نه پروژه دارند و نه مدیر پروژه، بلکه با شرکت های دیگر در اروپا و آمریکا در تماس هستند و برای آن‌ها تأمین نیرو انجام می دهند.با آنکه سالها رزومه خودم را به روز نگه داشته بودم اما همینجا درس مهمی یاد گرفتم. اینکه واقعاً لازم است بیش از یک رزومه داشته باشم. برای هر موقعیت کاری می‌توان یک رزومه مخصوص داشت. مثلاً وقتی که برای موقعیت مدیر فنی اقدام می‌شود باید سوابق کارآموزی خود را بردارید. وقتی که برای موقعیت Back-end رزومه می‌دهید بخش‌های front را خیلی خلاصه تر کنید. این شرکت خودش با صلاح دید خودش رزومه من را خیلی خلاصه کرد و هر چیز قدیمی تر از 6 سال را پاک کرد. اسم فامیل من را هم از رزومه پاک کرد تا مشتری نهایی نتواند آن‌ها را دور بزند.از اینجا به بعد شروع کردیم به بررسی پیشنهادهای کاری. اولین پیشنهاد کاری مربوط به یک مشتری آمریکایی بود که کارشان با Node.js بود. اما از آنجا که هم تجربه‌ام با خود Node.js خیلی سنگین نبود و هم تجربه قبلی با Amzon AWS نداشتم reject شدم. موقعیت کاری بعدی مربوط به .Net و Angular بود که من تجربه قبلی با Angular نداشتم. برای همین موقعیت کاری یک مصاحبه فنی گذاشته شد. مصاحبه 45 دقیقه طول کشید و خوشبختانه فقط back-end بود. اما به خاطر اطلاعات فنی کمی که راجع به No-Sql database داشتم و یک مقدار کمی هم به خاطر زبان انگلیسی و تپق های بی پایانی که داشتم مبلغ پیشنهادی را 20 درصد کاهش دادند. این مصاحبه برای خود شرکت بود و ربطی به مشتری‌ها نداشت. به هر حال آن موقعیت کاری .Net و Angular هم به دلایل داخلی پرید.موقعیت کاری بعدی دات نت. در مصاحبه با مشتری شرکت کردم ولی مصاحبه خیلی کوتاه بود. همه آن چیزی که مشتری نگران آن بود وضعیت اینترنت در ایران بود. آنقدر که به این موضوع شک داشت، این موقعیت هم از دست رفت.این وسط رزومه من را برای یک سری شرکت های دیگر هم ارسال کرده بودند که هیچ کدام به مصاحبه نرسیده بود. علاوه بر این رابط من کرونا گرفته بود و کل فرایند به شدت کند شده بود. از طرفی موقعیت کار فعلی‌ام به شرایط اضطراری رسیده بود. نمی‌دانستم موقعیت جدید (داخل ایران) را بپذیرم یا همچنان به این شرکت خارجی امیدوار بمانم..فعلاً تا همینجا را داشته باشید تا قسمت بعد.</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Tue, 07 Dec 2021 18:48:20 +0330</pubDate>
            </item>
                    <item>
                <title>یک تجربه</title>
                <link>https://virgool.io/@afsharm/%DB%8C%DA%A9-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-sgajbztrhqdz</link>
                <description>با خودم قرار گذاشته بودم مروری بر شرایط کاری ام در سه سال گذشته از  1397 تا 1400 داشتم باشم. طی این مدت توفانی از حوادث و نوسانات بر کار و  زندگی خیلی از ماها جاری شده است. از تورم بی پایان و شدت تحریم گرفته تا  کرونا و عزیزانی که به این خاطر از دست دادیم. و نوسانات بازار کار به طور  خاص و ناپایداری هایی که اول در بخش خصوصی و بعدش در موج جدید مهاجرت دیده و  می بینیم.به خاطر همین توفان بود که می‌خواستم آنچه که از سر گذشت را با دقت و  جزییات بنویسم. اما گذر زمان باعث شده بعضی جزییات فراموش و اهمیت بعضی  اتفاقات کمتر شود. از طرفی دیگر تصمیم گرفته بودم فتیله کمال گرایی را کمی  پایین بکشم تا بهتر بتوانم نفس بکشم. نتیجه اینکه تصمیم گرفتم توالی تاریخی  را در نظر نگرفته و از هر جا که یادم بود یا جذاب‌تر بود شروع کنم.در اولین قدم قصد دارم تجربه‌ای را مستند کنم که طی همین تابستان و  پاییز 1400 اتفاق افتاده. کلا 14 قسمت از این تجربه را مستند کرده ولی  هنوز هیچ چیزی را منتشر نکرده ام. یک مقدار به خاطر مسائل حفظ اسرار کاری و  یک مقدار دیگر باز هم به خاطر مسائل کاری. حالا قصد دارم آن‌ها را به  تدریج در اینجا منتشر کنم. به دلیلی که قبل تر توضیح داده شد، تاریخ نوشتن  مطلب با تاریخ انتشار فاصله زیادی دارد.هر مطلبی که از این سری منتشر شود، لینک آن در این صفحه هم قرار خواهم داد.شروع ماجرامصاحبه بعدیروز اولروز دومروز سوم و چهارمروز ششمپایان هفته دومساختار تیمساختار کدبی رحمیفاکتور سنجابجایی پولمیکروسرویس ها و به هم ریختگی های آخر سالتفاوت ما و آنها</description>
                <category>افشار محبی</category>
                <author>افشار محبی</author>
                <pubDate>Mon, 06 Dec 2021 14:43:18 +0330</pubDate>
            </item>
            </channel>
</rss>