Trung bình một người học lập trình trong bao nhiêu lâu là đủ? Chỉ 4 năm đại học? Hay 3 năm cấp 3 cộng 4 năm đại học (tức 7 năm)? Hay đơn giản là 21 ngày (đọc xong “Lập trình Java trong 21 ngày”)?
Chuyên gia lập trình và trí tuệ nhân tạo Peter Norvig, Giám đốc trung tâm nghiên cứu của Google, thì xác quyết là cần 10 năm trong bài viết rất quan trọng “Tự học lập trình trong 10 năm”. Norvig dẫn các nghiên cứu của nhiều nhà tâm lí học để khẳng định con số ấy. Ông viết: “…Và lịch sử đã chứng minh không thể có con đường tắt: dù cho đó là Mozart, thiên tài âm nhạc nảy nở từ năm lên 4 tuổi, cũng phải mất 13 năm để cho ra đời tác phẩm nhạc cổ điển đầu tiên. Dù cho đó là Beatles, trước khi xuất bản #1 đầu tiên vào năm 1964, họ cũng đã phải cặm cụi trong những câu lạc bộ nhỏ tại Liverpool hay Hamburg từ năm 1957, và trong khi họ có sức hấp dẫn đại chúng từ rất sớm, thành công quan trọng đầu tiên của nhóm là Sgt. Pepper, album được phát hành năm 1967. ”
Quan điểm của Norvig phù hợp với lí luận của Malcom Gladwell về quy tắc 10.000 giờ rất nổi tiếng vốn có gốc gác từ những nghiên cứu tâm lí học của Anders Ericsson. Trong những khảo sát của riêng mình, nhà tâm lí học nổi tiếng của đại học Harvard, cha đẻ của lí thuyết trí thông minh đa dạng (Multiple Intelligences) Howard Gardner cũng dẫn lại con số chừng 10 năm để một người từ chỗ là người học việc đến chỗ tinh thông lĩnh vực của mình.
Trong bài viết của mình, Norvig còn ghi lại cách thức học tập trong 10 năm ấy: “Điều quan trọng là bàn về phương pháp thực hành: không chỉ là việc lặp đi lặp lại đơn thuần, mà còn thử thách chính mình bằng những nhiệm vụ như vượt qua khả năng hiện tại của bản thân, cố gắng, phân tích hiệu suất của mình trong và sau quá trình rèn luyện, và sửa chữa bất kỳ sai lầm nào. Cứ như vậy, lặp đi lặp lại.” Cái được Norvig mô tả chính là cách thức mà Ericsson gọi là luyện tập có chủ đích (deliberate practices) hay Daniel Doyle gọi bằng cái tên “luyện tập sâu” (deep practices) trong cuốn sách nổi tiếng “Mật mã tài năng”.
Andy Hunt, cùng với Dave Thomas – một lập trình viên nổi tiếng khác, đồng tác giả của Agile Manifesto, cũng có quan điểm tương tự, và ghi rõ cách thức mà một lập trình viên có thể đi từ vị trí của người học việc (novice) đến tinh thông (expert) trong cuốn sách nổi tiếng “Pragmatic Programmer: From Journeyman to Master”. Chặng đường ấy diễn biến từ từ, bắt đầu bằng bắt chước, lặp đi lặp lại việc học từng kĩ năng thành phần, phát triển dần các kiến thức và kĩ năng mới, rồi tích hợp chúng dần với mức độ thuần thục tăng dần.
Điều này được GS Barbara Oakley và Terence Sejnowski giảng kĩ trong khoá học về việc học tập của con người “Learning how to learn” thu hút trên một triệu rưỡi người học trên Coursera. Theo đó, não người phải xây dựng các khối (chunk) kiến thức, từ từ, chậm rãi. Kết nối và gia cố chúng lại, để xây dựng những khối mới qua năm tháng, rồi mới có được kiến thức và kĩ năng đáng kể.
Trong quá trình xây dựng kiến thức và kĩ năng ấy, cấu trúc vật lí của não bộ cũng sẽ thay đổi. Doyle, trong cuốn sách “Mật mã tài năng”, cho biết, các myelin bao bọc kết nối thần kinh sẽ dày lên khi chúng ta luyện tập sâu. Khi đó, việc truyền dẫn tín hiệu giữa các tế bào thần kinh sẽ có tốc độ cao hơn. Khi phóng to myelin lên, chúng ta có thể thấy chúng giống như những chiếc xúc xích căng đầy. Khi không có luyện tập, myelin không khác gì một cái dây khô. Càng tinh thông kĩ năng, myelin càng dày. Xét trên quan điểm truyền tin, có thể ví mạng lưới tế bào thần kinh có myelin dày như một mạng kết nối Internet băng thông rộng vậy.
Nếu coi hệ thống myelin như là hệ thống “cơ bắp” của não bộ, thì việc luyện tập sâu chính là một biện pháp để gia tăng độ dày của loại “cơ bắp” đặc biệt này. Vậy hoá ra, việc luyện tập cho não bộ, cũng không khác gì mấy chuyện các nam thanh nữ tú đang ngày đêm vã mồ hôi ở các phòng tập Gym để xây dựng body đẹp.
Dẫn từ Norvig, đến Hunt, Thomas, các chuyên gia tâm lí học và các nhà thần kinh học, chúng ta có một liên tưởng hết sức ý nghĩa này: Việc luyện kĩ năng lập trình, cũng như việc tập gym xây dựng cơ bắp; phải đều, bền bỉ, có chủ đích, từ từ, trong thời gian đủ lâu thì mới có kết quả.
Luyện code cũng như luyện cơ.
Dương Trọng Tấn.
Một số bài viết khác:
- Con đường học lập trình của tôi
- Tự học lập trình trong 10 năm
- Chín thói quen xấu cần bỏ nếu muốn theo ngành CNTT
- Coder: Một nghề chân chính, một nghề cần vinh danh