برنامه نویسی، چرا و چگونه؟

سلام!‌ فکر نمی کردم حالا حالا ها دوباره بنویسم،‌ ولی نوشتن دفعه قبلیم بهم مزه کرد و امروز هم یه اتفاقی افتاد که دلم خواست دوباره بنویسم،‌ پس برگشتم. :)ماجرا از چند هفته پیش شروع شد که یه موقعیتی پیش اومد که برای سال تحصیلی پیش رو،‌ به بچه های کلاس دهمی مدرسه حلی تهران برنامه نویسی یاد بدم. و از اون جایی که قرار بود اولین تجربه تدریسم باشه براش خیلی اشتیاق داشتم و دلم می خواست مفید باشم و از اون معلم هایی بشم که شاگردام دوستم دارن و منو یادشون می مونه،‌ هیچی نشده داشتم خودم رو براش آماده می کردم ... به نظرم مهم ترین و اولین سوالی که یه معلم باید به شاگرداش جواب بده اینه که "چرا اینو یاد می گیریم؟". یادمه خودم تو دبیرستان خیلی وقتا اینو از معلم هام می پرسیدم و اون درس هایی که معلمشون لزوم و کاربرد درس رو قشنگ توضیح می داد مشتاق تر بودم و با جدیت بیشتری دنبالشون می کردم و بهتر هم یاد می گرفتمشون تا درس هایی که معلمشون می گفت "چون باید یاد بگیریم". برای اون کلاسی که قرار بود تشکیل بشه به "چرا برنامه نویسی؟" و این که چجوری مختصر و مفید به شاگردام توضیح بدمش فکر می کردم و امروز هم موقعیتی پیش اومد که داشتم توضیح می دادم "چگونه برنامه نویسی رو یاد بگیریم؟"،‌ و حالا می خوام این جا به هر دو سوال جواب بدم. و لازمه همین اول یاداوری کنم که من خودم یه آدم خیلی تازه واردم که وسواس خوبی هم رو مراحل یادگیری خودش داره،‌ سعیم رو می کنم که خوب توضیح بدم،‌ ولی اگه اشتباهی کردم به بزرگی خودتون من رو ببخشید و لطفا درستش رو هم بهم بگید. :)چرا؟ چون کامپیوتر ها به شدت قدرتمند و مفید و خستگی ناپذیرن و توان پردازشی خیلی بالایی دارن که به درد ما می خوره و در حقیقت همون توان پردازشی اوناست که الان داره تمدن ما آدم ها رو به جلو می بره. ما با برنامه نویسی کردن می تونیم با این مهمونای جدید سیاره مون که خودمون هم خلقشون کردیم در ارتباط باشیم و بهشون دستور بدیم و ازشون استفاده کنیم.می تونیم بهشون دستور بدیم برامون صفحه سایت بسازن،‌ می تونیم بهشون دستور بدیم کد های ژنتیکی ریسزچی که داریم انجام می دیم رو آنالیز کنن،‌ می تونیم بهشون دستور بدیم اطلاعات فروش شرکتمون رو برامون بررسی کنن، می تونیم بهشون دستور بدیم مسیر ماهواره ای که می خوایم بفرستیم تو فضا رو برامون شبیه سازی کنن و ... و ما برای همه اینا احتیاج داریم که یه جوری با این ماشین های دوست داشتنی حرف بزنیم.چگونه؟همون طور که ما فارسی و انگلیسی و فرانسوی حرف می زنیم،‌ زبان طبیعی ما یه ساختار کلی داره که همه زبون ها ازش پیروی می کنن و هر زبونی هم برا خودش یه ساختار مستقل داره. چیزی که به نظر من خیلی مهمه و معمولا هم هم از جانب بعضی معلما و خیلی شاگردا بهش توجه کافی نمی شه درک ساختار کلی زبان ماشینیه که من توی متنم بهش می گم "تفکر کامپیوتری". ما ساختار کلی زبان طبیعی رو تو فرایند رشدمون و همراه با زبان مادریمون یاد گرفتیم،‌ و وقتی که می خوایم یه زبون جدیدی مثل انگلیسی و فرانسوی رو یاد بگیریم،‌ فقط ساختار مجزای اون زبون رو یاد می گیریم. خیلی ها چون تفکر کامپیوتری رو یاد نگرفتن،‌ از برنامه نویسی می ترسن،‌ یا فکر می کنن برنامه نویسی فقط مال باهوش هاست در حالی که اینطور نیست!‌ شما تفکر کامپیوتری رو که تو ذهنتون ایجاد کنید یاد گرفتن زبان های برنامه نویسی خیلی راحت تر از یاد گرفتن زبان های انگلیسی و فرانسوی و ... می شه. اون تفکر کامپیوتری هم یه چیز کاملا اکتسابی و تمرین محوره که باید وقت بذارید تا یادش بگیرید. استعداد هم تنها کمکی که می تونه بهتون بکنه می تونه سرعت رشدتون رو بیشتر کنه. اصل علاقه و پشتکاره.حالا تو چهار تا قدم و چند تا نکته بهتون توضیح می دم که چجوری برنامه نویسی رو یاد بگیرید.قدم اول:اینجا شما باید مقدمات تفکر کامپیوتری و یه زبان برنامه نویسی رو یاد بگیرید؛ دقت کنید که خیلی از کورس ها و دوره های آموزشی با این که خودشون ادعا دارن اینطوری نیست، فقط زبان برنامه نویسی رو به شما یاد می دن و تفکر کامپیوتری رو یاد نمی دن. حتی بعضی از کورس ها و دوره ها با این که خوب هستن و معلم خوبی دارن فقط زبان برنامه نویسی رو یاد می دن و تفکر کامپیوتری رو یاد نمی دن. اینا برا کسایی مناسبن که می خوان زبان چندمشون رو یاد بگیرن.توصیه من به شما یه کورس آکادمیک محوره،‌ و حتما هم همراه استاد و کلاسش تمریناشون رو حل کنید. تمرین حل کردن و دست به کد شدن خیلی مهمه.Introduction to computer science and programming in pythonCS50: Introduction to computer science این دو تا کورس بالا که به ترتیب از دانشگاه ام‌آی‌تی و هاروارد هستن رو برای این قدم بهتون پیشنهاد می کنم. (فقط از یکیشون استفاده کنید،‌ لکچر اول هر دو رو ببینید و با استایل هر کدوم راحت تر بودید همون رو ادامه بدید)نکته:‌ اکیدا توصیه می کنم برای برنامه نویسی دنبال کورس فارسی نباشید و از همین اول خودتون رو به کورس انگلیسی عادت بدید. اگه مقدمات و کلیات زبان انگلیسی رو بلدید و فکر می کنید ضعیفید نترسید! و شروع کنید و با کمک گوگل ترنزلیت دست و پا شکسته ادامه بدید و همین طوری خود به خود و آهسته آهسته روون می شید.نکته: از کثیف شدن دستاتون تو کدنویسی تمرینی نترسید! از اینترنت کمک بگیرید ولی هیچ وقت دنبال لقمه جویده شده نباشید. به مرور زمان دستتون تمیز می شه ... نکته مهم:leetcode.comالان وقتشه که با لیت‌کد آشناتون کنم. لیت‌کد یه بانک بزرگ و کامل مسئله ست که کمکتون می کنه تفکر کامپیوتری و مهارت حل مسئله تون رو تقویت کنید. لیت‌کد دوست خوبیه که از این جا (بعد قدم اول و قبل قدم دوم) تا استارتاپ دوستاتون و bay area همراهیتون می کنه. سعی به صورت موازی با بقیه قدم هاتون ای لیت‌کد هم استفاده کنید.قدم دوم:یه توصیه کوچک دارم برای قبل از برداشتن قدم دومتون؛ یکم هابی پروجکت بزنید،‌ اون لذتی که بعد ران کردنش بهتون دست می ده و نتیجه کارتون رو می بینید هم خستگی قدم اول رو از بین می بره هم برای قدم دوم بهتون انگیزه می ده.اینجا قراره هم دستتون رو تو کد زدن ورزیده کنید، هم مغزتون رو برای حل مسئله هوشمند کنید.چطوری؟با یاد گرفتن مفاهیم “ساختمان داده و الگوریتم”خودتون تو یوتیوب و گوگل سرچ کنید و ببینید با چه کورس و استایلی حال می کنید و با همون مفاهیم ساختمان داده و الگوریتم رو یاد بگیرید. اینجا تاکید و توصیه خاصی ندارم، فقط اگه براتون سواله این قدم رو خودم با کورس mit گذروندم.قدم سوم:اینجا دیگه شما چجوری حرف زدن با کامپیوتر رو یاد گرفتید و می خواید بهش دستور بدید که براتون چه پردازشی بکنه، سایت بسازه، بازی بسازه، دیتا آنالیز کنه یا چی؟اینجا بهتون توصیه می کنم که از حوزه های مختلف، هر کدوم یکی دو تا هابی پروجکت بزنید، دو تا دیتاساینس بزنید، دو تا بکند بزنید و ... و خیلی هم تو این مرحله به خودتون زحمت ندید! یوتیوب رو باز کنید و پروژه های اماده رو همراه با یوتیوبره بزنید، اینجا هدف یاد گرفتن نیست، هدف اینه که لذت مهارتی که یاد گرفتید رو بچشید و طعم های مختلفش رو مزه مزه کنید تا دریابید که بیشتر به کدوم تمایل دارید.تو این مرحله خود من کارایhttps://youtube.com/c/KGMITرو خیلی دوست داشتم. کیوت و جالب توضیح می ده و کد می زنه.هابی پروجکت ها رو که زدید و تصمیم که گرفتید می خواید چه کار کنید، یکم سوادتون رو تو اون حوزه بیشتر کنید و پروژه بزنید.قدم چهارم:اینجا می تونید وارد بازار کار و کاراموزی و ... بشید و میوه درختی که پرورشش دادید رو بخورید. :)موفق باشید