من از سال 2013 شروع به یادگیری جاوا اسکریپت کردم و با انجام پروژههای تستی، تمرین و تکرار، چند مقاله عالی و بسیاری از آموزشهای دیگر به خوبی آن را آموختم.
من هم اکنون سه گروه را با 150 نفر اداره میکنم و میبینم که اکثرا اشتباهات زیادی را تکرار میکنند.
همچنین مدت بسیار طولانی (4-3 سال فعال) در Fiverr فریلنسر بودهام و در طول مسیر بارها کدهایی هولناک دیدهام.
در حال حاضر دانشجو هستم و هم کلاسیهای خود را دیدهام که از منابع مختلف در کوتاه مدت از طریق دیگران یاد میگیرند. من تجربه و روشهای آنها را برای مقایسه با خودم دارم.
به علاوه نویسنده دو کتاب یادگیری ECMAScript و توسعه وب پیشرفته با React که هر دو در آمازون به فروش میرسند، هستم.
پس بدون معطلی بیایید شروع کنیم.
شماره 1: تلاش برای تسلط بر چندین کتابخانه و فریمورک به صورت همزمان
ممکن است تسلط بر 2 روش انجام یک کار، احمقانه به نظر برسد. اما تعجب خواهید کرد که افراد بسیاری سعی میکنند React و Angular یا Angular و Vue را با هم یاد بگیرند یا در حقیقت هر ترکیبی از فریمورکها و کتابخانههای مدرن را.
از نظر شخصی من شما نباید این کار را انجام دهید. چند دلیل وجود دارد:
برای هر فریمورک یا کتابخانه جداگانهای که انتخاب میکنید، به زمان و تمرین زیادی نیاز خواهید داشت. مثلا در ریاکت شامل خود کتابخانه و انتخاب مجموعه ابزار مناسب برای استفاده از آن است (فریمر، کوئریها، رابط کاربری، حروفچینی و غیره). از وقتتان فقط میتوانید برای بهبود مهارتهای ریاکت خود استفاده کنید.
هیچ شرکتی نیازی به تسلط بر بیش از یک کتابخانه یا فریمورک ندارد. محصولات هرگز با ترکیب همزمان ویو، ریاکت و انگولار ساخته نمیشوند. تقریبا همیشه فقط به یک زمینه تخصصی احتیاج دارید.
درک عمیق یک کتابخانه یا فریمورک از این قبیل بسیار مهمتر از گستردگی در چندین فریمورک است. اگر شما بر یک فناوری تسلط دارید که با استفاده از آن میتوانید هر چیزی را بسازید، بسیار قدرتمندتر از اکثر افراد هستید.
همانطور که بروس لی گفته:
"من از مردی که 10 هزار ضربه را یک بار تمرین کرده نمیترسم، اما از مردی که 10 هزار بار روی یک ضربه کار کرده میترسم."
این جمله در دانش برنامه نویسی نیز بسیار کاربرد دارد. دانستن بسیاری از چیزها خوب است، اما هرگز نباید سعی کنید در بسیاری از موارد روی چند موضوع به طور همزمان مسلط باشید.
شماره 2: تمرین کردن الگوریتم
شما در مورد آموزش الگوریتمی شنیدهاید و با آن آشنایی دارید. اگر میخواهید مصاحبهای انجام دهید که در آن از شما سوالات دشواری مبتنی بر الگوریتم پرسیده شود، بسیار خوب است. اما در کنار الگوریتمهای اساسی و منطق سازی، روی تبدیل شدن به یک توسعه دهنده بهتر تمرکز کنید و یاد بگیرید که از ابزارهای موجود به نحو احسن استفاده کنید. ابزارها (prettier، webpack،npm ، devtools، debuggers و غیره) به شما کمک میکنند که بهرهوری بالاتری داشته باشید و چیزهای زیادی را یاد بگیرید که در پروژههای جدی در دنیای واقعی نیز کاربرد دارند.
همچنین باید کاملا از ساختار دادهها و دانش الگوریتمی خوبی برخوردار باشید تا بتوانید منطق خود را به کار بگیرید. اما اگر متوجه شدید که ساعتهای زیادی را برای حل مشکلات اختصاص میدهید، بیشتر از حد به DSA نیاز خواهید داشت.
شماره 3: عدم تمرکز بر اصول اولیه
من اعتقاد راسخی دارم که همه افراد متفاوت از هم یاد میگیرند. با این حال اگر تازه وارد هستید و میبینید ریاکت بسیار محبوب است، فورا آن را انتخاب نکنید. نه تنها قبل از آن بلکه هنگام یادگیری ریاکت نیز مدتی را با جاوا اسکریپت سپری کنید. همچنین زمانی را صرف یادگیری اصول زبان، علامت گذاریها، سینتکس، کارکردهای معمول آرایهها با استفاده از فیلتر، نقشه، توابع، دامنههای متغیر و موارد دیگر کنید. یک دوره ابتدایی خوب همه این موارد را مرور میکند. سعس کنید فقط با استفاده از وانیلا جاوا اسکریپت چند برنامه ایجاد کنید. شما هنوز به فریمورک نیاز ندارید.
شماره 4: از TypeScript استفاده نمیشود
جاوا اسکریپت راه طولانی را طی کرده است، اما از آنجا که وب باید سازگار باشد، گاهی اوقات جاوا اسکریپت نمیتواند چیزهای بد خود را کنار بگذارد. وقتی از جاوا اسکریپت استفاده میکنید، بسیاری از موارد عجیب و غریب همیشه وجود دارد.
عدم پشتیبانی از تایپ نیز در رشد پایگاه کد شما مسئله مهمی است. همانطور که من کار با جاوا اسکریپت را دوست دارم، اما نمیتوان دفاع کرد که نه تنها جاوا اسکریپت بلکه کار با هر زبان دیگری بدون سیستم تایپ مناسب بسیار دشوار است به خصوص زمانی که روی یک کد در مقیاس بزرگ کار شود. اینجاست که TypeScript وارد ماجرا میشود.
TypeScript میتواند بسیار نزدیک به نحوه کارکرد یک زبان تایپ شده استاتیک رفتار کند:
- همیشه TypeScript را در سختترین حالت ممکن کار میکنید.
- در مورد انواع دادههای خود در کد دروغ نمیگویید.
مورد دوم از اهمیت ویژهای برخوردار است؛ زیرا بر خلاف سایر زبانها، برنامه TypeScript شما (که در نهایت با عنوان جاوا اسکریپت اجرا میشود) در صورت عدم تطابق تایپ خراب نمیشود، چون تایپها هرگز در زمان اجرا بررسی نمیشوند.
به ویژه این مسئله مربوط به بارگذاری متغیر داده است. دروغ نگفتن در مورد دادهها به معنای محافظت در TypeScript است تا بررسی کند که آیا شکل و فرم داده دقیقا همان چیزی است که شما انتظار دارید. مسلما نیاز خواهید داشت که پا را فراتر از منطق کاربردی کسب و کار خود بگذرانید، اما به این ترتیب انعطاف پذیری جاوا اسکریپت را با توانایی استفاده از آن در محیطهای تولیدی بسیار پیچیده و بدون ترس از شکستن حفظ میکنید.
بنابراین این سوال وجود دارد که چه زمانی باید TypeScript را یاد بگیرید؟ حداقل بعد از یادگیری اولین فریمورک یا کتابخانه جاوا اسکریپتی مانند ریاکت یا انگولار. اما بهتر است سعی کنید آن را برای مدتی به تعویق بیندازید (به هر حال انگولار نیاز به یادگیری تایپ اسکریپت دارد) چه بسا ایرادی هم ندارد که آن را از همان ابتدا یاد بگیرید.
شماره 5: عدم درک اکوسیستم جاوا اسکریپت
میتوانید مقدار کمی جاوااسکریپت یاد بگیرید و سعی نکنید در چند هفته بر آن تسلط پیدا کنید. جاوا اسکریپت به عنوان زبانی شروع به کار کرد که اوایل برای تعامل در وب استفاده میشد. اکنون رشد کرده است تا در سرورها، دستگاههای اینترنت اشیا و برنامههای تلفن همراه مورد استفاده قرار گیرد.
پس نباید آن را در یک بازه زمانی کوچک به طور کامل یاد بگیرید. حتی برای قسمت توسعه وب هم بسیار زمانبر است. درعوض باید بر روی مواردی که میخواهید جاوا اسکریپت آنها را حل کند، تمرکز کرده و APIها را یاد بگیرید و روی آنها تمرین کنید.
آیا میخواهید در مورد توسعه بازیها در مرورگر اطلاعات کسب کنید؟ درباره canvas API و ابزارهای محبوب آن اطلاعات داشته باشید؟ یا میخواهید در مورد حداکثر عملکرد سرور 8 هستهای خود بدانید؟ درباره صف رویداد جاوا اسکریپت، اجرای Node در بار خوشهای متعادل با pm2 یا با محفظههای داکر بدانید؟
میبینید هرچه بیشتر یاد بگیرید، بیشتر متوجه خواهید شد که چیزهای زیادی وجود دارد که هنوز نمیدانید. پس دقت کنید یادگیری 100 درصدی نباید هدف اولیه باشد. ابتدا با موارد کمی شروع کنید و سپس قسمتهایی از اکوسیستم را در صورت نیاز یاد بگیرید. یعنی با جاوا اسکریپت مرورگر شروع کنید، سپس سراغ سرورهای Node.js بروید (در حالی که جاوا اسکریپت مرورگر را نیز یاد میگیرید)، بعد میتوانید NativeScript یا React Native را برای ساخت برنامههای تلفن همراه امتحان کنید یا از Electron برای برنامههای دسکتاپ استفاده کنید. اما هرگز سعی نکنید همه چیز را یک باره یاد بگیرید.
جمعبندی
من همیشه از کاری که انجام دادهام لذت میبرم (البته به جز قلههای ناامیدی دیوانه وار، وقتی که کد کار نمیکند). این به عنوان یک نکته ذکر نشده است، اما احتمالا مهمترین چیز لذت بردن از کاری است که انجام میدهید. همیشه فراز و نشیبهایی وجود دارد، اما اگر از کاری که انجام میدهید لذت نبرید، ممکن است که در پایینترین سطح خود تسلیم شوید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید