Published 11/04/2016
Last Updated 20/11/2024

<aside> 📖

Dịch từ bài viết Teach Yourself Programming in Ten Years của Peter Norvig.

</aside>

Tại sao mọi người đều vội vã như vậy?

Bước vào một cửa hàng sách bất kì, bạn sẽ thấy làm thế nào để Tự học Java trong 24 giờ (Teach Yourself Java in 24 Hours) bên cạnh vô số những cuốn tương tự về tự học C, SQL, Ruby, thuật toán trong vài ngày, thậm chí vài giờ. Tìm kiếm nâng cao trên Amazon với [tiêu đề: teach, yourself, hours, since: 2000] trả về 512 cuốn sách dạng này. Trong số 10 cuốn hàng đầu, 9 cuốn là sách về lập trình (cuốn còn lại là về công việc sổ sách, kế toán). Các kết quả tương tự cũng được tìm thấy khi thay "teach yourself" (tự học) với "learn" (học) hoặc "hours" (giờ) với "days" (ngày).

Như vậy, hoặc là mọi người đang rất vội vã trong việc học lập trình, hoặc lập trình có vẻ như là một lĩnh vực vô cùng dễ học hơn bất cứ lĩnh vực nào khác. Felleisen và những cộng sự đã đề cập tới xu hướng này trong cuốn sách How to Design Programs khi cho rằng "Lập trình dở thì rất dễ. Những thằng ngốc có thể học nó trong 21 ngày ngay cả khi chưa biết gì (về lập trình)". Abstruse Goose cũng vẽ tranh biếm họa về việc này.

Hãy cùng phân tích một tiêu đề sách như Tự học C++ trong 24 giờ (Teach Yourself C++ in 24 Hours) có ý nghĩa thế nào:

Tự học lập trình trong 10 năm

Các nhà nghiên cứu (Bloom(1985)Bryan & Harter (1899)Hayes (1989)Simmon & Chase (1973)) chỉ ra rằng cần khoảng 10 năm để xây dựng kĩ năng và hiểu biết ở mức độ chuyên gia về bất kì một lĩnh vực nào trong một danh sách các lĩnh vực bao gồm chơi cờ vua, soạn nhạc, vận hành điện tín, hội họa, chơi dương cầm, bơi lội, tennis, và nghiên cứu về neuropsychology hay topo học. Điểm quan trọng nhất là thực hành một cách có chủ đích: không đơn thuần là làm những việc lặp đi lặp lại mà thử thách bản thân với những vấn đề vượt qua năng lực hiện tại của mình, thử giải quyết nó và phân tích hiệu suất của mình trong và sau khi làm và sửa chữa các sai sót. Lặp lại quá trình này. Tiếp tục lặp lại. Không có đường tắt: ngay cả Mozart, thần đồng âm nhạc từ lúc 4 tuổi, nhưng phải 13 năm sau mới cho ra đời các tác phẩm âm nhạc có giá trị ở tầm thế giới. Ở một dòng nhạc khác, nhóm nhạc Beatles dường như đột ngột xuất hiện với một chuỗi các bản hit #1 và có mặt trong chương trình Ed Sullivan năm 1964. Tuy nhiên họ đã chơi nhạc từ trước đó rất lâu trong những câu lạc bộ nhỏ ở Liverpool và Hamburg từ năm 1957, và mặc dù thu hút đại chúng từ sớm, thành công lớn quan trọng đầu tiên của họ, Sgt. Peppers, được phát hành vào năm 1967. Malcolm Gladwell đã phổ biến ý tưởng này nhưng tập trung vào con số 10.000 giờ hơn là 10 năm.

Có thể con số kì diệu là 10.000 giờ, không phải 10 năm. Hoặc có thể là một số liệu khác; Henri Cartier-Bresson (1908-2004) từng nói "10.000 tấm ảnh đầu tiên bạn chụp là tệ nhất". Kĩ năng và hiểu biết ở mức độ chuyên gia một cách chân chính có thể mất cả đời để xây dựng: Samuel Johnson (1709-1784) nói "Sự xuất sắc trong bất kì lĩnh vực nào chỉ có thể đạt được bằng sự lao động của cả đời người, không thể đạt được với cái giá rẻ hơn." và Chaucer (1340-1400) phàn nàn "đời người quá ngắn, việc học thì lại rất dài.". Hippocrates (c. 400BC) được biết tới với đoạn trích "ars longa, vita brevis", là một đoạn trong "Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile" có thể được diễn dịch như sau "Cuộc đời thì ngắn, việc học thì dài, những cơ hội đang lướt qua, những trải nghiệm đầy nguy cơ, những phán đoán nhiều trắc trở.". Dĩ nhiên, không có một con số cụ thể nào là câu trả lời cho tất cả: cho rằng mỗi một kĩ năng như lập trình, chơi cờ vua, chơi cờ đam hay soạn nhạc yêu cầu một số lượng thời gian như nhau để nắm vững là không hợp lý. Việc cho rằng tất cả mọi người cũng cần một khoảng thời gian như nhau cũng vậy.

Bạn muốn trở thành lập trình viên?

Đây là công thức thành công của tôi cho việc lập trình: