چگونه مهارت‌های کدنویسی خود را با سرعت بیشتری ارتقاء دهیم؟

هنگامی که در حال یادگیری کدنویسی هستید،‌ با گذر زمان و افزایش دانش،‌ ناگهان لحظه‌ای برای شما پیش می‌آید که همه‌چیز به یک‌باره در نظر شما تغییر می‌کند! این نقطه را می‌توان نقطهٔ عطف کدنویسی نامید که پس از گذر از این نقطه،‌ منش شما به‌عنوان یک دولوپر کاملاً دگرگون خواهد شد. نقطهٔ عطف شما در برنامه‌نویسی درواقع همان لحظه‌ای است که شما به‌عنوان یک دولوپر، خودکفا شده و دیگر نیازی به همراهی گام‌به‌گام دیگران ندارید؛ هرچند رسیدن به این نقطه کار سخت و طاقت‌فرسایی است اما وقتی این نقطه را پشت سر بگذارید، قدرت شما به طرز غیرقابل‌باوری افزایش خواهد یافت. اکنون سؤال این است که چه‌طور می‌توان به این نقطه رسید و یا به‌عبارت دیگر، چه‌طور می‌توان به یک برنامه‌نویس خودکفا تبدیل شد؟ برای رسیدن به این نقطه، لازم است مراحلی را طی کنید که در ادامه مهم‌ترین آن‌ها را برخواهیم شمرد.

یادگیری و دانش‌اندوزی (شامل ۳ تا ۸ هفته کدزنی سرسختانه و خستگی‌ناپذیر)
وقتی که شروع به یادگیری کدنویسی می‌کنید،‌ اطلاعات خیلی زیادی در این حوزه وجود دارد که هنوز چیزی در مورد آن‌ها نمی‌دانید؛ مثلاً ممکن است ندانید چه‌طور می‌شود در زبان روبی یک لوپ ایجاد کرد یا این‌که چه‌طور بااستفاده از فریمورک Ruby on Rails می‌توان دیتای خاصی را از دیتابیس فراخوانی نمود (حتی ممکن است از پروتکل‌های ویژهٔ یک محیط برنامه‌نویسی خاص نیز هیچ‌گونه اطلاعاتی نداشته باشید).

بنابراین اگر می‌خواهید به یک دولوپر خودکفا تبدیل شوید،‌ گام اول این است که یاد بگیرید هر کاری را چگونه انجام دهید؛ وقتی در طی فرآیند یادگیری تلاش می‌کنید تا نحوهٔ‌ انجام وظایف مختلفی را یکی پس از دیگری بیاموزید،‌ درنهایت خواهید توانست این قطعات را در کنار هم قرار داده و به یک تسلط نسبی بر آن زبان، فریمورک، لایبرری یا هرچیزی دست پیدا کنید.

بدین ترتیب، در حین فراگیری یک زبان برنامه‌نویسی، در طول زمان الگوهای حاکم بر یک زبان خاص برای شما آشکار خواهد شد و چیزی که در ابتدا عجیب و ترسناک به‌نظر می‌رسید، به رفتاری تبدیل خواهد شد که حتی بدون لحظه‌ای درنگ در مواقع لزوم به سراغ آن خواهید رفت.

برای افرادی که به تازگی یادگیری را شروع نموده‌اند، مهم‌ترین چیز دقت به جزئیات کار است
توجه به جزئیات بسیار ضروری است؛ حتی کوچک‌ترین اشتباهات تایپی نیز می‌توانند به ایجاد باگ‌ها و یا خطاهایی اعصاب خردکن منجر شوند! مواجه شدن با ارورها در دفعات اول ممکن است تجربهٔ واقعاً سختی باشد اما در‌عین‌حال هندل کردن اکسپشن‌ها یکی از گام‌های مهم و اساسی در فرآیند یادگیری است. درگیر شدن با ارورها یا اکسپشن‌ها در برنامه‌نویسی درس بزرگی به شما می‌دهد و آن‌هم این‌که همیشه به جزئیات دقت کنید.

واقعیت این است که ارور‌ها بخش جدایی‌ناپذیر برنامه‌نویسی هستند؛ هم برنامه‌نویسان مبتدی و هم برنامه‌نویسان باتجربه خواه‌ناخواه با ارورها روبه‌رو می‌شوند. تنها تفاوت میان آن‌ها این است که دولوپرهای با‌تجربه‌تر، می‌دانند که چه‌طور باید مشکلات ایجاد شده را برطرف کنند و بدین ترتیب پس از مواجهه با هر ارور -نسبت به برنامه‌نویسان مبتدی- زمان خیلی کمتری را برای دیباگ کردن کدها صرف می‌نمایند. روی‌هم‌رفته، اگر می‌خواهید به یک دولوپر خودکفا تبدیل شوید، باید از ارورها استقبال کنید چراکه:

– هر چه با ارورهای بیشتری مواجه شوید، بیشتر یاد می‌گیرید که چگونه اطلاعات لازم را از هر ارور استخراج کنید و البته هر بار با سرعت بیشتری نیز این کار را انجام خواهید داد. اولین باری که با یک ارور مواجه می‌شوید، شاید به زمان زیادی نیاز داشته باشید تا فقط بتوانید مفهوم آن را درک کنید اما بعد از این‌که با صدها ارور روبه‌رو شوید -که حتماً‌ هم روبه‌رو خواهید شد!- یاد می‌گیرید که چه‌طور سریعاً به سراغ مشکل اصلی بروید و اطلاعات لازم برای دیباگ نمودن کد را از آن ارور استخراج نمایید.

– در حین برطرف نمودن هر ارور، می‌توانید چیزهای جدیدی یاد نیز بگیرید؛ بنابراین هدفتان تنها برطرف کردن ارور ایجاد شده نباشد بلکه سعی کنید هم‌زمان با رفع مشکل، چیزی به دانش خود بیفزایید و در دفعات بعدی این دانش را به کار ببندید.

– با گذر زمان و دست و پنجه نرم کردن با ارورهای بیشتر، یاد می‌گیرید تا به‌جای این‌که مستقیماً از دیگران کمک بخواهید می‌توانید در مورد مشکل خود سرچ نموده و با استفاده از راه‌حل‌های ارائه شده در استک اورفلو، گوگل و غیره مشکل خود را به‌تنهایی حل کنید.

در اوایل مرحلهٔ دانش‌اندوزی برای این‌که بتوانید کدی را بنویسید، مجبورید دستورالعمل‌هایی را مو به مو اجرا کنید،‌ با مشکلات و ارورهای متعددی روبه‌رو شوید و برای رفع آن‌ها تلاش کنید. مجموعهٔ‌ این فعالیت‌ها درنهایت شما را به دولوپر ماهرتری تبدیل می‌کند به‌طوری‌که پس از آن قادر خواهید بود تا با سرعت بیشتری کد بزنید.

با رسیدن به این سطح از توانایی، تعدادی از افراد به اعتماد به نفس بالایی دست پیدا نموده و حس می‌کنند که قادر هستند بدون دنبال کردن دستورالعمل‌ها و آموزش‌های مختلف، کدهای مورد نظر خود را بنویسند و از این رو با خوشحالی به سراغ سطوح پیشرفته‌تری از زبان مورد نظر خود می‌روند.

برخلاف این گروه، عدهٔ دیگری نیز وجود دارند که با رسیدن به این سطح از مهارت به سراغ آموزش‌های پیشرفته‌تر می‌روند و سعی می‌کنند تا بیش از پیش به دانش خود بیفزایند تا شاید به این ترتیب بتوانند به اعتماد به نفس مورد نظر خود دست یابند اما واقعیت این است که اعتماد به نفس واقعی را نمی‌توان در آموزش‌ها یافت بلکه برای به‌دست آوردن آن باید کد بزنید،‌ اشتباه کنید،‌ با ارورها درگیر شده و آن‌ها را برطرف کنید،‌ راه‌حل‌های مخصوص خودتان را کشف کنید و درنهایت ماهرتر شده و به توانایی‌های خود اعتماد کنید.

نکته‌ٔ‌ دیگری که در مورد برنامه‌نویسی وجود دارد این است که شما به‌عنوان یک دولوپر، هیچ‌وقت همهٔ چیزها را در مورد مشکلاتی که با آن‌ها روبه‌رو خواهید شد نمی‌دانید. بنابراین اگر منتظر روزی هستید که همه چیز را بیاموزید و سپس شروع به کد زدن کنید، باید بدانید که متأسفانه چنین روزی هیچ‌وقت از راه نخواهد رسید.

برنامه‌نویسی تجربهٔ یک یادگیری مادام‌العمر است؛ برنامه‌نویسان باتجربه مشتاق حل مسائل حل‌نشده هستند زیرا می‌دانند که با حل مشکلاتی که تاکنون با آن برخورد نکرده‌اند،‌ چیزهایی خواهند آموخت که تاکنون هرگز نمی‌دانستند.

پس به‌طور خلاصه، هنگامی که به‌قدر کافی با ارورهای متنوع و متعدد روبه‌رو شدید و به سطحی رسیدید که دیگر ترسی از ارورهای جدید نداشتید، هنگامی که توانستید بفهمید که کجا باید دنبال مشکل بگردید و چه‌طور باید آن‌را حل کنید، هنگامی که توانستید با سرچ نمودن راه‌حل بخشی از مشکلات خود را بیابید و هر وقت توانستید بدون مراجعه به راهنمای گام‌به‌گام، الگوهای کدنویسی را در سرتاسر کدهای خود رعایت کنید، شما به نقطهٔ عطفی رسیده‌اید که شما را آمادهٔ ورود به مرحلهٔ‌ بعد کرده است.

نقطهٔ عطف (در حالت واقع‌بینانه، ۲ تا ۴ هفته)
عبور از نقطهٔ‌ عطف شاید خسته‌کننده‌ترین و سخت‌ترین مرحلهٔ یادگیری کدنویسی باشد اما درعین‌حال مهم‌ترین مرحله نیز هست؛ این مرحله‌ای است که در آن پس از دریافت آموزش‌های لازم و مطالعهٔ کتاب‌ها و سایر منابع، شروع به حل مسائلی می‌کنید که پیش از این حل نشده‌اند و کسی راه‌حل آن‌ها را در اختیار شما قرار نداده است.

پس از ورود به این مرحله، گاهی‌اوقات ممکن است احساس کنید که از عهدهٔ‌ آن برنمی‌آیید و حتی شاید فکر کنید که بهتر است به مرحلهٔ‌ قبل برگشته،‌ دانش خود را بیشتر نموده و یا برای حل مسائل از راهنمایی‌های گام‌به‌گام پیروی کنید. در یک کلام، سعی کنید تحت‌تأثیر این ذهنیت قرار نگیرید؛ خستگی و ناامیدی شما به‌خاطر این است که در مرحلهٔ عطف ۱۰ تا ۲۰ برابر آهسته‌تر از مرحلهٔ‌ قبل کد می‌زنید.

در این مرحله شما شروع می‌کنید به سؤ‌ال پرسیدن از خودتان که نکند من استعداد برنامه‌نویسی ندارم! اما نگران این احساسات نباشید، شک و تردید و احساس بی‌کفایتی در این مرحله عادی و طبیعی است.

ممکن است احساس کنید که پیشرفت بسیار کندی دارید -که البته حس کاملاً درستی است- اما علیرغم این کندی، شما دارید به مهم‌ترین دستاورد‌های خود دست پیدا می‌کنید. دانشی که از قبل اندوخته‌اید هرچند که بسیار ارزشمند است، اما دیگر پاسخگوی نیازهای شما نیست و در این مرحله باید با تلاش برای حل مسائل، دانش عملی و تجربی خاص خود را به‌دست آورید.

به‌دست آوردن دانش عملی یعنی این‌که بتوانید در حین انجام یک کار،‌ خود را آموزش دهید و برای مشکلات جدید و ناشناخته راه‌حل ارائه کنید. از سوی دیگر، هرچند هنوز هم تا حد زیادی از دانش قبلی خود استفاده می‌کنید، اما روش استفادهٔ‌ شما از این دانش متحول خواهد شد.

در این مرحله، برای حل مشکلات جدید باید بتوانید دانسته‌های قبلی خود را باهم ترکیب نموده و بفهمید که کجا باید به‌دنبال راه‌حل مشکل جدید خود بگردید؛ پس برای حل مشکلات جدید، هم به دانش‌ اولیه و هم به دانش عملی و جدید خود نیاز دارید.

