قسمت قبل این مقاله را از ( این آدرس ) مطالعه کنید .
… ]
… ]
مقدمه
خُب رسیدیم به اینجا که بعد از اینکه حوزه فعالیتم رو در برنامه نویسی پیدا کردم و علاقه مندی و ابزار مورد نیازمو مشخص کردم با استفاده از یک نقشه راه عالی شروع به یادگیری عمیق مفاهیم کردم (این موضوعات رو به صورت کاملا عملی در قسمت قبلی مقاله توضیح دادم) ، واقعا به سختی تلاش می کردم ، حتی گاهی تا روزی 14-15 ساعت پشت سیستم بودم ،کلی زبان برنامه نویسی و فریمورک و کتابخانه و تکنیک و تاکتیک ، باگ و دیباگ و تست و... یاد گرفتم ، به جرات میتونم ادعا کنم تکه خط کدی رو ننوشتم مگر اینکه بارها و بارها در موردش سرچ کرده باشم و بدون این که ندونم چیه و دقیقا چه کار میکنه ازش استفاده نکردم (خاصیت خوب کمالگراها ) ، برای تمرین شاید چند صدبار یه کانتر (شمارنده اعداد) نوشتم و پاک کردم ، شاید یک خط در میون پایه ثابت تمام کدها کنسول دات لاگ بود ، خلاصه خیلی خوب کدها رو متوجه شدم تقریبا میشه گفت کل اون مفاهیمی که توی لیست یادگیریم (نقشه راه ) بود رو ، یاد گرفته بودم تا اینکه اون روز ...
هر موفقیت بزرگی حاصل جمع یا حاصل ضربی از موفقیت های کوچک و درس هائی است که از شکست های کوچک می آموزیم. همان گونه که برای ساخته شدن یک ساختمان زیبا هزاران آجر باید دقیق و متناسب با یکدیگر چیده شوند و طبیعتا نمی توان تا قبل از طراحی نقشه و ساخته شدن طبقه اول به فکر ساختن طبقه دوم بود، در زندگی یک انسان هدفمند نیز اوضاع به همین شکل است. همان گونه که بهترین نقشه ساختمان اگر روی کاغذ باقی بماند اهمیت چندانی پیدا نمی کند، بهترین فکرها نیز تا وقتی از وجه تئوریک به حالت عملی مبدل نشوند ارزش چندانی نخواهند داشت. از جمله رازهای موفقیت انسان های موفق; کوتاه بودن فاصله اندیشه تا عمل آنها است. پس بهتر است با خود فکر کنیم که چگونه می توانیم در راستای اهدافمان اقدامات عملی انجام دهیم.
شروع
اون روز وقتی تیک آخر رو جلوی اون کتابخانه لعنتی زدم (اشک هایش رو از خوشحالی پاک می کند ) ، حس کردم یه فوق لیسانس دیگه گرفتم !
آری اینجانب آن روز ، مفتخر شدم دومین فوق لیسانس خودم را ، در رشته کدنویسی! گرایش باگ ابزار! از دانشگاه ذهنی خودم دریافت کنم !
قاعدتا باید از شادی در پوست خیش نگنجم ! ولی اصلا خوشحال نبودم !
حتما یه جای کار ایراد داشت ...
ولی آخه کجای کار ؟
دیوار ؟!! جان !! باید چه کار میکردم ! این فوق لیسانس رو هم مثل قبلی (اون یکی بخدا واقعی هست !) قاب کنم بگذارم روی دیوار اتاق ! تا هر وقت مادر از کنار آن ها عبور میکند قربان صدقه ی هوش ، زکاوت و استعداد پسر دلبندش برود !؟
نه واقعا ، چرا ، آخه ؟ مشکل چیه ؟
چرا حس خفن بودن ندارم ؟
اینجا چرا اینجوریه واقعا ، این چه مملکتیه ؟؟ همش تقصیر ...
نه نه واقعا این جا ربطی به مملکت نداره ، خب پس مشکل یه چی دیگه است ، ولی نمیدونم چی ...
واقعا چرا ناراحتم ..
واقعا چرا حالم بده ..
من که تمام چیزایکه بنظرم نیاز بود رو یاد گرفته بودم ، چرا اون معجزه اتفاق نیوفتاد !
واقعا چرا معجزه اتفاق نیافتد ؟
من معجزه مووووووخام ? (وی خود را لوس میکند تا شاید معجزه اتفاق افتد)
درد مشترک
باید کمی رُک صحبت کنم ... حقیقتا خیلی از چیزهای که الان یاد گرفتید در مورد برنامه نویسی خیلی از آدم های دیگه حتی بهتر از شما یاد گرفتن (حتی دو سه تا مدرک از شریف و امیرکبیر هم اضافه تر دارند ) ولی چرا اونا موفق نشدن !؟ بعد اونا موفق نشدن شما انتظار دارید موفق شید ؟ این سوال هم برای من مدتی پیش ، ایجاد شده بود ، واقعا چرا حالا که برنامه نویسی رو از منابع روز دنیا (نه منابع 800 سال پیش دانشگاهی ) و با علاقه خودم ( نه صبح زود به اجبار حضور و غیاب استاد ) یاد گرفته بودم ، باز چرا حس خنگی داشتم؟
واقعا مشکل اساسی چی بود ؟
من متوجه شدم مشکل اساسی بدبختی من و شایدم شما ، صرفا محیط دانشگاه نیست، یعنی حالا چون از دانشگاه فارغ التحصیل شدی ، بعد بری دنبال علاقه ات لزوما موفق میشی ، ممکنه یه بیماری خطرناک توی دانشگاه گرفته باشی (حتی اگر هیچ وقت دانشگاه نرفته باشی فقط از کنارش رد شده باشی یا با یه دانشجو معاشرت کرده باشی هم احتمال ابتلا شما به این بیماری مُهلک تر از کرونا نیز وجود دارد !)
لظفا بگذارید یک مثال برای شما بزنم ، خواهشا در این مثال کمی بدون مناقشه ، تأمل کنید !
فرض کنید : من رو فردا تو خیابون می بینید ، از من میپرسید خب چه خبر ،چرا این قدر خوشحالی (بلانسبت خر کیفی ! )، منم میگم چون از شرکت مایکروسافت جهت همکاری برام دعوت نامه اومده!
خب قطعا شما بهم تبریک می گید و چیزی خیلی به روی مبارک بنده نمیارید ، ولی وقتی از من دور میشی ، توی ذهنت میگی این یارو که دیپلم رو به زور گرفته ،اونوقت این همه دکترای نرم افزار و سخت افزار از صنعتی شریف رو دعوت نمیکنن ولی اینو دعوت می کنن ! قطعا دروغ میگه ! ولی خب خودت میدونی که صاحب مایکروسافت (بیل گیتس) هیچ تحصیلات دانشگاهی نداره ! (در واقع مالک فقید اپل هم نداشت ! اصلا موسس فیسبوک هم نداره !) ولی چه مانعی در ذهن تو وجود داره که میتونی قبول کنی مدیر یه شرکت میتونه هیچ مدرک آکادمیک دانشگاهی نداشته باشه ولی نمیتونی بپذیری من به عنوان کارمند دون پایه همون شرکت باید حتما پی اچ دی با 7-8 تا آی اس آی خفن داشته باشم تا بتونم اونجا کار کنم ؟
شاید بگی نه خُب اونا فرق میکنن ؟ باش قبول ، اگر راست میگی فرق های که اونا رو از تو متمایز میکنه رو توی دو خط بنویس ! (به غیر از رنگ چشم و مو و..)
چرا تو جامعه ی ما اول باید مدرکشو داشته باشی ، تا بهت اجازه بدن توی اون حوزه حرف بزنی ؟
دانشگاه زدگی ... ، خب باید هم به من حق بدید ، من 6-7 سال از سال ها مهم زندگیم رو توی یه فضای آکادمیک اونم از نوع بسته زندگی کردم ، قطعا روی من باید تاثیر میگذاشت ولی این تاثیر چی بود که نمیگذاشت توی برنامه نویسی پیشرفت کنم ؟
بعد از کلی تفکر عمیق !!! به دوتا نتیجه رسیدم :
بگذارید اینجوری توضیح بدم که من بعد از فارغ التحصیلی به خوبی ریاضی و آمار – حسابداری – مدیریت – اقتصاد خرد و کلان و.. رو میدونستم ولی خب مشکل اینجا بود واقعا کل علم اقتصاد خرد و کلان با اون مفاهیم انتزاعی و تئوریک به درد من بازاریاب نمی خورد ! وجداناً به غیر از یه سری اصول کلی حسابداری ، من نیازی به علم حسابداری نداشتم فقط کافی بود بدونم اینی که اینجا هست چیه و به درد چی میخوره ، دیگه بقیه اش به من ربطی نداشت ، من که نباید به عنوان بازاریاب سندهای مالی رو تنظیم کنم ؟ (حقیقتش رو بخواهید خود حسابدار ها هم همینا رو میدن نرم افزار های حسابداری و مالی براشون حساب میکنه !) ، شرافتاً میتونم بگم تا حالا نتونستم حتی یک خط از اون مباحث ریاضیات پیشرفته ای که پاس کردم رو استفاده کنم ! برای من آموزش کار با ماشین حساب که توی مقطع راهنمایی یاد گرفته بودم کفایت میکرد ، پس چرا یاد گرفتم ؟
خب ربطش به برنامه نویسی ؟، متوجه شدم برنامه نویسی رو هم همینجوری یاد گرفتم ، بگذارید مثالی بزنم من یک ماه جدی وقتمو روی زبان HTML گذاشتم ، چیز های یاد گرفتم که حتی فکر کنم خالق دبلیو تری اسکول (اینجا) هم بلد نباشه ، در صورتی که بعدا فهمیدم تمام این کارها رو باید با CSS انجام بدم ? (عملا فقط تگ <div>به دردم خورد ! ) ، بعد دوباره به صورت جدی وقت گذاشتم روی جاوا اسکریپت، بعدا فهمیدم که این متد های الان بلدم حتی ریز به ریز با جزئیات توضیح بدم رو شاید تا آخر عمر هیج وقت نیاز نباشه ازشون استفاده کنم !
آره من یادگیری برنامه نویسی رو مثل واحد های درسی که وزارت علوم برای هر رشته برنامه ریزی میکنه ، برنامه ریزی کرده بودم ، مثلا اول یادگیری اچ تی ام ال ، بعد سی اس اس بعد جی اس بعد بعد بعد بعد ... خب آخرش چی ! هیچی ! یادگیری برای چی ؟ برای چه هدفی ؟
به مثال زیر توجه کنید :
+ 4 سال کارشناسی تموم شد، خب من الان به عنوان یه کارشناس در رشته ایکس چه کاری باید بلد باشم انجام بدم ؟
+ سی اس اس رو یاد گرفتم، خب من الان به عنوان یه برنامه نویس با مهارت CSS چه کاری باید بلد باشم انجام بدم ؟
چاره چیست ؟
خُب من ، تونستم با یک تکنیک خیلی ساده تمام چیزهای که یاده گرفته بوده بودم ، رو دسته بندی کنم ،این تکنیک به این صورت هست که :
معمولی ترین پروژه ای که در حیطه فعالیتتون هست رو مشخص کنید ، اون رو به صورت مینیاتوری انجام بدید !
- لطفا بیشتر توضیح بده ! + چشم
شما به عنوان مکانیک ماشین های سواری آیا تمام ابزار تعمیر ماشین های سنگین رو توی مغازتون دارید ؟
- خُب دوره های پروژه محور رو استفاده کنیم حله دیگه؟ + خیر
حقیقتش رو بخواهید این دوره های پروژه محور معمولا چند تا عیب خیلی ناجور دارند :
اول : اینکه مدت زمانشون زیاد هست ، عموما توی این دوره ها 50-60 ساعت یه چیز عادیه ، و اصلا خیلیاشونم افتخار میکنن که 100 ساعت فیلم آموزشی درست کردن! همین زمان زیاد باعث میشه شما هیچ وقت این دوره ها رو به پایان نرسونید و فقط نکست نکست نکست بزنید تا فیلم ها تموم بشن !
دوم : اینکه معمولا مدرس ها به خاطر اینکه بگن اره دوره ما خفنه و همه چیز رو پوشش میده میان دوره رو یجوری تعریف میکنن که تمام ابزاری رو قبلا یاد دادن مورد استفاده قرار بگیره ، تا شما مجبور باشید پیشنیاز ها رو هم با دوره های ایشان یاد بگیرید ! جملاتی رو معمولا زیاد میگن اینو که توی فلان دوره گفتم ، اگر من اینو توضیح نمیدم حتما پیشنیاز رو بلدید (که معمولا پیشنیاز هم دوره ی قبلی خودشه ) و ... ( البته مدرس خوب و بد توی هر ضمینه ای داریم همه رو نمیشه با یک چشم نگاه کرد!)
سوم : مهمترین مشکل هم اینه که شما چون نمی دونید الان مدرس به خاطر رفع چه مشکلی داره این ابزار رو استفاده میکنه (حتی اگر بهتون بگه هم واقعا نمیتونید درک کنید !) این باعث میشه خیلی یادگیری در شما عمیق نشه، و حالا کافیه یکم صورت مسئله عوض بشه ، سینتکس عوض بشه ، کار تیمی باشه و ... هیچ گاه شما نخواهید توانست حل مسئله رو یاد بگیرید ! تا شب موقع خواب با چشم گریان به خاطر مشکلات به خواب نروید برنامه نویس موفقی نخواهید شد !
- خُب باشه قبول ، اصلا تو خوبی ! حالا اینی ک میگی رو چطوری انجام بدیم ؟ + اینجوری
معمولی ترین پروژه ای که در حیطه فعالیتتون هست رو مشخص کنید ، اون رو به صورت مینیاتوری انجام بدید !
نمونه عملی :
من در حوزه فرانت اند (برنامه نویسی سمت کاربر) میدونستم یکی از توقعاتی که از من میشه معمولا طراحی فروشگاه اینترنتی هست ، خب باید میدیدم واقعا چه ابزاری نیازه برای این کار ؟ رفتم توی گوگل زدم فروشگاه اینترنتی و چند تا لینک رو باز کردم ، از بین این سایت ها ، مدیسه رو انتخاب کردم و شروع کردم به تحلیل ، خب قسمت های مهمش که مربوط به من میشه چیه ؟
+ شکل ظاهریش مثل ساید بار ، چت باکس و...
+نمایش محصولات
+ حالت رسپانسیو
+ سبد خرید و...
خب حالا وقتش بود سَس ، ری اکت ، بوتسترپ ، ریداکس و.... رو قاتی پاتی کنم ! ببینم چیزی بلدم یا نه !
شروع کردم به کد زدن ، نمیخواستم دقیقا کپی اونو بزنم فقط میخواستم مشکلات طراح های مدیسه رو خودم حس کنم ،
نتیجه کار شد این : { خواهش میکنم نخندید بهم ، گناه دارم خووو }
دموی آنلاین | لینک پروژه در گیت هاب
حالا هر وقت خسته میشم یا نمیفهمم اینجا رو باید چه کارش کنم ، یه چایی میریزم ، میام سراغ اولین پروژه خودم (یعنی همین که بالا گذاشتم) ، یکم به کدهای که نوشتم میخندم ، به خودم میگم هی پسر یادته این چیزی که الان جلوته یه روزی ترس انجام دادنش رو داشتی ، الان برات پروژه دم دستیه !! پس بدون یه روزی قرار خفن بشی ، برو حال کن و کلی خر کیف میشم ...
قطعا نظرات شما مایهی مفاخرت و مباهات اینجانب می باشد ?