چطور در برنامه نویسی پیشرفت کنیم؟

ده سال از اوّلین آشنایی من با برنامه نویسی میگذرد. هرچند تمام این ده سال مشغول برنامه نویسی نبودم و آن بین به دلیل رشته تحصیلی در دبیرستان و کنکور، فاصله زیادی افتاد ولی در این مدت چیزهای مختلفی را یاد گرفتم و تجربه کردم و روش های مختلفی برای یادگرفتن و پیشرفت کردن در برنامه نویسی را امتحان کردم. در حال حاضر دانشجوی کارشناسی مهندسی کامپیوتر در دانشگاه گیلان هستم و همزمان در دروس مرتبط با برنامه نویسی مثل درس مبانی کامیپوتر و برنامه نویسی و درس برنامه سازی پیشرفته به عنوان TA (دستیار آموزشی) با استادهای مختلف همکاری میکنم و البته اخیرا در حال برگزاری کلاس های آموزش برنامه نویسی خصوصی خودم هم هستم و از این طریق با افراد زیادی در ارتباطم که مشغول یادگیری برنامه نویسی هستند و به همین دلیل زیاد پیش می آید سوالی که در عنوان این مطلب مطرح شد از من پرسیده شود. در این مطلب سعی میکنم نکاتی که به نظرم برای پیشرفت کردن در برنامه نویسی نیاز هست را نام ببرم. امیدوارم که برایتان مفید باشد.زبان انگلیسی خود را تقویت کنید!هر کاری نیاز به ابزارهایی دارد که شاید بتوان تا حدودی بدون آن ابزار در آن کار پیشرفت کرد ولی از جایی به بعد این کار به شدت سخت و بعضی وقت ها غیرممکن می شود. زبان انگلیسی چه خوشمان بیاید و چه ازش متنفر باشیم زبان صنعت IT و در نتیجه برنامه نویسی است و یک برنامه نویس برای این که بتواند گلیم خود را از آب بیرون بکشد نیاز دارد تا با این زبان به خوبی آشنا باشد. اگر با این زبان آشنا هستید چه بهتر، اگر نه ماهی را هر وقت از آب بگیرید تازه است. با یادگرفتن زبان انگلیسی فرصت فعالیت در بازار کار بین المللی و استفاده کردن از منابع آموزشی به روز و کامل برای شما فراهم می شود علاوه بر آن خیلی از سازمان ها و شرکت ها به دنبال برنامه نویس هایی هستند که با زبان انگلیسی آشنا باشند.سرچ کردن و مطالعه کردن را یادبگیرید.ابزار دیگری که برای یک برنامه نویس به شدت ضروری است مهارت در سرچ کردن و مطالعه کردن است. شاید بتوان بدون آشنا بودن با زبان انگلیسی تا حدودی در برنامه نویسی پیش رفت ولی این کار بدون داشتن مهارت در جستوجو کردن و مطالعه کردن عملاً غیرممکن است. وقتی شما پا را از مطالعه کردن کتاب ها و تدریس استاد فراتر بگذارید و بخواهید شروع به تمرین کردن و نوشتن برنامه های مختلف کنید به مواردی بر میخورید که نمیدانید چطور انجام می شوند یا ممکن است هنگام نوشتن کد به ارور بربخورید یا حتی نیاز داشته باشید تنظیمات محیط توسعه خودتان را تغییر دهید یا یکی از ویژگی های آن را یاد بگیرید. اینجور مواقع اینکه بدانید باید دنبال چه چیزی بگردید و کجا به دنبال آن بگردید مهارتی است که میتواند شما را نجات دهد. بد نیست با سایت های مرتبط با زمینه ای که دارید در موردش تمرین و مطالعه میکنید آشنا شوید. بدیهی است که بهتر است با زبان انگلیسی آشنا باشید و جستوجوی خود را به این زبان انجام دهید تا نتایج کامل تر و بیشتری بگیرید.سایت های مفید:geeksforgeeks: منبع بسیار خوبی برای مطالعه در مورد زبان های برنامه نویسی، ساختمان های داده و الگوریتم ها و موارد مرتبط دیگرstaackoverflow: سایتی برای پرسش و پاسخ برنامه نویسی، تقریبا جواب هر سوالی که دارید در این سایت پیدا می شود ! اگر هم نبود میتوانید بپرسید تا برنامه نویس های با تجربه تر جواب دهند !سبک یادگیری خود و منابع مورد نیاز خود را پیدا کنید.انسان ها در زمینه های مختلف با هم متفاوت اند و یادگیری یکی از این زمینه هاست. پربازده ترین روش یادگیری برای هر شخص متفاوت است و باید سعی کنید روش یادگیری مناسب خود را پیدا کنید. یک نفر ترجیح می دهد کتاب بخواند و برای فرد دیگری این کار ملال آور است و ترجیح می دهد از ویدئوهای آموزشی استفاده کند یا شاید ترکیبی از این روش ها برای شما بهترین بازده را داشته باشد که با امتحان کردن حالت های مختلف باید تشخیص بدهید کدام حالت برای شما مفید تر است. برای یادگیری هر موضوعی منابع زیادی در اینترنت موجود است که می توانید با جستوجو مناسب ترین آنها برای خودتان را پیدا کنید.برخی از منابع مفید:youtube: بزرگترین منبع آموزش های ویدئویی رایگان در سراسر کره ی خاکی !هدف بلند مدت و اهداف کوتاه مدت داشته باشید.این مورد تاثیر باورنکردنی ای روی سرعت پیشرفت شما دارد ! چه در برنامه نویسی چه در کارهای دیگر داشتن هدف بلند مدت و اهداف کوتاه مدتی که در راستای آن هدف باشند بسیار با اهمیت است. اگر شما هدف مشخصی نداشته باشید ممکن است دائما از این شاخه به آن شاخه بپرید و این باعث می شود تمرکز و انرژی شما بین کارهای مختلف و متفرقه پخش شود و با وجود صرف کردن وقت زیاد نتوانید نتیجه ی قابل ملاحضه ای مشاهده کنید. تنظیم کردن اهداف کوتاه مدت هم به شما کمک میکنند بتوانید برنامه ریزی کنید و در بازه های مشخص پیشرفت و نقاط قوت و ضعف خود را ارزیابی کنید و روند خود را با توجه به آن تنظیم کنید و البته با دیدن نتیجه ی کار خود انگیزه ی بیشتری داشته باشید و آن را حفظ کنید.یادگیری و تمرین کردن را به صورت مستمر ادامه دهید.برنامه نویسی همزمان هم علم است و هم مهارت، برای پیشرفت در برنامه نویسی مانند هر مهارت دیگری علاوه بر تمام مواردی که ذکر شد به تمرین زیاد و پیوستگی بین این تمرین ها نیاز دارید، تاثیر یک ساعت تمرین برنامه نویسی در روز بیشتر از هفت ساعت تمرین برنامه نویسی در یک روز و تمرین نکردن در روزهای دیگر است. فراموش نکنید که تا وقتی شروع به تمرین کردن نکنید اشتباهی هم نمیکنید و تا وقتی اشتباه نکنید چیزی یاد نمیگیرید. برنامه نویسی هم مانند هر مهارت و توانایی دیگری برای تقویت شدن نیاز به تلاش دارد و ممکن است سختی های مخصوص خودش را داشته باشد ولی یکی از مهمترین نکاتی که برای پیشرفت کردن به آن نیاز دارید این است که بدانید مانند وزنه برداری که برای بلند کردن وزنه های سنگین تر نیاز به تلاش بیشتر دارد ولی در نهایت این تلاش به توانایی بیشتر منتهی می شود شما هم برای برنامه نویس بهتری شدن نیاز دارید روند تمرین خود را به صورت مستمر ادامه دهید و اجازه ندهید ارورها اشتباهات و ... کلافه تان کنند. خوب است با توجه به مواردی که یاد می گیرید برای خود تمرین ها و پروژه هایی در نظر بگیرید و انجام دهید تا مهارت خود را افزایش دهید. بهتر است این پروژه ها اندکی برایتان چالش داشته باشند تا در یادگیری بهتر به شما کمک کنند. برای پایان این بخش یک بار دیگر تاکید میکنم تا زمانی که دستتان به کیبورد نخورد و خودتان کد نزنید چیزی یاد نمیگیرید پس سعی کنید بین مطالعه کردن و تمرین کردن تعادل درستی برقرار کنید. نکات 2 تا 4 میتوانند به شما در بهتر انجام دادن این نکته کمک کنند.یادداشت برداری کنید.یادداشت کردن چه هنگام یادگیری و چه هنگام انجام دادن کارها میتواند به شما کمک کند به عملکرد خود آگاهی بهتری داشته باشید. با یادداشت کردن مطالبی که یاد گرفته اید میتوانید در مواقع لازم از یادداشت های خود برای مرور کردن مطالب مهم استفاده کنید و وقت زیادی را نجات دهید. یادداشت کردن کارهایی که انجام می دهید هم به شما کمک میکند بتوانید زمانی که برای هر کار صرف کرده اید و کارهایی که انجام داده اید را بررسی کنید و با بررسی نتایجی که در تمرین ها و نزدیک شدن به اهدافتان به دست آورده اید مشکلات احتمالی و نقاط قوت کارهای خود را پیدا کنید و بتوانید تعادل بهتری برقرار کنید و برنامه ریزی منطقی تری داشته باشید. یکی از موارد دیگری که میتواند یادداشت کردن به شما کمک کند یادداشت کردن نکات جانبی و متفرفه است. برنامه نویسی اقیانوس بزرگی شامل مطالب به هم مرتبط است. سخت است به سراغ مطلبی بروید و نیم ساعت بعد در حال خواندن مطالب غیرضروری ای که به نظر مرتبط می آمدند نباشید. شما می توانید با یادداشت کردن عنوان این مطالب و اولویت بندی کردن این موارد خیال خود را از این بابت که قرار نیست گمشان کنید راحت کنید و بعد با تمرکز بیشتر روی مورد اصلی ای که در حال یادگیری اش بودید تمرکز کنید.یادگرفتن ابزارهای برنامه نویسیقسمت زیادی از برنامه نویسی مهارت حل مسئله است ولی یک برنامه نویس خوب علاوه بر داشتن مهارت بالا در حل مسئله و آشنا بودن با زبان های برنامه نویسی نیاز دارد با ابزارهای دیگری نیز آشنا باشد. سعی کنید در این مورد سرچ کنید و از افراد با تجربه تری که در زمینه مورد نظر شما کار میکنند بپرسید تا راهنمایی تان کنند.برخی از ابزارهای مهم:gitgithubgnu/linuxمطالعه ی کتاب های کلاسیک را در برنامه خود قرار دهید.بعضی کتاب ها هستند که خواندن آن ها برای هر برنامه نویسی مفید است. از افراد با تجربه تر در این مورد بپرسید و سعی کنید هر از گاهی یکی از این کتاب ها را انتخاب و مطالعه کنید. این یکی از بهترین کارهایی هست که به عنوان یک برنامه نویس میتوانید برای خود انجام دهید.برخی از کتاب هایی که من خواندنشان را پیشنهاد میکنم:Clean CodeHead first Design Patternsچیزهایی که یادگرفته اید را آموزش دهیدیادگرفتن هیچوقت تمام نمی شود و این روند تا زمانی که در این زمینه مشغول به فعالیت باشید ادامه خواهد داشت. یکی از کارهایی که به شدت میتواند یادگیری شما را عمیق کند یاد دادن چیزهایی است که یاد گرفته اید. این یاد دادن میتواند به صورت جواب دادن سوال همکلاسی ها، نوشتن مطلب در مورد آن موضوع خاص، فعالیت کردن در فروم ها و انجمن هایی مثل stackoverflow، ضبط کردن ویدئو و حتی بعد از گذشتن از سطح قابل قبولی همکاری با استاد ها در آموزش و یا برگزاری کلاس باشد. به شخصه نتیجه مثبتی از این نکته دریافت کرده ام. برای این که چیزی را آموزش دهید باید به آن تسلط کافی داشته باشید و این باعث می شود مطالعه ای که برای آن موضوع میکنید عمیق و مفید باشد همچنین وقتی مطلبی را آموزش میدهید سعی میکنید به صورت قابل فهم و با زبان ساده توضیح دهید که این باعث می شود بیشتر به مطلب مورد نظر فکر کنید و این هم تاثیر بسیار مثبتی دارد و در نهایت آموزش روندی دو طرفه است و ممکن است آموزنده سوال هایی بپرسد یا نکاتی بگوید که خودتان به آن ها توجه نکرده بودید و باعث شود موارد جدید یاد بگیرید.با دیگران در ارتباط باشید، همکاری کنید و از آن ها یاد بگیرید.همیشه دیگران چیزهایی برای یاد دادن دارند و این مورد هم مانند مورد 9 میتواند به شدت برای یادگیری مفید باشد. هنگام همکاری با دیگران ممکن است با نکاتی برخورد کنید که به تنهایی با آن ها روبرو نمی شدید یا در مواردی روش های متفاوت و اختلاف نظر داشته باشید که در نهایت با مباحثه میتواند منجر به یادگیری بهتر شود. همچنین مهارت همکاری کردن و کار تیمی جزو مهارت های نرمی است که برای یک برنامه نویس میتواند بسیار مفید باشد.سلامت جسمی و روانی خود را حفظ کنید !به عنوان مورد آخر میخواهم به نکته بسیار مهمی اشاره کنم که معمولا به آن کم توجهی می شود. فراموش نکنید که به عنوان یک برنامه نویس احتمالا در معرض کم تحرکی، گاهی اوقات فشار ذهنی زیاد و موارد مضر دیگری هستیم که باید با رعایت نکاتی مانند تغذیه مناسب، ورزش کردن، حفظ ارتباط با دوستان و استراحت کردن و فعالیت های جانبی مختلف سعی کنیم با آثار بد این موارد مقابله کنیم و این به صورت غیر مستقیم میتواند به ما در راندمان بهتر و حفظ انگیزه برای ادامه مسیر کمک کند.اگر شما هم نکته ای دارید که اضافه کنید لطفا در بخش نظرات بنویسید. امیدوارم که این نکات برای شما مفید بوده باشند.اگه به برنامه نویسی و مطالب مرتبط علاقه مند هستید به کانال من توی تلگرام سر بزنید :)t.me/amirMosadeghi