حسان امینی لو
حسان امینی لو
خواندن ۱۶ دقیقه·۱ سال پیش

سوالات پر تکرار جلسات مشاوره ADPList در مورد Front-end

توی پست قبلی که راجع به گزارش ۱۰۰ جلسه منتور شیپ توی ADPList بود، برداشت خودم رو اومدم و اشاره کردم که حتما توی یه مطلب جداگانه میام و سوالاتی که زیاد تکرار شدن رو میگم.

و خب حالا اینجاییم! قبلش بگم که این سوالات در عمومی ترین حالت ممکن هستند و توضیح من راجع به این سوالات هم در عمومی ترین حالت ممکنه! پس شرایط خودتون رو هم توشون در نظر بگیرید.

یادتون نره تمام اینا تجربیات منه، قطعا جواب ها قطعی نیستن، برای همین حتما با دیگران هم مشورت کنید.


رزومه من خوبه؟

اینکه رزومه ای که دارید خوبه یا نه رو من نمیتونم بگم واقعا! من خودم نیاز دارم یه نفر بیاد رزومه من رو ببینه و کمکم کنه برای اصلاحش. ولی چیزی که خیلی میدیدم توی رزومه ها چند تا مورد بود که بهشون اشاره میکنم.

  • اول اینکه پروژه هایی که میذارید تو رزومه تون رو تا جایی که میتونید منحصر به فرد کنید! این پروژه ها باید با هدفی خاص انجام شده باشن. توی هر کدوم از این پروژه ها شما باید یک چیز جدید رو یاد گرفته باشید، پس توی قسمت توضیحات پروژه ها حتما بنویسید که چه چالش هایی داشتید و چطور اونها رو حل کردید.
  • اشاره کنید توی هر پروژه با چه ابزار ها و تکنولوژی هایی کار کردید، لیست همه تکنولوژی ها رو فله ای نریزید تو رزومه تون. اون ها رو به هر کدوم از تجربیاتتون Assign کنید. از این طریق به خواننده رزومه تون کمک می‌کنید که بهتر بتونه تشخیص بده که هرجا چه کار داشتید می‌کردید.
  • از گذاشتن پروژه هایی که همه میذارن تو رزومه شون پرهیز کنید، پروژه Todo و آب و هوا و وب سایت شخصی و وب سایت فروشگاهی و ... اینا تو همه رزومه ها هست. پس اگر من کارفرما باشم تابحال حداقل ۲۰ تا دیگه رزومه عین مال شما دیدم پس فایده ای نداره.
  • در مورد قالب و ساختار کلی رزومه تون حتما با یک نفر که توی کار جذب و استخدام یا منابع انسانی هست مشورت کنید، ازشون کمک بخواید که ساختار رزومه تون رو بهتر کنید.
  • از ابزار هایی مثل ChatGPT عاقلانه استفاده کنید و نه کورکورانه
  • از آوردن درصد و ستاره و امثال اینها کنار مهارت هاتون پرهیز کنید، مهارت های شما چیزی نیستن که بتونید اونا رو اندازه گیری کنید

در آخر خیلی روی رزومه تون حساسیت زیادی به خرج ندید، تنها کاری که رزومه براتون قراره انجام بده اینه که براتون یه وقت مصاحبه بگیره. رزومه شما براتون کار رو قرار نیست بگیره! همه اتفاقات بعد از مصاحبه میوفته.

اگر هم دوست دارید میتونید ویدئو های نیما رو ببینید که لینکش اینجاس.

کارآموزی. برم؟ نرم؟

کارآموزی اگه در جای درست باشه خیلی هم خوبه و فرصت یادگیری بسیار خوبی هم داره. ولی اینکه بخواید راجع به این فکر کنید که برید یک جایی با اسم کارآموزی، کار های مسخره بدن دستتون و خبری از حقوق هم نباشه اصلا انتخاب عاقلانه ای نیست.

از طرفی این شرایط خیلی ایده آل هست. شرکتی که هم فرصت کارآموزی رو فراهم کنه و هم یادگیری خوبی داشته باشه و هم حقوق و مزایاش رو پرداخت کنه خییلی خیلی کم پیدا میشه.

اینجا هر ۲ طرف (هم کارفرما و هم کارجو) حق دارند. چون اگر شرکتی یا مجموعه ای بخواد شما رو به عنوان کارآموز استخدام کنه،‌ اگر هزینه مالیش رو در نظر نگیریم، هزینه زمان و انرژی انسانی که برای رشد شما صرف میشه همچنان وجود داره و بیاید قبول کنیم که هر شرکتی حاضر به اینکار نیست. از طرفی ممکنه شما بعد از گذشت ۶-۷ ماه که شرکت روی شما سرمایه گذاری کرده موقعیت بهتری پیدا کنید و بخواید مجموعه رو ترک کنید. این یعنی شرکت روی کسی سرمایه گذاری کرده که منفعتش هم برای خودش نیست. حالا اگر بخواد با شما قرار داد سفت و سخت چند ساله ببنده هم که شما قطعا تن به اون قرار داد نمیدید.

ولی چه کنیم؟

  • اگر جایی با شرایط ایده آل سراغ دارید که میتونید برید، که خیلی عالیه!
  • اگر میتونید با شرایط کار کردن بدون حقوق کنار بیاید و مشکل مالی ندارید، میتونید به کارآموزی فکر کنید اما به شرطی که فرصت یادگیری خوبی داشته باشید یا برای خودتون این موقعیت رو بسازید. پس کارآموزی بدون حقوق و بدون امکان رشد کردن = وقت تلف کردن
  • اگر جایی که فرصت کارآموزی داره بهتون میده از شما سفته و مدارک برای ضمانت میخواست، عمیقا راجع بهش فکر کنید که بتونید تصمیم درستی بگیرید.
  • اگر فرصت کارآموزی براتون به هیچ طریقی وجود نداشت،‌ به چندجا که دوست داشتید اونجا کار کنید (حتی به رایگان) پیام بدید و سعی کنید با منابع انسانی شون یا تک لید شون صحبت کنید. شاید به شما تونستن این فرصت رو بدن.

در نهایت اگر هیچ جوره نشد، سعی کنید با استارتاپ هایی که داخل شتابدهنده ها مستقر هستند ارتباط بگیرید. شانس اینکه اونا شما رو تو تیم خودشون راه بدن خیلی بالاست.

چرا بعد این همه مصاحبه، نتیجه نمیگیرم؟

ممکنه شما مشکل رزومه نداشته باشید ولی بعد از مصاحبه ها ریجکت میشید. این موضوع دلایل خیلی زیادی میتونه داشته باشه. اول از همه مثبت نگر باشید،‌ خیلی وقت ها مشکل اصلا شما نیستید. صرفا شما برای اون موقعیت مناسب نبودید! شرکت دنبال یک نفر بود که با شرایط خودش همخوان باشه و شما با اون شرایط مطابق نبودید. همش فنی نیست. بعضی وقت ها ممکنه شما از نظر فرهنگی با شرایط اونجا سازگار نبودید. مثلا تصور کنید که شما سیگار می‌کشید ولی هیچکدوم از افراد شرکت سیگاری نیستن (من یه بار دقیقا برای همین یه جا رد شدم). یعنی میتونه دلایل به همین سادگی باشه.

از این گذشته، توی جلسه مصاحبه سعی کنید تا جای ممکنه بهترین نسخه خودتون باشه. اشتباه نکنید، منظورم این نیست که ادا در بیارید، منظورم اینه که در عین صداقتی و تواضع سعی کنید خودتونو به بهترین شکل ممکن ارائه بدید.

یه سری نکات خیلی کوچیک هست که سعی کنید رعایت کنید،‌ مثلا سر وقت سرجلسه حاضر بشید، خودتونو نسبت به کاری که براش اپلای کردید مشتاق نشون بدید، لبخند بزنید، چیزی که بلد نیستید رو خیلی ساده بگید بلد نیستم! یا نمیدونم! هیچ اشکالی نداره. در کل سافت اسکیل!

بعد هم کلا سعی کنید خیلی عمیق مباحثی که مورد نیاز هست رو یاد بگیرید. حفظ نکنید، یاد بگیرید.

چه نمونه کار هایی انجام بدم بهتره؟

یکی از پر تکرار ترین سوالات همینه، چیزی که میتونم راجع به این بگم اینه همون پروژه های کلیشه ای رو انجام ندید (اپلیکشن Todo و آب و هوا و ...)

سعی کنید این پروژه های تستی کار هایی باشن که

  • شما رو به چالش بکشن
  • با یک هدف خاص انجام بشن - مثلا تجربه استفاده از zustand یا socket یا extensions و ...
  • کار کنن واقعا و یه کاری انجام بدن - اینطوری نباشه که ناقص انجام شده باشن و یا یه کار مسخره انجام بدن
  • یه مساله دنیای واقعی رو حل کنن
  • تکنولوژی های عجیب و غریب و کم کاربرد توشون استفاده نشده باشه که توی هر ۱۰۰ تا پروژه واقعی فقط یه بار به درد بخوره. نمونش کار های جذابی که با three.js انجام میشه ولی تو واقعیت کاربردش خیلی خاص و محدوده

اگه شما پروژه تستی پیشنهادی دارید حتما توی کامنت ها بگید و کمک کنید به کسایی که دنبال ایده میگردن.

چطور تست نویسی رو یاد بگیرم؟

باور کنید، مخصوصا اوایل مسیر کار حرفه ای تون، هیچکس از شما انتظار نداره که تست نوشتن بدونید، حتی شاید بگم تو سطوح بالاتر هم شرکت هایی که این موضوع توی فرایند پیاده سازیشون جا افتاده باشه هنوز اونقدر زیاد نیستند. این اتفاق خوبی نیست و من تاییدش نمیکنم ولی طبق تجربه ام میگم که تست چیزی نیست که شما باید نگرانش باشید.

ولی اگر اصرار دارید که تست نوشتن یاد بگیرید، بذارید بهتون یه چیزی بگم و خیالتون رو راحت کنم. کلا تست نوشتن چیزی نیست جز Assertion. یعنی چی؟ یعنی شما یه ورودی داری که اینو بدی به یه تابع/کامپوننت/هرچی انتظار یه خروجی داری: یه عدد، یه رشته، یه چیزی که فلان جور نمایش داده بشه.

اینکه چطور اینو انجامش بدی میشه سینتکس و تکنولوژی. چرایی تست رو یاد بگیرید. اینکه اصلا چرا نیازه که تست نوشته بشه؟ چی باید اصلا تست بشه و چرا؟

انواع تست ها و کاربرد هاشون رو یاد بگیرید. اینکه شما TDD توسعه بدید خیلی عالیه ولی شرایط شرکت و پروژه و ددلاین و تیم رو نمیشه نادیده گرفت.

پس به طور کل خیلی در مورد این موضوع سخت گیری نکنید. برید basic ها رو یاد بگیرید و بقیه اش رو تو مسیر یاد می‌گیرید کم کم.

این همه فرانت کار هست، ما شانسی داریم؟

به نظرم این سوال اساسا اشتباهه. اول اینکه این احساس شماست که فکر می‌کنید "این همه فرانت کار هست، حالا من چی کار کنم؟" (البته امیدوارم اینطور فکر نکنید). بعد اینکه حتی اگر اینطور باشه، به نظر من اگر شما از نظر فنی و سافت اسکیلی سطح خوبی داشته باشید شانستون از دیگران بالاتر میره. بنابراین نمیشه اول مسیر رو ببینید و بگید خب در مقابل این همه آدم شانسی ندارم پس مسیر رو ادامه نمیدم.

مثل این میمونه بگیم این همه سوپرمارکت هست چرا من باید یه سوپر مارکت دیگه بزنم؟ یا این همه کارواش داریم پس من چرا باید یه کارواش دیگه بزنم؟

شما برای رسیدن به هدفتون تلاش کنید. کاری به کار دیگران نداشته باشید. دنیا انقدر بزرگ هست که همه کاری برای انجام دادن داشته باشن و کسی بیکار نمونه. قبول دارم شاید بازار کار به اندازه گذشته خوب نباشه ولی دلیل نمیشه ما نا امید بشیم و رها کنیم.

برای اینکه شانستون بیشتر باشه، سعی کنید ارزش افزوده داشته باشید. مثال خیلی ساده اینکه چیز هایی رو بلد باشید که احتمال میدید دیگران بلد نباشن. مثلا Docker یا فرایند های CI/CD. اینکه چی بلد باشید بهتره رو شاید بهتر باشه خودتون کشف کنید ولی نکته داشتن یک یا چند چیز به عنوان ارزش افزوده است.

