پیشنهاداتی به برنامه‌نویسان تازه‌کار

به مناسبت روز برنامه‌نویس، به دعوت داتین قصد دارم یک سری پیشنهاد به برنامه‌نویسان تازه‌کار داشته باشم، میخواهم به احمد ۱۳ سال پیش خط بدهم که برای پیشرفت شغلی‌ات چه نکاتی را باید در نظر داشته باشی.اول بگم که سبک این متن خیلی خودمونی خواهد بود، حتی ممکنه ازش لهجه اصفهانی رو هم دریافت کنین ?خوب یکم از خودم بگمقبل از دانشگاه (سال ۸۶) خیلی با برنامه‌نویسی آشنا نبودم و لذت نوشتن و ساختن چیزی رو حس نکرده بودم، پس میشه گفت شروع من با دنیای برنامه‌نویسی، اوایل سال ۸۷ بود.به جهت علاقه‌ام به مایکروسافت در آن زمان رفتم سراغ زبان سی‌شارپ و دات‌نت، که خوب انتخاب خیلی جالبی نبود (الان صدای اشخاصی که فن دات‌نت هستند در میاد?) کم کم لذت ساختن رو حس کردم و بعد از یک سال شروع کردم به ایده‌پردازی و اینکه خودم یه نفره استارتاپ هوا کنم! .....و هم اکنون در یک شرکت اروپایی به صورت ریموت به عنوان Backend Developer در حال توسعه و بهبود محصولی جذاب هستم.از آنجایی که تصویر خاصی ندارم برای کاور این پست، این عکس رو می‌گذارم ?مدتی هستش به صورت خوابیده کار میکنم، تجربه باحالی هستش ?چون داستان‌سرایی واسم سخته میخوام به صورت موردی یه سری پیشنهاد به برنامه‌نویسان تازه کار در این پست ارائه کنم، مثل چندتا توییت ?استارتاپ هوا کردنراستش رو بخواین به خاطر عملی کردن ایده‌ی ناب خودم در حوزه تجارت الکترونیک (تیکه به خودم) برنامه‌نویس شدم? فکر میکنم خیلی‌ها به همین دلیل برنامه‌نویسی رو شروع می‌کنند و عده‌ی خیلی کمی دقیقاً به اون چیزی که اول میخواستن رسیدن. شاید بشه گفت قسمت فنی یه ایده، ۲۰ درصد ماجرا هستش (بستگی به ایده داره) و بیشتر موضوع برمیگرده به بیزینس ماجرا و یه عالمه المان دیگه، پس شما اگه حتی بتونین قسمت فنی یه ایده رو به صورت کاملاً انفرادی هندل کنین در بهترین حالت ۲۰ درصد از کل رو پوشش دادین! من نمیگم سمت عملی کردن ایده‌های خودتون نرید، ولی با چشمان باز برید جلو ?پیشنهاد میکنم قبل از شروع کار بر روی ایده‌‌یتان، کتاب تست مامان رو بخونید و با چندین نفر مشورت کنین و صد البته دنبال همراه باشین، خیلی بعید هستش بتونین یه نفره به جایی برسین.واسه هر کاری ددلاین و برنامه داشته باشینداشتن ددلاین به شما کمک میکنه هزینه‌ی اقداماتی که انجام میدین رو سنجش کنید و از کمالگرایی شما جلوگیری میکنه. مثلاً میخواین یه ایده‌ی ناب استارتاپی رو به تنهایی عملی کنین، اگه ددلاین و برنامه نداشته باشین هی شاخه به شاخه میشین و در آخر کمال‌گرایی شما رو از پا درمیاره و هیچ موقع به چیزی که میخواین نمیرسین. داشتن ددلاین در هر کاری صادق هستش، از یادگیری یه زبان جدید بگیر تا عملی کردن یه ایده استارتاپی. مثلاً من واسه عملی کردن ایده استارتاپی خودم ددلاین خاصی نداشتم و به همین جهت رفتم سراغ یادگیری زبان Go و البته معماری مایکروسرویس? چرا ؟!‌ چون فکر میکردم این ایده حسابی مشتری پیدا خواهد کرد و باید سیستم جوابگوی این همه درخواست در ثانیه رو داشته باشه! (بماند که ایده به اجرا نرسید و یک مشتری هم پیدا نکرد ??)در دنیای تکنولوژی هیچ چیزی ته نداره، شما اگه قصد یادگیری زبانی رو داشته باشید میتونین دو سال وقت بگذارین و هی در اون عمیق بشین، ولی آیا این کار درستی هستش؟!حواستون به این نمودار باشهاحتمالا این نمودار رو بارها و بارها دیدین، ولی باز من میخوام یه نکته ازش بگم:تصویر از پست بلاگ TechRasaبه نظرم این نمودار ربطی به تجربه کاری شخص نداره، و برای هر فیلد جدیدی میتونه تکرار بشه، مثلاً خوده من در یه موردی باز میتونم برم شروع نمودار، بعد توی قله دچار جوگیری بشم و دوباره سیکل رو طی کنم! پس همیشه در نظر داشتن‌اش واستون سودمند خواهد بود.به طور کلی نکته‌اش اینه، وقتی به قله رسیدین جوگیر نشین، وقتی هم به دره رسیدین دلسرد نشین! همه در درون خودشون می‌تونن درک کنند که در اون فیلد کجای این نمودار هستند.هر چه سریع تر جذب یک تیم بشویددر بیشتر موقعیت‌های خوب کاری مهارت Team work ذکر شده، چرا؟ چون بعضی‌ها گرچه برنامه‌نویس خوبی هستند ولی نمیتوانند توی تیم نقش بگیرین و با سایرین در تیم اثر گذار باشند.من به این جمله باور دارم که میگه "انسان بنده‌ی عادت هستش"َ، اگر شما مدت زمان زیادی رو به صورت انفردای کار کنی، تمایل‌ات برای کار گروهی کمتر خواهد شد و خیلی واست سخت خواهد بود که چطوری با همکارت ارتباط بگیری. از آن جایی که بیشتر ما دنبال موقعیت مهاجرت هستیم، پیشنهاد میکنم هر چه سریع‌تر جذب یک تیم بشوید، حتی شده کارآموزی!کتاب >>>>> دوره‌آموزشی ویدیوییعمق اطلاعات در کتاب به مراتب بیشتر هستش، اگه اول راه هستید بهتره خودتون رو به کتاب عادت بدین تا ویدیو، چرا که کتاب شما را بیشتر تشویق میکنه تا شروع به کد زدن کنید تا ویدیو آموزشی. واسه خودم بارها شده کورس ویدیو آموزشی رو مثل سریال از اول دیدم تا ته، ولی هیچ موقع دست به کار نشدم ??‍♂️ این بدترین روش یادگیری هستش، چون چیزهایی که یاد گرفتین مثل الکل بعد از دو هفته از ذهنتون میپره و در بهترین حالت یه سری کلمه کلیدی واسه سرچ در آینده، به خاطر خواهید داشت.البته باید بگم ویدیو آموزشی که به صورت پروژه محور هستش میتونه حسابی به روند یادگیری شما کمک کنه، مخصوصاً وقتی که تازه با یه ابزار/زبان/فریم‌ورکی آشنا شدین، میتونین خیلی زیبا از اون طرف تقلید کنید و یاد بگیرید.روی هیچ چیزی تعصب نداشته باشید، تعصب شما رو کور میکنهیادم نمیره روز اول دانشگاه چندین ساعت با جدیت تمام با یکی از هم دوره‌ای‌هام بحث میکردم که لینوکس بهتره یا ویندوز ?سعی کنین همیشه اینو به خاطر داشته باشین هیچ چیزی مطلق/برتر نیست که بخواین روش تعصب داشته باشین، پشت بوجود آمدن هر زبان/تکنولوژی/فریم‌ورکی دلیلی بوده و حداقل چند ده هزار نفری ازش استفاده می‌کنن. پس اگه دلایل محکم نباشه آروم آروم از یادها میره و به تاریخ می‌پیونده، به همین سادگی. اینکه شما هر روز بیای بگی JS ? محض هستش، تاثیری در روند استفاده از اون نداره ? هر روز یه عده بهش امکانات جدید اضافه می‌کنند و از اون طرف TS میاد اوضاع رو واسه استفاده‌اش بهتر میکنه ?در کل میشه تعصب رو کنار گذاشت و به همه‌ی این تکنولوژی/زبان/... به دید ابزاری، واسه ✅ کردن تسک‌ها و البته ? در آرودن، نگاه کرد.زبان انگلیسیخیلی مشخص هستش که کل مطالب حوزه‌ی ما به انگلیسی کد گذاری شده و اگه مشکلی در درک مطلب داشته باشین نمی‌توانین از منابع به روز بهره ببرین، بهترین دوست شما هنگام کد زدن، گوگل هستش ? اگه به انگلیسی چیزی رو جستجو کنین مطمئناً به جواب خواهید رسید.در برنامه‌نویسی مثل هنرمندان رفتار نکنینقبل‌ترها در نظرم کد نوشتن، مثل ایجاد یک اثر هنری بود، ولی الان میگم کدی خوبه که در درجه اول خوانا باشه و تا جای ممکن magic ای نداشته باشه و در درجه دوم با Performance معقول کار کنه، همین ?پس مثل هنرمندان جوری کد ننویسید، که نفر بعدی نفهمه شما چی‌کار کردین، از مفاهیمی مثل abstraction سوءاستفاده نکنین.در سبک کد زدن و ساختار پروژه تقلید کنیدخودتون میدونین که دوباره چرخ رو اختراع کردن چقدر میتونه اشتباه باشه، وقتی در یک زبان/فریم‌ورکی تازه کار هستین بیشتر سعی کنین کدها و sample application های خوب گیت‌هاب رو مرور کنین، ببینید ساختار و سبک کد زدنشون چطوری هستش و ازشون تقلید کنید. با این کار پروژه‌ی شما برای سایرین چشم نوازتر خواهد بود و البته سعی و خطا نخواهید کرد تا به یک استایل مناسب برسید.به دنبال یک منتور باشیدبا وجود شبکه‌های اجتماعی پیدا کردن منتور خوب خیلی کار سختی نیست مخصوصاً در مراحل اولیه، افراد بسیاری هستند که به صورت رایگان حاضر هستند شما رو در مسیر شغلی‌یتان همراهی کنند، البته این رو در نظر داشته باشید که منتور قرار نیست مشکلی رو برای شما دیباگ کنه و یا مشکلات سیستم دیزاین شما رو حل کنه، منتور قراره در مسیر، یکم روشنایی ایجاد کنه که شما بتونین ایمن‌تر حرکت کنین.دنبال کار تیمی با چالش‌های فراوان باشیدبهترین تجربه‌ها در تیم‌هایی بوجود می‌آید که چالش‌های فنی زیادی داشته باشند، به دنبال شرکت‌هایی باشید که تعداد کاربران زیادی داشته باشند و یا در حال اسکیل باشند، میدونم پاس شدن فرآیند مصاحبه این شرکت‌ها ممکنه سخت باشه ولی ارزش اون رو قطعاً داره.گنجاندن ورزش در لایف استایلشما میتونین روزی ۸ ساعت کار کنین و فقط واسه موارد ضروری (دستشویی) از جاتون بلند بشین، بعد دوباره بعد از کار بشینین پای سریال/یوتیوب/وبگردی و خواب و دوباره روزتون رو به همین روش قبل ادامه بدین، کاری که خیلی از ماها میکنیم ?بعد از مدتی اگه به این روش زندگی کنین میفهمید که روز به روز ذهنتون خسته تر میشه چرا که تحرک نداشتین و به کوتاه نفس کشیدن عادت کردین، در این شرایط سطح اکسیژن خونتون میاد پایین و در اکثر مواقع ذهنتون شارپ نیست و یا زود خسته میشه. با ورزش کردن روزانه، میتوانین باگ این تحرک نداشتن رو حل کنین، طبق تجربه خودم ورزشی خوبه که ضربان قلبتون رو ببره بالا، مثل دویدن و یا رکاب‌زدن سریع.درسته سن یه عدد هستش، ولی مواظب روزمرگی باشیناینکه در چه سنی هستین و در کجای مسیر شغلی خود قرار دارید خیلی مهم نیست، مهم این هستش که دچار روزمرگی نشید، مثلاً برای سه سال در یک شرکتی گیر نکنید که بهترین نیروی اون خودتون باشین! در دنیای Tech اگر به دنبال پیشرفت شغلی/تکنیکی نباشید، آروم آروم از صفحه روزگار محو میشین و مجبور میشین در شرکت‌های سطح پایین روزها رو سپری کنین.دنبال عنوان نباشیدعناوین در رشته ما بشدت نسبی هستند، ممکنه شخصی ۱۴ سال تجربه کاری داشته باشه ولی در عمل خروجی به مراتب ضعیف‌تری از یه نفر با ۳ سال تجربه کاری داشته باشه، و یا کسی که به خودش میگه DevOps هستم هیچ دیدی از برنامه‌نویسی و دیتابیس نداشته باشه. پس زیاد دنبال این نباشید که به خودتون بگین من Senior هستم، کسی که رزومه شما رو میخونه تا حدود زیادی متوجه میشه که برای اون موقعیت میتونین گزینه‌ی مناسبی باشین یا نه.در کل عناوین شغلی در کار تیمی بعد از چند ماه کار، مشخص میشه و چیزی نیست که شما خودتون به خودتون برچسب بزنید، و صد البته کیفیت اون عناوین بر میگرده به سایز تیم و محصول اون شرکت، مثلاً شاید CTO یه تیم استارتاپی با یه Mid Level Developer در تیم بزرگ با محصول خوب برابری کنه.در آخر بگم که خوشحال میشم اگه نظری درباره این پست داشتین کامنت بگذارین ??