از وقتی سویچ کردم به Node.js مجبور شدم در کلی مصاحبه شرکت کنم. به خاطر شرایط کرونا مجبور شده بودم مدت نامعلومی ریموت باشم. نقشهای مدیر پروژه و مدیر فنی و CTO و امثالهم را نمیشود به شکل ریموت انجام داد. مجبور شدم به شکل back-end developer یا full stack اقدام کنم. تقریباً در همه مصاحبهها یا خیلی شرمنده شدم یا خیلی تحقیر.
این موضوع خیلی غیر طبیعی نبود. من سالهای سال دات نت کار کرده بودم. با چند ماه کار با JS نمیتوانستم به روانی ASP.NET/C# مصاحبه بدهم. قسمت بدتر ماجرا این بود که شغلهای اخیر من به نحوی مربوط به مدیریت یا هدایت تیم بود. طبیعتاً من با آن جزییاتی که یک developer پلتفرمش را می شناسد، من آن پلتفرم را نمی شناختم. من یک دید کلیتر نسبت به تکنولوژی ها و پلتفرم ها داشتم ولی مصاحبه کننده انتظار داشتند من آبجکت به آبجکت و مفهوم به مفهوم node.js و react.js را بشناسم و توضیح بدهم.
در یکی از مصاحبهها اول با HR صحبت کردم. با هم صمیمی شدیم و صحبتها خیلی خوب پیش رفت. بعدش نوبت به مصاحبه فنی رسید که با شخص مدیر شرکت انجام شد. یکی دو تا سؤال در حد function generator ها و js decoration پرسید و در کمتر از ۵ دقیقه مصاحبه را به اتمام رساند. آخر سر هم به من گفت اگر بخواهم به شرکت آنها بروم باید مدتی را کارآموزی کنم بعداً کار اصلیام را شروع کنم. بعد از ظهر همان روز HR برای من پیغام گذاشت که تو که هیچی بلد نبودی چرا درخواست فلان مقدار حقوق را داشتی!
توی این مدت از این مصاحبهها خیلی داشتم. حدود ۳۰ مصاحبه در ۵ ماهه اول ۱۴۰۰ که البته بعضیها در همان تلفن اولیه آشنایی کنسل شدند. مسیر سختی بود (و هست). چارهای نیست. مجبور بودم خیلی برخوردهای سرد را قبول کنم. وقتی که هم جایگاه ام در تیم را به خاطر موضوع remote عوض کرده بودم و هم پلتفرم را، مجبور بودم این داستانها را تحمل کنم.
میخواستم همه اینها را بگویم که برسم به این داستان که سابقه کار، توانایی حل مسأله و خیلی چیزهای دیگر اصلاً مبنا نیست. حداقل در این ۳۰ مصاحبه که از اول فروردین ۱۴۰۰ تا پایان مرداد ۱۴۰۰ داشتهام اینطور بوده. وقتی که پلتفرم عوض می کنید، وقتی که شرکت عوض میکنید و وقتی نقش تان در تیم را عوض میکنید همه این بلاها سرتان می آید. هر کدام از این سه تغییر مسیر منجر میشود به اینکه کنتور شما reset شده و از نو شروع کنید. شرکت ها و تیم ها به این چیزها اهمیت نمی دهند. اگر فقط شش ماهه که Node.js کار می کنید، پس مثل یک برنامه نویس شش ماه سابقه کار با شما برخورد می شود. اون ۱۵ سالی که جاوا یا دات نت کار کرده اید، اون تکنیک های حل مسأله و اون شناخت کلی که از صنعت نرمافزار پیدا کرده اید، همگی پر!
متأسفانه بیشتر مصاحبهها کاملاً محصور بودند به تکنیک ها و مفاهیم خاص اون پلتفرم یا تکنولوژی. انگار که برنامه نویسی و مهندسی نرمافزار فقط همون چیزهایی است که در آن چارچوب معرفی شده. اینجا قضاوت نمیکنم راجع به مصاحبه کننده ها. سو گیری آنها در بعضی مواقع خیلی هم غیر منطقی نیست به نظرم.
اینجاست که به خودم میگویم با توجه به بازار کار، اینهایی که مدام دنبال چیزهای جدید میگردند حتی اگر مورد نیازشان نباشد، خیلی هم بیراهه نرفته اند. اینهایی که میکروسرویس را در هر پروژه مرتبط و نامرتبطی اجرا می کنند. آنهایی که redux را در هر پروژه ریکتی فرو می کنند. اینهایی که Replication بیخودی در دیتابیس راه می اندازند. اینهایی که بدون داشتن unit test و بدون استفاده جدی از object oriented اصرار شدید دارند که هر عملیات ریز و درشتی را فقط با ORM به شکل Typed انجام دهند. اینهایی که کلاً فقط یک instance از برنامه شان وجود داشته و فقط در یکجا و روی یک دیتابیس نصب دارند ولی باز هم اصرار دارند هر چیز ممکن و ناممکنی را از طریق migration ها پیش ببرند. اینهایی که یک خط unit test ندارند و هیچ وقت یک interface را دو بار implement نمیکنند و هیچ چیزی از mocking نمی دانند، اما باز هم اصرار دارند همه کلاسها interface داشته باشند. همه اینها به نظر من over engineering میکنند ولی در جذب شدن به بازار کار موفق تر هستند. در مصاحبهها دست بالا را دارند و در کسب اطمینان به سرمایه گذار یا مدیر غیر فنی شرکت بهتر از هر کس دیگری عمل می کنند.
بگذریم. منسوب است به دالای لاما که اگر میخواهید یک بازی را عوض کنید اول باید قوانین آن را یاد بگیرید. این صحبت در شرایطی که صحبتش شد نیز صدق می کند.