برای بقیهٔ عمر حرفه‌ای خود، هر روز برای گذر از محدودیت‌های کنونی خود آماده باشید
بعضی از دولوپرها همین که به سطح خوبی از مهارت رسیدند و توانستند جایگاه خود را تثبیت نمایند،‌ دیگر به سراغ چالش‌های جدید نمی‌روند و پا را از منطقهٔ‌ امن خود بیرون نمی‌گذارند اما واقعیت این است که برنامه‌نویسی بدون روبه‌رو شدن با چالش‌های جدید می‌تواند به کاری یکواخت،‌ سخت و طاقت‌فرسا تبدیل شود. بنابراین به‌جای محافظه‌کاری بیش از حد، در کنار انجام پروژه‌های مطابق سطح مهارتی خود، گاهی از منطقهٔ امن خود خارج شده و به سراغ چالش‌های جدید بروید.

برای توسعه‌دهندگان وب، ۲ نقطهٔ‌عطف وجود دارد
اولین نقطهٔ عطف برنامه‌نویسی وب زمانی است که توان آن‌را به‌دست می‌آورید که هر اپلیکیشن مبتنی بر دیتابیس دلخواه خود را بنویسید و همچنین قادرید تا با دنبال نمودن مستندات موجود در گیت‌هاب و یا پست‌های وبلاگی، ارتباط اپلیکیشن خود را با سایر لایبرری‌ها برقرار سازید.

دومین نقطهٔ‌ عطف برنامه‌نویسی وب،‌ هرچند کمتر از نقطهٔ اول به چشم می‌آید اما از آن مهم‌تر است؛ این نقطه عبارت است از تسلط بر الگوریتم‌ها و دیتا استراکچرها. کسی به این نقطه می‌رسد که علاوه‌بر درک مفاهیم پایه‌ای، بر جنبه‌های مختلف زبان برنامه‌نویسی خود نیز مسلط بوده و طی چالش‌هایی که در حل مشکلات مختلف با آن روبه‌رو شده، دانش عمیقی را به‌دست آورده باشد.

به‌عبارت دیگر، اگر شما به این سطح رسیده باشید، باید بتوانید به‌راحتی با داده‌ها کار کنید و نتیجهٔ تصمیماتی که در کدهای خود گرفته‌اید را به‌خوبی پیش‌بینی و درک نمایید، با چالش‌هایی که نیاز به نوشتن الگوریتم‌های پیچیده دارند روبه‌رو شده و وب اپلیکیشن‌های پیشرفته‌ای را ایجاد نمایید و این کاری است که دولوپرهای حرفه‌ای وب هر روز مشغول انجام آن هستند.

گاهی‌اوقات سخنانی از این دست می‌شنویم که مثلاً AnguarJS این روزها خیلی پرطرفدار است یا این‌که JavaScript امروزه اهمیت زیادی پیدا کرده است و غیره. علیرغم همهٔ‌ این واقعیات،‌ وقتی مشغول یادگیری زبانی می‌شوید، هدف اصلی شما باید عبور از نقاط عطف باشد زیرا هنگامی که از این نقاط عطف عبور کردید، یادگیری موارد جدید برای شما بسیار آسان خواهد شد. به این ترتیب، دیگر اهمیت چندانی ندارد که مثلاً کدام فریمورک پرطرفدارتر است زیرا به‌راحتی و با صرف زمان اندکی، می‌توانید به آن تسلط پیدا کنید.

این که بتوانید مهارت‌های جدید مورد نیاز خود را به‌تنهایی و بدون نیاز به راهنمایی‌های گام‌به‌گام دیگران بیاموزید،‌ به‌معنای خودکفایی شما است؛ البته این بدان معنا نیست که شما همه‌چیز را می‌دانید بلکه به این معنا است که شما قدرت کشف راه‌حل‌ها را به‌دست آورده‌اید و در مواجهه با یک مشکل ناشناخته متوقف نخواهید شد.

