شروع یادگیری برنامه نویسی با چاشنی کمالگرایی – قسمت دوم

مهم نیست که چقدر در جاده اشتباه پیش رفته ای! همین الان دور بزن ! قسمت اول این مقاله را از ( این آدرس ) مطالعه کنید .مقدمهسلام ، احتمالا با خوندن قسمت قبل مقاله ( اینجا ) ، از علاقه شدید اینجانب به بستنی آگاه شدید ، پس بگذارید یکی از مشکلاتی که توی بستنی خوردن برام پیش اومده رو بهتون بگم ..من با توجه به علاقه ام به بستنی ، خیلی زیاد بستنی میخورم ولی همیشه یه مشکلی داشتم وقتی میرفتم توی مغازه عمو بستنی فروش ، چون خیلی مدل های مختلف بستنی داشت ، توی انتخاب طعم بستنی دچار تشویش خاطر میشدم و در ذهنم بیت معروف "روزی به دلبری نظری کرد چشم من / زان یک نظر مرا دو جهان از نظر فتاد " با صدای مرحوم ایرج بسطامی (روحش شاد) تکرار می شد !مشتاقی و صبوری از حد گذشت یارا گر تو شکیب داری طاقت نماند ما راتا یه روز عمو بستنی فروش که حالا با هم رفیق شده بودیم (البته از لحاظ تکنیکی مشتری شاخص !)، بهم گفت چرا فقط یه طعم رو امتحان نمیکنی ! گفتم یعنی چی ؟، گفت ببین وقتی چند تا طعم مختلف رو میخوری عملا مزه هیچ کدوم رو دقیقا حس نمیکنی ، از امروز هر دفع که میایی ، به جای چند اسکوپ از طعم های مختلف بستنی نوش جان کنی فقط یک اسکوپ رو انتخاب کن تا واقعا طعمش رو حس کنی بعد نظرت رو یادداشت کن ، بالاخره یه روز میفهمی ترکیب مورد علاقه ات چیه ....شروعواقعا خیلی از ما انسان ها توی زندگیمون علاقه مندی های داریم که واقعا بهشون علاقه نداریم !مگه میشه ؟ یِسمگه داریم ؟ آف کُورس !اجازه بدهید چند مثال بزنم ...مثلا دوست داشتن چیزی که فردی بهش علاقه مند هستید اون رو دوست داره ! در این جا شما مثلا واقعا به اون عطر خاص علاقه ندارید ، شاید حتی قبلا از نظرتون خیلی هم بوی مزخرفی داشت ، ولی حالا که دل در گرو عشق یار بستی اون عطر بوی خیلی خاصی داره ... !!مثلا رفتن دنبال خوانندگی به خاطر علاقه شما به شهرت ! ؛ در این جا شما واقعا به خوانندگی علاقه ندارید و لذتی از این کار نمی برید ولی به این خاطر الان خواننده ها روی بورس هستن و یجورایی مرکز توجه اقشار مختلف جامعه، کلاس خوانندگی ثبت نام کردید ...مثلا علاقه مند بودن به طراحی سایت و شروع یادگیری برنامه نویسی ؛ در صورتی که شما علاقه مند هستید مدیر یک فروشگاه اینترنتی باشید نه لزوما برنامه نویس ...خب حالا چه باید کرد ؟ خلاصه و مفید بخوام بگم : طعم مورد علاقه ات رو پیدا کن به نظر من واقعا قدم گذاشتن توی یه مسیر پر از چالش و نسبتا طولاتی مثل یادگیری برنامه نویسی چیزی جز عشق و علاقه نمیتونه آدم رو توی مسیر نگه داره و از این رو این انتخاب ، یجورایی یه انتخاب سرنوشت سازه که ما متاسفانه تحت تاثیر حرف های دیگران ، تبلیغات ، آگهی های استخدامی و.. نمیتونیم به خوبی از پس انتخابش بر بیاییم ...انتخاب علاقه مندی در چهار گام گام اول : انتخاب زمینه فعالیت شما در این جا باید زمینه فعالیت خودتون رو توی برنامه نویسی مشخص کنید .اگر بخوام خیلی غیر حرفه ای به صورت هارد کد !! یه دسته بندی انجام بدم ، برنامه نویسی رو به پنج دسته کلی تقسیم میکنم :برنامه نویسی سمت سرور (اون قسمتی که الان از ویرگول ما نمی بینیم ! )برنامه نویسی سمت کاربر (اون قسمتی که الان از ویرگول ما می بینیم ! )برنامه نویسی دسکتاپ ( فتوشاپ ، آفیس ، حسابداری و ... )برنامه نویسی موبایل (دیوار ، واتس اّپ ، اینستاگرام ، ماشین حساب و... )برنامه نویسی بازی (گیم های موبایل و دسکتاپ و حتی آنلاین ... )نکته : دیتا ساینس (علم داده )، برنامه نویسی برای ربات ها و تراشه های الکترونیکی و.. هست که من به دلایل فنی فعلا از توضیح اینها صرف نظر میکنم .نکته : دسته بندی بالا ، ایراد فنی و ناگفته های زیادی داره ، که فعلا در این مرحله از اون ها صرف نظر می کنیم چون مهم نیست ...خب دقیقا باید چطوری زمینه فعالیت خودتون رو پیدا کنید ؟؟؟؟کاری نداره ،همین الان چشماتون ببندید برای 10 دقیقه فرض کنید که عقل کل برنامه نویسی در تمامی کائنات هستید و همه چیز رو بلدید و هیچ محدودیت مالی ، زمانی و مکانی و.. ندارید ، حالا یه لحظه عمیقا از ته ته ته دلتون حس کنید که میخواید با این علم و دانشی دارید چه کار کنید ؟ تبریک میگم شما زمینه علاقه مندی تون رو پیدا کردید !اگر واقعا به این نتیجه رسیدی مثلا دوست داری یه فروشگاه اینترنتی برای کسب و کارت داشته باشی نه لزوما دانش طراحی سایت ، پس همین الان این نوشته رو ول کن برو یه نفر رو پیدا کن بهش پول بده برات اون فروشگاه رو بسازه ... وگرنه ادامه بده ...گام دوم : انتخاب ابزار !شکی نیست که هدف از خلق تمامی زبان ها ، فریمورک ها و ... به عنوان یک ابزار برای کمک به برنامه نویس ها (جامعه بشری ) بوده ! پس تعصب بیخودی مانع کسب است! حتی برای شما دوست عزیز ! ولی توی ایران عزیز ما یکم این قضایا و داستان ها متفاوته ، یعنی هنوز یه جورایی اون نگاه باستانی خوب (اهورا مزدا ) و بد (اهریمن ) (منظورم نگاه صفر یا صدی هست ) در ما نسل به نسل ، سینه به سینه ، از پدر به پسر منتقل شده و واقعا توی خیلی از مسائل گریبان گیر ما شده ، ای خوشا فریادی از قصر دل بی‌تاب‌ها … ؛ نمیخام فاز نصیحت بردارم ، پس بگذریم ...حقیقتش رو بخواهید ، خود سازندگان این ابزارها و زبان ها اینقدر که بعضی از ما ایرانی ها روی اختراعاتشون تعصب داریم ، خودشون تعصب ندارن ! باور کنید !خب با استفاده از مرحله یک باید یک لیست آماده کنیم ! چطوری ؟ اینطوری که مثلا فرض کنید شما علاقه مند هستید یک اپلیکیشن با حال برای اندروید طراحی کنید و کلی پول در بیارید ! کافیه توی گوگل سرچ کنید زبان های برنامه نویسی نرم افزار اندروید ! (بقیه چیز ها رو هم طبق مثال سرچ کنید )خب حتما به نتایج زیر می رسید !زبان های : جاوا ، کاتلین ، ری اکت نیتیو ، فلاتر ، زامارین و ... (همشون زبان نیستن )حالا کدوم ؟ اینا چی هستن ؟ کدوم بهتره ، کدوم آینده شغلی بهتری داره ، کدوم پرفرمنس بهتری داره ... صبر کنید !صبر کنید !صبر کنید !اینجا دقیقا شما روی همون تله ی معروف کمالگرایی ایستادید ...یه نفس عمیق بکشید و بیخیال این فکر ها بشید و ادامه آموزش رو بخونید ..گام سوم: مزه مزه کردن این جا هست که از ددی تراورسی یاری میجوییم ، برَد (Brad) یه یوتیوبر معروفه که تقریبا میشه گفت از تموم زبان ها و فریمورک های معروف یه Crash Course (که من ترجمه‌اش میکنم "دوره‌ی سقوط آزاد")رو تولید کرده ، که میتونید از (اینجا) به کانالش در یوتیوب دسترسی داشته باشید.حالا کافیه اسم زبان های معروف رو با یک پسوند کرش کورس در یوتیوب سرچ کنید ،مثلا :Kotlin Crash Course || Flutter Crash Course || Java Crash Course ...پیشنهاد میکنم تا جایی که امکان داره از دوره های تراورسی مدیا ( توی یوتویب بقیه برنامه نویسا دَدی تراورسی صداش میکنن خخخخ ) استفاده کنید یا حداقل از دور های که بازدید بالا دارند استفاده کنید که وقتتون تلف نشه ، من دورهای تراورسی رو به دلایل زیر پیشنهاد دادم به شما :+قبل از شروع دوره پیشنیاز ها رو میگه ! و این خیلی خوبه شما میدونید چه چیز های رو باید بعدا برید یاد بگیرید!+پروژه ای که انتخاب میکنه معمولا پروژه آسونیه و کد های پروژه رو در اختیارتون میگذاره پس دید کلی خوبی بهتون میده!+ از مستندات اون زبان یا ابزار کمک می گیره و باعث میشه شما کار با مستندات رو هم یاد بگیرید !+آروم و شمُرده و با لهجه خیلی خوبی صحبت می کنه ( تا حالا مجبور نشدی ویدیو از هندی ها ببینی ، که عاشقی از یادت بره !) شاید الان یک سوال براتون ایجاد شده ! من که اصلا برنامه نویسی بلد نیستم، یا زبان انگلیسی بلد نیستم ! این کار پس چه فایده ای داره ؟؟هدف این قسمت فقط پیدا کردن علاقه همراه با ایجاد دیدکلی نسبت به مسیر هست، مهم نیست ، فقط همراه اون ویدیو برو جلو و کد ها رو کپی کن اصلا ، اینجا مهم چیزی که یاد میگیری یا چیزی که ساختی نیست ! مهم سطح آدرنالین (ذوق زدگی ) خون شما هست !خواهش میکنم اجازه بدید یک مثال از خودم بزنم :من میخواستم یکی از فریمورک های سمت کاربر ( Front End ) رو شروع کنم با یک سرچ ساده رسیدم به سه اسم :ری اکت جی اس Reactاَنگیولار جی اس (آنگولار) Angularویو جی اس Veuواقعا انتخاب سختی بود ، هر سه تا به شدت معروف یودن و هر سه از تکنولوژی VDOM استفاده میکردن ،پایه هر سه تا جاوا اسکریپت بود ، ولی باز هم من نمیدونستم کدوم رو انتخاب کنم ، با این همه شباهت از دید من زمین تا آسمون فرق داشتن .خُب خوشبختانه دَدی دوره هر سه تا رو داشت ، سه تا آموزش رو دانلود کردم ، شروع کردم به کد زدن همراه با مدرس ، اصلا چیز زیادی نمی فهمیدم (با اینکه جاوا اسکریپت رو خیلی خوب بلد بودم! ) ، تنها چیزای که بار اول متوجه شدم اینا بود : اَنگیولار حس کد نویس بودن بهم نمی داد واقعا ، حس میکردم دارم با فریمورک های CSS کار میکنم ، ویو رو مقلد انگیولار دیدم البته با رویکرد خودش ، آسون بود و شیرین ولی باز حس با حال بودن بهم نمیداد ، ولی ناگهان زندگی من با کد زدن توی فریمورک (صحیح تر کتابخانه ) ری اکت (ReactJs) تغیر کرد (سطح آدرنالین رفت بالا ) ذوق زده شدم ،اووووو یــــــسسسسس ! این همونه که میخوام ! همین علاقه باعث شد بیخیال برنامه نویسی نشم دیگه ، چون قبلتر ها فقط محصول نهایی برام لذت بخش بود (میخواستم فقط زودتر پروژه تموم شه ) ولی الان ساعت ها با ری اکت کد میزنم بدون احساس خستگی و گرسنگی ! حتی گاهی پیش میاد یه قسمت رو به چند مدل مختلف مینویسم و پاک میکنم !گام چهارم : شروع یادگیری عمیقحالا که علاقه تون رو پیدا کردین ، زمینه فعالیت خودتون رو هم می دونید ، ابزار مورد نظرتون رو هم شناسایی کردید ، کار خیلی براتون آسونه ، فقط شروع کنید به یادگیری .البته در این جا دو تا موضوع معمولا مطرح میشه :اول : انتخاب منبع ، (از نظر من ) بهترین و کاملترین و دقیق ترین آموزش و منبع یادگیری ، معمولا مستندات همون تکنولوژی هستند ولی خب توی کار یه چیزای کوچکی هم پیدا میشن در مورد اون زبان یا فریمورک که اینجا ذکر نشده ، که معمولا با یک سرچ ساده اغلب مواقع به نتیجه مورد نظر می رسید.دوم : زبان انگلیسی ! من کار به صحبت های دیگر دوستان ندارم ، نظر من اینه شما اگر حتی یکسال فقط روی مهارت زبان انگلیسی خود کار کنید بعد برنامه نویسی رو شروع کنید موفق تر از شخصی هستید که یکسال قبل تر از شما شروع کرده بدون دانش زبان (البته در بلندمدت ) . البته میتونید هم زمان این دو موضوع رو پیش ببرید !خُب ، هر چی میتونید بخونید ،یادتون باشه بهترین شخصی تو دنیا زبان برنامه نویسی (یا فریمورک) مورد نظر شما رو بلد هست ، قطعا سازنده اونه ، پس از داکیومنت اصلی غافل نشید (توصیه تکراری) ، کدهای بقیه رو ببینید ، در یوتیوب سرچ کنید حتما به کلیپ های جالبی بر میخورید ،برای داشتن یه مسیر صحیح یادگیری بهتره از کلید واژه "نقشه راه" در جستجوهاتون کمک بگیرید میتونه خیلی موثر باشه مثلا:Web development learning roadmap || Hack learning roadmap ...BackEnd learning roadmap || FrontEnd learning roadmap ...اینجوری میتونید راحت تر مسیر یادگیری خودتون رو جلو ببرید .قطعا نظرات شما مایه‌ی مفاخرت و مباهات اینجانب می باشد ?پایان قسمت دوم ادامه دارد ...قسمت بعدی این مقاله رو از این جا مطالعه کنیدپی نوشت 1 : اگر به یک زبان مسلط شوید ، بقیه زبان ها رو حتی کمتر از یک ساعت !!! می تونید یاد بگیرید ، پس خیلی وسواس به خرج ندید !پی نوشت 2 : تقریا میشه گفت عموم زبان ها و تکنولوژی ها توی ایران الان براشون تقاضای متخصص هست ، البته برای بعضی ها بیشتر و برای بعضی ها کمتر، ولی این رو هم باید در نظر بگیرید : تخصصی که متخصص بیشتری داره ! حقوق و مزایای کمتری هم معمولا داره ! شاید برایتان جالب باشه دوستی رو سراغ دارم که تخصصش کار با یکی از قالب های مدیریت محتوای وردپرس هست (نه حتی طراحی قالب وردپرس بلکه ویرایش یک قالب با صفحه ساز اون !) یعنی بدون دانش حتی ویرایش یک خط کد ماهانه پول خوبی از تخصصش (بازاریابی) در میاره ! شما تخصص رو کسب کنید راه پول در آوردن ازش رو زود پیدا میکنید .پی نوشت 3 : سعی کنید کد بزنید ، بازی کنید ، تمرین کنید ! حال کنید ، دنیا دو روزه ، بیخیال این دوره های آموزشی 50-60 ساعته فارسی بشید، از این دوره ها برنامه نویس در نمیاد ! فقط پولتون رو هدر می دهید ! بعد از اتمام یکی از این دوره ها بهتون قول میدم که پژمرده شدید ! و از برنامه نویسی متنفر ! دیدم که میگم!پی نوشت 4 : برای خودتون یه دوره زمانی بلند مدت با هدف "مشخص" تعین کنید ، این چشم انداز نمی گذارد از مسیرتون فاصله بگیرید ، مثلا توی دفترچه یادداشت بنویسید تا یک سال دیگه بتونم یه سایت با امکانات ویرگول بنویسیم ! اسم و فامیل، تاریخ و امضاء ! (یجورایی تعهدنامه)پی نوشت 5 : کسی قرار نیست از شما امتحان بگیره ! از فضای مدرسه و دانشگاه فاصله بگیرید ! سینتکس ها رو صرفا حفظ نکنید ، این کار رو قبلا گوگل براتون انجام داده ، با داکیومنت دوست باشید ! ، یکم کنجکاوی بد نیست ، مثلا بهتر است به جای اینکه در گروه های تلگرامی به دنبال بهترین تکست ادیتور باشید تمام 10-12 تا ادیتور و ای دی ای معروف رو نصب و کار با اون ها رو تجربه کنید بعد با اختیار خودتون Vs Code را انتخاب کنید !!پی نوشت 5 : همانظور که ، به تعداد آدم های کره زمین راه رسیدن به خدا وجود داره (دیالوگ معروف فیلم مارمولک)،بنده نیز معتقدم به تعداد آدم های کره خاکی، راه برای یادگیری برنامه نویسی وجود داره ، پس اگر روشی که ذکر کردم مورد پسندتان نبود ، اُپن مایند برخورد کرده و ناسزا نگوید ! اگر راه بهتری را سراغ دارید ، با من و بقیه دوستان در نظرات به اشتراک بگذارید ...