Learning the hard way

“Learning the hard way” (chưa biết dịch tiếng Việt như nào cho nuột) là một chiêu thức rất hay mà mình vừa mới đọc được. Thiệt ra, đọc xong cái định nghĩa, thấy nó quen quá nên ngồi viết luôn bài này. Thì ra từ đó giờ hầu như những thứ mình tự học đều theo kiểu này, mỗi tội chưa đủ trình để tổng quát, đúc kết nó thành tuyệt chiêu như này thôi.

Ảnh: Bìa đĩa nhạc phim The Hard Way, có một sự không liên quan nhẹ tới nội dung bài viết

“Learning the hard way” là chi?

Đây là định nghĩa nghiêm túc trên Wikipedia, đọc thấy đau đầu nhưng vẫn ghi vô cho nó hàn lâm

Learning the hard way refers to the educational results developed in the process of living life, the perspective gained as a result of trial and error—more often used in reference to the mistakes, mis-steps and misunderstandings which lead to better judgment.

Đại khái là vừa làm vừa học, cao siêu hơn nữa là làm trước rồi học sau. Kiến thức được tích lũy qua quá trình thử-sai (trial-error, diễn giải ra nghĩa là phá hoại rồi rút kinh nghiệm). Giả dụ bạn muốn học ghita, theo cách này bạn sẽ tập bấm hợp âm trước, bắt chước đàn một bài nhạc như đúng rồi luôn, mà không cần phải ngồi đọc mấy bài nhạc lí đau đầu. Một ví dụ khác, khi mình học lập trình (C, C++, Arduino), cái mình làm đầu tiên thường là lướt qua các ví dụ và bài tập, trước khi đến với những bài học lí thuyết.

Bằng cách này, mình sẽ dễ dàng định hình được cái thứ mình học trong như thế nào, làm tăng sự hứng thú vì tạo ra được thành quả ngay từ khi bắt đầu và bớt đi sự nhàm chán do những bài lí thuyết khô khan như sa mạc.

Những điểm mấu chốt của “Learning the hard way”

Thực hành trước. Lý thuyết sau

Với một bộ não trống không, thời gian đầu tiên sẽ rất khó khăn (…the hard way). Nhưng như đã nói ở trên, thực hành trước giúp ta có một cía nhìn tổng quan về thứ mà mình đang học. Rõ ràng, việc tra cứu ý nghĩa các câu lệnh trong một ví dụ, hoặc nghe thử âm thanh của một hợp âm trong bài hát, sẽ dễ dàng hơn việc phải tự mình sắp xếp những lý thuyết đã được học một cách ngăn nắp rồi áp dụng chúng.

Chú ý đến từng chi tiết

Vì ta bắt đầu thực hành khi chưa có gì trong đầu, để mắt đến ý nghĩa của từng chi tiết nhỏ nhất giúp nắm bắt kiến thức nhanh gọn và chính xác đến từng milimet. Để chú ý đến từng chi tiết, điều tối quan trọng là chính bạn phải là người thực hành. Tự tay gõ từng kí tự của đoạn code, ấn từng note của phím đàn, thì bạn mới có thể hiểu thấu những gì mà bạn đang làm.

Tìm ra điểm khác biệt

Bằng cách thực hành khi chưa có kiến thức lý thuyết, chắc chắn bạn sẽ gặp phải những lỗi sai. Tìm ra những lỗi này so với bài giải đúng là một cách tốt để phát hiện và tránh gặp lại những lỗi này trong tương lai. Với lập trình, luyện được chiêu này, bạn sẽ trở thành một cái máy debug siêu đẳng không kém gì mấy cái tool mà người ta cung cấp.

Luyện tập. Luyện tập. Luyện tập

Đương nhiên, việc tổng quát hóa kiến thức yêu cầu một khối lượng thực hành rất lớn. Bạn sẽ muốn biết chắn chắc ý nghĩa của dòng lệnh hoặc âm thanh của cái hợp âm đó là đúng như thứ mà bạn nghĩ. Ngay cả khi bạn đã nắm được lí thuyết, bạn cũng cần đảm bảo nó sẽ vẫn như vậy trên thực tế. Cách duy nhất là luyện tập, luyện tập, luyện tập.

Practice makes perfect!

Đây là cách mà mình tự học, áp dụng ngay với những môn học trên trường đến những thứ mà mình đam mê. Đảm bảo rất hiệu quả. Nếu ai không tin đấm phát chết luôn! Nếu ai không chết xin đừng đấm lại…

Tái bút: Xin gửi các bạn một trang về học lập trình, trong đó có series LearncodeTheHardWay. Domain hơi bựa tí.

http://programming-motherf*cker.com/become.html