یاد گرفتن کدنویسی میتواند برای افراد مبتدی تا حدودی سخت باشد. شاید به همین خاطر است که با مشکل روبرو شدهاید. در دنیا روشهای زیادی برای یادگیری کدنویسی وجود دارد و گاهی اوقات همین انبوهِ مطالب میتواند برای شخص گیجکننده باشد.
حفظ کردن کدها و افراط در خواندن مطالب آموزشی، کار درستی نیست زیرا میتواند شما را از مسیر درست منحرف کند.
همهی برنامهنویسان با این مشکل دست و پنجه نرم کردهاند. من هم هنگام یاد گرفتن کدنویسی، چنین تجربهای داشتهام. من در اینترنت به روشها و نظرات زیادی دسترسی داشتم و به همین خاطر نمیدانستم که باید چه راهی را دنبال کنم.
تمام مطالب در دسترس را یاد میگرفتم چون تمام آنها برای من مهم به نظر میرسیدند. با خودم فکر میکردم که اگر بخشی از مطالب در دسترس را نادیده بگیرم، به پیشرفت دلخواه خود دست پیدا نخواهم کرد.
شما یک فرد باهوش، درخشان و توانا هستید. برای رسیدن به موفقیت در این مسیر، تنها باید از یک ذهنیت برنامهنویسی پیروی کنید. مطالب آموزشی را از منابعی یاد بگیرید که بیهوده مسائل را پیچیده جلوه نمیدهند. برای یاد گرفتن موثر کدنویسی باید این نکات را به خاطر داشته باشید.
آموزش مفاهیم برنامهنویسی سخت است
پیدا نکردن منابع مناسب برای یادگیری یکی دیگر از عوامل تاثیرگذار در روند یادگیری کدنویسی است. بعضی از دورههای آموزشی مطالب کدنویسی را بیش از حد نیاز سخت میکنند یا منابعی وجود دارد که مناسب سبک یادگیری شما نیست.
به عنوان یک فرد مبتدی باید از باکیفیت بودن منبع مطالب خود مطمئن شوید. اگر یک شخص مشغول آموزش دادن به دیگران است، دلیل نمیشود فکر کنید که همه چیز را به خوبی فهمیده است. آموزش دادن با درک کردن تفاوت دارد. بنابراین به دنبال سایتها و منابعی بروید که از کیفیت بالایی برخوردار هستند.
مطالب آموزشی موجود در اینترنت بینقص نیستند، اما نباید پروسهی یادگیری را دشوار کنند. به تازگی در اینترنت مطالب زیادی را در رابطه با یادگیری جاوااسکریپت مطالعه کردم، اما نمیتوانستم بفهمم که میخواهند چه چیزی را به من آموزش دهند. من جاوااسکریپت را به خوبی میشناسم اما همچنان با مطالب آموزشی مشکل دارم. برای یاد گرفتن زبان جاوااسکریپت میتوانید به دورههای آموزشی سایت راکت نگاهی بیاندازید.
میتوانید یک برنامه کاربردی را به گونهای بسازید که هدف مورد نظرش را عملی کند. اما وقتی میخواهید نحوهی ساخت آن برنامه را توضیح دهید، مسئله کاملاً فرق خواهد کرد.
چرا توضیح دادن مفاهیم کدنویسی سخت است؟
توضیح دادن یک کدبیس پیچیده، دشوار است. شاید شخص مورد نظر بتواند آن موضوع را به طور سطحی برای شما توضیح دهد، اما ممکن است نتواند درک عمیقی از آن موضوع را به شما منتقل کند. وقتی در دورههای آموزشی به کدها نگاه میکنید، این سوالات را از خودتان بپرسید:
آیا به عنوان یک مبتدی میتوانید کدها را به راحتی دنبال کنید؟ آیا برای درک کردن آن موضوعات با مشکل روبرو هستید؟
منابع آموزشی ما میتوانند علت روبرو شدن ما با مشکلات متعددی باشند، پس منابع خود را عاقلانه و با دقت انتخاب کنید. شما تنها زمانی میتوانید کد نوشتن را یاد بگیرید که از منابعی درست برای این کار استفاده کنید. شاید از خودتان بپرسید که مسیر پیش روی من چیست؟ ابتدا پروسهی یادگیری را با چند منبع شروع کنید. در استفاده کردن از مطالب آموزشی زیادهروی نکنید. بعد از گذشت مدتی یک یا دو مورد از منابعی که حس آموزش بهتری دارند را برای ادامهی کار انتخاب کنید.
انجام دادن این کار خیلی مهم است چون چیزی که برای من مفید بوده ممکن است برای شما کاربرد نداشته باشد. به همین خاطر باید سعی کنید آموزشهای خاص خودتان را انتخاب کنید.
فقط کد را حفظ نکنید
وقتی هیچ فهم درستی از کارهای خود ندارید، حفظ کردن کدها یک امر طبیعی است. اگر منابع انتخابی شما موضوعات را سخت آموزش دهند، بیشتر به حفظ کردن فکر خواهید کرد. گاهی اوقات ما خودمان از این موضوع مطلع نیستیم اما به طور ناخودآگاه خیلی چیزها را حفظ میکنیم.
به شما توصیه میکنم که کدها را حفظ نکنید. با این کار فقط خودتان را در دردسر خواهید انداخت. به خاطر سپردن کدها میتواند شما را سردرگم کند چون واقعاً نمیفهمید که چکار میکنید. شما به جای کدنویسی تنها نحوهی کپی پیست کردن را یاد گرفتهاید.
اگر نتوانید منظور، هدف و نحوهی عملکرد بخشی از کد را درک کنید، آن را حفظ خواهید کرد. وقتی مفاهیم اصلی کدنویسی را درک نکنید، در ساخت پروژهها با مشکل روبرو خواهید شد. حتی ممکن است در این را تسلیم شوید. بیایید کد زیر را به عنوان یک مثال بررسی کنیم:
let students = ['Ope', 'Ayo', 'Ola'];
let count;
for ( count = 2; count >= 0; --count )
{
console.log(students[count]);
}
کد بالا چه چیزی را در کنسول وارد میکند؟ اگر واقعاً نحوهی عملکرد حلقه for
، increment
و decrement
را درک نکنید، فهمیدن کدهای بالا برای شما دشوار خواهد بود. پس باید چه کار کنیم؟ هر موقع احساس کردید که بخشی از کد را نمیفهمید، آن را به بخشهای کوچکتر تقسیم کنید. سپس در مورد کاربرد هر قطعه از کد تحقیق کنید. بیایید از کد گفته شده در بالا به عنوان مثال استفاده کنیم.
چگونه کد را به بخشهای کوچکتر تجزیه کنیم
مرحله 1: ابتدا باید نحوهی عملکرد forLoop
را درک کنید:
for (...){ }
این حلقهی «for» چه کار میکند؟
ما از آن برای تکرار یک عمل یا مجموعهای از اعمال استفاده میکنیم.
مرحله 2: باید مقداردهی اولیه را درک کنید.
for ( initialization; conditional; increment or decrement ) { }
مقداردهی اولیه برای چه مواردی به کار برده میشود؟
ابتدای حلقه را تنظیم و موقعیت یا سینتکس را برای شروع تعیین میکند.
مرحله 3: شما باید شرطیها را درک کنید.
شرطیها چه کار میکنند؟
آنها شرطی را تعیین میکنند که باید برای ادامهی کار حلقه رعایت شود. اگر شرط به درستی ارزیابی شود، حلقه به کار خودش ادامه خواهد داد. اما اگر نادرست ارزیابی شود، حلقه از بین خواهد رفت. (متوقف خواهد شد)
مرحله 4: باید increment
و decrement
را بفهمید.
Increment
در چه مواردی کاربرد دارد؟ ما از آن برای اضافه کردن ۱ به یک عدد استفاده میکنیم.
میتوانید آن را به pre-increment (++increment)
و post-increment (increment++)
تقسیم کنید.
شاید بپرسید که این دو چه فرقی با یکدیگر دارند؟ پس از اضافه کردن ۱ به یک عدد، pre-increment
نتیجه را به صورت زیر نشان خواهد داد:
let number = 5; console.log(++number) // 6
این مورد پس از اضافه کردن 1 به 5، عدد 6 را به ما نشان خواهد داد. post-increment
به جای نتیجه، عددی را که اضافه کردیم به صورت زیر نشان خواهد داد:
let number = 5;
console.log(number++) // 5
console.log(number) //6
Post-increment
پس از افزودن 1 به 5 عدد 5 را نشان میدهد اما وقتی عدد را دوباره بررسی میکنیم، 6 نشان داده خواهد شد.
به طور خلاصه وقتی از pre-increment
همراه یک عدد استفاده کنیم، نتیجه نهایی نشان داده خواهد شد. اما اگر از post-increment
استفاده کنیم، خود عدد به جای نتیجه نشان داده میشود. تفاوت این دو در نتیجهای است که نشان خواهند داد.
پس چه کاربردی در یک حلقه دارد؟
بازدهی increment
یا decrement
هیچ تاثیری روی حلقه نخواهد داشت زیرا حلقه تنها با نتایج بعد از اعمال pre
و post
سر و کار دارد. هر دو مورد یک عدد را به مقداردهنده اولیه اضافه میکنند.
Decrement
از عدد ما یک واحد کم میکند. این بدان معناست که در هر بار تکرار، یک کاهش روی تعداد اعمال خواهد شد.
let students = ['Ope', 'Ayo', 'Ola'];
let count;
for ( count = 2; count >= 0; --count ) {
console.log(students[count]);
}
بنابراین [count] students
در تکرار اول ‘Ola’ نشان داده خواهد شد چون سینتکس آن 2 است.
در دومین تکرار ما ‘Ayo’ را مشاهده میکنیم چون سینتکس آن 1 است. ‘Ope’ به خاطر صفر بودن سینتکس در تکرار سوم نشان داده خواهد شد. سپس حلقه به اتمام میرسد چون count کمتر از صفر خواهد شد و شرط به حالت نادرست ارزیابی میشود.
با این روش میتوانید کد را به قطعات کوچک تقسیم کرده و آن را مثل یک پازل حل کنید.
خودتان را تحت فشار قرار ندهید
تحت فشار بودن یعنی در یک زمان معین کارهایی (به طور همزمان) را انجام دهید که از توان شما خارج است. وقتی به تازگی یاد گرفتن کدنویسی را شروع میکنید، دوست دارید همه چیز را سریع یاد گرفته و از هر فرصتی استفاده کنید.
به همین خاطر تعداد وظایف خود را بیهوده بالا میبرید یا تکمیل یک کار پیچیده را در مدت زمان کوتاهی به عهده میگیرید. این موضوع یکی دیگر از دلایل روبرو شدن مردم با مشکل در کدنویسی است.
من هم درگیر این موضوع بودم و به همین خاطر روند یادگیری زبان جاوااسکریپت را به سختی گذراندم. من ظرف مدت 30 دقیقه موضوعاتی مثل var، let، const، توابع، آرایهها، آبجکتها و دستورات شرطی را یاد گرفتم. با خودم فکر میکردم که حالا میتوانم یک توسعهدهندهی نرمافزار عالی باشم.
در همین حین مطالب دیگری را در زمینه PHP و Python یاد گرفتم و مشغول خواندن کتاب John resig بودم. کتاب او شامل مفاهیم پیشرفتهی زیادی در زمینه جاوااسکریپت بود و من میخواستم بفهمم که او با چه روشهایی jQuery را خلق کرده است. برای دنبال کردن PHP و Python به دورههای آموزشی راکت سر بزنید.
من حتی یک کتاب آموزشی 100 صفحهای و یک ویدیوی آموزشی 6 ساعته را ظرف یک ساعت به پایان رساندم. اینکه بخواهید مطالعهای گسترده داشته باشید، هیچگونه اشکالی ندارد. اما باید بدانید که هر چیزی را باید در زمان مناسب خودش یاد بگیرید. شما نمیتوانید همه چیز را یکجا بیاموزید. پس بیش از حد خودتان را تحت فشار نگذارید.
افزایش دادن سرعت یادگیری
بخش آسان پروژهی خود را انتخاب کنید. اگر پروژه ندارید، میتوانید زبانی را انتخاب کنید که درک کردن آن راحت باشد. سپس در رابطه با همان پروژه یا زبان سوالاتی منطقی و پایهای از خودتان بپرسید. به مثال زیر دقت کنید:
تصور کنید که میخواهید جاوااسکریپت را یاد بگیرید. شما برای امروز فقط باید let و const را بیاموزید. سپس در مورد همان مسائل، سوالات ساده و منطقی بپرسید. شاید به نظر شما این روش آهسته و کند باشد اما در واقعیت از رقبای خود پیشی خواهید گرفت؛ چون آنها سعی دارند با عجله همه چیز را یاد بگیرند.
وقتی چندین کار را به طور همزمان انجام میدهید یا زمان کافی برای انجام دادن کارها ندارید، کد نوشتن دشوار خواهد شد. اگر نتوانید در این مسیر به نتیجهی مطلوب خود دست پیدا کنید، احتمال تسلیم شدن شما بالا خواهد رفت. بنابراین آموختههای خود را ساده نگه دارید. کنجکاوی برعکس تمرکز کردن است پس آن را تحت کنترل داشته باشید.
ذهن خود را باز نگه دارید
در بین توسعهدهندگان نرمافزار نظرات متناقض زیادی در مورد زبانهای برنامهنویسی، کتابخانهها، فریمورکها، تکنیکها و روشها وجود دارد. توسعهدهندگان نرمافزار جزو مستبدترین افرادی هستند که تا به حال شناخته ام.
احتمالاً تا به حال اصطلاحات و جملاتی مثل خودت را تکرار نکن (DRY)، توسعه تست محور (TDD)، توسعه سود محور (PDD)، شما به آن نیاز ندارید (YAGNI)، همیشه کدنویسی کنید (ABC) و موارد بسیار دیگری را شنیدهاید.
شاید بخواهید به حرفهای توسعهدهندهی محبوب خود گوش کرده و راه او را دنبال کنید. ولی به نظر من ابتدا باید کارهای خود را درک کنید. در حال حاضر وظیفهی شما فهمیدن اصول پایهای و ساخت پروژههایی با استفاده از آن اصول است.
بالاخره در زندگی حرفهای خود با چالشهایی روبرو خواهید شد که شما را وادار به استفاده از رویکردها، کتابخانهها و فریمورکهای خاصی خواهد کرد. تمام روشها و تکنیکها بسته به زمینهی مورد نظر مفید هستند. ما نمیتوانیم هیچ روشی را درست یا غلط تصور کنیم چون تمام این مسائل به زمینهای بستگی خواهند داشت.
تمام تکنیکها در حل مشکلات مفید هستند و تمام آنها دارای معایبی نیز خواهند بود. به همین خاطر ابتدا باید اصول زبان برنامهنویسی خود را به درستی درک کنید. با بکار بردن آن اصول یک پروژه را خلق کنید. بعد از پی بردن به مهمترین اصول میتوانید روشها و تکنیکهای دلخواه خود را دنبال کنید.
ایجاد یک ذهنیت تحقیقاتی
برنامهنویسی معمولاً مثل تحقیقات است. شما کارهای خود را ابتدا با مشاهده شروع میکنید و سپس تستهایی را اجرا خواهید کرد تا به نتایج رضایتبخش برسید. وقتی این واقعیت را درک کردید، میتوانید به درستی با مشکلات مقابله کنید.
گاهی اوقات باید باگهایی را برطرف کنید که تا به حال آنها را ندیدهاید. حل کردن برخی مشکلات نیازمند تلاش بسیاری خواهد بود. شاید الان درگیر برطرف کردن برخی اشکالات باشید اما باید بدانید که این مبارزهها ضروری است. اکثر توسعهدهندگان نرمافزار همچین چیزی را در گذشته تجربه کردهاند.
متخصص بودن به معنای پاسخ دادن به تمام سوالات نیست. کسی متخصص نامیده میشود که نحوهی پیدا کردن جواب را بلد باشد.
حواسپرتیها را از بین ببرید
همه درگیر حواسپرتیهایی هستیم که تمرکز ما را تهدید میکنند. چه چیزهایی حواس شما را پرت میکند؟
قبل از اینکه پروسهی یادگیری کدنویسی را شروع کنید، باید حواسپرتیهای خود را شناخته و آنها را از زندگیتان حذف کنید. اگر این کار را نکنید، نمیتوانید به درستی کارها را انجام دهید. این موضوع به نوبهی خود روی کیفیت کارهای شما تاثیر منفی خواهد داشت.
گاهی اوقات میتوانید با چالشهای پیش رو مقابله کنید، اما همیشه همه چیز تحت امر شما نخواهد بود. در چنین شرایطی باید موارد غیرضروری را رها کنید. برنامهها و فعالیتهای کدنویسی خود را طوری تنظیم کنید که حواسپرتیها را از شما دور کند.
با وجود حواسپرتیهای بسیار در زندگی، نمیتوانید یک کدنویس موثر باشید. به همین خاطر باید آنها را شناسایی کرده و به ترتیب از بین ببرید. حذف کردن آنها شانس رسیدن شما به رویاهایتان را افزایش خواهد داد.
خیلی سخت کار نکنید
آرام باشید. سخت کار کردن را کنار بگذارید چون در این مرحله باید واقعاً روی مفاهیم کار کنید. برای فهمیدن یک مطلب، به ذهنی آرام نیاز دارید. بنابراین خیلی از خودتان کار نکشید چون این موضوع کیفیت یادگیری شما را به خطر خواهد انداخت.
برنامهنویسی، هم برای مهندسان نرمافزارِ باتجربه و هم برای افراد مبتدی دشوار است. اگر سخت کار کنید و به نتیجه نرسید، دلسرد خواهید شد. وقتی از لحاظ روحی احساس خستگی کردید، دست از کار کردن بکشید و استراحت کنید.
یک بار این روش را دنبال کنید تا تاثیر خارقالعادهی آن را ببینید. وقتی خسته شدید، برای چند دقیقه از کار کردن فاصله بگیرید. بخوابید و ذهن خود را آزاد کنید. سپس وقتی دوباره احساس خوبی داشتید، به ادامهی کارهای خود بپردازید.
نتیجهگیری
درگیر بودن زمانی مفید خواهد بود که بهرهوری شما را بالا ببرد. شما به واسطهی این موضوع میتوانید به یک توسعهدهندهی نرمافزار بهتر تبدیل شوید. هرگز به دنبال مسائل بیمورد و بیفایده نروید.
همهی توسعهدهندگان نرمافزار هنگام کدنویسی با مشکل روبرو خواهند شد. شما با استفاده از منابع آموزشی مناسب و درخواست کمک کردن از افراد باتجربه میتوانید از مشکلات غیرضروری دوری کنید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید