بهترین روشهای یادگیری برنامهنویسی به صورت خودآموز
اگر شما میخواهید یاد بگیرید چگونه کد بنویسید، انجام اولین گامها در این دنیای بزرگ، به نظر ترسناک میرسد ولی کار ترسناک و رعبآوری نیست.
در اینجا راز بزرگی وجود دارد؛ منابع رایگان و ارزان زیادی وجود دارد که شما میتوانید از آنها برای یادگیری استفاده کنید، تکنیکهای زیادی را به خود یاد دهید و این فرآیند و پروسه یادگیری را سرگرمکننده و هیجانانگیز کنید.
اینکه آیا شما یک فرد بالغ هستید که به دنبال ورود به صنعت فناوری است، یا یک دانشجو که به دنبال یادگیری آخرین زبان یا یک سرگرمی است که فقط میخواهد بداند نرمافزار و سرویسها چگونه کار میکنند، فرقی ندارد. تمام آنچه شما برای شروع برنامهنویسی به آن نیاز دارید یک کامپیوتر و دسترسی به اینترنت است. قبل از اینکه به یادگیری در این زمینه بپردازید، در این مقاله بهترین نکات و آموزشها را برای یک شروع خوب قرار دادهایم.
از خودتان بپرسید: چرا میخواهید کدنویسی را یاد بگیرید؟
چند دقیقه یا حتی یک روز وقت بگذارید و درباره دلایل فکر کنید. دلایل واقعی که چرا شما میخواهید یک زبان برنامهنویسی را یاد بگیرید. با خودتان صادق باشید. آیا شما به دنبال کمترین حد ممکن یادگیری هستید؟ آیا شما به دنبال ایجاد یک تغییر بزرگ شغلی هستید؟ آیا میخواهید خالق بزرگترین برنامه بعدی باشید؟ یا با برنامهنویسی دستگاههای هوشمند مختلف برای انجام کارهای حیرتانگیز، هماتاقیهایتان را هیجان زده کنید؟
پاسخ شما میتواند کمک کند که تصمیم بگیرید به کدام زبان (های) برنامهنویسی باید تسلط پیدا کنید. همچنین هدف شما به چه نوع تعهدی (وقت و پول) ممکن است نیاز داشته باشد؟ برای مثال اگر رویای شما ایجاد سیستمعامل عالی بعدی است یا یک جایگزین برای photoshop، میتوانید از یک آموزش رسمی علوم رایانهای که به شما C++ میآموزد و همچنین مباحث پیچیدهتر مثل ساختمان داده، الگوریتمها و تخصیص حافظه بهرهمند شوید.
از سوی دیگر اگر شما یک سطح شغلی متوسط دارید و به دنبال تبدیل به یک فرد حرفهای هستید، یک دوره عملی برنامهنویسی کوتاه مدت میتواند حس و نیاز شما را رفع کند به جای اینکه نیاز به گرفتن یک مدرک دیگر، تحصیلات و هزینه طولانی باشد. اگر تنها کاری که میخواهید بکنید ایجاد وبسایت و یا Raspberry pi است خود را به آن محدود کنید، یک ترکیب از آموزشهای مرتبط به هم و تعاملی و دورههای آنلاین رایگان میتواند برای پیشبرد شما کافی باشد.
انتخاب زبان برنامهنویسی مناسب
وقتی فهمیدید که چرا میخواهید برنامه بنویسید، میتوانید به آسانی زبان برنامهنویسی مناسب خود را انتخاب کنید. در حالیکه یک زبان برنامهنویسی به تنهایی برای یادگیری کامل نیست، بعضی از زبانها بسیار کاربر پسندتر از بقیه هستند. HTML و CSS سادهترین نقاط ورود به دنیای برنامهنویسی محسوب میشوند ولی آنها فقط برای توسعه وبسایتهای پایه و و ابتدایی (مقدماتی) مفید هستند.
برای وبسایتهای تعاملیتر که شامل سیستمهای پرداخت یا بانک اطلاعاتی (پایگاه داده) هستند، شما نیاز به یادگیری Javascript، PHP، SQL و Python دارید تا همهی اجزا بتوانند باهم کار کنند و تعامل داشته باشند. سازندگان برنامههای تلفن همراه از Swift یا C برای ساخت برنامههای IOS و از Java و Kotlin برای برنامههای اندروید استفاده میکنند. توسعهدهندگان بازیهای ویدئویی به Unity یا حتی C# روی میآورند تا ایدههای بازیشان را وارد دنیای واقعی کنند.
بازهم دربارهی زبان برنامهنویسی برای شروع خود نمیتوانید تصمیم بگیرید؟ اکثر متخصصان و برنامهنویسان حرفهای توصیه میکنند که Python، #C یا Javascript را یاد بگیرند، زیرا آنها بسیار مفیدتر (سودمندتر) هستند و انعطافپذیری بیشتری دارند.
از همه مهمتر، فقط شروع به یادگیری کنید! یادگیری هرچیزی که مربوط به زبانهای برنامهنویسی است. هنگامی که با یک زبان برنامهنویسی راه افتادید و احساس راحتی کردید، شما قادر خواهید بود زبان دیگری را که بسیار سریعتر و کاربردیتر است را انتخاب کنید؛ مثل یادگیری یک ساز موسیقی جدید یا یک زبان خارجی.
دورههای آنلاین را امتحان کنید.
اگر میخواهید کنترل بیشتری روی برنامه یادگیری خود داشته باشید یا نمیخواهید برنامهنویسی را بهتنهایی یاد بگیرید، یک دورهی برنامهنویسی آنلاین ممکن است گزینهی بهتری نسبت به دورههای فشرده برنامهنویسی حضوری (Bootcamp) باشد. با این حال تعداد زیادی کلاسهای آنلاین مختلف وجود دارد که زبانهای برنامهنویسی مشابهی را آموزش میدهند. تشخیص اینکه از میان آنها کدام یک واقعاً ارزش وقت و هزینهای که میکنید را دارد دشوار است.
اگر مشکلی برای تمرین انفرادی ندارید، سایت The Odin Project را بررسی کنید. گزینهای رایگان که بخشی از بهترین محتوای متن باز برای تبدیل برنامهنویس تازهکار به یک برنامهنویس واقعی و حرفهای را داراست.
آیا آموزشهای یک به یک و آمادهسازی شغلی بدون شرکت در یک Bootcamp تماموقت را میخواهید؟ سعی کنید برای دورههایی که به صورت مشترک هستند و گواهینامه اشتراکی از Udacity یا Treehouse ثبتنام کنید. جایی که این فرصت را دارید به جای تحمل اشتباهات برنامهنویسی و سؤالات به تنهایی، از یک معلم خصوصی (مدرس) کمک بخواهید. شما نمیتوانید بسیار بهتر از کلاسهای 19 دلاری از Udemy (حتی کمتر، زمانی که تخفیف دارند) انجام دهید. حتی دانشآموزان تماموقت bootcampها و علوم کامپیوتر در این کلاسها ثبتنام میکنند تا یادگیری خود را تکمیل کنند.
مهم نیست چند دوره را به پایان میرسانید. بسیاری از مبتدیان هنوز هم استفاده از دانش مقدماتی خود را دشوار میدانند. برای این منظور توصیه میشود دورههای عملی رایگان Javascript را از Watch and Code استفاده شود که حول یک پروژه که شما بهطور مداوم تکرار میکنید، میچرخد.
روی یادگیری تفکر محاسباتی تمرکز کنید.
بهجای تمرکز بیش از حد روی یادگیری یک زبان برنامهنویسی خاص، شما میتوانید حل مشکلات را به طریقی که یک کامپیوتر میتواند بفهمد یاد بگیرید. به عبارت دیگر، مهارتهایتان را در مفاهیمی مثل شناخت الگو، الگوریتمها و انتزاعات ارتقا دهید. همچنین اصولی وجود دارند مانند حلقهها که در هر زبانی که استفاده میکنید وجود دارند. هرچه این اصول را بهتر بفهمید و یاد بگیرید، یادگیری زبان بعدی بسیار آسانتر خواهد بود. (در نتیجه محصولات و پروژههای بهتری طراحی میکنید)
به لطف اینترنت، شما نیازی به ثبتنامدر یک برنامه کالج چهارساله برای یادگیری اصول علم کامپیوتر ندارید. تعدادی از کلاسهای کالج به صورت آنلاین در دسترس هستند.
من نمیتوانم Harvard’s CS50x را برای علوم کامپیوتر به عنوان یک مقدمه کافی توصیه کنم. شما میتوانید دورههای رایگان را از طریق edX بررسی کنید و با انجام تمام تکالیف یک گواهی دریافت کنید یا شما میتوانید با سرعت و طبق برنامه خود پیش بروید و تمام آموزشها و سخنرانیهایی را که در youtube پست شده ببینید. شما میتوانید به صورت خودآموز خودتان را در سطح کالجهای علوم کامپیوتر در 15 جلسه بسازید.
گرفتن کتاب
بهترین را برای یادگیری برنامهنویسی شاید درگیر شدنتان با کتاب باشد. یک کتاب واقعی که میتوانید آن را از ابتدا تا انتها ورق بزنید و دنبال کنید. این موضوع شاید روش بهتری برای کدنویسی باشد به جای اینکه در وبسایتهای مختلف بگردید و از یک موضوع به موضوع دیگر جا به جا شوید.
شما احتمالاً میتوانید کتاب الکترونیکی را برای هر زبان یا frameworkای (چارچوب) که میخواهید روی GitHub پیدا کنید ولی بسیاری از توسعهدهندگان وب بسیار به آموزشهای Jon Duckett اعتقاد دارند و در مورد یادگیری همه چیز درباره front-end و back-end از آن استفاده میکنند.
به عنوان یک برنامهنویس خودآموز ممکن است با کتابهایی روبهرو شوید و از آن بهره ببرید که محتواهای گستردهتری در مورد این حرفه ارائه میدهند. شما تفکر و عادات خود را ارتقا خواهید داد، صفاتی که میتوانید در مورد هر زبانی که تصمیم دارید یاد بگیرید استفاده کنید. Steve McConnell 900 صفحه برنامه را کامل کرده است به نام: A Practical Handbook of Software Construction (2nd Edition). این کتاب یک راهنمای قطعی شامل بهترین تمرینها در نظر گرفته شده است. با پیشنهاد پشتیبانی داده روی همه چیز، از طراحی پروژه تا رفع خطای کد.
کتاب دیگری که وجود دارد: A Handbook of Agile Software Craftsmanship است از Robert Martin. مارتین معتقد است که کد باید برای تست آسان و مقیاسپذیری، بسیار کارآمد و مؤثر نوشته شود و این امر برای بسیاری از تیمهای توسعهدهنده امروزی (مدرن) ضروری است.
از آنجا که برنامهنویسی واقعاً در مورد حل مسئله است، شما از روند فکر و راهحلهای “پشت پاکت” که Jon Bentley در Programming Pearls (2nd Edition) به اشتراک گذاشته است قدردانی خواهید کرد. تمام فصلها با تعدادی چالش به پایان میرسد که اغلب در مصاحبههای شغلی فنی استفاده میشود. بنابراین این کتاب را بخشی از کار خود قرار دهید.
برخی از آموزشهای تعاملی یا بازیهای برنامهنویسی را بررسی کنید.
بیاید با یک قضیه روبهرو شویم؛ خواندن خطوط کد روی صفحهی کامپیوتر یا کتاب میتواند به نظر بینظیر بیاید اما وقتی شما یک نمونه را در عمل مشاهده میکنید، آن مفهوم انتزاعی ناگهان مفهوم کاملی مییابد. این زیبایی برنامهنویسی تعاملی است که شما میتوانید آن را در وب بیابید.
به عنوان مثال FreeCodeCamp نه تنها مفاهیم برنامهنویسی را به بخشهای کوچکتری در مرورگر وب شما تفکیک میکند، بلکه هر مفهوم را با تمرین مرتبط جفت میکند که باید قبل از رفتن به موضوع بعدی، تمرین در نظر گرفته شده را حل کنید. به این دلیل شما نباید فقط به عنوان سرگرمی به این قضیه نگاه کنید. سایت واقعاً شما را مجبور میکند تا هنگام یادگیری مشکلات کدنویسی خود را برطرف کنید.
بازیهای برنامهنویسی نیز یک روش جالب برای شروع یادگیری برنامهنویسی است. اگر زمانی برای فراغت دارید میتوانید بازی سادهی Hour of Code را امتحان کنید. علاوه بر این، بسیاری از مدارس در حال حاضر از Minecraft: Educational Edition برای آموزش اصول برنامهنویسی به بچهها با بلوکهای برنامهنویسی و حتی JavaScript استفاده میکنند.
آیا میخواهید آموزش توسعهی یک بازی پیجیدهتر را در رزومهی خود داشته باشید؟ اگر شما تمایلی ندارید تمام طول روز به بلوکها مشت بزنید، CodinGame شاید از نظر سنی مناسبتر باشد.
اسباب بازیهای کودکانه را امتحان کنید.
چه کسی میگوید بزرگسالان نمیتوانند از همان بازیهای STEAM/STEM و بازیهای ویدیویی که بچهها را مجبور به کدنویسی میکنند بیاموزند؟ از این گذشته، این محصولات برای آموزش منطق کدنویسی و سینتکس ساخته شدهاند. بدون اینکه حتی کودکان کم حوصله به راحتی خسته شوند. بنابراین حتی برنامهنویسان بزرگسال ممکن است بتوانند با آن آموزش ببینند و سرگرم شوند.
اگر میخواهید رابطهی بین سختافزار و نرمافزار را بهتر بدانید، از Piper Computer Kit 2 که به شما امکان ساخت رایانه Raspberry Pi داده است، استفاده کنید. با استفاده از لپتاپ شما میتوانید کدنویسی را از طریق چالشهای سفارشی Minecraft Story Mode یاد بگیرید و از زبان drag-and-drop (کشیدن و رها کردن) Blockly استفاده کنید یا فقط فصلهای مقدماتی از پیش نصب شده را از Python انتخاب کنید.
زمانی که شما احتمالاً نتوانستید Droid BB-8 خود را از Star Wars ایجاد کنید ، می توانید با BOLT Sphero برنامهنویسی را یاد بگیرید. با استفاده از برنامه همراه، می توانید مطالب خوانده شده خود را با استفاده از بلوک های برنامه نویسی drag-and-drop (کشیدن و رها کردن) به نام Scratch کنترل کنید یا سطحش را با برنامهنویسی جاوا سکریپت بالا ببرید.
دستگاه های مورد علاقه (و دستیاران) ترفندهای جدید خود را آموزش دهید.
آیا دستگاه هوشمند خانگی مثل بلندگو Amazon Echo دارید؟ شما می توانید مهارت های برنامهنویسی خود را با ایجاد برنامه های کوچک سفارشی تست کنید تا عملکرد بیشتری از دستیاران دیجیتالی دستگاه های خود داشته باشید. الکسا آمازون ممکن است بسیاری از “مهارت های اصلی فرمان صوتی” را بداند، مانند خواندن عناوین آخرین اخبار ولی میتوانید وظایف پیچیدهتری را به وسیله برنامهنویسی در Node.js، Java، برPython، #C یا Go به آن یاد دهید. (یا اگر چیزهای آسانتری را برای شروع میخواهید، سایت طراحی مهارت ساده Alexa را امتحان کنید.)
این احتمال وجود دارد که علاقه شما به کد نویسی محدودتر باشد؛ به عنوان مثال ممکن است فقط بخواهید پایتون را به اندازه کافی یاد بگیرید تا پروژههای عالی Raspberry Pi خود را انجام دهید. در این صورت، میتوانید با بررسی بسیاری از پروژه هایی که دیگران در وب سایت آن را به اشتراک میگذارند، یک روش خودآموز برای یادگیری اتخاذ کنید.
با ایجاد مجدد پروژه های موجود، می توانید اطلاعات بیشتری در مورد عملکرد داخلی دستگاه بسیار قابل تنظیم خود کسب کنید. حتی ممکن است از خودتان الهام بگیرید تا روشهای جدیدی را برای استفاده از مینی کامپیوتر خود ایجاد کنید و به دنیای کدهای دیگر بیاندیشید.
تماشای فیلمهای مربوط به برنامهنویسی
گاهی اوقات، تماشای شخصی که به شما نشان میدهد یک کار چگونه انجام میشود ، سادهتر است. امروزه میتوانید انواع فیلمهای آموزشی را در مورد هر موضوع مرتبط با کد نویسی پیدا کنید: Googlers های سابق که در مورد مصاحبههای کدنویسی به اشتراک میگذارند، YouTubersها در حال پخش کردن ماراتنهای برنامهنویسی خود هستند و حتی کهنهکاران برنامهنویسی به شما نشان میدهند که چگونه میتوانید خطای خاصی را با هر زبانی که میخواهید حل کنید.
توصیه میکنم نسبت به موضوع مورد نظر خود آموزشهای یوتیوب را تماشا کنید.
با پروژههای شخصی تمرین کنید.
بدون استفاده از مهارتهای کدنویسی خود در چند پروژه، شما حتی برای نکات حرفهای کدنویسی در نظر گرفته نمیشوید. بنابراین برنامه ریزی و تمرین را شروع کنید.
مهم نیست که چه تعداد گواهینامه و کارگاه برنامهنویسی را کامل کنید یا چند زبان برنامهنویسی را یاد میگیرید، اثبات مهارتهای برنامهنویسی شما در پروژه برنامهنویسی شما خواهد بود. در حالی که پروژه شخصی شما لازم نیست به اندازه ایجاد Google Maps بعدی جاه طلب باشد، باید کاری باشد که میخواهید در 7 تا 24 ماه بهطور مداوم کار کنید تا مرتباً دامنه آن بهبود یابد.
کوچک شروع کنید، اما بزرگ فکر کنید. پروژه شما باید شامل مهارتهایی باشد که در حال حاضر دارید ، اما باید برنامهای برای ویژگیها و مهارتهای آینده مورد نیاز خود داشته باشید تا بتوانید آن چشمانداز را به واقعیت تبدیل کنید. بدون استفاده از مهارتهای کنویسی خود در چند پروژه، شما حتی برای نکات حرفهای کدنویسی در نظر گرفته نمیشوید. بنابراین برنامهریزی و تمرین را شروع کنید. (توصیه ما؟ از نکات ریز برنامهنویسی خود استفاده کنید تا یک بازی جنایی هیجانانگیز بسازید.)
موفقیتهای کوچک را جشن بگیرید.
برنامه نویسی همه در جزئیات است ، به همین دلیل شما باید به قول یکی از اساتید برنامهنویسی ما “پیروزی های کوچک” را جشن بگیرید. این کار باعث میشود تا هر عنصر به تنهایی کار کند و همچنین آزمایش مداوم برای اطمینان از اینکه هر خط کد با همه بقیه برنامه بدون خطا کار میکند. اگر کارهایی که به ظاهر جزئی است را انجام ندادهاید مثل بستن یک برچسب HTML، شما در رفع یک خطای سادهی در سینتکس گیر خواهید کرد به جای نوشتن کد چشمگیرتر و پیچیدهتر.
شما باید صبور باشید. انتظار ندارید که پس از گذشت تنها چند ماه مطالعه یا چند دورهی حضوری و عملی برنامهنویسی (Bootcamp)، Fortnite بعدی را برنامهنویسی کنید. کدنویسی فرم RSVP بدون خطا در وب سایت، یا ساخت یک بازی پیش بینی عدد ساده اما در عین حال درست، در حال حاضر یک دستاورد قابل توجه برای یک مبتدی است. اگر گیر کردید، تسلیم نشوید. شما کاملاً باید در هر جایی که میتوانید به دنبال کمک باشید، ولی باید بدانید چه موقع استراحت کنید تا از فرسودگی اجتناب کنید و بعد امتحان کنید ، دوباره امتحان کنید.
پیامهای خطا را در گوگل سرچ کنید
این بهترین توصیه ما برای کدنویسی است: اگر نمی توانید بفهمید چرا کد شما ایراد دارد، همیشه میتوانید به صورت آنلاین به دنبال راه حل باشید.
شما احتمالاً اولین کسی نیستید که اشتباه کردید و مطمئناً شخصی در اینترنت راه حلی برای مسئله شما پیدا کرده است. فقط پیام خطای خود را عیناً در Google (یا موتور جستجوی موردعلاقه خود) بنویسید، یک جفت علامت نقل قول را در ابتدا و انتهای عبارت اضافه کنید تا متوجه شود که شما فقط به دنبال جستوجوی کلمات کلیدی نیستید ، سپس دکمه “Enter” را بزنید. امیدوارم این ترفند کوچک شما را به سمت جواب درست سوق دهد.
اگر هنوز مشکل دارید، می توانید سؤال خود را در انجمن های برنامه نویسان مانند Stack Overflow ، Reddit در ساب ردیت (subreddit)برنامهنویسی یا GitHub ارسال کنید.
کد شخص دیگر را هک کنید.
وقتی کد شخص دیگری را مهندسی معکوس میکنید و هر خط را آزمایش میکنید تا ببینید که چگونه کار میکند، درک بهتری از تصویر نهایی پیدا میکنید. با تشکر از تن (ton) و تن متن باز که در آنجا وجود دارد، میتوانید با بررسی کار بی عیب و نقص شخص دیگری، هر چیزی را بیاموزید. فقط بخاطر داشته باشید که در صورت یادگیری و نوشتن کد خود، آن را با جامعه به اشتراک بگذارید و بخشی از برنامه ای را که با آن کار می کنید بهبود بخشید.
مربی بگیرید (یا به شخص دیگری آموزش دهید).
جامعه برنامهنویسی مملو از افرادی است که مایل به کمک به نسل بعدی برنامهنویسان هستند.
GitHub، پاتوق آنلاین برای توسعه دهندگان است که از Git برای مدیریت پروژه های کدنویسی خود استفاده می کنند و برای همکاری آنلاین طراحی شده است.
توسعه دهندگان میزبان نه تنها پروژههای خود را با همسالان خود به اشتراک می گذارند، بلکه بازخورد کد و توصیه های کلی را نیز به جامعه ارائه می دهند.
شما ممکن است بتوانید از طریق GitHub برخی از مربیان آنلاین مفید را پیدا کنید، یا در یک رویداد برنامه نویسی با سایر توسعه دهندگان کهنه کار ملاقات کنید. پس از کسب تجربه در مورد برنامه نویسی، میتوانید به سؤالات افراد دیگر پاسخ دهید یا حتی آنچه را که تازه یاد گرفته اید آموزش دهید. این کار یک آزمایش عالی برای فهمیدن این است که آیا مطالب را آموختهاید یا نه.
اگر میخواهید حرفهای شوید و به یک برنامهنویس تمام وقت تبدیل شوید، یک بوتکمپ برنامهنویسی فشرده و حضوری ممکن است به شما کمک کند، خصوصاً اگر این یادگیری در یک محیط ساختاری با افراد واقعی اتفاق بیفتد و آنها به شما انگیزه دهند. با این حال، این نوع بوتکمپها اغلب بسیار گران و وقتگیر هستند.
عضوی از تیم تولیدکننده محتوا ویکدینگ