البته از حرفم برداشت اشتباه نکنید، مثلا پا نشید برید Three.js یاد بگیرید که کاربردش بسیاااار محدود هست. بله داشتن اون مهارت خیلی عالیه ولی چقدر به کار میاد؟ تو چندتا کسب و کار این تکنولوژی استفاده میشه؟ پس عاقلانه تصمیم بگیرید.

آینده کارمون چی میشه؟

جواب کوتاه اینه که کسی نمیدونه! ولی مگه چی میخواد بشه؟ یاد بگیرید تغییر کنید و منعطف باشید. بقیه چیزا خودشون حل میشن. تا زمانی که میتونید کاری که خوب بلدید رو انجام بدید و بابتش پول بگیرید، اینکارو بکنید. اگر نیاز شد تغییر کنید، خب تغییر کنید!

الگوریتم و ساختمان داده چقدر مهمه؟

برای چه کاری؟ ببینید موضوع الگوریتم و ساختمان داده از مباحث پایه ای نرم افزار ها هستند پس اهمیت بلد بودن این چیزا رو خودتون میتونید بفهمید. موضوع اینه که شما هدفتون از یاد گرفتن این چیز ها اینه که بخواید توی مصاحبه ها ازشون استفاده کنید، یا بخواید به عنوان برنامه نویس بهتری فعالیت کنید.

در هر دو صورت، یاد گرفتن این موضوعات خیلی میتونه مفید باشه. حالا ممکنه یکی بیاد بگه ما که فرانت کار می‌کنیم برای ما چه اهمیتی داره؟ اتفاقا این موضوع چیزی نیست که محدود به یک سبک کاری یا تکنولوژی باشه، توی هر زمینه ای که کار میکنید میتونه بهتون کمک کنه.

کمترین فایده ای که براتون داره همون مصاحبه ها هستند. بماند که اگر خوب درک کنیم این مطالب رو، قطعا روی کیفیت کارمون برای ارائه کیفیت بهتر هم بسیار میتونه برامون مفید باشه.

برای یاد گرفتنش هم من سرویس هایی مثل Leetcode و Codewars و Hackerrank رو پیشنهاد میدم. برای شروع جاهای خوبی هستن. کلی هم کتاب و مقاله و ... راجع بهش هست.

چه حقوقی رو درخواست بدیم منطقیه؟

باز هم یک سوال خیلی سخت! هیچ استانداردی برای این موضوع وجود نداره. یه سیاستی که میشه به خرج داد، مخصوصا اگه اول راه هستیم اینه که توپ رو بندازیم تو زمین طرف مقابل! ببینیم خودشون چه آفری میدن. همه شرکت ها برای نیرویی که میخوان استخدام کنن یه بودجه ای در نظر گرفتن. میتونید اینو بسپرید به خودشون حداقل تو تجربه های اولتون.

اشکالی نداره اگر با حقوق کمتر شروع به کار کنید. اما یادتون نره هیچ‌جا با حقوق خییییییلی کم کار نکنید. دیگه در کمترین حالت میشه همون حقوق وزارت کار. اگر شما حاضرید با ماهی ۲-۳ میلیون (خدای نکرده) کار کنید نه تنها به خودتون دارید ظلم می‌کنید بلکه با این شرایط به جامعه شغلیتون هم دارید صدمه می‌زنید.

کارفرمایی که عادت میکنه به نیروی کار ارزون، فکر میکنه همه با این قیمت کار میکنن. بنابراین اگه هدفتون کار کردنه یا حقوق منطقی پیشنهاد بدید یا کلا رایگان کار کنید خیلی سنگین تره از حقوق خیلی کم.

یه راه دیگه برای پیدا کردن حقوق منطقی اینه که پرس و جو کنید از دور و بری ها و دیگران ببینید با سطوح مختلف اونا شرایط کاریشون چطوری هست. یه رنجی میاد دستتون که تصمیم گیری رو راحت تر میکنه.