بنابراین پس از عبور از این مرحله، شما دیگر برای یادگیری مهارت‌های جدید نیاز به راهنمایی مستقیم دیگران ندارید و می‌توانید به‌تنهایی و با سرچ در اینترنت و یا مراجعه به منابع مختلف، نیاز خود را برطرف نمایید.

در حین عبور از نقطهٔ عطف، یاد می‌گیرید که بهترین رفرنس کدنویسی شما همان کدهایی است که خودتان قبلاً نوشته‌اید؛ هنگامی که بتوانید کل کدهای نوشته شدهٔ‌ خود را درک کنید، دیگر نیازی نیست که تمام جزئیات آن‌را به‌خاطر بسپارید. از این پس، مهم‌ترین سؤالی که در هنگام حل یک مسئله باید از خود بپرسید این است که آیا قبلاً هم چنین مسئله‌ای را حل کرده‌ام؟ و اگر پاسخ مثبت است بی‌درنگ به سراغ کدهای قبلی خود بروید، خط‌به‌خط آن‌‌ها را در ذهن خود تفسیر نموده و از خود بپرسید که چگونه می‌توانم این روش را در مورد مسئلهٔ‌ پیش‌رو به‌کار بگیرم؟

به‌خاطر داشته باشید که ویدئوهای آموزشی -از آنجا که با هدف آموزش تولید شده‌اند- به جزئیات زیادی می‌پردازند و مرور آن‌ها در این مرحله نمی‌تواند برای شما مفید باشد و وقت زیادی را از شما می‌گیرد؛ از این‌رو، به‌جای مرور ویدئوهای آموزشی بهتر است مستقیماً به سراغ کدهای مشابهٔ از قبل نوشته شده -مانند آنچه در گیت‌هاب یا استک اورفلو دیده می‌شود- رفته و در آن‌جا به‌دنبال کد مورد نظر خود بگردید.

چه‌طور در حین عبور از نقطهٔ عطف، بیشترین دستاوردها را نصیب خود کنیم؟
از آن‌جا که نقطهٔ‌ عطف مهم‌ترین مرحلهٔ‌ یادگیری کدنویسی است، باید از همان مراحل اولیهٔ آموزش و دانش‌اندوزی خود را برای این مرحلهٔ مهم آماده کنید؛ بنابراین در هر مرحله از آموزش که هستید، سعی کنید پا را اندکی از اهداف آموزش فراتر نهاده و خود را درگیر چالش‌های موجود کنید (و یا برای خود چالش بیافرینید).

درست است که در مرحلهٔ‌ آموزش باید از دستورالعمل‌ها پیروی کنید، اما سعی کنید علاوه‌بر دستورالعمل‌ها، هم کدهایی که می‌نویسید را مستند کنید و هم مستندات کدهای دیگران را بررسی نمایید. به این ترتیب، بعدها می‌توانید به کدهای خود برگردید و از آن‌ها به‌عنوان یک رفرنس استفاده نمایید. همچنین در مرحلهٔ‌ آموزش اولیه سعی کنید با تکرار و تمرین، پایه و اساس زبان مورد نظر خود را بیاموزید و آن‌ها را در ذهن خود نهادینه کنید.

چه‌طور بفهیم از نقطهٔ‌ عطف عبور نموده‌ایم؟
آخرین مرحلهٔ‌ عبور از نقطهٔ‌ عطف،‌ پذیرش است؛ اولاً پذیرش این موضوع که توسعهٔ‌ نر‌م‌افزار مستلزم یادگیری مداوم و مستمر است و این فرآیند هیچ‌وقت پایان نمی‌یابد و ثانیاً پذیرش این‌که یادگیری هرچیز جدیدی نه به‌معنای پایان چالش‌ها بلکه به‌معنای روبه‌رو شدن با چالش‌های جدیدتر و گسترده‌تر است.

 

منبع: سکان آکادمی

 


بنده دانشجوی دکترای فیزیک ماده چگال از دانشگاه تربیت مدرس تهران هستم. حوزه مورد علاقه من فیزیک محاسباتی (به طور خاص نظریه تابعیت چگالی) و همچنین سیستم های توپولوژیک است.


There are no comments yet

  • سلام , مهمان
  • خروج
  • ورود

    Or use one of these social networks

This site is protected by wp-copyrightpro.com