React không phải là vấn đề. Cách chúng ta dạy nó mới là vấn đề.

Hãy hỏi một lập trình viên junior điều gì xảy ra khi họ nhấn vào nút submit. Hầu hết mọi người đều không thể đưa ra một câu trả lời rõ ràng.

Họ có thể nói rằng một lời gọi API được gửi đến máy chủ và một phản hồi được trả về. Đây chỉ là một câu trả lời ở mức bề mặt.

Hãy hỏi họ những câu hỏi cụ thể hơn:

  • Trình duyệt đóng gói yêu cầu (request) như thế nào?
  • Phương thức HTTP nào được sử dụng?
  • Việc xác thực (authentication) diễn ra ở đâu?
  • Máy chủ xử lý dữ liệu như thế nào trước khi nó được lưu vào cơ sở dữ liệu?

Đây chính là lúc sự im lặng bắt đầu.

Các lập trình viên junior không hề lười biếng. Họ không thiếu tài năng. Họ thiếu ngữ cảnh.

Chúng ta dạy các lớp trừu tượng (abstractions) trước khi dạy các nền tảng (foundations).

Các khóa học bootcamp và hướng dẫn (tutorials) thường tập trung vào kết quả nhanh chóng. Họ muốn bạn xây dựng một portfolio và tìm được việc làm. React hỗ trợ điều này vì bạn có thể thấy kết quả ngay lập tức.

Người học tiếp cận framework trước khi tiếp cận hệ thống.

  • Họ học React trước khi học HTTP.
  • Họ học components trước khi học về server.
  • Họ học quản lý state (state management) trước khi học về cơ sở dữ liệu.

Điều này tạo ra những lập trình viên biết phải làm gì nhưng không hiểu tại sao họ lại làm như vậy.

Điều này dẫn đến "tutorial hell". Bạn sao chép mã từ một video và cảm thấy mình đang làm việc hiệu quả. Sau đó, bạn cố gắng tự xây dựng một thứ gì đó một mình và thất bại. Bạn đã nhầm lẫn giữa sự quen thuộc và sự thấu hiểu.

Các công cụ AI càng làm trầm trọng thêm vấn đề này. Những công cụ như ChatGPT giúp tăng năng suất. Nguy hiểm bắt đầu khi AI thay thế tư duy thay vì hỗ trợ nó.

Việc debugging từng rất khó khăn. Bạn phải đọc tài liệu (docs) và thất bại cho đến khi tìm ra nguyên nhân gốc rễ. Sự nỗ lực đó đã rèn luyện tư duy của bạn. Nếu bạn giao phó mọi vấn đề cho AI, bạn sẽ mất đi khả năng phán đoán kỹ thuật (engineering judgment).

Kỹ thuật phần mềm là về việc đưa ra các quyết định và hiểu rõ các sự đánh đổi (trade-offs). Bạn không thể học được điều đó chỉ thông qua việc viết prompt.

Nếu tôi xây dựng một chương trình giảng dạy, tôi sẽ dạy theo thứ tự này:

  • HTML/CSS
  • JavaScript fundamentals
  • Browser fundamentals
  • HTTP và APIs
  • Các khái niệm back-end cơ bản
  • Databases
  • Authentication
  • React

Đến khi sinh viên học đến React, họ đã hiểu tại sao việc lấy dữ liệu (data fetching) lại tồn tại. Họ hiểu được cơ chế đằng sau một cú nhấp chuột vào nút bấm.

React không phải là vấn đề. AI cũng không phải là vấn đề.

Vấn đề là việc đi qua các nền tảng quá nhanh và kỳ vọng rằng các lỗ hổng kiến thức sẽ tự lấp đầy.

Chúng ta đang dạy mọi người cách xây dựng, hay chúng ta đang dạy họ cách sao chép mà không cần thấu hiểu?

Source: https://dev.to/franklyn_nmesoma_86940ec9/react-isnt-the-problem-how-we-teach-it-is-38m8