ITZ Việt Nam

Vì sao bạn không thể tự mình code được ? Nguyên nhân và cách khắc phục

Vì sao các bạn không thể tự code được, mặc dù bạn nắm rất chắc lý thuyết và bạn hiểu được code mà người khác viết ra?

Đây là vấn đề mà rất nhiều bạn học lập trình mắc phải. Khi các bạn đọc sách hay xem hướng dẫn về lập trình trên Youtube, các bạn hoàn toàn hiểu các khái niệm, cú pháp. Khi các bạn xem những đoạn code mẫu, các bạn cũng hiểu từng dòng code có tác dụng gì, chạy như thế nào. Nhưng khi thay đổi 1 chút xíu yêu cầu hay đề bài, và bắt các bạn tự code, thì các bạn không tài nào code được. Mình nghĩ là không dưới 50% các bạn học lập trình đã và đang gặp phải tình trạng này. Trong video này mình sẽ chỉ ra nguyên nhân và cách khắc phục căn bệnh giỏi lý thuyết kém thực hành này

Nguyên nhân 1: Học bị động vs học chủ động

  • Đọc code: Khi các bạn đọc code, đây là học bị động (passive learning). Lúc này não của các bạn không phải tham gia vào quá trình giải quyết vấn đề (problem-solving process) - thứ mà các bạn sẽ phải làm khi viết code. Bạn chỉ đơn giản là đang theo dõi từng bước, từng logic mà người khác đã làm, đã giải quyết và trình bày sẵn ra trước mặt các bạn.
  • Viết code: Khi các bạn viết code, đây là học chủ động (active learning). Quá trình viết code đòi hỏi các bạn phải thực sự hiểu vấn đề 1 cách cặn kẽ. Sau khi hiểu vấn đề rồi bạn sẽ phải lên ý tưởng về thuật toán hay giải pháp dành cho vấn đề đó, và cuối cùng là “translate” giải pháp đó thành những dòng code. Cả quá trình này bao gồm rất nhiều kĩ năng, từ giải quyết vấn đề (problem-solving), đưa ra quyết định (decision-making) cũng như là nhớ các cú pháp và cấu trúc (recall syntax and structures)

Nguyên nhân 2: Kĩ năng giải quyết vấn đề

  • Đọc code: Như mình vừa đề cập ở trên, khi các bạn đọc code, mọi thứ đã được bê ra sẵn trước mặt các bạn rồi, miễn là các bạn hiểu các cú pháp ở mức cơ bản thì gần như các bạn không cần có kỹ năng giải quyết vấn đề để có thể đọc hiểu được 1 đoạn code
  • Viết code: Viết code yêu cầu các bạn phải có kỹ năng giải quyết vấn đề vô cùng chắc. Bạn sẽ phải biết cách chia nhỏ 1 vấn đề lớn thành các vấn đề con. Suy nghĩ 1 cách logic, lên ý tưởng và giải pháp cho từng vấn đề con, thực hiện hóa chúng thông qua những dòng code và cuối cùng kết hợp chúng lại thành 1 giải pháp hoàn chỉnh

Nguyên nhân 3: Khả năng ghi nhớ

  • Viết code: Quá trình viết code yêu cầu chúng ta phải nhớ được các kiến thức như là cú pháp, các hàm, các thuật toán. Những thứ này không phải tự nhiên mà có mà thường được xây dựng thông qua quá trình thực hành thường xuyên
  • Đọc code: Mọi thứ đã được trình bày sẵn trước mặt các bạn rồi. Các bạn sẽ không cần phải nhớ xem là chỗ này có cần dấu chấm phẩy, chỗ kia có cần dấu hai chấm hay có phải thụt lề hay không. Để đọc được code, các bạn gần như không cần nhớ quá nhiều về cú pháp, các hàm hay thư viện

Nguyên nhân 4: Kiến thức vs kĩ năng

Những gì đi vào đầu các bạn, khi các bạn xem sách hay video hướng dẫn lập trình, đó là KIẾN THỨC. Còn thứ đi ra khỏi tay các bạn, khi các bạn ngồi lập trình, đó là KĨ NĂNG. Các bạn có kiến thức không có nghĩa là các bạn có kĩ năng. Nó cũng giống như việc khi các bạn xem bóng đá, các bạn hiểu luật chơi như thế nào, các cầu thủ phải làm gì. Nhưng điều đó không có nghĩa là nếu bây giờ cho các bạn ra sân thì các bạn có thể chơi bóng ngay lập tức được
Rất nhiều bạn khi học lập trình đều bỏ qua 1 bước rất quan trọng, đó là chuyển đổi kiến thức thành kĩ năng. 1 trong số những nguyên nhân chính của hiện tượng này là khi các bạn học lý thuyết, đặc biệt là những kiến thức cơ bản, các bạn cảm thấy chúng quá dễ hiểu, quá “clear” rồi, và các bạn sẽ chuyển luôn sang những kiến thức khác nâng cao hơn, mà bỏ qua bước thực hành. Kiểu như là: “Ôi chia lấy nguyên, chia lấy dư, vòng lặp, if-else đơn giản, nhìn cái là hiểu, khỏi phải code thử hay làm bài tập làm gì cho mất công, chuyển qua học đệ quy, OOP cho nó mát”. Đây là 1 điều cực kỳ sai lầm. Kiến thức có đơn giản đến mấy mà các bạn không thực hành thì nó sẽ không bao giờ trở thành kỹ năng. Mà 1 khi các bạn không có kỹ năng dành cho những kiến thức cơ bản thì các bạn cũng khỏi mong có kỹ năng của những kiến thức phức tạp hơn
Và dưới đây là 4 việc các bạn có thể làm để khắc phục được tình trạng đọc được code mà không viết được code

Giải pháp 1: Viết lại 1 đoạn Code từ đầu

Đây là 1 trong số những cách cơ bản nhưng vô cùng hiệu quả. Sau khi các bạn đã đọc và hiểu 1 đoạn code, các bạn hãy thử tìm cách viết lại đoạn code đó thông qua ý hiểu của các bạn mà không cần phải nhìn vào code mẫu.
Vì sao cách này lại hiệu quả? Nó cũng giống như khi các bạn học thể dục trên trường, các bạn thấy thầy giáo làm mẫu động tác nhảy cao, rồi các bạn bắt chước vậy. Rõ ràng là nếu thầy không nhảy mẫu mà bắt các bạn tự nhảy luôn, các bạn sẽ không biết nhảy như thế nào thì tốt. Khi đã có thầy thị pham động tác cho, việc nhảy cao của bạn sẽ trở nên dễ dàng hơn. Khi các bạn nhìn thấy đoạn code mẫu, nó cũng giống như gợi ý cho các bạn là nên làm như thế nào. Khi đó việc code tương tự sẽ trở nên dễ dàng hơn. Tất nhiên sau này chúng ta đi làm sẽ chẳng có ai code sẵn cho để chúng ta code theo, tuy nhiên trong quá trình luyện tập, phương pháp này vô cùng hữu ích. Trước khi các bạn muốn tạo ra cái gì của riêng mình, hãy học cách bắt chước trước tiên

Giải pháp 2: Lập trình đôi

Lập trình đôi (pair programming) là một kỹ thuật phát triển phần mềm trong đó hai lập trình viên làm việc cùng nhau trên một máy tính. Một người đóng vai trò là "người lái" (driver), trực tiếp viết mã, trong khi người kia là "người quan sát" (observer), theo dõi mã, đưa ra ý kiến, và xác định các lỗi tiềm ẩn. 2 vai trò này thường xuyên được hoán đổi giữa 2 người. Việc lập trình đôi này là win-win, 2 bên cùng có lợi. 2 người tham gia có thể trao đổi, hỗ trợ và học hỏi lẫn nhau, giúp nhau cùng phát triển. Nếu có thời gian mình sẽ làm riêng 1 bài để chia sẻ về những lợi ích có được khi lập trình đôi. Lập trình đôi không chỉ giúp nâng cao chất lượng code và hiệu suất làm việc mà còn cải thiện kỹ năng cá nhân và khả năng làm việc nhóm.

Giải pháp 3: Học thuật toán và cấu trúc dữ liệu

Việc hiểu rõ các thuật toán và cấu trúc dữ liệu sẽ giúp các bạn có thêm sự lựa chọn khi phải giải quyết vấn đề. Ngoài ra các kiến thức này cũng quan trọng trong việc tối ưu hóa code. Nhiệm vụ của 1 lập trình viên không phải chỉ là viết ra code không bị lỗi, chạy được, mà còn là làm sao để đoạn code đó chạy hiệu quả

Giải pháp 4: Luyện tập thường xuyên

Sẽ chẳng có phương thuốc thần kì nào giúp cho bạn tự dưng code giỏi, ngoài việc bạn phải luyện tập thường xuyên. Hãy luyện cho mình thói quen ngồi code thường xuyên, chứ không phải khi nào hứng lên mới ngồi gõ vài dòng code. Có rất nhiều nền tảng giúp các bạn luyện tập khả năng lập trình như Leetcode, HackerRank hay Codewars. Các bạn có thể bắt đầu với những challenge dễ, rồi nâng dần độ khó lên. Những bài luyện tập này chính là tiền đề để các bạn sau này có thể code được những thứ phức tạp trong các dự án thực tế. Nếu các bạn chịu khó đổ mồ hôi khi học thì sau này các bạn sẽ không phải đổ nước mắt khi đi xin việc
Mình hi vọng những chia sẻ trên có ích với những bạn đang học lập trình nhưng gặp khó khăn trong việc tự viết những dòng code của riêng mình
Full video Why you can't code: https://youtu.be/97XhFhPrrPc

 

Bài viết liên quan
  • Tổng Giám đốc Microsoft Việt Nam nêu 5 lý do vì sao nên học lập trình 2069 Lượt xem
  • Microsoft bất ngờ đưa công cụ lập trình Visual Studio lên Mac 1759 Lượt xem
  • Swift: Ngôn ngữ lập trình được Apple nghiêm túc phát triển trong 4 năm được giới thiệu 3248 Lượt xem
  • Những xu hướng lập trình đang nổi trong làng công nghệ 2514 Lượt xem
  • Tăng tốc website bằng cache với basket.js 4244 Lượt xem
  • 6 điều có thể bạn chưa biết về PHP 2683 Lượt xem