راهنمای شروع مسیر یادگیری برنامهنویسی
۱۰ اسفند ۱۳۹۹
این مقاله مناسب افرادی است که میخواهند به یک برنامهنویس تبدیل شوند اما نمیدانند که باید از کجا شروع کنند. بهدلیل وجود تکنولوژیهای مختلف ممکن است سردرگم شده باشید یا حتی صدها ساعت زمان را به خواندن نظرهای بقیهی افراد اختصاص داده باشید اما درنهایت نتیجهای نگرفتهاید.
نیازی به نگرانی نیست زیرا این احساس در میان بسیاری از افراد، یکسان است و در این مقاله با انتقال تجربه سعی میکنیم از استرسهای شما کم کرده و در انتخاب مسیر به شما کمک کنیم.
چرا میخواهید برنامهنویسی کنید؟
وجود یک هدف قبل از شروع مسیر یادگیری تقریبا ضروری است. مسیر افرادی که میخواهند برای سرگرمی به برنامهنویسی و یادگیری مهارت بپردازند بسیار متفاوت است با افرادی که هدف معینی در ذهن خود دارند.
برخی از هدفهای مشترک افراد بهشکل زیر است:
- تغییر یا پیدا کردن یک شغل جدید
- پیشرفت در جایگاه شغلی فعلی
- پیادهسازی یک ایده و تبدیل شدن به کارآفرین موفق
داشتن یک هدف بسیار مهم است زیرا مسیر یادگیری شما را تعیین میکند. بهعبارت دیگر چیزهایی که بایستی یاد بگیرید به هدف شما بستگی دارند.
پیدا کردن یک شغل جدید
بسیاری افراد میخواهند شغل خود را تغییر دهند زیرا از شغل فعلی خود بههردلیلی راضی نیستند. در حوزهی برنامهنویسی کارهای متنوعی وجود دارد و شما میتوانید فقط با چند ماه تلاش بدون دانستن ساختارهای داده و الگوریتمها در یک شرکت که به مهارتهای ابتدایی کدنویسی نیاز دارد، استخدام شوید.
البته اگر بخواهید وارد شرکتهای بزرگی مانند Google، Amazon، Facebook یا Microsoft شوید نمیتوانید فقط به مهارتهای ابتدایی بسنده کنید و بایستی در علوم کامپیوتر عمیقتر شوید.
پیشرفت در جایگاه شغلی فعلی
شاید یک بازاریاب باشید اما بخواهید با برنامهنویسی به یک بازارایاب بهتر تبدیل شوید. اگر اینچنین هدفی داشته باشید توصیه میشود روی زبانهای برنامهنویسی کراسپلتفرم و سطح بالا مانند Python یا JavaScript سرمایهگذاری کنید. اصول اولیه این زبانها را یاد بگیرید و سپس به توسعهی پروژههایی بپردازید که باعث پیشرفت شما میشوند.
پیادهسازی یک ایده
اگر هدف شما پیادهسازی یک ایده در قالب یک برنامه باشد احتمالا یادگیری جزئیات عمیق برنامهنویسی بخشی از مسیر یادگیری شما نیست و حتی شاید پرداختن به جزئیات، یک حواسپرتی برای شما بهحساب بیاید.
در این سناریو بایستی بتوانید یک نسخهی MVP از ایدهی خود را توسعه دهید و زمانی که پروژههای شما به درآمدزایی رسید میتوانید مهندسان چیره دستی را استخدام کنید تا توسعهی پروژههای شما را بهدست بگیرند.
از بابت شلخته بودن نسخهی MVP برنامه نگران نباشید زیرا بسیاری از محبوبترین برنامههایی که هر روز از آنها استفاده میکنید در ابتدا فقط یک ایده اولیه بودهاند. همچنین میتوانید با مطالعهی مقالهی MVP چیست و سایر روشهای اعتبارسنجی ایده کدامند؟ اطلاعات بیشتری در این زمینه کسب کنید.
چگونه شروع کنیم؟
پس از تشخیص هدف باید بدانید که از کجا شروع کنید. FreeCodeCamp را میتوان یک منبع یادگیری مناسب دانست زیرا:
- رایگان است بنابراین به شما کمک میکند تا بدون هیچ خطر و مانعی، مسیر یادگیری خود را شروع کنید.
- با سبک تدریس مناسب و عملی، شما را آماده کار میکند.
- جامعهی کاربری فعالی دارد بنابراین درصورت روبرو شدن با مشکل میتوانید از کمک دیگران بهرهمند شوید.
چهمدت زمان لازم است تا برنامهنویسی را یاد بگیریم؟
این سوال از سوالهای متدوال افرادی است که به یادگیری برنامهنویسی فکر میکنند. پاسخ دقیقی برای این سوال وجود ندارد اما برای یادگیری اصول اولیه برنامهنویسی و آشنایی با سینتکسهای یک زبان حدود ۳ الی ۱۲ ماه زمان لازم است. این اختلاف زمانی به فاکتورهای مختلفی بستگی دارد:
- یادگیری تمام وقت یا پاره وقت
- تجربهی قبلی یا مرتبط
- استعداد فردی
- استراتژی یادگیری
یادگیری تمام وقت یا پاره وقت
مطمئنا کسی که بهصورت تمام وقت به یادگیری برنامهنویسی میپردازد، در زمان کمتری برنامهنویسی را فراخواهد گرفت. اما اگر در شغل دیگری بهصورت تمام وقت مشغول بهکار هستید، جای نگرانی نیست زیرا میتوانید بهصورت پاره وقت به یادگیری برنامهنویسی بپردازید.
برنامهنویسی از نظر ذهنی میتواند خسته کننده باشد بنابراین باید مراقب باشید که با افزایش زمان یادگیری، ذهن خود را خسته نکنید زیرا در این مواقع بازدهی شما کمتر میشود.
تجربهی قبلی یا مرتبط
حتی اگر تجربهی برنامهنویسی را بهطور مستقیم نداشته باشید باز هم زمینههای مرتبطی وجود دارد که روند یادگیری شما را سرعت میبخشند. مثلا افرادی که در مباحث ریاضی، حسابداری یا موارد مشابه این شکلی سابقه داشته باشند با طرز فکر صحیح خود میتوانند مسائل را سریعتر حل کنند.
استعداد فردی
وجود استعدادهای فردی شاید عادلانه بهنظر نرسد اما برخی افراد در بعضی زمینهها دارای استعداد هستد اما یک نکته وجود دارد که باید به آن دقت کنید. استعداد فردی فقط به شما کمک میکند که کمی سریعتر به هدف خود برسید اما تلاش و پشتکار است که درنهایت شما را به فردی موفق تبدیل میکند.
استراتژی یادگیری و داشتن هدف
داشتن هدف، تاثیر بسیار زیادی در تعیین جدول زمانی یادگیری شما دارد. اگر هدف شما یادگیری یک مهارت جدید یا پیادهسازی یک نسخهی MVP از محصول مورد نظرتان باشد بنابراین در زمان کوتاهی میتوانید به هدف خود دست پیدا کنید.
اما اگر میخواهید به یک متخصص در مهندسی نرمافزار تبدیل شوید باید بیشتر از بقیهی افراد به جزئیات بپردازید زیرا شرکتها انتظارهای بیشتری از شما خواهند داشت.
ترفندهایی برای یادگیری سریع
در این بخش به نکتههایی میپردازیم که در هموار شدن مسیر شما نقش بسیار زیادی خواهند داشت.
زمان معینی از روز را به کدنویسی اختصاص دهید و آن را به یک عادت تبدیل کنید
اتکا به انگیزه صرف میتواند خطرناک باشد. بنابراین توصیه میشود که زمان خاصی از روز را به کدنویسی اختصاص دهید و سعی کنید این روال را به یک عادت روزمره تبدیل کنید زیرا این عادت برای موفق شدن شما در طولانی مدت ضروری است.
همچنین سازگاری مهم است. شاید برخی روزها حال و هوای مناسبی نداشته باشید که در این صورت میتوانید زمان یادگیری خود را کاهش دهید یا فقط یکی از مسئلههای FreeCodeCamp را حل کنید. به این صورت انرژی از دست رفتهی شما بهسرعت برمیگردد و روز بعد با قدرت میتوانید در مسیر خود ادامه دهید.
سعی کنید که در یک چالش گیر نکنید
گیر افتادن در برخی چاشها باعث میشود که ناامید شوید. حتی شاید این ناامیدی باعث شود که فکر کنید شما برای برنامهنویسی مناسب نیستید و از یادگیری دست بکشید.
اما نگران نباشید زیرا برنامهنویسی به همین شکل است یعنی همیشه چالشهایی وجود دارد و از شما خواسته میشود تا مسئلهی بهوجود آمده را حل کنید. بنابراین به خودتان کمی زمان دهید و هیچوقت ناامید نشوید.
جدول زمانی مشخصی داشته باشید
ماه اول
اگر یادگیری برنامهنویسی وب هدف شما باشد بنابراین در ماه اول باید به یادگیری اصول HTML و CSS بپردازید. پس از یادگیری اصول میتوانید به سراغ یادگیری سینتکس زبان JavaScript بروید. همچنین با توسعهی پروژههای هرچند ساده با چالشها دست و پنجه نرم کنید.
ماه دوم
در این ماه همزمان با یادگیری زبان JavaScript باید به برخی دیگر از جنبههای مورد نیاز در توسعهی نرمافزار توجه کنید:
- سعی کنید با نحوهی جستجو در Google آشنا شوید زیرا بسیاری از مشکلهای شما قبلا در StackOverflow مطرح و حل شده است.
- با نحوهی کارکرد اینترنت و مباحثی مانند DNS، HTTP و Web serverها آشنا شوید.
- اصول اولیه کار با Command line سیستمعامل فعلی خود را یاد بگیرید.
- استفاده از Git یا هر نوع Version Control دیگر میتواند بسیار مفید باشد بنابراین سعی کنید تا بهصورت مقدماتی با دستورهای این ابزار آشنا شوید.
- google developer tools و Chrome developer console در توسعهی پروژههای وب بسیار مفید هستند.
ماه سوم
اگر خوب تمرین کرده باشید در این ماه به اصول اولیه برنامهنویسی مسلط شدهاید بنابراین در قدم بعدی میتوانید به سراغ مفاهیم پایهای بروید:
برنامهنویسی synchronous در مقایسه با asynchronous
کار با API در زبان برنامهنویسی JavaScript
مبحث Event loop در JavaScript
Dom manipulation
ماه چهارم
در این ماه میتوانید پا را فراتر از اصول اولیه بگذارید و کار با کتابخانههایی مانند React را شروع کنید. حتی میتوانید یک فریمورک مانند Vue یا Angular را انتخاب کرده و در استفاده از آن به یک متخصص تبدیل شوید.
- یک portfolio website ایجاد کنید و برخی از پروژههای خود را در آن قرار دهید.
- اصول امنیت وب
- مفاهیم CSS مدرن
- یادگیری یکی از فریمورکهای CSS مانند bootstrap
- شناخت اولیه از برنامهنویسی بکاند با استفاده از Node.js و کار با دیتابیس
ماه پنجم
اگر بهدنبال پیدا کردن شغل جدید یا تغییر شغل فعلیتان باشید بنابراین در این ماه زمان خوبی است که خود را برای مصاحبههای شغلی حوزهی فناوری آماده کنید. ممکن است فکر کنید که برای مصاحبهی شغلی آمادگی ندارید اما بدون اینکه در آن شرایط قرار بگیرید نمیتوانید در این باره تصمیم بگیرید.
- بهدنبال راهنماهای مصاحبهی شغلی باشید.
- با مفاهیم پایهای علوم کامپیوتر آشنا شوید.
- یک رزومه از خودتان بسازید.
مزایای تبدیل شدن به یک برنامهنویس
در ادامهی این بخش به برخی مزایای تبدیل شدن به یک برنامهنویس میپردازیم:
بهبود توانایی حل مسئله
همهی مهارتهایی که برای تجزیه و تحلیل یک مسئلهی برنامهنویسی و پیادهسازی آن استفاده میشود، تقریبا در هر زمینهای از زندگی عادی قابل استفاده است.
اعتماد به نفس و مقاومت ذهنی
مرتبا با مشکلهای مختلفی روبرو میشوید که باید اشتباه را پیدا کرده و آن را برطرف کنید. این توانایی که در هنگام مشکلها سردرگم نشوید بسیار ارزشمند است و هیچ زمینهای نمیتواند سریعتر از برنامهنویسی این مهارت را به شما بیاموزد.
تبدیل شدن به کسی که بیشتر افراد به مهارتهای او نیاز دارند
با کمی علم دربارهی رایانه و برنامهنویسی میتوانید به درصد زیادی از مردم که در دنیای دیجیتال امروز زندگی میکنند، کمک کنید. شاید بتوانید این مزیت را حتی بدون اینکه به یک برنامهنویس تمام وقت تبدیل شوید، کسب کنید.
جمعبندی
بر روی پیشرفت مداوم تمرکز کنید تا در نهایت مشاهدهی نتایج شما را شگفتزده کند. نکتهی دیوانهواری که در یادگیری برنامهنویسی وجود دارد این است که هر چه بیشتر یاد بگیرید، لذت بیشتری را تجربه خواهید کرد زیرا با یادگیری تکنولوژیها و علوم جدید میتوانید برنامههای جذابتری خلق کنید.
منبع: https://codeburst.io/how-to-learn-to-code-in-2021-free-and-fast-guide-ae06d6ac9006