در طول عمرتان چند مصاحبه فنی داشتهاید؟
در طول پنج سال گذشته، در ۳۵ مصاحبه فنی از هر نوع و حوزه قابل تصوری شرکت کردهام - از استارتاپهای قزاقستانی که خرید جمعی گوشت زمستانی ارائه میدهند گرفته تا خدمات و بانکهای فینتک آلمانی و آمریکایی؛ با تمرکز بر برنامهنویسی، تحویل و مدیریت؛ دورکاری و حضوری؛ حساس به زمان و نامحدود؛ استرسزا و آرام؛ به زبانهای مختلف.
این، همراه با حدود ۲۰ مصاحبهای که خودم به عنوان استخدامکننده انجام دادهام، کافی است تا به مشاهدهی (در ابتدا کاملاً غیر واضح) زیر برسم و به مصاحبه کردن اعتقاد راسخ پیدا کنم: من متقاعد شدهام که تا حد زیادی به لطف این تعداد مصاحبه، که کم کم دارد به یک عادت حاشیهای تبدیل میشود، توانستهام در سطح حرفهای بر مهارتهایم مسلط شوم و با وجود اینکه ۱۰ سال در توسعهی وب کار کردهام، به یک متخصص رقابتی تبدیل شوم.
این مقاله برای برنامهنویسانی است که تازه شروع به کار کردهاند و هنوز به عمق دانش خود نرسیدهاند. در این مقاله، میخواهم در مورد مزایای آموزشی عظیم تکالیف آزمایشی و سوالات فنی پرسیده شده در طول مصاحبهها توضیح دهم و همه را به ربات تلگرام تازه ایجاد شدهام دعوت کنم. ، که به نظر من، میتوانید هر روز تا پایان مصاحبههای فنی در آنها شرکت کنید. و برای ادامه دادن آنها، میتوانید یک تکلیف فنی جالب، سوال یا یک موقعیت مفید/خندهدار که در طول مصاحبه تجربه کردهاید را نیز به اشتراک بگذارید.
در ادامه با جزئیات بیشتری در مورد این ربات صحبت خواهم کرد، اما ابتدا بیایید بفهمیم که چرا دانستن و فهمیدن پاسخ این سوالات و وظایف فنی بسیار مهم است، حتی اگر سالها با موفقیت روی پروژههای فریلنسری کار کرده باشید.
چرا کیفیت دانش بنیادی ما جای زیادی برای مطلوب بودن دارد؟
مصاحبههای فنی، اگر هنوز در مصاحبهها استاد نشدهاید، استرس جدی برای بدن هستند، همانطور که جستجوی شغل به طور کلی استرس جدی برای بدن است - چه مبتدی باشید، چه تازهکار یا توسعهدهندهای که مدت زیادی (و «مدت» این روزها یک سال است) باشید.
در بسیاری از مصاحبهها، این استرس با عامل انسانی تشدید میشود. مصاحبهکننده شما ممکن است آلنا ولادیمیرسکایا نباشد، بلکه یک برنامهنویس معمولی باشد که انتظار تکالیف و ارزیابیهای کافی از او دشوار است، یا یک رهبر تیم سرسخت که منتظر لحظه مناسب است تا نگاه سختگیرانه خود را به شما بیندازد و بپرسد: چابک برای شما چه معنایی دارد؟!
یک روز، بدون دادن پاسخ مورد نیاز، اما، همانطور که میدانید، غیرقابل پیشبینی به این سوال، بدون پیشنهاد ماندم، که از آن فوقالعاده خوشحال شدم.
با تلاش برای اجتناب از این استرس و حرکات غیرضروری به طور کلی، نه تنها خود را از افشای بلند جهل خود نسبت به برخی از ویژگیهای اساسی زبان دور میکنیم، بلکه از امکان کاهش این جهل حتی به میزان کم نیز جلوگیری میکنیم.
مشکل این است که در عمل به ندرت با این دسته از مشکلات مواجه میشویم.
هر توسعهدهندهای که چندین شغل داشته باشد، تأیید خواهد کرد که وظایف اساسی یا خلاقانهای که در مصاحبهها مطرح میشوند، به ندرت به آنچه یک برنامهنویس در زندگی واقعی با آن سر و کار دارد، مربوط میشوند - بدون بازگشت، نمودار یا سیستمهای کنترل آسانسور ناهمزمان در سیارهای با گرانش منفی در کهکشانی دیگر. متأسفانه.
یک مثال خوب در مورد جاوا اسکریپت بومی من صدق میکند: اگر React.JS ظاهر نمیشد، ۹۸٪ از برنامهنویسان جاوا اسکریپت هنوز در جهل سعادتمندانهای از چیستی bind زندگی میکردند - بیش از ۲۰ سال پس از انتشار آن - و هنوز هم از سوالات مربوط به آن در مصاحبهها گیج میشدند، و فقط کسانی که همه آن کتابخانهها، چارچوبها و ماژولهای بسیار انتزاعی را اختراع کردند، هنوز با آن کار میکردند. امروز، به لطف React، احساس میکنم این تعداد به ۹۷٪ کاهش یافته است.
ظاهراً، با مشاهدهی «جدایی از واقعیت» این وظایف، بسیاری از توسعهدهندگان آنها را نادیده میگیرند یا برای پرداختن به آنها وقت کم میگذارند - و به روال روزانهی خود ادامه میدهند، یعنی، به طور مجازی، نه تنها بدون ردیاب مین، بلکه بدون اینکه حتی متوجه شوند در میدان مین هستند، در میدان مینِ توسعهی محصول قدم میزنند.
عواقب فقدان دانش پایه یک زبان چیست؟
پاسخ به این سوال به نظر بدیهی میآید، اما به دلایلی، این طبیعت انسان است که همیشه راهحل خود را به تعویق بیندازد - و این نقش غمانگیزی در زندگی برنامهنویسان تازهکار و متوسط ایفا میکند و مسیر آنها را به سوی اوج (و اعماق) دانش زبانی چند سال طولانیتر میکند.
کد برنامهای که آنها هر روز با استفاده از چارچوبها و کتابخانهها به نوشتن آن عادت کردهاند، اگر بدون درک کافی از جنبههای مختلف اجرای آن نوشته شود، نمیتواند قابل اعتماد تلقی شود. نمونه خوبی از این موضوع در دنیای جاوا اسکریپت، سرنوشت کتابخانه jQuery است. زمانی نیروی محرکه پیشرفت بود، اما امروزه به عنوان یک حوزه دانش مستقل و جدا از بقیه زبان، جایگاه طبیعی خود را در بازار پیدا میکند - اسکریپتهای نیمهحرفهای، با عجله نوشته شده و نامنظم، هدیهای به کد Bootstrap به همان اندازه سریع از فریلنسرهای ارزان قیمت.
آیندهی پروژههایی که با چنین رویکرد غیرمسئولانه، هرچند ناآگاهانه، توسعه مییابند، کسلکننده و کوتاهمدت است: اتلاف زمان قابل توجه بدون هیچ دلیل مشخصی، شکستها، ضررهای مالی و اعتباری، و در نتیجه، کاهش اشتیاق برای ادامهی همکاری.
از سوی دیگر، برای کسی که مسیر برنامهنویسی را انتخاب کرده است، چیزهای کمی با رضایت ناشی از درک کاری که انجام میدهد قابل مقایسه است. این درک که آنها مانند بارون مونشهاوزن هستند که سوار بر اسب از میان میدان مین میگذرند. نیازی به گفتن نیست که یک کارفرمای معتبر کاملاً از افرادی که بیپروا در میدانهای مین قدم میزنند و کسانی که در تردید فرو رفتهاند، آگاه است، در حالی که میتوانند بدون لحظهای فکر کردن بدوند و بپرند.
ربات واقعی
با دیدن مزایای مصاحبهها و همچنین درک این موضوع که شرکت در مصاحبههای آزمایشی کاملاً اخلاقی نیست، فکر کردم عالی میشود اگر رباتی ایجاد کنم که توسعهدهندگان مشتاق یا در حال گذار بتوانند بدون نیاز به گذراندن همان تعداد مصاحبه واقعی که من داشتم، اصول کار را یاد بگیرند. و با یادآوری اینکه برنامهنویسان چقدر دوست دارند در مورد چالشهایی که مجبور به حل آنها بودهاند - به خصوص اگر چیزهای غیرپیش پا افتادهای باشند - بحث و مقایسه کنند، متوجه شدم که همه چیز مناسب است، همه شک و تردیدها را کنار گذاشتم و تمام.
این ربات در حال حاضر ۳ عملکرد ساده دارد:
- مشترک شدن در یک زبان یا چارچوب خاص برای دریافت وظایف جدید برای آن. شما مشترک میشوید و وظایف را به محض رسیدن از طریق خبرنامه روزانه دریافت میکنید.
- انتشار یک وظیفه یا آزمون - به نظر من، به اشتراک گذاشتن نشانه اهمیت دادن است
- یک تولیدکنندهی نام عالی که به شما کمک میکند امضای مناسبی برای متن تکلیف منتشر شدهتان انتخاب کنید، از جمله دیکشنریهای زنانه با اسمهای زنانه.
در حال حاضر، زبانهای زیر در دسترس هستند: جاوا اسکریپت، جاوا، پایتون، پیاچپی و مایاسکیوال. به دلیل محدودیتهای درک من، انتخابها تا حدودی محدود است. امیدوارم با کمک جامعهی هابر، این لیست را گسترش دهم.
این ربات کاملاً در قالب راک اند رول راهاندازی میشود؛ هیچ هزینهای برای هیچ چیزی در نظر گرفته نشده است.
شما میتوانید با استفاده از لینک به آن دسترسی پیدا کنید:
مختصراً در مورد اجرای فنی
این ربات یکی از چندین پروژه کوچکی است که من در حال نهایی کردن اولین نسخه عمومی از مینی فریمورک متنباز خود برای توسعه رباتهای پیچیده هستم، که با محبت Hobot نام گرفته و در NPM برای توسعهدهندگان حرفهای در دسترس است.
این چارچوب بر پایه Telegraf.JS و TypeScript ساخته شده است و نسخه zero-zero-first آن، به همراه یک مثال کاربردی، را میتوانید در اینجا مشاهده کنید. و فوراً آن را امتحان کنید. به زودی یک نسخهٔ گسترشیافته و اصلاحشدهٔ ۰.۰.۲ را برای یک کاربر خارجی آپلود میکنم و یک مقالهٔ جداگانه (بخش ترانک) را به آن اختصاص میدهم. خوشحال میشوم اگر به همان اندازه که برای من مرتبط است، برای شخص دیگری هم مرتبط باشد.
خب، شما مجبور بودید در چند مصاحبه شرکت کنید؟
مطمئنم یه داستان برای تعریف کردن داری!
منبع: www.habr.com
