چالش مصاحبه و استخدام در شرکت های ایرانی

Dear Ali,We are honoured to have the opportunity to meet you and discuss the role of Senior Software Engineer (Golang). Although we are impressed by your work background and experience, we couldn't match our job criteria for your skills, experience or expectations.Dear Ali,It was a pleasure meeting with you to discuss your background and interest in the Software Engineer position. We appreciate your time, attentiveness, and patience throughout the interview process. While we were really impressed by your skillset, we have chosen to pursue another candidate for this position who we feel is best qualifiedدر این سال ها نکته مهمی که همیشه سعی کردم رعایت کنم عدم تقلید از بقیه و جزئی و عمقی نگری در اکثر مسائل من جمله کار بوده. به همین دلیل اکثرا پروژه‌های انفرادی یا تیمی با نفراتی که تا حدودی نزدیک به طرز فکرم بودند کار کردم، که بتونم آزادی عمل بیشتری در بروز خلاقیت خودم داشته باشم. همیشه با این تصور جلو میرفتم که تا آخر عمرم قراره کار کار خودم باشه یا تیم هایی پیدا خواهند شد که به سبک من کار کنند و این موضوع تا به امروز باعث شده که سمت تکنولوژی ها و معماری ها و سبک هایی که عموم برنامه نویس ها و تیم های مطرح ازشون استفاده می‌کنند نرم، مفاهیمی مثل میکروسرویس‌ها، معماری Clean، SOLID و امثالشون که اکثر شرکت‌ها بدون داشتن تعریف دقیق و این‌که به دردشون میخوره یا نه تقلید می‌کنند. البته به این معنی نبوده که اصلا تجربه کار کردن یا آشنایی با مفاهیم مرتبط رو نداشتم، شاید خیلی از مفاهیم رو با روش خودم پیاده کرده بودم که اطلاع نداشتم اون روش با کمی تفاوت یه اسم با کلاس رزومه پر کنی داره!برای مثال در یکی از پروژه های اخیرم به جای استفاده از پروتکل‌های آماده پیام‌رسان‌ها، خودم پروتکلی طراحی کردم بر روی وب‌سوکت که از حالت درخواست/پاسخ (Request/Response) و رمزنگاری/رمزگشایی پشتیبانی کنه. بحث‌هایی هم سر این موضوع با یکی از اعضای تیم داشتم اما نتیجه برام خیلی لذت‌بخش بود. این که مثل بقیه کورکورانه تقلید نکردم و تونستم با حل این چالش غول طراحی پیام‌رسان و مباحث رمزگذاری رو شکست بدم به یک آرامش و نشاط و رضایت درونی بسیار شیرینی رسیدم. نتیجه کار هم بسیار خوب بود و محصول طراحی شده تفاوت خودش رو با بقیه محصولاتی که با دیدگاه استارتاپی و تقلید کورکورانه ساخته شده بودند، نشون داد. اما اگر به توصیه دوستم که دیدگاه استارتاپی داشت گوش میدادم نه تجربه لذت بخشی در میون بود، نه ممکن بود محصول به جایی برسه، درصورت موفقیت محصول هم، برای توسعش باید برده استانداردها و چهارچوب‌هایی می‌شدیم که بر اساس نیاز یک تیم خاص غالبا در خارج از کشور و با دید متفاوتی طراحی شده بودند‌.اما باتوجه به تغییر شرایط زندگی و بالا رفتن سن، تصمیم گرفتم راه های کم ریسک تری رو برای کسب درآمد امتحان کنم (مثل استخدام شدن). اینجا بود که با یک دو راهی مواجه شدم:ادامه کار کردن به صورت شخصی (Self-Employed) یا انتظار برای یک موقعیت خوب متناسبیادگیری مفاهیمی که غالب شرکت‌ها فازشون رو دارند و نحوه ارائه هرمس مابانه اون‌ها (دغل بازی)در اینجا راه سومی هم وجود داره و اون انجام هر دو کار به صورت موازی هست که باید ریسک درگیر شدن با تیم‌های خلاقیت کُش و تاثیری که ممکنه ازشون بگیرم رو قبول کنم.شرکت‌های مطرح ایرانی در استخدام برنامه‌نویس‌ها چه فازی دارند؟تا به امروز تونستم با 5 تا شرکت برای موقعیت شغلی برنامه‌نویس و مهندس‌نرم‌افزار زبان Go مصاحبه کنم که 3 تاشون جزو شرکت‌های مطرح بودند. سوالات و چالش‌های مصاحبه با 4 تا شرکت شباهت زیادی باهم داشتند که در اینجا سوالات و مفاهیمی که مطرح شده بود رو بهشون اشاره می‌کنم:مفاهیم سیستم‌های توزیع شده و نحوه رفع چالش‌های موجودساختار و نحوه عملکرد بانک‌های اطلاعاتیساختمان‌داده، الگوریتم‌های جستجو و مسیریابی و معماری سیستمکانال‌ها (channels) و گوروتین‌ها (goroutines) در زبان Goنحوه عملکرد Slice در زبان Goدیدگاه امنیتی در معماری سیستم‌هامیکروسرویس‌ها، الگوهای طراحی (Design Patterns) و SOLIDرویکرد مصاحبه کننده‌ها در تمامی موارد مصداق بازجویی بود اما برخی از اون‌ها برای حفظ آبروی شرکتشون سعی داشتند فضای مصاحبه رو دوستانه و گرم نگه‌دارند به طوری‌که در 2 مصاحبه خاطر نشان کردند که به دنبال پاسخ مشخصی نیستند و صرفا دوست دارند با دیدگاه و ذهنیتم درباره مفاهیم آشنا بشند. اما در واقع به دنبال پاسخ‌هایی بودند که از قبل در راستای چهارچوب‌های فعلی و سطح آمادگی مصاحبه‌کننده‌های شرکت تعیین شده بود.با تجربه‌ای که در این مصاحبه‌ها و تا به اینجا به دست آوردم مصاحبه‌کننده‌ها در ذهنم به 2 دسته تقسیم می‌شند:دسته اول میشه دانش‌آموخته‌های دانشگاه‌های برتر کشور که در حال انتقام گرفتن بودند، انتقام روزهایی که درس خوندن و شب‌هایی که نخوابیدند تا بتونند نظر استاد رو جلب کنند و با معدل بالایی فارغ التحصیل بشند در حالی‌که بقیه دوستاشون دیدگاه فنی نسبت به این رشته داشتند. سوالات این دسته از اکثر دروس مهندسی‌نرم‌افزار مثل ساختمان داده، بانک‌های اطلاعاتی پیشرفته و طراحی الگوریتم بود. در واقع تمامی دروسی که در اون‌ها از استاد می‌پرسیدیم این درس به چه دردی میخوره رو جوابش رو گرفتم، این دروس به درد سوالات استخدامی چنین شرکت‌هایی میخوره.دسته دوم برنامه‌نویس‌هایی بودند که برنامه‌نویسی رو با دوره‌های پایتون مکتب خونه و با استاد طناز، امیر عماد میر میرانی، گذرونده بودند. یا حداقل چنین فردی الگوشون بوده، از پادکست‌هاش لذت بردند، از تراوشات ذهنی عوام‌فریبانش حمایت کردند و یا اگر فن این شخص نبودند حداقل تو قلبشون جایگاه ویژه‌ای داشته. این دسته برنامه‌نویس‌های مکتب جادیسم رو همیشه با پیروان متعصب و تندرو ادیان و مذاهب و مکاتب مقایسه کردم. غالب این افراد اعتماد به نفس و جرات کافی در حل مسائل، شکوفایی استعدادها و استفاده از خلاقیتشون رو ندارند و مجبورند برای جلوگیری از فروپاشی ذهنی از ترندهای روز تقلید کنند. و خوشبختانه برای عبور از سد هر دو دسته میشه از چندتا دوز و کلک و ترفند استفاده کرد. مشاهده ویدئوهای مصاحبه در یوتیوب و حفظ مفاهیم کلی، چرا که خود این مصاحبه کننده‌ها در روند مصاحبه خلاقیتی از خودشون ندارند و به تقلید از بقیه مصاحبه‌کننده‌ها پرداختند.البته که این دسته‌بندی ذهنیم 100 درصد افراد رو تحت پوشش قرار نمی‌ده اما از مصاحبه‌هایی که داشتم اکثریتشون به این شکل بوده و صد البته که این دسته‌بندی تنها مختص به ایران نیست اما در مقایسه با کشورهای توسعه یافته درصد بالایی رو در ایران داره که اکثر قریب به اتفاق استارت‌هاپ‌ها کپی ایده‌های خارجی هستند. شاید 4 تا مصاحبه مشابه داده‌های کافی برای این نتیجه‌گیری نباشه اما متاسفانه این نتیجه‌گیری تنها شامل مصاحبه‌کننده‌ها نمی‌شه و مردم در سطح جامعه هم در دسته‌بندی‌های مشابهی قرار می‌گیرند.به اعتقاد من، تقلید از چهارچوب‌ها به صورت کورکورانه، انسان خلاق، با اعتماد به نفس و مبتکر رو تبدیل به یک ربات بی روح و بی ثبات می‌کنه. در بحث برنامه‌نویسی برای مثال اگر قرار هست از میکروسرویس استفاده کنیم باید حداقل یک ماه درباره این مبحث تحقیق عمیق کنیم، درباره اینکه چه کسانی چنین معماری رو در مواجه با چه چالش‌هایی و در داخل چه مجموعه و شرکت‌هایی پیشنهاد دادند. آیا میشه بدون استفاده از میکروسرویس‌ها و با کمی تفکر مشکلات رو با خلاقیت بهتری حل کرد که مختص خود پروژه یا مجموعه باشه؟ اگر بعد از این یک ماه همچنان به این نتیجه رسیدیم که باید از این معماری استفاده کنیم حداقل در نحوه پیاده‌سازیش باید خلاقیت داشته باشیم. اگر خودم وظیفه استخدام نیرو در شرکتی رو به عهده داشتم، سوالات و چالش‌های فنی مصاحبه برای استخدام رو بر اساس رزومه هر شخص طراحی می‌کردم و به نظرم مهم‌ترین موضوع در استخدام افراد در ابتدا بررسی تیپ شخصیتی و روحیه افراد در حل مشکلات و چالش‌ها هست. به اعتقادم تمامی مشکلاتی که شرکت‌های مطرح باهاشون مواجه هستند در جلب رضایت کاربر، همگی به دلیل تقلید کورکورانه اون‌ها و ایجاد محیطی سرد برای کارکنانشون هست. مسائل و مشکلاتی که شرکت‌ها به جای حلشون به صورت خلاقانه از روش‌های فریب افکار عمومی و کثافت‌کاری‌های سیاسی طور استفاده می‌کنند.