بعد اینکه مطلب قبلی که نوشتم، مورد استقبال بی نظیری قرار گرفت که خیلی از دوستان به من پیام دادن و از من در مورد این پرسیدن که چطور میشه آماده بشیم برای این نوع مصاحبه ها؟ روی چه چیز هایی بیشتر تمرکز کنیم؟ چه مسیری رو پیش بریم؟
من خودم اصلا اوستا نیستم?، از کسی هم بیشتر نمیدونم! تا الان این سومین مطلب در مورد مصاحبه هست که دارم مینویسم ولی باور کنید اصلا آدمی نیستم که خیلی یه موضوعو بزرگش کنم. ولی حس میکنم این برای قشر زیادی از بچه های تازه کار مخصوصا خیلی دغدغه بزرگیه و دوست دارن اعتماد به نفس اینکار رو پیدا کنن و خب آشنا شدن با فضا و سوالات و ... میتونه کمک کنه.
پس بنابراین منم میخوام در حد ناچیزی که خودم یاد گرفتم اینجا به شما کمک کنم. اگه موضوعی از قلم افتاد تو قسمت کامنت ها بنویسید که اضافه کنم?
مطلب قبلی هم میتونید اینجا بخونید:
چقدر باید برای مصاحبه آماده باشم؟
آیا لازمه برای مصاحبه از قبل آماده بشیم؟ چقدر باید در مورد فلان مطلب بدونم؟ سوالات الگوریتمی مهم تره یا چی؟ خب اینا سوالایی هست که تو این مدت که از نوشتن مطلب قبل میگذره از من زیاد پرسیده شد. ببینید واقعیت موضوع اینه که هیچ جواب مشخصی برای هیچکدوم این سوالات وجود نداره! طبیعیه که شما اگه بیشتر برای مصاحبه آماده باشی بهتره! ولی اینکه دقیقا توی مصاحبه ها چه سوالاتی پرسیده میشه، اینکه بیشتر الگوریتمی هستن یا در مورد تکنولوژی ها و کتابخونه ها یا تسک تست میدن یا نمیدن و ... هر جا با جای دیگه فرق میکنه.
چیزی که من میدونم اینه که شما به عنوان یه برنامه نویس باید بهرحال آمادگی هر چیزی رو داشته باشی. معمولا شرکت های بزرگ تر و اسمدار تر، سوالاتشون از حل مسأله شروع میشه و ادامه پیدا میکنه.
چرا باید الگوریتم بدونم؟
من تخصصم فرانت-اند هست چرا باید الگوریتم بدونم؟ (اینم خیلی پرسیده بودن) چون یه نفر برنامه نویس باید دید حل مسأله داشته باشه فارغ از اینکه تخصصش چیه، شرکت ها هم چطور میتونن اینو بررسی کنن؟ خب با همین سوالات الگوریتم.
یه باوری توی ذهن همه وجود داره که این سوالات فقط به درد مصاحبه میخوره و تمام -- ولی به عقیده من این باور اشتباهیه. شما اگه روش حل یه مسأله رو یاد بگیری، از اون به بعد همه مسائل که شبیه اون باشن رو به همون روش حل میکنی، ولی ممکنه راه های بهتری هم وجود داشته باشه. حل کردن مسائل بیشتر ذهن تون رو ورزش میده و کمک میکنه علاوه بر اینکه برای مصاحبه ها آماده باشید، کدتون هم بهینه تر کار کنه، راحت تر و سریع تر مسائل واقعی که بهشون برمیخورید رو حل کنید و ...
یادتون باشه اصلی ترین مهارت یه برنامه نویس حل مسأله هست.
چطور مهارت حل مسأله ام رو تقویت کنم؟
مسأله حل کن!☺️ توی مطلب قبلی هم به این موضوع تا حدودی اشاره کردم ولی اینجا مفصل تر میگم. یه سری سایت و سرویس هستن که کارشون همینه. مثلا leetcode و codewars و hackerrank از نمونه های خارجی هستن و quera هم داخلیش.
شما تو یکی دو تا از اینا عضو باشید، نم نم شروع کنید به حل کردن مسائل ساده شون. از هفته ای ۱-۲ تا شروع کنید و اگه بتونید برسونید به روزی ۱-۲ تا مسأله بعد ۶ ماه خیلی خفن میشید. اینو من گارانتی میکنم.
من خودم از leetcode استفاده میکنم. پلن مجانی داره که محدود تره نسبتا، اگه تواناییش رو دارید نسخه premium بخرید که عالی میشه چون برای بعضی مسائل ویدئو حل مسأله هم داره که باعث میشه خیلی خوب یاد بگیرید.
از کجا شروع کنم؟
اول باید ببینی level خودت چیه؟ خودتو یه سنیور میدونی؟ مید هستی؟ جونیوری؟ تازه میخوای بری کارآموزی یا چی... وقتی هنوز تجربه زیاده نداری و جاهای مختلفی کار نکردی و خودت رو در اندازه یه intern و یا junior میبینی اصلا روی قسمت الگوریتم میتونی وقت نذاری یا خیلی کم روشون کار کنی.
برو سراغ تکنولوژی های حوزه تخصصیت (یا حوزه ای که میخوای متخصص بشی). فرانت؟ برو سراغ جاواسکریپت و React و تا جایی که میتونی خوب یاد بگیر شون. بکند؟ زبون مورد علاقه ات رو پیدا کن و حسابی یاد بگیرش و بعد برو سراغ یه فریمورک محبوب یا چیزی که الان تو مارکت زیاد میخوانش و تا جایی که میتونی سعی کن بیشتر ازش یاد بگیری.
میتونی مثلا سرچ کنی front end developer roadmap یا backend developer roadmap برات مسیر هاش رو میاره.
قدم به قدم میشه رشد کرد و یه تایمی بهرحال باید گذاشت. باید صبور باشی. از شرکت های کوچیک شروع کن و قدم به قدم برو سمت شرکت های بزرگ تر.
اگه مید یا سنیور هم هستی خودت بهتر میدونی که چند چندی، من از تو چیزی بیشتر نمیدونم.
آیا فقط مهارت های تکنیکال مهمه؟
نظر شخصیم اینه: مهارت های تکنیکال همیشه بعد از مهارت های نرم قرار میگیرن. چرا؟ چون شما بهرحال میتونی اون مسائل تکنیکال رو یاد بگیری ولی مهارت های نرم رو به این سادگی ها نمیتونی.
اخلاق کلاً مهم تره دیگه! یعنی من اگه با کسی مصاحبه کنم اولین چیزی که بهش توجه میکنم اخلاق طرف هست تا مهارت های فنیش. کسی که اخلاق خوب داشته باشه مهارت فنیش هم به مرور زمان خوب میشه.
یه آدم سنیور کسی هست که مجموعاً، هم اخلاقش حرفه ایه هم از نظر فنی قویه.
چه منابعی رو پیشنهاد میکنی؟
منبع مشخصی که وجود نداره چون برای هرکی یه جور کار میکنه. یکی کتاب میخونه، یکی باید تجربه کنه خودش، یکی از دیگران سوال میپرسه و ...
من میگم وقت بذار ببین تو زمینه تخصصیت، آدما دنبال چی هستن برو سراغ همون موضوع. تو اینترنت پره از متریال آموزشی فنی. فقط سرچ کن. عادت کن که خودت به خودت یاد بدی نه کس دیگه ای. منتور داشتن میتونه بهت مسیر بده و کمک کنه ولی توقع نداشته باش که همه چی رو لقمه کنه بذاره دهنت.
برای مهارت های نرم و اخلاق حرفه ای هم به نظرم، هم میتونی تجربه شون بکنی، یعنی وارد یه محیط واقعی بشی و نم نم یاد بگیری. حتی از رفتار دیگران درس بگیری. هم میتونی کتاب بخونی. من ۲ تا کتاب رو پیشنهاد میکنم که لینک دیجیکالا شون رو میذارم اینجا:
من از این دو تا کتاب خیییلی چیز یاد گرفتم و اتفاقا clean coder رو امین داره خلاصه اش رو قرار میده تو ویرگول که حتما بهش سر بزنید.
رزومم خوبه؟
این از اون سوالات سخت بود! من واقعا تو این زمینه تخصصی ندارم. تو اینترنت و لینکدین سرچ کنید کلی آدما رو پیدا میکنید که بهتون میتونن کمک کنن. از اونا حتما کمک بگیرید. طبق تجربه خودم:
یادتون نره که رزومه فقط باید باعث شه که باهاتون تماس بگیرن و تمام. رزومه قرار نیست براتون جاب آفر به همراه داشته باشه پس خیلی سخت نگیرید.
چند تا نکته هم اضافه کنم