اگر از مفاهیم خاص هر زبان بگذریم، باز مفاهیمی نظیر شیء گرایی، «entity-component systems» و الگوها «observer» وجود دارند که یادگیری آنها در بار اول میتواند کار طاقت فرسایی باشد. مثلا فرض کنید شخصی یک تصویر از یک مجسمه به شما نشان داده است. شاید این تصویر کمک کند یک دید کلی نسبت به مجسمه پیدا کنید، ولی جزئیات آن را نخواهید فهمید. یک تصویر از راه دور جزئیات کافی ندارد و یک تصویر از نزدیک دید کافی نخواهد داشت. با این حال با هر تصویر جدید میتوانید متوجه بافت، اندازه و جزئیات از زوایای مختلف نظیر جلو، کنار یا بالا شوید.
یادگیری زبان یک مساله شخصی است. ممکن است همه از منبع A به عنوان بهترین روش برای یادگیری زبان X یاد کنند ولی شما اصلا آن را قبول نداشته باشید. شاید همه از منبع B متنفر باشند و شما در یک نگاه جذب آن شوید، و شاید شخصی دیگر با منابع A و B به مشکل بخورد ولی منبع C برای وی مفید باشد. به همین جهت است که باید از انواع منابع استفاده کنید، چراکه نحوهی یادگیری در هر فرد متفاوت است. اگر با یک موضوع مشکلی دارید، به دنبال یک منبع دیگر بگردید، شاید منبع جدید برایتان مناسبتر باشد، شاید هم نباشد.
حتی اگر فکر میکنید به موضوع خاصی تسلط کافی دارید، باز هم ممکن است چیز بیشتری برای یادگیری در آن وجود داشته باشد. حتی ممکن است توضیحات کسی بتواند مفهوم را در ذهنتان سادهتر کند. به این دلایل، بهتر است تا حد ممکن از منابع مختلف استفاده کنید.
مفاهیمی که یاد میگیرید را آموزش دهید
در برنامهنویسی مفهومی داریم به نام «تکنیک گفتوگو با اردک پلاستیکی» (rubber duck debugging) که یعنی کد را به صورت خط به خط به یک اردک پلاستیکی توضیح دهید. این تکنیک زمانی استفاده میشود که بخشی از کد مشکل دارد، ولی دلیل مشخصی برای آن پیدا نمیکنیم.
مسالهی جالب این است که اکثر برنامهنویسها در هنگام توضیحات کد، متوجه مشکل منطقی آن میشوند. صحبت کردن باعث فعال شدن بخش متفاوتی از مغز میشود و شما را مجبور میکند که مشکل را از زاویهی متفاوتی مشاهده نمایید. این روش در یادگیری مطالب جدید نیز برای ما مفید خواهد بود. شاید جملهی زیر از آلبرت انیشتین را شنیده باشید:
«اگر نمیتوانید چیزی را توضیح دهید، یعنی به خوبی متوجه آن نشدهاید.»
این جمله تقریبا در همه جا صحت دارد. هرچه درکتان از یک موضوع بیشتر باشد، بهتر میتوانید آن را به شخصی بدون دانش قبلی توضیح دهید، به طوری که وی نیز متوجه آن شود. مخالف این موضوع نیز وجود دارد. زمانی که سعی در تدریس یک موضوع میکنید، متوجه مفاهیمی میشوید که نمیتوانید به خوبی آنها را به زبان بیاورید. این روش به شما کمک میکند متوجه ضعفتان در آن موضوع شوید و با پیدا کردن توضیح مناسب آن، مفهوم را در ذهنتان استوارتر کنید. به این کار «یادگیری با تدریس» (learning by teaching) میگویند و تقریبا از روی همان تکنیک گفتوگو با اردک به وجود آمده است.
البته نیازی نیست که حتما هر مفهومی که یاد میگیرید به یک نفر بیاموزید، ولی میتوانید هر موضوع جدید را به یک اردک پلاستیکی یا یک دوست نامرئی توضیح دهید. شاید ابتدا این کار به نظر احمقانه بیاید، ولی با مرور زمان ثمر آن را در مانایی آن حافظه خواهید دید.
تمرین آگاهانه نتیجهی خوبی دارد
مفهوم جا افتاده از «استعداد» کاملا اشتباه است. هیچ کسی به طور مادرزاد یک ویولنیست، کشتیگیر یا برنامهنویس قهار به دنیا نمیآید. درست است که هر کسی به رشتهی خاصی علاقهی بیشتری دارد، ولی استعداد بدون تجربه بی فایده است. سخت کوشی نیز همیشه از استعداد ارزش بیشتری دارد.
«Malcolm Gladwell» مخترع قانون «10,000 ساعت» است که میگوید باید برای هرچیزی 10,000 ساعت زمان بگذارید تا به آن تسلط کامل پیدا کنید. با اینکه این جمله صحیح است، ولی خیلی از مردم حرف وی را اشتباه برداشت میکنند. به طور خلاصه، 10,000 ساعت اصلا تضمینی برای تسلط کامل نیست. از قدیم گفتهاند:
«تمرین شما را خوب نمیکند، خوب تمرین کردن شما را خوب میکند.»
برای اینکه تمرین ارزشمند باشد، باید آگاهانه صورت بگیرد. تسلط کامل فقط با 10,000 ساعت تمرین آگاهانه به وجود میآید.
اینکه چگونه تمرین کنید، از اینکه چقدر تمرین کنید بسیار مهمتر است. مطالعه، مشاهدهی فیلمهای آموزشی، گوش کردن به فایلهای صوتی، همه و همه گذرا هستند. شاید به عنوان یک برنامهنویس تازه کار دوست داشته باشید از یک آموزش به آموزش بعدی بروید، موضوعی پس از دیگری را شروع کنید و در هنگام یادگیری از هیچکدام از آن دانشهای تئوری به طور عملی استفاده نکنید، ولی این کار کاملا اشتباه است و باید از انجام آن خودداری کنید.
یادگیری زبان یک مساله شخصی است. ممکن است همه از منبع A به عنوان بهترین روش برای یادگیری زبان X یاد کنند ولی شما اصلا آن را قبول نداشته باشید. شاید همه از منبع B متنفر باشند و شما در یک نگاه جذب آن شوید، و شاید شخصی دیگر با منابع A و B به مشکل بخورد ولی منبع C برای وی مفید باشد. به همین جهت است که باید از انواع منابع استفاده کنید، چراکه نحوهی یادگیری در هر فرد متفاوت است. اگر با یک موضوع مشکلی دارید، به دنبال یک منبع دیگر بگردید، شاید منبع جدید برایتان مناسبتر باشد، شاید هم نباشد.
حتی اگر فکر میکنید به موضوع خاصی تسلط کافی دارید، باز هم ممکن است چیز بیشتری برای یادگیری در آن وجود داشته باشد. حتی ممکن است توضیحات کسی بتواند مفهوم را در ذهنتان سادهتر کند. به این دلایل، بهتر است تا حد ممکن از منابع مختلف استفاده کنید.
مفاهیمی که یاد میگیرید را آموزش دهید
در برنامهنویسی مفهومی داریم به نام «تکنیک گفتوگو با اردک پلاستیکی» (rubber duck debugging) که یعنی کد را به صورت خط به خط به یک اردک پلاستیکی توضیح دهید. این تکنیک زمانی استفاده میشود که بخشی از کد مشکل دارد، ولی دلیل مشخصی برای آن پیدا نمیکنیم.
مسالهی جالب این است که اکثر برنامهنویسها در هنگام توضیحات کد، متوجه مشکل منطقی آن میشوند. صحبت کردن باعث فعال شدن بخش متفاوتی از مغز میشود و شما را مجبور میکند که مشکل را از زاویهی متفاوتی مشاهده نمایید. این روش در یادگیری مطالب جدید نیز برای ما مفید خواهد بود. شاید جملهی زیر از آلبرت انیشتین را شنیده باشید:
«اگر نمیتوانید چیزی را توضیح دهید، یعنی به خوبی متوجه آن نشدهاید.»
این جمله تقریبا در همه جا صحت دارد. هرچه درکتان از یک موضوع بیشتر باشد، بهتر میتوانید آن را به شخصی بدون دانش قبلی توضیح دهید، به طوری که وی نیز متوجه آن شود. مخالف این موضوع نیز وجود دارد. زمانی که سعی در تدریس یک موضوع میکنید، متوجه مفاهیمی میشوید که نمیتوانید به خوبی آنها را به زبان بیاورید. این روش به شما کمک میکند متوجه ضعفتان در آن موضوع شوید و با پیدا کردن توضیح مناسب آن، مفهوم را در ذهنتان استوارتر کنید. به این کار «یادگیری با تدریس» (learning by teaching) میگویند و تقریبا از روی همان تکنیک گفتوگو با اردک به وجود آمده است.
البته نیازی نیست که حتما هر مفهومی که یاد میگیرید به یک نفر بیاموزید، ولی میتوانید هر موضوع جدید را به یک اردک پلاستیکی یا یک دوست نامرئی توضیح دهید. شاید ابتدا این کار به نظر احمقانه بیاید، ولی با مرور زمان ثمر آن را در مانایی آن حافظه خواهید دید.
تمرین آگاهانه نتیجهی خوبی دارد
مفهوم جا افتاده از «استعداد» کاملا اشتباه است. هیچ کسی به طور مادرزاد یک ویولنیست، کشتیگیر یا برنامهنویس قهار به دنیا نمیآید. درست است که هر کسی به رشتهی خاصی علاقهی بیشتری دارد، ولی استعداد بدون تجربه بی فایده است. سخت کوشی نیز همیشه از استعداد ارزش بیشتری دارد.
«Malcolm Gladwell» مخترع قانون «10,000 ساعت» است که میگوید باید برای هرچیزی 10,000 ساعت زمان بگذارید تا به آن تسلط کامل پیدا کنید. با اینکه این جمله صحیح است، ولی خیلی از مردم حرف وی را اشتباه برداشت میکنند. به طور خلاصه، 10,000 ساعت اصلا تضمینی برای تسلط کامل نیست. از قدیم گفتهاند:
«تمرین شما را خوب نمیکند، خوب تمرین کردن شما را خوب میکند.»
برای اینکه تمرین ارزشمند باشد، باید آگاهانه صورت بگیرد. تسلط کامل فقط با 10,000 ساعت تمرین آگاهانه به وجود میآید.
اینکه چگونه تمرین کنید، از اینکه چقدر تمرین کنید بسیار مهمتر است. مطالعه، مشاهدهی فیلمهای آموزشی، گوش کردن به فایلهای صوتی، همه و همه گذرا هستند. شاید به عنوان یک برنامهنویس تازه کار دوست داشته باشید از یک آموزش به آموزش بعدی بروید، موضوعی پس از دیگری را شروع کنید و در هنگام یادگیری از هیچکدام از آن دانشهای تئوری به طور عملی استفاده نکنید، ولی این کار کاملا اشتباه است و باید از انجام آن خودداری کنید.
درک یک مثال با حل یک مساله از پایه، کاملا متفاوت هستند. اگر میخواهید مراحل یادگیری را سریعتر طی کنید، باید حاضر باشید که به جای انجام کارهای گذرا، کمی خودتان فعالیت داشته باشید. تمرین عملی تنها نوع یادگیری است که در نهایت اهمیت خواهد داشت.
برروی پروژههای شخصی آزمایش کنید
در دوران مدرسه، تکلیف برای همه دانشآموزان همانند اقدامی از سوی دبیران بود که سرگرمی را از ما بگیرند و سرمان را به درس مشغول کنند. ولی الان که به عقب نگاه میکنیم، تکالیف به نظر چیزی منطقی میآیند و ما را مجبور میکردند از دانش جدیدی که به دست آوردهایم به طور عملی استفاده کنیم.
اگر در کلاس برنامهنویسی ثبت نام کردهاید، به هیچ عنوان نقش موثر تکالیف را دست کم نگیرید. همیشه آن را جدی بگیرید و به عنوان شانسی برای استحکام بخشیدن به دانشتان در حافظهی بلند مدت به آن نگاه کنید. البته در خیلی مواقع، تکلیف نیز کافی نیست. حتی در برخی اوقات که به صورت خود آموز اقدام به یادگیری میکنید، حتی دبیری ندارید که تکلیفی به شما بدهد.
در همچین شرایطی، باید برای خودتان پروژه تعریف کنید. میتوانید چندین ایده از خودتان مطرح کرده و آنها را پیادهسازی کنید یا اگر ایدهای ندارید نیز میتوانید از مطلب «برنامهنویسی را سریعتر بیاموزید – ۵ ایده برای شروع کدنویسی» در فرادرس کمک بگیرید. اگر کاملا در برنامهنویسی تازه کار هستید، میتوانید یک بازی دوز یا «Hangman» طراحی کنید. اگر تجربه دارید و میخواهید یک «فریمورک» جدید را بیاموزید، یک اپلیکیشن موبایل یا بازی تحت وب طراحی کنید. هر چیزی که شخصا به آن علاقهمند باشید، گزینهی مناسبی است. این روش به دو دلیل بسیار کارآمد است.
اولا، توجه شما را به خود جلب خواهد کرد. تحقیقات نشان دادهاند که دانشآموزان در هنگام کار برروی موضوعاتی که به آن علاقه دارند، بهتر یاد میگیرند. یک پروژهی شخصی نیز دقیقا همین ویژگی را دارد. شما در این حالت هدفی دارید که واقعا میخواهید به آن برسید، در نتیجه انگیزهی بیشتری نیز برای جذب اطلاعاتی که شما را به آنجا برساند خواهید داشت.
ثانیا، هیچ فشاری برای موفقیت برروی شما نیست. موفق شدن همیشه چیز خوبی است، ولی رسمی نبودن آن باعث میشود بتوانید خلاقیت بیشتری در آن خرج کنید و با قوانین بیشتر بازی کنید. درست است که به طور مداوم به مشکل خواهید خورد، ولی این کار بیشتر شبیه به لگوبازی خواهد بود تا انجام تکلیف، لذت آن بیشتر و اضطراب آن کمتر است.
خونسرد باشید و همه چیز را نشانهگذاری کنید
هیچ برنامهنویسی تمام آموختههایش را به یاد ندارد، این یک حقیقت است. حتی اگر مدت زمان زیادی را صرف کار با یک فریمورک یا کتابخانه کرده باشید، باز هم طبیعی است که نتوانید تمام توابع یا متغیرهای آن را نام ببرید. در واقع، سعی در حفظ کردن همه چیز فقط اتلاف زمان و انرژی است. وجود دفترچه یادداشتها بی دلیل نیست، وقتی میتوان یک چیزی را تنها در مواقع نیاز مطالعه کرد، چه لزومی دارد که تمام آن را در ذهنمان ذخیره کنیم؟ همین کار را با (API)های برنامهنویسی نیز میتوان انجام داد.
باید بدانیم که در چه مواقعی نیاز به حفظ کردن داریم و چه موقع فقط یادداشت کردن کافی است. وقتی پای مسائل مفهومی در میان است، همیشه باید تا حد توان آنها را یاد بگیرید و حفظ کنید. حتی اگر تنها بخش تئوری آن را درک کنید کافی است و نیازی نیست حتما بتوانید از آن در کدنویسی استفاده کنید (البته باید مفهوم تئوری را به قدری خوب متوجه شده باشید که بتوانید آن را به دیگران نیز تدریس کنید).
برای سایر مباحث نظیر نام توابع، لیست پارامترها یا حتی قوانین هر زبان، نیازی به حفظ کردن آنها ندارید. همینکه آنها را یادداشت کنید کفایت میکند. بعضی مواقع آنقدر یک چیزی را یادداشت و مطالعه میکنید که ناخواسته در ذهنتان مینشیند. اگر این اتفاق بیفتد که خیلی خوب است، اگر هم نیفتد، باز مشکلی نیست.
سخن آخر
برنامهنویسی سخت است و به طور طبیعی هر کسی در آن به مشکل میخورد. حتی افرادی که سالها برنامهنویس بودهاند نیز در گاهی اوقات برای یادگیری مفاهیم جدید باید با خودشان کلنجار بروند. اگر جایی به مشکل برخوردید یا چیزی به یادتان نیامد، خودتان را مقصر ندانید.
برروی پروژههای شخصی آزمایش کنید
در دوران مدرسه، تکلیف برای همه دانشآموزان همانند اقدامی از سوی دبیران بود که سرگرمی را از ما بگیرند و سرمان را به درس مشغول کنند. ولی الان که به عقب نگاه میکنیم، تکالیف به نظر چیزی منطقی میآیند و ما را مجبور میکردند از دانش جدیدی که به دست آوردهایم به طور عملی استفاده کنیم.
اگر در کلاس برنامهنویسی ثبت نام کردهاید، به هیچ عنوان نقش موثر تکالیف را دست کم نگیرید. همیشه آن را جدی بگیرید و به عنوان شانسی برای استحکام بخشیدن به دانشتان در حافظهی بلند مدت به آن نگاه کنید. البته در خیلی مواقع، تکلیف نیز کافی نیست. حتی در برخی اوقات که به صورت خود آموز اقدام به یادگیری میکنید، حتی دبیری ندارید که تکلیفی به شما بدهد.
در همچین شرایطی، باید برای خودتان پروژه تعریف کنید. میتوانید چندین ایده از خودتان مطرح کرده و آنها را پیادهسازی کنید یا اگر ایدهای ندارید نیز میتوانید از مطلب «برنامهنویسی را سریعتر بیاموزید – ۵ ایده برای شروع کدنویسی» در فرادرس کمک بگیرید. اگر کاملا در برنامهنویسی تازه کار هستید، میتوانید یک بازی دوز یا «Hangman» طراحی کنید. اگر تجربه دارید و میخواهید یک «فریمورک» جدید را بیاموزید، یک اپلیکیشن موبایل یا بازی تحت وب طراحی کنید. هر چیزی که شخصا به آن علاقهمند باشید، گزینهی مناسبی است. این روش به دو دلیل بسیار کارآمد است.
اولا، توجه شما را به خود جلب خواهد کرد. تحقیقات نشان دادهاند که دانشآموزان در هنگام کار برروی موضوعاتی که به آن علاقه دارند، بهتر یاد میگیرند. یک پروژهی شخصی نیز دقیقا همین ویژگی را دارد. شما در این حالت هدفی دارید که واقعا میخواهید به آن برسید، در نتیجه انگیزهی بیشتری نیز برای جذب اطلاعاتی که شما را به آنجا برساند خواهید داشت.
ثانیا، هیچ فشاری برای موفقیت برروی شما نیست. موفق شدن همیشه چیز خوبی است، ولی رسمی نبودن آن باعث میشود بتوانید خلاقیت بیشتری در آن خرج کنید و با قوانین بیشتر بازی کنید. درست است که به طور مداوم به مشکل خواهید خورد، ولی این کار بیشتر شبیه به لگوبازی خواهد بود تا انجام تکلیف، لذت آن بیشتر و اضطراب آن کمتر است.
خونسرد باشید و همه چیز را نشانهگذاری کنید
هیچ برنامهنویسی تمام آموختههایش را به یاد ندارد، این یک حقیقت است. حتی اگر مدت زمان زیادی را صرف کار با یک فریمورک یا کتابخانه کرده باشید، باز هم طبیعی است که نتوانید تمام توابع یا متغیرهای آن را نام ببرید. در واقع، سعی در حفظ کردن همه چیز فقط اتلاف زمان و انرژی است. وجود دفترچه یادداشتها بی دلیل نیست، وقتی میتوان یک چیزی را تنها در مواقع نیاز مطالعه کرد، چه لزومی دارد که تمام آن را در ذهنمان ذخیره کنیم؟ همین کار را با (API)های برنامهنویسی نیز میتوان انجام داد.
باید بدانیم که در چه مواقعی نیاز به حفظ کردن داریم و چه موقع فقط یادداشت کردن کافی است. وقتی پای مسائل مفهومی در میان است، همیشه باید تا حد توان آنها را یاد بگیرید و حفظ کنید. حتی اگر تنها بخش تئوری آن را درک کنید کافی است و نیازی نیست حتما بتوانید از آن در کدنویسی استفاده کنید (البته باید مفهوم تئوری را به قدری خوب متوجه شده باشید که بتوانید آن را به دیگران نیز تدریس کنید).
برای سایر مباحث نظیر نام توابع، لیست پارامترها یا حتی قوانین هر زبان، نیازی به حفظ کردن آنها ندارید. همینکه آنها را یادداشت کنید کفایت میکند. بعضی مواقع آنقدر یک چیزی را یادداشت و مطالعه میکنید که ناخواسته در ذهنتان مینشیند. اگر این اتفاق بیفتد که خیلی خوب است، اگر هم نیفتد، باز مشکلی نیست.
سخن آخر
برنامهنویسی سخت است و به طور طبیعی هر کسی در آن به مشکل میخورد. حتی افرادی که سالها برنامهنویس بودهاند نیز در گاهی اوقات برای یادگیری مفاهیم جدید باید با خودشان کلنجار بروند. اگر جایی به مشکل برخوردید یا چیزی به یادتان نیامد، خودتان را مقصر ندانید.
چند دقیقه با کنکوری ها ۱
@Cactos
چند دقیقه با کنکوری ها ١
روانشناس پرستو زارعی
روانشناس پرستو زارعی
چند دقیقه با کنکوریها ۲
@Cactos
چند دقیقه با کنکوری ها ٢
روانشناس پرستو زارعی
روانشناس پرستو زارعی
Forwarded from Fanium Test | تست فنیوم
در کدام یک از نسل های زیر کامپیوتر های شخصی ایجاد شدند؟
Anonymous Quiz
8%
نسل اول
41%
نسل سوم
21%
نسل دوم
30%
نسل چهارم
Forwarded from Fanium Test | تست فنیوم
به مواد اولیه که پیش از انجام عملیات به عنوان ورودی به سیستم وارد میشوند چه می گویند؟
Anonymous Quiz
6%
Process
21%
Information
70%
Data
4%
System