
به عنوان اولین پستم میخوام درباره اتفاقی صحبت کنم که قدم اول مسیر شغلیم شد. هنوز ادامه داره، ولی تا همینجا هم روی مسیرم اثر بزرگی گذاشته.
بعد از سه سال تلاش نهچندان موفق برای یادگیری برنامه نویسی اندروید و کلنجار رفتن با درس و زندگی دانشجویی توی دانشگاه تهران، تابستون امسال برای پاس کردن واحد کارآموزی دانشگاه، مجبور شدم دنبال شرکت های نرمافزاری بگردم. حاصلش هم شد پیدا کردن یه شرکت کوچیک، توی شهر کوچیک خودمون، اونم توی شاخهای که هیچ شباهتی به چیزهایی که بلد بودم نداشت. طراحی سایت با Laravel!
و حالا میخوام درباره چیزهایی که توی یک ماه و نیم کارکردن توی این شاخه و این شرکت یاد گرفتم رو باهاتون به اشتراک بذارم.
وقتی کار توی اون شرکت رو قبول کردم، بزرگترین چیزی که حس میکردم، حس شکست بود؛ حس میکردم چند سال اخیرم هدر رفته. اینکه از چند ماه قبل از شروع دانشگاه، داشتم سعی میکردم برنامه نویسی اندروید رو یاد بگیرم و در نهایت به خاطر مشکلات شخصی و غیرشخصی و درس های دانشگاه( و البته نبود موقعیت شغلی توی شهرهای کوچیک)، مجبور شدم از صفر شروع کنم، به شدت اذیتم میکرد.
در نهایت با حال بد کار رو شروع کردم و با دنیای جالبی مواجه شدم؛ درگیری با کد های ساختار مند و تا حدی سخت زبان Java، کدهای به شدت راحت Kotlin، خودکار نبودن هیچ چیز در ++C، نفهمیدن Python و بقیه چیزهایی که در زمانهای مختلفی دانشگاه مجبورم کرده بود یادشون بگیرم. باعث شده بود به سطح جالبی از سازگاری برسم و هیچ مشکلی توی یادگیری رفیق جدیدم، آقای PHP نداشته باشم!
اگه شما هم جزو کسایی باشید که درسها رو انباشته میکنن (یا میکردن) برای شب امتحان، احتمالا به یک حقیقتی پی بردید؛ قدرت بیپایان ذهن تحت فشار ددلاین!
مثال های زیادی برای این قضیه وجود داره، مثلا همون جزوهای که شما توی سه روز نتونستید بخونید، توی یک شب کامل جمع میشه. مهمون سرزده که میاد، خونه که شبیه بازار شام بود، توی پنج دقیقه مثل دسته گل میشه.
وقتی که رفتم توی شرکت، سیل چیزهای جدیدی که باید یاد میگرفتم به سمتم سرازیر شد. اولین بارم نبود که کلی چیز برای یادگرفتن وجود داشت؛ بلکه اولین باری بود که زمان به شدت کمی برای یادگیریشون داشتم. وقتی به چتجیپیتی میگفتم برام برنامه ریزی فشرده انجام بده، در حداقلی ترین حالت چند ماه وقت میزاشت اما من فقط دو هفته وقت داشتم.
روزها مثل برق و باد میرفتن و دوره هایی که داشتم میدیدم هم انگار تمومی نداشت. بعد از تموم شدن دو هفته، شاید دوره ها تموم نشده بود، اما من بخش های اصلی هرچیزی رو یاد گرفته بودم که برای شروع، کافی و حتی بیش از مقدار مورد نیاز بود.
یکی از چیزهایی که بعضی از آدمها (مثل من) به شدت درگیرش میشن، ترس از شروع کارهاست. زمانی که من شروع کردم به یادگیری برنامه نویسی اندروید، دوره های مختلف جاوا رو دیدم، دوره های مختلف کاتلین رو شروع کردم، چندین دوره مختلف صفر تا صد اندروید رو شروع و تموم کردم و در نهایت نه چیزی بلد بودم نه نمونه کاری داشتم!
حاصل سه - چهار سال برنامه ریزی های مختلف برای یادگیری کدنویسی، رزومهای خالی و مهارتی در حد صفر بود و حاصل یک ماه و نیم تلاش برای یادگیری طراحی سایت، اینه که من میتونم خودم رو یک فولاستک جونیور معرفی کنم. تفاوتشون؟ فقط دست به کد شدن و زدن پروژههای واقعی.
زمانی که شروع به کدنویسی کردم، به ازای هر یک خط کد مجبور بودم چندین و چندبار یه سر به چتجیپیتی عزیز بزنم تا ببینم چرا چیزی که توی ذهنم کار میکنه رو نمیتونم توی سیستم پیاده کنم. اونم که هر جوابی که میداد یه باگ ریز داشت و من رو توی لوپ بی پایان سوال و جواب هایی میانداخت که به جواب نمیرسید، اما هرکدوم یه نکتهای داشت که بعدا به کار میاومد.
توی کتاب دینی دبیرستان، یه جملهای داشت که میگفت:
برای یادگرفتن طرز استفاده صحیح هر وسیله، باید به سراغ دفترچه راهنمای آن رفت. دفترچه راهنمای انسان نیز قرآن است.
به شخصه همیشه با این جمله مشکل داشتم چون روش یادگیری من همیشه فضولی کردن توی خود وسیلهها بود (انگلیسی بودن دفترچه راهنما هم مزید بر علت!). طبق عادت دوران طفولیت، پس از اینکه دستم به کد رسید و یادگرفتم که چطوری باید یاد بگیرم، رفتم سراغ فضولی در وسیلهها. اما کدنویسی، تنظیمات تلویزیون نیست که یه سری آپشن جلوت باشه و تو امتحانشون کنی و بفهمی چیکار میکنن؛ اینجا بحث بهترین روش برای انجام هرکار مطرحه. توی این دنیا (تا جایی که من یاد گرفتم) یا کدت نیاز به ریفکتور کردن و بازنویسی داره یا داری چرخ رو دوباره اختراع میکنی چون همیشه یکی قبل تو روش بهتری برای انجام این کار داره. بهترین کد و متد و فانکشن؟ اونی که سازنده این وسیله ساختتش. کجا میشه پیداش کرد؟ توی مستندات، داکیومنتها و دفترچه راهنما!
داکیومنتیشن یه ابزار، هم بهترین روش استفاده از اون ابزار رو در اختیارتون میذاره، هم پر از مفاهیم جدیدیه که یادگیریشون کلی شمارو توی مسیرتون جلو میاندازه. اگه مثال بخوام بزنم، وقتی من میخواستم با دیتابیس کار کنم، مجبور به کشتی گرفتن با SQL و پیچیدگیهاش بودم، تازه اگه صرفا یه جدول ساده و چند تا ستون جلوم بود. اگه خدای ناکرده با ارتباطات چند به چند سروکار داشتم هم که دیگه حس میکردم عذاب الهی نازل شده! ولی وقتی با داکیومنتیشن Laravel آشتی کردم، فهمیدم که یه چیزهایی به اسم ORM وجود داره که کار رو خیلی ساده تر از قبل پیش میبره (از morph نگم براتون). حالا درباره اینکه ORM چیه و چرا و چگونه؟ توی پستهای بعدیم مفصل توضیح میدم.
خلاصه اینکه هیچچیز جای مستندات رو نمیگیره. مستندات نهتنها بهترین روش استفاده از ابزار رو نشون میدن، بلکه پر از نکتههایی هستن که سالها تجربهٔ آدمهای دیگه پشتشه. پس اگر میخواید توی مسیر یادگیری جلو بیفتید، دفترچهٔ راهنما اولین جاییه که باید سراغش برید.
این تجربه که هنوز هم ادامه داره، برای من مثل یک نقطهٔ عطف بود؛ نشونم داد شکستهای قبلی واقعاً هدررفت نیستن، ددلاین میتونه دوست آدم باشه، یادگیری واقعی توی پروژه اتفاق میافته و بهترین منبع همیشه مستنداته.
از این به بعد قراره تمرکزم توی پست هام بیشتر روی یاد گرفتن و یاد دادن نکات برنامهنویسی باشه اما هر تجربهٔ جدیدی که به دست بیارم (چه توی مسیر کارآموزی، چه پروژههای شخصی) اینجا باهاتون به اشتراک میذارم.
شما تا حالا تجربهٔ تغییر مسیر یا شروع از صفر توی برنامهنویسی داشتید؟ چه درسی از مسیرت گرفتی که ممکنه به من یا بقیه کمک کنه؟ پیشنهاد برای بهتر شدن پستها چطور؟ برام توی کامنتها بنویسش.
اگه این مطلب برات مفید بود، خوشحال میشم لایک کنی تا بدونم ادامه دادن این مسیر ارزشمنده❤️