Cách một lập trình viên có thể đi từ vị trí của người học việc đến tinh thông.
Có hai hiện tượng trái ngược đang diễn ra. Trong khi các dự báo ngành CNTT cho thấy có sự thiếu hụt nhân lực hết sức trầm trọngthì rất nhiều sinh viên ngành phần mềm lại khó xin tìm được việc làm khi ra trường. Các doanh nghiệp liên tục nhìn thấy “cơ hội hết sức to lớn” từ cuộc Cách mạng 4.0, rồi niềm hy vọng “Quốc gia khởi nghiệp”, còn nhân lực thiếu vẫn hoàn thiếu, “không thiếu mục tiêu, thiếu mỗi người làm”.
Một trong số các nguyên nhân hàng đầu của sự lệch pha trên là sinh viên không làm được việc ngay cả khi các đơn vị tuyển dụng đã hạ mức “sàn” tiêu chuẩn xuống khá thấp. Tuy vậy, nguyên nhân của nguyên nhân bề mặt này lại nằm ở những chỗ khác mà một trong số đó là: Cả người dạy và người học lập trình hiện nay đã không để ý tới cách thức đúng đắn để xây dựng nền tảng cho người làm nghề.
Trước hết là về thời lượng, chúng ta có thể đặt câu hỏi: Trung bình một người cần học lập trình trong bao nhiêu lâu là đủ? Chỉ bốn năm đại học? Hay ba năm cấp 3 cộng bốn năm đại học (tức bảy năm)? Hay ba tháng sau khi hoàn thành khoá học online “Lập trình Android cấp tốc, kiếm tiền nghìn đô”? 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: “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 cho ra lò những bản hit đầ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.”
Chúng ta có thể thấy cái nhìn của Norvig phản ảnh quan điểm của Malcom Gladwell, tác giả “Những kẻ xuất chúng”, 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. Đó là số giờ luyện tập có chủ đích tương đối mà một người cần phải trải qua để trở nên xuất sắc trong nghề. Trong cuốn sách “Năm tư duy cho tương lai”, Howard Gardner, 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), một lần nữa dẫn lại con số đó, tương đương chừng 10 năm để một người từ chỗ là người học việc (novig) đến chỗ tinh thông (expert) lĩnh vực của mình. Nghĩa là, không thể có câu chuyện Phù Đổng trong phát triển năng lực ở con người.
Song liệu có phải một người cứ lập trình 10 năm thì ắt sẽ giỏi? Ở Việt Nam, không dễ tìm ra các lập trình viên có thâm niên ngoài 10 năm để phỏng vấn cho kĩ. Nhưng không phải vì thế mà chúng ta không tìm ra được những manh mối quan trọng.
Trong bài viết kể trên, Norvig ghi lại cách thức học tập quan trọng nhất trong 10 năm học nghề của mình: “Điều quan trọng là 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.” Điều được Norvig mô tả chính là biểu hiện của cái mà nhà tâm lí học 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 “Tuyên ngôn Phát triển Phần mềm Linh hoạt” (The Manifesto for Agile Software Development) có ảnh ưởng rất lớn tới tiến trình hiện đại hóa ngành lập trình, cũng có quan điểm tương tự. Các tác giả bàn 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 đến tinh thông 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 với mức độ thuần thục tăng dần.
Những hướng dẫn này được thể hiện lại dưới một cách diễn đạt khác về cách học ở con người do hai giáo sư Barbara Oakley và Terence Sejnowski giảng dạy trong khóa học trực tuyến đại chúng mở (MOOC) “Learning how to learn” 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 để xây dựng những khối mới qua năm tháng, dần dần 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 chúng ta 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. Nếu 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 (có được khi luyện tập nhiều, mức độ tinh thông kĩ năng cao) 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 hóa 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 thân hình cuốn hút.
Từ Norvig đến Hunt, Thomas – các chuyên gia lập trình, cho tới 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: 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 và đúng cách, từ từ, trong thời gian đủ lâu thì mới có kết quả.
Vì con số tương đối 10 năm dường như vượt xa thời gian một sinh viên học tập ở nhà trường, chúng ta có thể rút ra một gợi ý quan trọng khác: Tài năng phải được doanh nghiệp nuôi dưỡng chứ không thể “ngồi chờ sung rụng”. Doanh nghiệp không chỉ có mỗi nhiệm vụ là “sử dụng lao động”, mà còn phải chủ động tạo điều kiện học tập liên tục cho nhân viên thì mới mong có một đội ngũ nhân lực chất lượng, đủ sức chinh mục những mục tiêu cao hơn.
Theo: Học lập trình cần bao nhiêu thời gian? – Tác giả: Dương Trọng Tấn, cố vấn Phát triển nghề nghiệp tại CodeGym (Giáo dục/Tiasang)