Cách học của mình




Cách học của mình
Xin chào, lâu rồi mình chưa viết blog nhỉ, vì ngoài mấy cái cơ bản ra mình không biết viết gì hơn, với lại sắp tới mình sắp có bài kiểm tra cuối kỳ nên sẽ tạm thời ngưng viết blog để tập trung ôn thi. Cũng nhờ một bạn góp ý nên mình nghĩ sẽ viết blog về chủ đề rộng hơn, thay vì chỉ liên quan đến học thuật. Hôm nay mình sẽ nói về bản thân mình học lập trình như thế nào. Đây cũng chỉ là chia sẻ cách học của riêng mình thôi nhé.
Đầu tiên mình xác định ra rằng bản thân mình rất thích nghiên cứu từ việc làm project. Mình để ý rằng mỗi lần mình muốn làm gì đó (làm web, làm robot,…) mình đều cảm thấy có hứng và khi bắt tay vào làm mình làm rất là say sưa, nên mình tận dụng điểm đó của mình để học tập. Chẳng hạn mình tạo project trò chơi nho nhỏ như Tic Tic Tic hôm bữa chẳng hạn, thuật toán mình sẽ học được là minimax này, cắt tỉa alpha beta, đồ họa mình học về java swing này. Và khi chọn project mình luôn cân nhắc bản thân mình ở mức độ nào và project đó ở mức độ nào vừa với bản thân mình, tránh chọn project quá với khả năng của mình, sẽ khiến mình dễ bị nản.
Thứ hai, kiến thức căn bản rất quan trọng, nó là tiền đề giúp mình mỗi khi làm project sẽ tốt hơn. Khi làm project có thể bạn sẽ đào xuống và tìm được những kiến thức căn bản để học, nhưng không có nghĩa là bạn sẽ thấy hết được các kiến thức căn bản đó. Thú thật khi mình làm java swing tới action listener mình khá là bối rối về anonymous class vì không hiểu đó là cái gì, kiến thức về java swing của mình lúc đó còn hạn chế nữa, cũng may nhờ công cụ Windows Builder để mình đơn giản java swing hơn (kéo thả là chủ yếu), nhưng mình vẫn không thể khai thác hết java swing vì kiến thức quá ít. Đó là ví dụ nhỏ khi mình không có kiến thức căn bản thì làm project rất là cực. Mình chia ra làm 2 phần trong việc xây dựng kiến thức căn bản, đó là thuật toán (về tư duy) và kỹ thuật (về hiểu biết). Như mình đã nói mình luyện thuật toán qua hackerrank, mình thấy khá hiệu quả, bây giờ mình có thể làm được một số bài mức độ trung bình trong đó. Còn kỹ thuật ngoài việc học kiến thức trường lớp thì trong lúc học tập mình sẽ vô tình đụng phải một vài kiến thức ngoài, cái này mình càng bỏ thời gian nhiều thì đụng độ nhiều, mình sẽ tích lũy được nhiều hơn.
Một chú ý mình rút ra được khi học là mình học cũng phải xét xem mức độ hiểu biết của mình đối với loại kiến thức đó là như thế nào, nếu có vẻ hiểu được thì học sẽ ổn, còn nếu đọc hoài không hiểu là do mức độ kiến thức cao hơn khả năng của mình, hoặc là mình cố gắng giảm mức độ phức tạp của vấn đề lại, hiểu một cách đơn giản nhất, hoặc nếu không làm được cách một thì không nên đụng vào. Có thể nếu mình siêng sẽ học được đó, nhưng sẽ mất thời gian rất nhiều. Ví dụ đơn giản như mình vừa nói là mình dùng công cụ kéo thả Windows Builder để hiểu về đồ họa một cách đơn giản nhất (mình đã từng ráng đọc hiểu java swing nhưng tận mấy ngày liền không thể hiểu nổi, chắc mình stupid quá ).
Ngoài ra, trong lúc nghiên cứu vấn đề gì đó thì google là không thể thiếu được. Mình không biết mình đã search bao nhiêu mẫu câu “Difference between…” nữa. Phải cố gắng đọc tiếng Anh, trong lúc đọc cũng nên nhắm chỗ nào đọc hiểu ổn để đọc, đừng đọc từ trên xuống như đọc bài văn. VD mỗi lần mình tra trên stack overflow mình chả bao giờ đọc câu hỏi mà lướt thẳng câu trả lời để xem, vì câu hỏi người ta nói khá nhiều thứ cộng với lại show những đoạn code nữa, đọc xong cũng khá mệt. Mà cái hay là câu trả lời có lượt vote cao thường nói rất tổng quát, đúng ý mình muốn tìm kiếm. Cám ơn bác Stack Overflow nhiều lắm, cám ơn bác Google translate nữa!!!
Một cách học bài nữa là mình hay đăng mấy cái mình tìm hiểu lên blog như thế này nè, vì mình có cảm giác share kiến thức giúp mình học tốt hơn và nhớ lâu hơn. Vì thế nên lúc đầu blog này mình có ghi là để học tập là thế đó.
Thôi chia sẻ hôm nay thế là đủ rồi, không còn gì chia sẻ thêm nữa đó (haha). Tạm biệt các bạn và chúc các bạn thi tốt!

Nội dung bài viết thuộc về Lê Công Diễn.

Người viết: Lê Công Diễn
Mang đi nhớ ghi nguồn


Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)