چگونه برنامهنویسی یاد بگیریم؟ (بخش دوم)
خودآموزی
در انتهای طیف دیگر آموزش دانشگاهی، بسیاری از برنامه نویسان خودآموز هستند. آنها نوشتهها و مستندات آنلاین میخوانند، با موارد و موضوعات مختلف سروکله میزنند و به طریقی کارها را به انجام میرسانند و درنهایت تبدیل به برنامه نویسان معتبر از طریق تجربههای دردناک و سخت میشوند.
من با این روش چیزهای زیادی در مورد چگونگی برنامهنویسی آموختم. مهمترین نکته در مورد من داشتنِ چند تسک (وظیفه) بود که میخواستم به انجام برسانم. ببینید، برنامهنویسی یک ابزار است، در خودش پایانی ندارد. سیستمی است که از آن برای به انجام رساندنِ چیز دیگری استفاده میکنید. بنابراین باید چیزی برای به انجام رساندن داشته باشید. گاهی اوقات باید خودتان تسک درست کنید. برای مثال یکی از دوستانم ایدهای برای یک بازی خیلی ساده داشت. بنابراین یک تابستانی، من چند هفته را صرف یادگیری جاوا کردم تا بتوانم آن بازی را بنویسم. من قبل از آن اصول برنامهنویسی در زبان دیگری را میدانستم، یعنی زبان C و آن را از کلاسهای دانشگاه یاد گرفته بودم. بنابراین چیزهایی از برنامهنویسی میدانستم و کاملاً تازهکار نبودم که کمک زیادی به من کرد.
کاری که من کردم (و چیزی که من به اغلب مردم توصیه میکنم انجام دهند اگر قصد یادگیری زبانی برای برنامهنویسی دارند) این بود که فقط آموزش رسمی که سازندگان زبان (برنامهنویسی) عرضه کرده بودند تا انتها مطالعه کردم. برای من ورژنِ قدیمیتر آموزش جاوا بود. تقریباً همه زبانها این آموزشهای رسمی رادارند، یا حداقل برخی وبسایتها را برای یادگیری به شما توصیه میکنند. معمولاً باید نام زبانی را که میخواهید یاد بگیرید به همراه لغت Tutorial” ” در گوگل جستوجو کنید و چیزی را که دنبالش هستید پیدا خواهید کرد یا به وبسایت اصلی زبانی که قصد یادگیریاش رادارید بروید و دنبال لینکهای “getting started” باشید.
حالا اگر در مورد برنامهنویسی هیچچیزی نمیدانید، موارد دیگری است که باید اول یاد بگیرید که این موارد بستگی باتجربه کار شما با کامپیوتر دارد. ممکن است لازم باشد کمی در مورد نحوه کارکرد کامپیوترها، چگونگی ویرایش فایلهای متنی و چگونگی اجرای برنامهها از طریق command line (ازآنجاییکه معمولاً به همین طریق اولین برنامههایتان را اجرا میکنید) مطالعه کنید. بسیاری از این کارها این روزها با استفاده از ویرایشگرهای کد مبتنی بر وب سادهشده است اگرچه در این حالت شما فقط میتوانید کدها را در مرورگر خود نوشته و اجرا کنید. برای پیدا کردن یکی از این ویرایشگرها، در گوگل نام زبان برنامهنویسی به همراه کلمه “web editor” (بدون گیومه) را جستوجو کنید.
بهمحض اینکه آموزش رسمی (یا هر آموزشی) را برای زبان برنامهنویسی دلخواه خودیافتید، راههای بسیاری برای خودآموزیِ چگونگی برنامهنویسی وجود دارد. Google و Stack Overflow قطعاً عالی هستند، به همان نسبت نوشتههای (مستندات) رسمی برای زبان برنامهنویسی که استفاده میکنید هم مهم هستند. بخش زیادی از کاری که من زمان خودآموزی میکردم، جستوجو در بین نوشتههای رسمی زبان برنامهنویسی (که میخواستم یاد بگیرم) در مورد کلمات مرتبط باکاری بود که میخواستم انجام دهم و فقط آن نوشتهها را میخواندم تا کاری را که سعی داشتم انجام دهم بفهمم. اما نکته کلیدی در اینجا، همانطور که قبلاً هم گفتم، این است که شما واقعاً باید بفهمید چهکار میکنید. اگر خیلی تازهوارد برنامهنویسی شدهاید، گاهی اوقات ایرادی ندارد که تکه کدی را copy و paste کنید و از وظیفهاش چیزی سر درنیاورید. اما درواقع این کار شمارا خیلی سریع بهاصطلاح زیرآب داغ میبرد. حتی با معیارهای فهم برنامهنویسی در حد خودتان. ممکن است گاهی اوقات حس کنید که این روش عمل نمیکند و نتیجه ندارد و در مورد چرایی آنهم هیچ ایدهای نداشته باشید.
در حقیقت نفهمیدن چرایی انجام یک کار، خستهکنندهترین بخش خودآموزیِ برنامهنویسی است. حدس میزنم اینجا همان لحظهای است که اغلب مردم جا میزنند و تسلیم میشوند. گاهی اوقات همهچیز به هم میریزد و کار نمیکند، پیام خطایِ خروجی سیستم کاملاً نامفهوم و رمزی است، و مردم نمیفهمند که چگونه باید رفعش کنند. این مشکل همیشه و همیشه به خاطر این است که برنامهنویس، آن زبان برنامهنویسی، ابزارهایی که در آن زبان استفادهشده است یا معنی کلمات پیغام خطا را نفهمیده است. این موضوع اغلب زمانی که تکه کدی را بدون اینکه کاملاً هر کلمه و نماد آن را بفهمید، copy و paste کرده باشید، اتفاق میافتد.
خوب حالا بله، ممکن است کارهای بسیار و یادگیری معنای واقعی تکتک کلمات و نمادها به نظر بیاید، اما این روشِ یادگیری برنامهنویسی است. برنامه نویسان برای جامعه فقط به خاطر copy و paste کردنِ کد از Stack Overflow ارزشمند نیستند. آنها به این خاطر ارزشمند هستند که مفاهیمِ مشخص و چگونگی استفاده از آنها را یاد گرفته و فهمیدهاند. شما درواقع با انجام این کارها و تمرینها ارزش خودتان را بهعنوان یک برنامهنویس افزایش میدهید.
اگرچه هنوز هم به انجام رساندنِ تمام این فرآیند بدون هیچ نوع کمکی خستهکننده است. خوشبختانه اگر دارید این کارها را انجام میدهید، کسانی هستند که در اوقاتی که کاملاً گیر کردید بتوانید به آنها دسترسی داشته باشید و میتوانند برای پاسخ پرسشهایی که دارید کمکتان کنند. من هیچکسی را نداشتم، و گاهی اوقات این موضوع خیلی سخت بود، زمانی که من ۳۰ ساعت وقت صرف زل زدن به یک قطعه کد میکردم و برای اینکه بفهمم چرا آن چیز کار نمیکند موهایم را میکندم. بنابراین اگر کسی دارید که میتوانید مشکل را با او در میان بگذارید، اغلب بهتر از حل مشکل توسط خودتان است، مخصوصاً در اوایلِ کار. گاهی اوقات مطالعه تمام مستندات و نوشتهها برای یکچیز (موضوع)، زمانی که تازهوارد برنامهنویسی شدهاید، میتواند آزاردهنده باشد. اینکه راهنما یا حداقل کمککنندهای داشته باشید، مفید است.