هیچوقت با کارفرما یا اون شرکت راجع به اینکه دیگران تو سطح شما چقد دارن میگیرن و رنج اونجا با بقیه جاها چقد اختلاف داره، بحث نکنید. این اصلا استراتژی خوبی برای مذاکره راجع به حقوق و مزایا نیست. تمرکز تون رو بذارید روی خودتون. شما چه چیزی دارید که کارفرما باید شما رو استخدام کنه؟ شما چه ارزشی خلق می‌کنید؟ تمرکز رو بذارید روی خودتون به جای توجه به شرایط بقیه جاها.

برای افراد با تجربه تر هم که خودتون بهتر میدونید که چقدر پیشنهاد بدید دیگه.

دیزاین پترن چی یاد بگیریم؟

کلا اینکه باید اینا رو یاد بگیرید یا نگیرید میشه صحبت کرد. اول به یک درک عمیقی از "چرایی" این موضوع برسید و بعد برید سمتش. صرفا اینکه دیزاین پترن یاد بگیرم که خفن تر بشم کافی نیست. شما باید برای استفاده از هر کدوم از این دیزاین پترن ها دلیل داشته باشید. نباید الکی over engineering کنید.

دیزاین پترن ها راه حل هایی هستند برای مشکلات یا چالش های رایج. اینکه از کدوم تو چه شرایطی استفاده کنید بستگی به این داره که چقدر تونسته باشید مشکل رو درست تشخیص بدید و با راه حل ارائه شده توسط دیزاین پترن ها مقایسه کرده باشید.

برای اینکه یک شمای کلی نسبت به همه شون داشته باشید، چندتا مطلب و ویدئو راجع به هر کدوم ببینید و بخونید که بهتر تو ذهنتون شکل بگیره.

چه دوره هایی ببینیم؟

دنبال چی هستید؟ برید سراغ یک چیزی که بهتر و راحت تر باهاش ارتباط برقرار می‌کنید. فرقی نمیکنه که چی باشه یا از کجا باشه. هر کسی یه طوری راحت تره. اون راحت تره رو برای خودتون پیدا کنید و همون رو پیش ببرید. پیشنهاد کلی من نسبت به این موضوع که کلا خوندن داکیومنت تکنولوژی ها و ... به طور مستقیم و رسمی هست و یاد گرفتن شون در حین کار.

ولی بازم اگه اصرار برای کورس دیدن و ... دارید. تو هر زمینه ای که کار میکنید، یه چرخ بزنید ۱۰۰۰ تا کورس و ... هست. هر کدوم رو چند قسمت ببینید، بعد ببینید با کدوم بیشتر حال می‌کنید. همونو ادامه بدید!

مهاجرت کنیم بهتر نیست؟

تصمیم برای مهاجرت یک تصمیم کاااملا شخصی هست و انتخاب یا عدم انتخابش به خودتون و شرایط خودتون بستگی داره. بنابراین هیچکس به جز خودتون نمیتونه بهتر به این سوال جواب بده.

طبیعتا ممکنه شرایط کاری تون خیلی متفاوت بشه نسبت به چیزی که الان دارید و هستید. این که بر کسی پوشیده نیست. نکته ای که باید حواستون بهش باشه اینه که تفکر های غلط رو بندازید دور. اینکه الان اونجا براتون فرش قرمز انداختن و میرید عشق و حال می‌کنید و ...

یا اینکه چون خیلی ها دارن میرن پس ما هم بریم. نه. راجع به چنین تصمیم بزرگی باید عاقلانه فکر کنید و تصمیم بگیرید.

چطور تو شرکت های بزرگ کار کنیم؟

من قبلا یه مطلب راجع به این موضوع نوشتم در مورد مصاحبه هایی که داشتم با این شرکت ها. اول به این فکر کنید که چرا می‌خواید یه شرکت بزرگ کار کنید. اگه صرفا داشتن اسمش به عنوان یک برند معتبر توی رزومه تون هست که باهاش بتونید بعدا مهاجرت کنید، چیزی که من دیدم این بوده که این موضوع ۵۰-۵۰ هست.

من خیلیا رو دیدم بدون داشتم این اسمای بزرگ رفتن و اوکی بودن. خیلی های دیگه هم با سابقه تو این شرکتا رفتن. نتیجه ای که من گرفتم از این موضوع این بوده که بیشتر از اینکه اون اسامی بزرگ توی رزومه تون شما رو ببرن، تجربه ای هست که دارید. حالا میخواد این تجربه توی اون شرکت بزرگ به دست بیاد یا نه.

از اینا که بگذریم، چیزی که من متوجه شدم شرکت های بزرگ به دنبالش هستن اینه که شما علاوه بر مهارت های فنی تون، بتونید خوب با تیم شون چفت بشید. بنابراین اگر توی مصاحبه هاشون هم رد شدید،‌ خیلی سخت نگیرید. ممکنه اونا دنبال فردی باشن که فقط با شما متفاوته، نه لزوما از شما بهتر باشه. مثلا من یادمه یه بار برای اینکه سیگار می‌کشم رد شدم! کلا No hard feelings

روی همون موضوع الگوریتم و ساختمان داده و ... تمرکز کنید. وقتی با پروژه های بزرگ طرف هستید همه چیز خیلی جدی تره. دیگه فضا برای اشتباه کمتر میشه. تعهد کاری یه اصل مهم میشه. ارتباط موثر با بقیه داشتن، خیلی پر اهمیت میشه. کار تیمی و فیدبک دادن و گرفتن و کلی سافت اسکیل دیگه.

پس کلا برنامه توسعه فردی تون رو جدی تر دنبال کنید. اگه تونستید واردشون بشید که خیلی عالیه! اگه نشد هم فدای سرتون.

سافت اسکیل هامون رو چطوری تقویت کنیم؟

میتونید کتاب بخونید. یه سری کتاب و پادکست که من خیلی معرفی میکنم برای این موضوع اینا هستن:

اگه شما هم چیزی میشناسید حتما معرفی کنید توی کامنت ها.

علاوه بر این ها، سعی کنید رفتار دیگران رو توی محل کارتون تحلیل کنید (توی ذهنتون). عواقب کار هاشون رو ببینید و درس بگیرید. چه از جنبه مثبت چه از جنبه منفی.

همینطور می‌تونید راجع به این موضوع با دوستان و همکاراتون هم مباحثه کنید! مثلا بشینید نیم ساعت راجع به یه شرایط خیالی صحبت کنید که مثلا چه کاری تو چنین موقعیتی بهتره. نظرات مختلف رو بشنوید و سعی کنید بهشون عمیقا فکر کنید.

بعد از یه مدتی نتیجه اش رو خودتون توی کار و رفتار و ... می‌بینید.

من رشته ام مرتبط نیست، این مهمه؟

هم آره هم نه. میتونم بگم که بیشتر بستگی داره. اینکه تو چه سطحی میخواید کار کنید یا تخصصی که میخواید برید سمتش چقدر نیاز به دانش عمیق اکادمیک داشته باشه.

من کمتر دیدم افرادی که رشته شون غیرمرتبط بوده ولی مثلا توی موضوع AI یا Data science یا Game development رفته باشن و موفق شده باشن. اگر هم بودن محدود تر بودن.

خیلی هارو هم دیدم که با وجود بی ربط بودن رشته شون به نرم افزار بسیار هم موفق عمل کردن.

دانشگاه در نهایت اینطوریا هم نیست که به شما هیچ چیز نده. دست کم بهتون یه base خوب میده که یه سری مسائل رو بهتر یاد بگیرید.

ولی به طور کل اگر بخوام تجربه ام و مشاهداتم رو بگم، میتونم بگم نه خیلی مهم نیست، گرچه اگر باشه خیلی میتونه مفید باشه.

چطوری سنیور بشیم؟

راجع به این موضوع من خیلی مفصل قبلا هم تو مطالب ویرگول هم توی لینکدین صحبت کردم. خلاصه بخوام اشاره کنم اینه که راهی مستقیم و سر راستی براش وجود نداره. پیشنهاد میکنم اون موارد رو مرور کنید.

البته اینا همه داستان نیستن، ولی میتونن نقطه خوبی برای شروع باشن.




در آخر، امیدوارم این مطلب بتونه کمک تون کنه. شرایط سختی هست و باید سعی کنیم به هم کمک کنیم. امیدوارم همه تون بهترین ها براتون رقم بخوره. اگه دوست داشتید میتونید از طریق لینکدین باهام در ارتباط باشید! مخلصیم.

soft skillsارزش افزودهکار
برنامه نویس از جلو
شاید از این پست‌ها خوشتان بیاید