توسعه دهنده در گرینگا: فرآیندهای انتخاب و محل مطالعه برای آنها

در ابتدا در Dev در Gringa Substack ارسال شد. اگر می خواهید مقالات جدیدی را در ایمیل خود دریافت کنید، ثبت نام کنید!
شما جای خالی را پیدا کردید، برای یک موقعیت توسعه دهنده در کشورهای خارجی درخواست دادید و برای مصاحبه فراخوانده شدید.
زمان آن فرا رسیده است که درک کنید چگونه ارزیابی خواهید شد.
در این مقاله روش های اصلی مورد استفاده در بازار بین المللی را نشان خواهم داد.
من به صورت جداگانه وارد جزئیات نمی شوم. هدف این است که دید وسیعی از فرآیندهای مختلف انتخاب ارائه شود.
من قصد دارم تمام منابعی را که در هنگام آماده شدن استفاده می کنم به اشتراک بگذارم.
همانطور که در این نمودار مشاهده می کنید، تمام مراحل حذفی هستند.
بله، نقاط بی بازگشت زیادی وجود دارد.
بنابراین، مهم است که برای هر یک از آنها به خوبی آماده باشید.
در پایان نکات خاصی از خودم میگذارم که در مرحله خاصی نمی گنجد. بر اساس تجربیات قبلی.
آخرین یادآوری این راهنما تمام مراحلی را که قبلا انجام دادهام و تجربه کردهام را شرح میدهد. با این حال، مطمئناً شرکت هایی وجود دارند که فرآیندهای متفاوتی دارند.
در واقع، اگر در یکی از آن ها شرکت کردید، از شما می خواهم در مورد این مقاله نظر بدهید! و بنابراین ما می توانیم دانش بیشتری را به همه نیز گسترش دهیم.
1. گفتگوی اولیه با استخدام کننده
در طول این گفتگو، استخدام کننده کمی بیشتر در مورد موقعیت و فرآیند انتخاب به شما خواهد گفت.
اگر این یک موقعیت توسعه دهنده در کشورهای خارجی است، ارتباط شما در اولین مکالمه ارزیابی می شود.
خواندن کمی در مورد این شرکت نیز معجزه می کند. سعی کنید وضعیت شرکت را درک کنید. اگر به دنبال رشد هستند. کاهش هزینه ها. آخرین ابتکاراتی که روی آن کار کرده اید چیست؟
علاقه واقعی نشان دهید.
چند سوال آماده کنید
در پایان مصاحبه، استخدام کننده از شما می پرسد که آیا چیزی وجود دارد که می خواهید بدانید.
این یک فرصت عالی برای پرسیدن سوالات در مورد موضوعات مرتبط با موقعیت شما است.
چند نمونه:
-
آیا می توانید کمی بیشتر در مورد فرهنگ شرکت به من بگویید؟
-
آیا فرصت هایی برای شرکت در کنفرانس ها یا دسترسی به مطالب آموزشی وجود دارد؟
-
تنوع در شرکت چگونه است؟
-
آیا چیز خاصی وجود دارد که برای مرحله بعدی آماده کنم؟
پرسیدن نشان می دهد که شما علاقه واقعی به شرکت دارید. همچنین به شما کمک می کند تعیین کنید که آیا شرکت با آنچه شما به دنبال آن هستید مطابقت دارد یا خیر.
2. مصاحبه فنی اولیه یا صفحه نمایش تلفن
این یک مکالمه فنی است که از 45 دقیقه تا 1 ساعت طول می کشد.
در این مصاحبه، شما جفت با چند توسعه دهنده
این احتمال وجود دارد که با مشکل بزرگی مواجه شوید که کل مصاحبه طول بکشد. یا حداکثر سه سوال کوچکتر.
اگر برای موقعیت دفتری درخواست می دهید، باید روی HTML، CSS و جاوا اسکریپت تمرکز کنید.
همچنین ممکن است در الگوریتم ها و ساختار داده ها مشکل ایجاد شود.
منابع برای غواصی عمیق تر:
1. GreatFrontEnd: برای مصاحبه برای مشاغل مقدماتی.
2. NeetCode: برای الگوریتم ها و ساختارهای داده.
3. LeetCode: برای مشکلات خاص شرکت هایی که درخواست می دهید.
- Livro: Cracking the Coding مصاحبه از Gayle Laakmann McDowell.
3. آزمون عملی یا ورزش را در خانه انجام دهید
این تست فنی است که در خانه انجام می دهید.
شرکت به شما یک مهلت می دهد و تمام الزامات پروژه را برای شما ارسال می کند.
در این نوع پروژه دو گزینه وجود دارد:
-
شرکت آن را با یک پشته خاص درخواست می کند.
-
شما این آزادی را دارید که پشته مورد نظر خود را انتخاب کنید.
نکات تا حدودی به نوع آزمون بستگی دارد.
اگر یک پشته خاص است، مطمئن شوید که با شیوه های بازار به روز هستید.
به عنوان مثال، اگر یک برنامه React است، استفاده از Nextjs یا Vite را به عنوان چارچوب/ابزار انتخاب کنید ساختن. TypeScript نیز رایج است. برای آزمایش، از Vitest/Jest، React Testing Library و Playwright استفاده می کنم.
اگر آزادی انتخاب دارید، انتخاب های معقولی داشته باشید. از ابزار مناسب برای کار استفاده کنید.
به عنوان مثال: اگر یک برنامه AI/داده است، پایتون انتخاب خوبی است. برای وب جلو، اکوسیستم جاوا اسکریپت بیشترین استفاده را دارد. پس زمینه؟ Python، Node، Ruby، Go، چندین گزینه.
نکته مهم این است که بدانید چگونه همه انتخاب های خود را توجیه کنید.
چند نکته در مورد اینکه چگونه در این مرحله برجسته شوید:
-
الزامات و هرگونه سوالی که ممکن است داشته باشید را روشن کنید. پس از خواندن مشخصات، اگر سوالی دارید بپرسید. اجازه ندهید هیچ شک و تردیدی تا پس از زایمان باقی بماند.
-
زمانی را به مستندسازی اختصاص دهید. چگونه اپلیکیشن خود را اجرا کنیم؟ آیا روی برخی از زیرساخت ها میزبانی می شود؟ از چه روش هایی برای آزمایش استفاده کردید؟ این نوع اطلاعات را در README قرار دهید.
-
نمودارهایی از معماری خود تهیه کنید. اطلاعات، جریان های کاربر، یا شاید مدل داده شما. از هر چیزی که نیاز دارید استفاده کنید تا مشخص کنید رویکرد شما چه بوده است.
-
اگر وقت دارید، موارد قابل تحویل اضافی ایجاد کنید که ممکن است بازبین را تحت تأثیر قرار دهد. مثال ها: یک برنامه frontend؟ انیمیشن هایی بسازید که باعث شود کاربر احساس جدیدی را تجربه کند. پس زمینه؟ توضیح دهید که چگونه سیستم را قابل مشاهده می کنید. مردم را غافلگیر کنید
4. مصاحبه در محل / مصاحبه در محل
آخرین مرحله قبل از پیشنهاد، چیزی است که ما در زبان های خارجی توسعه دهنده می نامیم. مصاحبه در محل.
می تواند در یک روز باشد یا به روزهای بیشتری تقسیم شود. به خصوص زمانی که مراحل زیادی وجود دارد.
آنها می توانند انواع مختلفی از مصاحبه ها باشند که در ادامه در مورد آنها صحبت خواهیم کرد.
اگر می خواهید بدانید که مراحل چه خواهد بود، توصیه می کنم از استخدام کننده بپرسید.
هر چه سن شما بیشتر باشد، تاکید کمتری بر مراحل برنامه نویسی می شود. رفتاری و طراحی سیستم مرتبط تر شود.
الگوریتم ها و ساختارهای داده
یکی از پایه های محاسبات الگوریتم ها و ساختارهای داده است.
بله، اینها مشکلاتی هستند که اغلب در زندگی روزمره ما استفاده نمی شوند.
اما، بله، دلیلی وجود دارد که چرا شرکت ها این نوع مشکل را می پرسند.
دانشی است که قبلاً وجود داشته است دهه ها. و تا به امروز همچنان مرتبط است.
بله، ممکن است روزانه با آنها ارتباط مستقیم نداشته باشید.
اما آنها، بله، در سیستم هایی که ما استفاده می کنیم وجود دارند.
به شبکه های اجتماعی فکر کنید که روزانه میلیاردها کاربر از آن استفاده می کنند.
روش کارآمد ذخیره سازی داده ها در مورد ارتباطات بین افراد یک مثال کلاسیک از استفاده از نمودارها است.
حال، بیایید فرض کنیم شما یک سیستم توزیع شده دارید. و شما می خواهید تعادل را بین گره های مختلف در سیستم خود بارگذاری کنید. چه الگوریتم ها و ساختارهایی در اینجا مرتبط هستند؟ صف ها، درخواست کتبی ه کمترین اتصالات به ذهن می رسد.
بنابراین، ممکن است از این ساختارها در زندگی روزمره خود استفاده نکنید.
اما دانشی که آنها به ارمغان می آورند چیزی است که امتحانش را پس داده است.
با آن کنار، بیایید در مورد نکات صحبت کنیم.
مشکلات الگوریتم و ساختار داده در مورد تشخیص الگو هستند.
با حل مشکلات بیشتر، این الگوها واضح تر می شوند.
بنابراین وقتی مشکل جدیدی می بینید، سعی کنید به این فکر کنید که چه الگوهایی را می توان برای آن اعمال کرد.
بیایید فرض کنیم باید مسیری را در نوعی شبکه یا گراف پیدا کنید. احتمالاً مشکلی در استفاده از BFS یا DFS وجود دارد.
یا اینکه شاید شما باید مقداری را محاسبه کنید زیر آرایه یا رشته فرعی. استاندارد از پنجره کشویی باید مفید باشد
همچنین به یاد داشته باشید که استدلال خود را بیان کنید. اگر سوالی دارید بپرسید.
همچنین چند تست case بنویسید که می توانید در انتهای کد خود اجرا کنید. سعی کنید به پتانسیل فکر کنید موارد لبه که ممکن است اتفاق بیفتد
امکانات اضافی:
1. NeetCode: برای الگوریتم ها و ساختارهای داده.
2. LeetCode: برای مشکلات خاص شرکت هایی که درخواست می دهید.
- Livro: Cracking the Coding مصاحبه از Gayle Laakmann McDowell.
منابع در اینجا همان منابعی است که قبلاً در مصاحبه فنی درباره آنها صحبت کردیم.
برنامه نویسی جفت
این یک نوع مصاحبه است که سعی می کند نحوه کار روزانه شما با شخصی را شبیه سازی کند.
مهمترین درس در اینجا ارتباط است. نشان دهید که فردی هستید که به کدی که می نویسید اهمیت می دهید. به ویژه در مورد شخصی که بعداً آن را خواهد خواند.
به یاد داشته باشید که کد بسیار بیشتر از نوشته شده خوانده می شود.
احساس می کنم این را اساساً در هر مصاحبه تکرار می کنم.
اما به طور جدی، ارتباط در اینجا بسیار مهم است. مانند تمام مراحل دیگر. 😅
به خصوص اگر یک موقعیت توسعه دهنده در کشورهای خارجی باشد. وقتی با زبان دیگری ارتباط برقرار می کنید، همه چیز کمی دشوارتر می شود.
بنابراین، توصیه من این است که هر زمان که احساس سردرگمی کردید، نفس عمیق بکشید.
به او بگویید که اگر لازم است کمی فکر کنید. اما اگر ممکن است، بزرگ فکر کنید. اجازه دهید مصاحبه کننده شما استدلال شما را بفهمد.
مراقب باشید خیلی سریع صحبت نکنید. این سختی من تا امروز است که سعی کردم آن را بهبود بخشم.
اما گاهی اوقات که عصبی می شوم، شروع به تند شدن می کنم و سریع صحبت می کنم. و به دلیل لهجه ام، درک انگلیسی من ممکن است دشوار باشد.
بنابراین توصیه می کنم همیشه به تنفس خود توجه کنید. برای اینکه در صحبت های خود عجله نکنید.
منابعی که می تواند کمک کند:
- انجام دادن پروژه های جانبی. اگر در اوقات فراغت خود از برنامه نویسی لذت می برید، به نظر من این یکی از بهترین راه ها برای یادگیری است.
2. GreatFrontEnd: ذکر مجدد GFE. من فکر می کنم این یک پلت فرم عالی برای تمرین مشکلات جلو است.
- با یک دوست تمرین کنید! اگر کسی باشد که برای مصاحبه نیز تمرین کند، به نظر من این درس بزرگی است.
طراحی سیستم / طراحی سیستم
این مصاحبه ها مورد علاقه من است.
این مرحله ای است که برای هر مهندس نرم افزار بسیار مرتبط است. توسعه دهندگان در کشورهای خارجی یا در برزیل.
توانایی شما در طراحی یک سیستم را نشان می دهد. تجزیه و تحلیل کنید که گلوگاه شما چه خواهد بود. برای حل یک مشکل، معماری های مختلف را ارزیابی کنید.
دوست دارم این مصاحبه را یک سفر بدانم.
سفری که در آن هدف نهایی شما رسیدن به یک راه حل است. این کار با مشارکت مصاحبه کننده شما انجام خواهد شد.
در اینجا اغلب پاسخ صحیحی وجود ندارد. یکی از دلایل اصلی دشوار بودن توسعه نرم افزار این است که هیچ راه حلی وجود ندارد که همه چیز را حل کند.
همه چیز در مورد است مبادلات.
برای هر مشکل فنی پیچیده، همیشه چندین راه حل وجود خواهد داشت.
آنچه مهم است این است که بدانید چگونه در مورد رویکردهای ممکن مختلف بحث کنید.
مطمئن شوید که تمام الزامات پروژه را روشن کرده اید. کاربردی و غیر کاربردی.
با مصاحبه کننده خود کار کنید تا دامنه پروژه را درک کنید. این یک مصاحبه با زمان محدود است.
اغلب مصاحبه کننده شما می خواهد تمرکز شما را روی بخش خاصی از سیستم ببیند.
پنج اصل برای یک پروژه نرم افزاری وجود دارد که باید از آنها آگاه باشید:
-
نیرومندی
-
مقیاس پذیری
-
کارایی
-
توسعه پذیری
-
تاب آوری
هنگامی که شما یک سیستم می سازید، این ها قسمت های اصلی هستند که می توانید مشکلات را پیدا کنید. ببینید طراحی شما در هر یک از آنها چگونه رفتار می کند.
منابع مشاوره:
-
Livros: System Design Interview 1, 2 by Alex Xu, Sahn Lam. طراحی برنامه های کاربردی داده فشرده توسط مارتین کلپمن.
-
وبلاگ های مهندسی سازمانی
-
کانال YouTube ByteByteGo را انجام دهید.
ارزش ها و مصاحبه رفتاری
به همراه مصاحبه از طراحی سیستم، این نیز یکی از مراحل مورد علاقه من است.
این مرحله ای است که در آن شما همچنین شانس مصاحبه با شرکتی را دارید که می خواهید در مورد آن کار کنید.
با سوالات آماده بیایید
به خصوص اگر این اولین مصاحبه شما به عنوان یک توسعه دهنده در کشورهای خارجی باشد. ممکن است در مورد فرهنگ شک داشته باشید، که ممکن است با آنچه شرکت شما در برزیل است متفاوت باشد.
این فرصتی است برای شما نیز برای خودنمایی. در مورد پیروزی های گذشته خود صحبت کنید. در مورد اینکه چگونه توانستید تیم خود را به روشی مثبت تحت تأثیر قرار دهید.
با این حال، چیزی که مهم است به خاطر بسپارید این است که به ندرت وجود دارد موفقیت مطلق موفقیت اغلب با برخی شکست ها و گام های اشتباه در مسیر به دست می آید.
در مورد این لغزش ها صحبت کنید. اجازه دهید مصاحبه کننده شما ببیند که این یک مورد واقعی است. متأسفانه ما در دنیای مهندسی نرم افزار افسانه های زیادی نداریم. ما مشکلات را حل می کنیم، اما به این فکر می کنیم که چه کاری می توانیم متفاوت انجام دهیم.
این دیدگاه را به مصاحبه کننده خود بیاورید. اجازه دهید او ببیند که چگونه به گذشته خود فکر می کنید.
منابع:
- کانال بدون یوتیوب A Life Engineered.
2. راهنمای مصاحبه فنی.
- روش STAR از آن به عنوان چارچوبی برای شکل دادن به داستان های خود استفاده کنید.
5. پیشنهاد
تبریک می گویم برای رسیدن به اینجا! 🎉 🎉 🎉
بله، پیشنهاد آخرین مرحله است! اما هنوز کارهایی وجود دارد که می توانیم در اینجا انجام دهیم تا آن را بهتر کنیم.
این مقاله در حال طولانی شدن است، بنابراین من پیام اصلی را می گویم: درباره حقوق خود مذاکره کنید.
سه افسانه در مورد مذاکره وجود دارد:
-
“اگر بخواهم مذاکره کنم، پیشنهاد من لغو خواهد شد”
-
“مذاکره باعث می شود که من کوچک به نظر برسم”
-
“کسی پول کمتری به دست خواهد آورد اگر من بیشتر به دست بیاورم”
هیچ کدام از این جملات درست نیست.
با مذاکره در مورد حقوق خود چیزی از دست نمی دهید.
گاهی اوقات، شما حتی می توانید برنده شوید. زیرا ارزشی را نشان می دهید که واقعاً فکر می کنید می توانید به شرکت اضافه کنید.
در اینجا خلاصه خوبی از قوانین اصلی مذاکره حقوق ارائه شده است.
ملاحظات نهایی
فرآیند مصاحبه را خیلی جدی نگیرید.
طرد شدن طبیعی است. این به این معنی نیست که شما مهندس بدی هستید. یا اینکه هرگز نخواهید توانست در کشورهای خارجی توسعه دهنده شوید.
فرآیندهای انتخاب را به عنوان فرصتی برای صحبت با افراد جدید در نظر بگیرید.
به مشکلات آنها علاقه نشان دهید. تجربیاتی که فکر می کنید ممکن است مرتبط باشد را به اشتراک بگذارید.
در طول مسیر فناوری های جدید را بیاموزید. موارد مهندسی جدیدی را که نمی دانستید کشف کنید. حوزه های مختلف چالش های فنی متفاوتی دارند.
علاقه واقعی به شرکت داشته باشید. فعالانه گوش کنید آنچه که مصاحبه کنندگان به شما می گویند چه چیزی آنها را نگران می کند و چه چیزی آنها را تحریک می کند.
همدلی را تمرین کنید. خود را جای آنها بگذارید و سعی کنید بفهمید آنها به دنبال چه هستند.
کل این فرآیند را فقط به عنوان یک مورد در نظر بگیرید جستجو در RPG عظیمی که زندگی است. حتی اگر پاداش بدهد یا شکست بخورد، باز هم تجربه کسب خواهید کرد.