Hiểu tư tưởng nhưng khó code

Mình đã và đang dạy, hướng dẫn nhiều bạn học và thấy một tình trạng phổ biến như tiêu đề, đó là các bạn hiểu và rất hiểu về tư tưởng làm, về cách làm một bài toán nào đó nhưng lại rất khó hoặc thậm chí không thể biết code như thế nào. Khi đọc code của người khác làm thì hiểu, hỏi đâu cũng giải thích được, nhưng code lại của mình thì lại khó khăn.

Vậy mọi người cho ý kiến và kinh nghiệm làm sao để giúp các bạn như vậy có thể tiếp cận lập trình một cách hiệu quả hơn?

4 Likes

em nghĩ những bạn như thế sẽ là chưa nắm kỹ đc lý thuyết cách dùng của từng câu lệnh.

2 Likes

chắc là cần làm tay hoặc ghi xuống giấy. :slight_smile:

1 Like

Đó là bạn đang bị não bạn đánh lừa bạn.
Mình có tham gia khóa Learning how to learn có nói về vấn đề này.
Khi đọc solution của một bài toán, thường ta thấy ôi giời ơi sao mà dễ hiểu thế này. Nhưng tới khi bắt tay vào làm thì quên tới quên lui vì ta chưa thực sự hiểu rõ được cốt lõi của bài toán. Vậy nên trong course trên ngta có khuyên, khi đọc thấy hiểu, thì hãy nên làm thử và không nhìn solution (chỉ dựa vào những ý đó) chứ đừng thấy hiểu rồi mà không thèm làm. Và nên rèn luyện ngày qua ngày với nhiều dạng bài tương tự để nhớ lâu hơn.

KW: illusions of competence

29 Likes

Đơn giản là chưa có sự kết nối giữa bộ não tới tay, vì gõ code là qua tay. Khi nghe, khi nhìn, thì chỉ tạo ra được khả năng tiếp nhận thông tin và không hề tạo ra sự tương tác. Lúc này dữ liệu vào trong đầu theo chiều đi vào nhưng ko có chiều ra. Chính vì thế là nhiều người nghe thì được, chứ tay sờ gõ code thì chả biết làm gì.

Để tạo ra sự tương tác trong tốt thì cần phải có sự tập luyện liên tục trong việc vừa nghe vừa thực hiện gõ code cùng một lúc. Thực hiện việc này cần một vài yếu tố chủ quan:

  • Bạn phải tìm hiểu và thông tin trước khi nghe/học lý thuyết được truyền đạt từ người khác.
  • Bạn phải nhớ những gì đã đọc, đã nghe.
  • Bạn phải có tốc độ gõ code tàm tạm. (gõ kiểu chấm mút thì … không còn gì để nói)

Thời gian đầu với các bạn chưa có ý thức này (thường là các bạn gõ code quá ít, hoặc ko thực hiện code đều đặn) sẽ cực kì khó khăn. Để tháo gỡ khó khăn này, giải quyết bằng cách:

  • Nhớ code mẫu thuộc lòng tới mức nhớ từng dấu cách, dấu chấm phẩy…
  • Khi tiếp nhận thông tin mới thì lấy giấy bút để ghi nhớ lại (cái này là để tạo cảm giác giữa não bộ và tay).
  • Khi tiếp nhận thông tin cũ thì suy nghĩ nhanh, tìm các từ khoá, hay bất cứ cái gì liên quan tới thông tin đó (gợi lại ký ức).

Thực hiện đều đặn mỗi ngày ít nhất 2 tiếng tập trung cao độ. Sau 30 ngày chắc chắn là sẽ có cải thiện về khả năng lập trình, tư duy từ ý tưởng sang mã nguồn.

Vài lời khuyên nhỏ:

  • Stop ngay việc chơi game nếu có.
  • Học cách ghi nhớ thuộc lòng và ghi chép vào giấy.
  • Kiêng đồ ngọt và các món ăn dầu mỡ (mấy chất nào tạo cảm giác sướng miệng sướng đầu, não bộ lúc này khó tiếp nhận và xử lý dữ liệu, với cả mấy đồ này ăn chả có lợi gì cho sức khoẻ, bỏ là tốt nhất)
  • Nghe người khác nói trình bày ít thôi, mới đầu tập trung vào suy nghĩ tự làm cho thật kĩ và liên tục thực hành. Nghĩ vài ngày ko ra, thì tìm hiểu tiếp trên mạng, Google, StackOverflow, đọc các tài liệu … dần dần sẽ ra. Dục tốc bất đạt!
31 Likes

các bạn ấy chưa hình thành được tư duy lập trình.
vấn đề này hơi khó và có sự trừu tượng.
bạn làm sao cho bộ não của các bạn ấy như một máy tính.
tức là cách hoạt động máy tính như thế nào thì bộ nào của các bạn ấy phải suy nghĩ giống như vậy.
để làm được điều này cho các bạn ấy làm những bài toàn đơn giản bằng cách viết ra giấy và debug bằng tay trên giấy luôn.
làm như vậy thì mới hình thành được tư duy lập trình.
những bài toán đơn giản áp dụng dòng for, đệ quy, mệnh đề if.

3 Likes

Có vẻ nó là vấn đề khó khăn, khó ai giúp được trừ khi các bạn ấy tự lực.

2 Likes

Học lập trình là phải thực hành nhiều. Bắc chước người ta trước rồi dần dần mới làm được cái theo ý tưởng của mình. Giờ bảo học lý thuyết phang ngay được code thì hơi căng. Ý kiến riêng em là thế.

5 Likes

Bác nói hay thế :smiley:
:grinning:

Bạn có tài liệu, có nguồn, có code demo, có tất cả mọi thứ, thậm chí hiểu code, nhưng ko thể tự mình code được, đó là do cách học của bạn có vấn đề.
Đơn giản nhất , lúc đầu bạn hãy copy nguyên code trên mạng về, chạy được chương trình, đó là đã thành công rồi.
Sau đó, hãy nghĩ ra các bài toán tương tự, sau đó modify code lại cho phù hợp, chạy được là thành công tiếp theo.
Sau nhiều lần như vậy bạn sẽ có một kho code lưu trong máy của mình để phục vụ cho các vấn đề lớn hơn sau này.

Tóm lại: Hãy tự tin copy code trên google, trong tài liệu, dần dần sẽ tự hiểu ra vấn đề.

3 Likes

Việc này giống như học tiếng anh hoặc học bất cứ cái gì cũng vậy.
Khi học tiếng anh, nếu bạn nghe nhiều thì khả năng nghe của bạn tăng. Khi đó, bạn có thể hiểu được người khác nói gì, vấn đề là việc nói, bạn chỉ nghe mà không nói theo nên bạn sẽ không nói được giống họ. Khi ra ngoài giao tiếp, bạn nghe hiểu nhưng nói không được vì không thực hành nói nhiều.
Lập trình cũng vậy, bạn chỉ tiếp thu thông tin, kiến thức mà không áp dụng, thực hành nhiều nên không code tốt được.
Chắc bạn có nghe tới series Head First rồi chứ gì, mình nghĩ sách đó sẽ giúp được các bạn ấy :slight_smile:
ps: Sẵn tiện cảm ơn blog của bạn đã cho mình nhiều kiến thức rất bổ ích :smile:

3 Likes

bạn có tham khảo của khóa này không

cam on ban rat nhieu , loi cmt cua ban da giup minh.

công nhận, dù làm việc bằng máy tính nhưng trước khi làm thì cũng cần giấy bút để ghi ra thì sau đó mới bắt đầu làm trên máy tính dc.

1 Like

Theo mình thì sau khi học lý thuyết xong --> xem code mẫu --> làm các bài tập tương tự --> làm các btap biến đổi nhiều hơn.
Cái gì nó cũng phải lên từ từ, nếu vừa học xong mà đã bắt người ta code được luôn thì cũng khó. Bước đầu chưa quen sẽ làm còn chậm,nhưng cứ chăm chỉ là dần rồi sẽ kết hợp được não + tay.

2 Likes

Chuẩn…!!
Anh ạ. Gần đây em có làm cái blog giải thích cho các bạn trong lớp, anh vô xem rồi nhận xét giúp em xem em làm vậy có đúng không, sợ làm các bạn hiểu sai…:smiley::smiley:
Em Cám ơn ạ

1 Like

A thấy hồi học tin đại cương được nhà trường dạy cho 1 hướng mà lúc đấy cảm thấy rất nhàm chán và vớ vẩn, nhưng khi đã hiểu thì nó thực sự hữu dụng. Ko biết chú có áp dụng cách đó không. Đó là:
Trước khi được học về ngôn ngữ thì ta được học cách viết giả mã - đây là cách dùng ngôn ngữ tự nhiên, viết code mô phỏng kiểu văn xuôi. Cái này giúp ng mới dễ tiếp cận với ngôn ngữ cụ thể hơn.
Song song với đó là ta được học về lưu đồ - đây là cách dùng hình vẽ sơ đồ để thể hiện về 1 thuật toán hay luồng xử lý. Cái này giúp ng học dễ dàng hơn khi tư duy 1 thuật toán, và cũng giúp ng dạy dễ truyền đạt hơn so với việc chỉ tay trong code. Cái này ko nhất thiết phải quá chuẩn về ký hiệu và hình vẽ, đủ hiểu là đc. Đặc biệt khi gặp 1 bài toán lớn sẽ thấy lưu đồ thực sự hữu dụng, phân tách mô tả nhiều cấp từ tổng quát đến chi tiết.
Khi kết hợp được 2 cái này lại sau đó mới ánh xạ vào code thực tế thì a nghĩ sẽ dễ cho cả ng học và ng dạy. Nhưng đánh đổi lại là phải mất vài buổi để ng học làm quen :slight_smile:
Phương pháp lưu đồ thì đến giờ a vẫn sử dụng để trình bày với khách hàng, mặc dù khách hàng ko biết gì về lập trình nhưng nghe trình bày vẫn hiểu và nói lại đc. Chứng tỏ lưu đồ ko quá khó để hình thành tư duy :smiley:

5 Likes

Blog là gì @Độc Hành Vũ?

@Tùng Huynh e thấy ngày xưa các thầy có dạy cái đó, giờ cũng dạy cái đó nhưng em thì chưa áp dụng.

1 Like

Chết…!!
Em quên:
Blog của em là:
http//:dangcongtao0428.blogspot.com
Ạ…!

1 Like

Đây là một vấn đề mà khá nhiều bạn sinh viên mới ra trường hoặc chưa có kinh nghiệm mắc phải, trong đó có mình cũng đã từng rơi vào trạng thái như thế, và hướng giải quyết vấn đề là học code từ người khác, hiểu ý tưởng code lại theo code của họ, code lại theo phong cách của mình, dần dần sẽ hình thành một phản xạ cho não xử lí ý tưởng thành những câu lệnh.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?