دوستی دارم که درحال یادگیری برنامه نویسی است و روزی از من پرسید که «چگونه میتوانم سریعتر برنامه نویسی را یادبگیرم؟». من زمانیکه در کالج بودم بهصورت خودآموز برنامه نویسی را فراگرفتم و اکنون پس از گذشت سالها این را متوجه شدم که سختترین راه ممکن را برای یادگیری برنامه نویسی انتخاب کردم. راههای سریعتر بسیاری وجود داشتند که میتوانستم از آنها استفاده کنم. تصمیم دارم به عقب برگردم و مطالبی را که سالها پیش یادگرفتم در این مقاله از راکت بیان کنم.
بهسرعت
من واقعاً سؤال دوستم را متوجه میشوم، اما نمیدانم که منظور او از بهسرعت چیست. فکر میکنم که با پیروی از توصیههای زیر، برنامه نویسی را نسبتاً سریع یاد خواهید گرفت (لااقل پیشرفت و رشد شما سریع خواهد بود). نباید سعی کنید که بخشی از روشها را حذف کنید و یا دور بزنید چون با انجام این کار بعدها بهزحمت بیشتری میافتید.
تنها راه برای یادگیری سریع که ماندگار هم باشد این است که از رویکرد غرقشدن در زبان استفاده کنید. راهی را پیدا کنید که برای یک مدت مشخص غرق در برنامهنویسی شوید. برای اینکه این روش مؤثر واقع شود، باید خودتان را مجبور کنید که بهطور پیوسته مطالب جدید یاد بگیرید و تسلیم مشکلات نشوید. این، یکی از مزیتهای کمپهای آموزشی کدنویسی است. بعد از اتمام این دوره متخصص نمیشوید، اما به یادگیری سریعتر شما کمک میکند. میتوان از یک مربی خصوصی (منتور) یا یادگیری همراه با یک گروه از مبتدیان هم استفاده کرد.
۱. بخوانید، کدنویسی کنید، بخوانید، کدنویسی کنید (برنامه روزانه)
اولین توصیهای که برای یادگیری مؤثر برنامه نویسی میتوانم به شما ارائه دهم این است که وقت خودتان را مدام بین کدنویسی و خواندن مطالبی درمورد آن تنظیم کنید.
خواندن مطالبی درمورد کدنویسی بااستفاده از کتاب، پستهای وبلاگی و برنامههای متنباز به شما کمک میکند که راهحلهای مختلف را مشاهده و بهترین کارها را درک کنید و به یک درک کلی از یک زبان یا یک سیستم برسید؛ اما بعد از انجام این کار باید خودتان کدنویسی انجام دهید.
این کد میتواند شامل هرچیزی باشد چه یک کد کوچک و چه بخشی از یک پروژه اما واقعاً آن را بهصورت یک تمرین انجام دهید و مطمئن شوید که از دانستههایتان استفاده میکنید. اگر این کار را انجام ندهید تبدیل به ویرایشگری میشوید که هیچ ایدهای از خودش نمیتواند داشته باشد.
نکته مهم در اینجا این است که انجام دادن این کار با احساس خوبی همراه نیست. تقریباً عذابآور است اما باید به این حس غلبه کنید و این کار را انجام دهید. کدنویسی از قانون 20/80 پیروی میکند به اینصورت که 80 درصد از زمانتان را صرف 20 درصد از کدتان یا 20 درصد ازآنچه درحال یادگیری آن هستید، میکنید. استقبال از این احساس ناخوشایند و غلبه بر آن کلید موفقیت است.
این حلقه تکراری باید بهصورت روزانه اتفاق بیافتد نه بهصورت هفتگی و یا ماهانه. هرچه بیشتر استفاده از مهارتهایتان را به تعویق بیاندازید، آنها بیشتر از بین میروند. هرچه بیشتر منتظر یادگیری مطالب جدید باشید، فرصتهای بیشتری را برای ورود به کد خودتان از دست میدهید.
من سایت lobster.rs. را برای مطالعه درمورد کلیت برنامه نویسی به شما پیشنهاد میکنم. در این سایت تعداد زیادی مقالات مختلف درمورد موضوعات مربوط به برنامه نویسی وجود دارد. یک سایت خوب دیگر سایت Hacker News است اما معمولاً سایتها از بحث خارج میشوند.
۲. در مشکلات گیر نکنید؛ تقاضای کمک کنید.
بزرگترین اشتباه من زمان یادگیری برنامهنویسی این بود که زمان طولانی روی یک مشکلی گیر میکردم که حتی ممکن بود خیلی احمقانه باشد و یا اینکه موضوعی بود که اساساً آن را درک نمیکردم. گاهی چند روز از وقت من صرف چنین مشکلاتی میشد درحالیکه میتوانستم کارهای زیادی در این زمان تلفشده انجام دهم و چیزهای بسیاری یاد بگیرم. بهطورکلی گیرکردن روی یک مشکل بیشتر از 1 ساعت تنها اتلاف وقت است.
سه نکته را در اینجا بیان میکنم که به گیرنکردن روی یک مشکل کمک میکند. اولین نکته این است که سعی کنید همواره مطالب زیادی درمورد فناوری که با آن کار میکنید بخوانید و یک دید جامع و کلی نسبت به آن داشته باشید. معمولاً وقتی روی یک موضوع گیر میکنید به این معنی است که مفروضات اشتباهی در ذهن دارید و مطلب مبهمی درمورد آن موضوع خاص برایتان وجود دارد.
دومین نکته این است که از اینترنت کمک بگیرید. میدانم که کمک گرفتن از اینترنت کاملاً برای همه واضح است اما ارزش مطرح کردن را دارد. بهصورت آنلاین از افرادی که به مشکل شما برخوردهاند کمک بگیرید. سایت Stackoverflow یکی از بهترین سایتها برای این کار است. از پرسیدن سؤالاتتان در آن فضا هراسی نداشته باشید. معمولاً تلاش برای درست مطرح کردن سؤالات تا حد زیادی کمککننده است. من افسوس میخورم که کاش در گذشته از این روش بیشتر استفاده میکردم و از این نمیترسیدم که ممکن است سؤالاتم احمقانه باشند.
سومین پیشنهاد من این است که از کسی درخواست کمک کنید. ممکن است شما با یک فناوری آشنا باشید و سؤالاتی هم داشته باشید اما برای اینکه در مشکلات گیر نکنید به سطح بالاتری از معلومات درمورد آن فناوری نیاز دارید که همیشه میتوانید از دیگران بپرسید.
بهعنوانمثال، من زمانیکه درحال یادگیری Docker بودم بهطرز مسخرهای زمان بسیار زیادی را صرف بازتولید image از scratch کردم. من اساساً cache docker را درک نکرده بودم و برای اعمال هر تغییر کوچکی باید 20 دقیقه منتظر میماندم. حدود 8 ساعت زمان برای این buildها تلف کردم. کافی بود کمی بیشتر درمورد Docker مطالعه کنم یا از کسی که به آن تسلط داشت میپرسیدم تا این موضوع را در زمان بسیار کوتاهتری درک کنم.
۳.کارکردن روی پروژهها
طبق تجربه من، برای یادگرفتن برنامه نویسی هیچکاری مفیدتر از کارکردن روی پروژههای خودتان نیست.
بهجز برخی موارد استثنا، تمام برنامهنویسان خوبی که من میشناسم عادت دارند روی پروژههای جانبی کار کنند (این موضوع در محل کار هم میتواند اتفاق بیافتد!).
داشتن یک ایده و تلاش برای اجرای آن کاملاً چالشبرانگیز است. نیاز به نظم زیادی دارد؛ اما با تلاش برای ساختن یکچیز، یاد میگیرید که چگونه بر مشکلات غلبه کنید فناوری را به آنها اضافه کنید. فهرست کردن مشکلاتی که با آنها مواجه هستید و روشی که بر آنها غلبه میکنید درواقع همان برنامه نویسی است.
دانستن تمام جزئیات مربوط به یک زبان برنامه نویسی به شما کمک میکند اما شما را از مسیر دور میکند. تلاش برای تکمیل یک پروژه هم به شما برای تداوم یادگیری انگیزه میبخشد. احساس رضایتی که بعد از انجام یک پروژه جانبی به شما دست میدهد، بسیار بیشتر از احساس رضایتی است که از یادگیری مطالب به شما دست میدهد.
پیشنهاد من برای انتخاب یک پروژه این است که زمینهای را انتخاب کنید که به آن علاقهمند هستید و البته ایدهای هم برای انجام آن دارید. توانایی صحبت درمورد اجرای کار قبل از شروع آن همیشه برای من انگیزهبخش بوده است. از این طریق قطعاً چیزهای بسیاری یاد میگیرید.
۴. تفاوت بین کمالگرایی و هککردن را درک کنید و بر این اساس انتخاب کنید.
دو دسته برنامهنویس وجود دارد: کمالگرایان و هکرها. بعضی افراد همهچیز را در سطح عالی میخواهند و میخواهند که تمام تمرینهای عالی را انجام دهند و کدهای فوقالعاده بنویسند. آنها میخواهند که تمام خطوط کد را درک کنند.
دسته دیگری هستند که فقط میخواهند به هر قیمتی که شده یک کار را تمام کنند. برقراری تعادل بین این دو مهارت واقعاً مهم است. گاهی شما باید عمیقاً یک مشکل یا پروژه را درک کنید تا متوجه شوید که چه اتفاقی میافتد. گاهی هم فقط باید یک کار را شروع کنید حتی اگر هیچ ایدهای برای ادامه آن نداشته باشید.
هروقت که میبینید زمان زیادی را روی یک مسئله گذاشتهاید از خودتان بپرسید: از کدام رویکرد باید استفاده کنم؟ در اکثر مواقع به یک راه متعادل نیاز دارید. شما میخواهید که یک راهحل قطعی و مناسب پیدا کنید که آن را درک کنید و بتوانید بهراحتی آن را اصلاح کنید اما بهشرطی که زمان خیلی زیادی صرف انجام این کار نشود. هرچه بیشتر بهعنوان یک توسعهدهنده رشد کنید، بهتر متوجه میشوید که کجا لازم است یک موضوع را رها کنید و کجا باید بهصورت دقیق یک کار را انجام دهید.
شخصاً ترجیح میدهم پروژههایم به اندازه 80درصد کامل و ایدهآل باشند. اگر شما میخواهید که 100درصد پروژهتان و تمام خطوط آن کامل باشند باید وقت زیادی را صرف آن کنید.
۵. با دیگر برنامهنویسان صحبت کنید.
یک راه خوب دیگر برای یادگیری برنامه نویسی، صحبت با سایر برنامهنویسان است. نباید لزوماً درمورد یک موضوع خاص صحبت کنید؛ ممکن است درمورد مطلبی باشد که شما درحال یادگیری آن هستید و یا مطلبی که به نظرتان جالب میآید و یا موضوعی که هماکنون مشغول کار روی آن هستید. تعداد کمی از برنامهنویسان هستند که دوست ندارند فقط درمورد برنامه نویسی صحبت کنند.
با این کار میتوانید حتی درمورد کتابخانهها، سرویسها، زبانهای برنامهنویسی و الگوها هم اطلاعات کسب کنید؛ اما نکته مهمتر این است که با طرز فکر سایر برنامهنویسان آشنا میشوید. متوجه میشوید که موارد مهم یا موارد قابلحذف، از شخصی به شخص دیگر کاملاً متفاوت است.
۶. هرکاری را امتحان کنید. اگر نتیجهای نگرفتید، 6 ماه صبر کنید.
اتفاقی که زیاد برای من افتاد این بود که خیلی از کارهایی را امتحان کردم که درکی از آنها نداشتم. بعد از امتحان هر کار جدیدی به مدت 30 دقیقه، کارم را متوقف میکردم. فکر میکنم این کار برای شروع، عادی باشد؛ اما در بسیاری از مواقع معمولاً بعد از گذشت 6 ماه (یا 3 و یا 9 ماه) دوباره به همان مشکل یا فناوری برمیخوردم و متوجه میشدم که چگونه باید از آن استفاده کنم.
این مسئله به این دلیل پیش میآمد که من دانش قبلی نداشتم و یا شاید به این دلیل که از یک روش متفاوت استفاده میکردم؛ اما کمی صبرکردن و بعد دوباره به همان موضوع برگشتن، همیشه یکی از روشهای مفید است.
یکی از این مثالها یادگیری استفاده از ترمینال است. به یاد دارم که مدتزمان طولانی از کارکردن با ترمینال واهمه داشتم و هیچچیزی درمورد استفاده از آن نمیدانستم. مدتی طول کشید تا با قدمهای کوچک توانستم بهصورت منظم از آن استفاده و آن را درک کنم. اگر کسی بود که طرز استفاده از آن را برایم توضیح میداد و یا منبع خوبی برای یادگیری آن پیدا میکردم، هرگز این اتفاق نمیافتاد!
نتیجهگیری
در اینجا نکاتی را بیان کردم که به هر تازهواردی در مسیر برنامهنویسی کمک میکند. میدانم که هنوز هم مطالب زیادی هستند که من باید یاد بگیرم و همیشه این مسیر را ادامه میدهم. مهمترین نکته هم ادامه دادن و متوقف نشدن است. گفتن این جمله آسان است اما یادگرفتن برنامهنویسی میتواند گاهی بسیار ناامیدکننده باشد! اما نگران آن نباشید چون طبیعی است.
موفق باشید!
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید