اگر شما هم یه برنامه نویس هستید احتمالاً پیش اومده که به اونها برخورد کنید که خودشون رو سنیور معرفی میکنن ولی در عمل خیلی جاهای کارشون میلنگه. این احساس ممکنه اثر دانینگ کروگر باشه و یا یه توهم. در هر حال به نظرم باید تعریف درستی از “سطوح مختلف تجربه” داشته باشد که بهتر بتونیم خودمون یا افرادی که باهاشون برخورد کنیم رو ارزیابی کنیم و لازم باشه هدفمند تر توی مسیر شغلیمون حرکت کنیم.

آروم باش
آروم باش

برای اینکه متوجه بشیم چی میشه یه نفر Senior باشه اول باید ببینیم Junior و Mid-level و Intern و … یعنی چی و ببینیم الان خودمون کجای کاریم.

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

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

معمولا بین ۶ ماه تا یک سال و نیم الی ۲ سال تجربه کار دارن. این زمانی که گفتم درست هم نیست، یعنی ممکن است یک نفر ۴ سال هم کار کنه بازم جونیور باشه یکی هم ۶ ماه کار کنه سطحش خیلی بیاد بالاتر.

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

زیاد دیدم که خیلی متکی به دوره های آموزشی یا معلم هستن.

برنامه نویس های میدلول اکثرا همون هایی هستند که خودشونو با سنیور ها اشتباه میگیرن! توی زمانبندی و برنامه ریزی اوضاعشون خیلی بهتر از جونیور هست و میشه روشون حساب کرد. دوباره توی طراحی و معماری سیستم های بزرگ نمیشه بهشون تکیه کرد. خیلی ممکنه درگیر مسئله اعتماد به نفس کاذب بشن که این بهشون خیلی هم ضربه میزنه. گروه های قبل می توانیدم بگیم یه جورایی دیگه تکلیفشون با خودشون روشنه و میدونن چه مسیری میخوان برن و روی چی عمیق بشن. بین ۲ تا ۳ سال سابقه کار دارن.


خب حالا که تقریبا با این سطح آشنا شدیم، احتمال میدم که براتون باید پیدا بشه که یک برنامه نویس Senior چه خصوصیاتی داره.

تجربه، حرف اول رو در میزان Senior بودن هر شخص میزنه، یه جورایی سنیور ها ستون ها و قهرمان های هر کسب و کار هستند. بعد از به دست آودن تجربه های زیاد خودشون هم میدونن که نمیدونن و تازه اول راهن برای همین معمولا متواضع هستن و سعی میکنن به بقیه تا جای ممکن کمک کنن. معمولا حداقل ۴-۵ سال سابقه کار حرفه ای دارن. بهترین مربی ها و منتور ها برای افراد جونیور و میدلول حساب میشن. میشه از این آدما خیلی چیز یاد گرفت. چه مهارت های برنامه نویسی، چه نوع برخورد با مسائل و تحلیلشون. نحوه خرد کردن پروژه و تقسیم کار و کنار آمدن با چالش ها و …

حالا ببینیم برای تبدیل شدن به یک برنامه نویس سنیور بشیم چه مسیری باید طی کنیم.

زمان

اولین نکته ای که خیلی مهمه زمان هست! اصلا نباید انتظار داشته باشید که مسیری که خیلی ها شاید توی ۵-۶ سال رفتن رو شما توی ۶ ماه طی کنید. پس زمان بدید. احتمالا توی کار به مشکلات زیاد بر میخورید

کار خوب را انتخاب کنید

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

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

سافت اسکیل

چیزی که کمتر بهش توجه میشه، مهارت های نرم (یا به قول Simon Sinek مهارت های انسانی) هست. حوزه مهارت های نرم خیلی بزرگه، ولی من اینجا به چندتاش اشاره میکنم.

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

مهارت حل مسئله

یکی از مهم ترین برنامه های یک برنامه نویس حرفه ای، حل مسئله است. علاوه بر حل مسائل الگوریتمی، باید این کار را انجام دهید که خوب تحلیل کنید، تمام جوانب مختلف کار رو بسنجید، کار رو خرد کنید. برای حل حل مسائل الگوریتم توصیه من leetcode هست. نیازی نیست بشینید ۲۴ ساعت پاش، ولی در هفته ای ۱-۲ تا حل کردن خیلی کمک می کند. معمولا روش حل این مسائل تکراریه، یه سری الگو هست که میتونید ازشون برای مسائل دیگه هم استفاده کنید.

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

دیدگاهتون رو نقد تر کنید

هر تکنولوژی، کتابخونه، دیتابیس، زبان برنامه نویسی و … رو نیازی نیست بلد باشید یا یاد بگیرید ولی خوبه که دیدگاهتون هم انقدر منعطف باشه که برای تغییر آماده باشید، هم بدونید هر تکنولوژی به درد چه کاری میخوره. اینطوری نباشید که از یک چیز که بلدید بخواید همیشه و همه جا استفاده کنید.

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

یاد بگیرید چگونه تیمی بازی کنید

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

یاد بگیر که خودتون رو بدید

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


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

اگر دوست داشتی امتیاز دادن یادت نره!