مشکل از React نیست، بلکه روش آموزش دادن آن است.

از یک توسعه‌دهنده جونیور بپرسید وقتی روی دکمه ارسال (submit) کلیک می‌کند چه اتفاقی می‌افتد. اکثر آن‌ها نمی‌توانند پاسخ روشنی بدهند.

ممکن است بگویند یک درخواست API به سرور ارسال می‌شود و یک پاسخ بازمی‌گردد. این یک پاسخ سطحی است.

از آن‌ها سوالات دقیق‌تری بپرسید:

  • مرورگر چگونه درخواست را بسته‌بندی (package) می‌کند؟
  • از کدام متد HTTP استفاده می‌شود؟
  • احراز هویت (authentication) کجا انجام می‌شود؟
  • سرور چگونه داده‌ها را قبل از رسیدن به پایگاه داده پردازش می‌کند؟

اینجاست که سکوت شروع می‌شود.

توسعه‌دهندگان جونیور تنبل نیستند. آن‌ها کمبود استعداد ندارند؛ آن‌ها کمبود زمینه (context) دارند.

ما انتزاع‌ها (abstractions) را قبل از مبانی آموزش می‌دهیم.

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

یادگیرندگان فریم‌ورک‌ها را قبل از سیستم‌ها می‌بینند.

  • آن‌ها React را قبل از HTTP یاد می‌گیرند.
  • آن‌ها کامپوننت‌ها را قبل از سرورها یاد می‌گیرند.
  • آن‌ها مدیریت وضعیت (state management) را قبل از پایگاه‌های داده یاد می‌گیرند.

این کار توسعه‌دهندگانی می‌سازد که می‌دانند چه کاری انجام دهند، اما نمی‌دانند چرا آن را انجام می‌دهند.

این موضوع منجر به «جهنم آموزش» (tutorial hell) می‌شود. شما کد را از یک ویدیو کپی می‌کنید و احساس مفید بودن می‌کنید. سپس سعی می‌کنید چیزی را به تنهایی بسازید و شکست می‌خورید. شما آشنایی را با درک کردن اشتباه گرفتید.

ابزارهای هوش مصنوعی به این مشکل دامن می‌زنند. ابزارهایی مثل ChatGPT به بهره‌وری کمک می‌کنند. خطر زمانی شروع می‌شود که هوش مصنوعی به جای حمایت از تفکر، جایگزین آن شود.

دیباگ کردن (Debugging) قبلاً سخت بود. باید مستندات را می‌خواندید و شکست می‌خوردید تا زمانی که علت اصلی را پیدا می‌کردید. آن تلاش و کلنجار رفتن بود که مغز شما را ساخت. اگر هر مشکلی را به هوش مصنوعی برسپارید، قضاوت مهندسی خود را از دست می‌دهید.

مهندسی نرم‌افزار درباره تصمیم‌گیری و درک موازنه (trade-offs) است. شما نمی‌توانید این را فقط از طریق پرامپت‌نویسی (prompting) یاد بگیرید.

اگر من یک برنامه آموزشی می‌ساختم، به این ترتیب آموزش می‌دادم:

  • HTML/CSS
  • مبانی JavaScript
  • مبانی مرورگر
  • HTTP و APIs
  • مفاهیم پایه بک‌اند (back-end)
  • پایگاه‌های داده (Databases)
  • احراز هویت (Authentication)
  • React

زمانی که دانشجویان به React می‌رسند، درک می‌کنند که چرا دریافت داده (data fetching) وجود دارد. آن‌ها مکانیسم‌های پشت کلیک روی دکمه را درک می‌کنند.

مشکل از React نیست. مشکل از هوش مصنوعی نیست.

مشکل این است که خیلی سریع از روی مبانی عبور می‌کنیم و انتظار داریم شکاف‌ها خودبه‌خود پر شوند.

آیا ما به مردم ساختن یاد می‌دهیم، یا به آن‌ها کپی کردن بدون درک کردن؟

منبع: https://dev.to/franklyn_nmesoma_86940ec9/react-isnt-the-problem-how-we-teach-it-is-38m8