TLDR: Cậu bạn thân của mình đã dành 1.5 năm vật lộn với những kiến thức cơ bản về lập trình. Làm sao để xác định điểm dừng của cậu ấy? Đến mức nào thì cậu ấy nên học cách từ bỏ?
Mình đang nhận dạy kèm lập trình cho cậu bạn thân, bắt đầu được khoảng 1 năm rưỡi nay rồi. Trước đây cậu ấy từng làm trái ngành trong gần một tháng, sau đó thì nghỉ vì không đủ năng lực.
Mình muốn giúp bạn mình cải thiện kỹ năng lập trình, để sau đó cậu ấy có thể tìm được một công việc mới. Khó cái là, thi thoảng cậu ấy lại quên cả những thứ cơ bản và lại mất phương hướng. Bạn mình tiếp thu khá tốt, nhưng trí nhớ về những gì đã học thì cứ dần phai nhạt theo thời gian. Chúng mình phải liên tục quay lại học những thứ cơ bản, làm cả đống bài tập cho đến khi cậu ấy tự tin tự giải được chúng. Mình chỉ biết làm thế với hy vọng bạn ấy sẽ nhớ kiến thức đã học.
Dường như nếu tiếp tục cả hai sẽ còn phải cố nhiều nữa. Thứ nhất là cậu ấy học chậm, thứ hai là cậu ấy không có tinh thần tự giác.
Ngay từ đầu mình đã nói thẳng rằng sau 6 tháng mà còn chật vật với kiến thức cơ bản thì nên từ bỏ. Bạn đó mới bảo ngoài IT ra không biết theo ngành nào nữa, tại không tìm được vị trí nào phù hợp ở những mảng khác.
Nên mình đang tự hỏi liệu còn đến độ nào thì thật sự nên khuyên cậu ấy dừng lại, đừng lãng phí thời gian nữa, không đáng để tiếp tục đâu? Hay ngược lại, cần thêm nữa bao nhiêu thời gian mới có thể khẳng định rằng cậu ấy đủ khả năng theo được lập trình, chỉ cần tiếp tục vững bước?
_____________________
Cậu ấy tiếp thu khá tốt những gì mình dạy, nhưng những kiến thức ấy cứ dần phai nhạt theo thời gian.
Đây là điểm nói lên sự khác biệt giữa việc học chủ động và học thụ động.
Hãy để người học giải thích lại theo ý hiểu của mình. Việc duy nhất bạn cần làm là sửa lại những lỗi của cậu ấy. Hãy coi như bạn là rubber duck của cậu ấy.
(T/N: Rubber Duck Debugging – một kỹ thuật debug trong lập trình. Phương pháp này yêu cầu coder giải thích code của mình cho dân không biết gì về code. Tức là coder phải giải thích về code của mình một cách dễ hiểu nhất, tránh dùng những thuật ngữ đi quá sâu vào chuyên ngành)
Nếu sau 1.5 năm mà bạn đó còn chưa nắm nổi kiến thức cơ bản, có lẽ vấn đề thực sự nằm ở phương pháp học tập? Rõ ràng là thời gian qua cậu ấy gần như chỉ học thụ động, biết đâu là bạn đã kèm cặp cậu ấy quá sát sao?
Phương pháp học lập trình chính xác nhất, hiệu quả nhất, không đâu khác chính là việc thực sự bắt tay vào lập trình. Liên tục phấn đấu, giữ thói quen lập trình không ngừng nghỉ. Quá trình học code không phải một cuộc chạy nước rút, mà là một trường đua marathon không có điểm dừng. Cứ từng bước một mà tiến, chậm mà chắc, bạn sẽ chinh phục được hành trình này thôi.
_____________________
Đến mức nào thì cậu ấy nên học cách từ bỏ?
Đến khi cậu ấy không còn tìm thấy niềm vui từ lập trình nữa.
Việc bạn cậu liên tục quên đi những gì đã học chứng tỏ rằng bạn ấy chẳng chịu tự luyện tập gì cả. Dường như sau mỗi tiết học, cả tuần sau đó bạn ấy hay bỏ bê luyện tập nên mới phải học lại đúng không? Như cậu nói đấy, bạn cậu quá thiếu ý thức tự giác.
Nếu không tìm được công việc thay thế thì bạn đó lại càng phải cố trau dồi kĩ năng. Chứ cái này đâu có phải trách nhiệm của cậu. Bạn đó nên tự học cách phấn đấu. Cậu chỉ là người hướng dẫn, chỉ cần dẫn bạn cậu đến trước cánh cửa thôi. Người phải tự lực bước qua ngưỡng cửa là bạn ấy.
Câu hỏi khác cũng đáng quan tâm không kém này: Đến độ nào thì có thể khẳng định rằng bạn ấy đang làm mất thời gian của cậu?
_____________________
Tui mất tận hai năm mới hiểu được hết mấy chỗ cơ bản. Giờ thì tui đang làm web developer, 40 giờ/tuần. Thành ra 1.5 năm với tui cũng chưa phải cái gì điên dồ lắm.
_____________________
Cậu bạn thân của mình đã dành 1.5 năm vật lộn với những kiến thức cơ bản về lập trình.
Cơ mà “cơ bản” đối với bạn là như thế nào? Kiểu nếu ông này mà còn chật vật với if/else hay vòng lặp thì không hay lắm đâu.
>u/RationalityrulesOB (6 points)
Dạng dạng vậy ấy. Kiểu tách từng câu lệnh ra thì cậu ấy có thể hiểu được vòng lặp, if/else, break hoạt động như thế nào. Nhưng khi xâu chuỗi chúng vào nhau thì cậu ấy bắt đầu loạn, và rồi lại dậm chân tại chỗ.
Khả năng duy nhất mình có thể nghĩ ra là do cậu ấy học lướt phần cơ bản, chưa có nhiều thời gian và luyện tập để những kiến thức đó thực sự ngấm sâu. Nên mình đang cố giúp cậu ấy nắm vững phần cơ bản trước đã, đợi đến khi bản thấy tự tin hơn mới cho tự luyện giải thuật.
>>u/Packbacka (10 points)
Không phải tui muốn làm hai bạn nản lòng đâu, nhưng tui thấy hoặc là ông đó thật sự không có khả năng, hoặc là cách học của ổng có vấn đề. Mấy vòng lặp và if/else làm gì phức tạp quá đâu, nó cơ bản lắm í. Muốn trở thành một developer giỏi cần biết hơn thế nhiều.
Tui tin bạn là một người bạn tốt, nhưng một developer giỏi cần biết cách tự học, tự giải quyết vấn đề.
_____________________
u/dannyhodge95 (11 points)
Thật sự đến giờ nhiều người vẫn còn giữ cái tư tưởng sai lầm “ai cũng có thể lập trình”. Ừ thì hầu hết ai cũng có thể học được những cái cơ bản thôi, nhưng muốn bật lên hẳn thì đâu có dễ, chắc trừ mấy con người thông minh vốn sẵn tính trời. Như kiểu, tôi biết rõ mình không thể trở thành một nghệ sĩ chuyên nghiệp này. Có khi phải mất tầm vài năm tôi mới đạt đến cái trình chấp nhận được, giờ đến cơ bản tôi còn chả biết cái cóc khỉ gì. Theo đuổi nghệ thuật đồng nghĩa với việc tôi phải học cách nhìn nhận sự việc dưới con mắt nghệ sĩ.
_____________________
Đến khi bạn nhận ra đã quá lâu rồi mình không còn thấy vui khi code nữa, ngoài tiền ra bạn không tìm được động lực nào để tiếp tục code cả.
Theo tôi thì, trừ phi bạn có duyên với lập trình, thì không nên coi môn này như một lựa chọn công việc thay thế.
Một là, muốn đạt tới trình của một senior developer, bạn phải liên tục cập nhật tình hình công nghệ thông tin, mệt mỏi vãi loz. Thật đấy. Không ít lập trình viên đã từng trải qua giai đoạn sức tàn lực kiệt. Gần như những người theo ngành này đều từng cảm nhận được ít nhất 1-2 dấu hiệu đuối sức, từ sức khỏe đến tinh thần. Nếu mục đích học code của bạn chỉ là để kiếm tiền, càng lên cao bạn sẽ chỉ càng thấy mệt hơn thôi.
Hai là, đối với hầu hết mọi người, lập trình thật sự khó nuốt. Thì đúng là có người chinh phục lập trình cơ bản dễ như bỡn, nhưng đấy là thiểu số thôi. Học lập trình chỉ vì muốn kiếm tiền là ngã như chơi đấy, ít nhất cũng nên có chút đam mê. Tôi thì luôn dành một tình yêu to bự cho máy tính rồi. Cái cảm giác lúc hiểu được cách máy tính vận hành hay tạo được một thứ gì đó từ máy tính nó đã lắm.
Nói chung lời khuyên của tôi là, nếu bạn bạn thật sự thích IT vì say mê lập trình, hãy cứ theo đuổi thôi. Tôi chưa bao giờ thấy ai thật sự đam mê lập trình mà thất bại cả.
Học 1.5 năm cũng chưa đủ để tìm được một công việc đâu. Tôi gõ lên những dòng code đầu tiên từ năm 12 tuổi. Tôi tự tạo cho mình một con IRC bot, dù nó lỗi vãi, năm 16 tuổi. Năm 18 tuổi, tôi được nhận làm thực tập sinh – chỉ để nhận ra bản thân vẫn chưa đủ năng lực. Tôi bị sa thải ngay sau đó. Tôi học lên đại học, nhưng ngay cả thế tầm hiểu biết của tôi vẫn chưa là gì. 1.5 năm chẳng là gì đâu. Có những người học khoa học máy tính trong 5 năm, lấy được bằng thạc sĩ rồi, song còn chật vật mãi mới xử lý được mấy thứ “tầm phào” kia mà. Theo tôi thì ít nhất cũng phải học 3 năm mới tạm coi là đủ xài. Tất nhiên, có những người không cần nhiều thời gian đến thế, có những người lại cần nhiều thời gian hơn thế.
Cá nhân tôi phải mất tới cả thập kỷ từ lúc gõ dòng code đầu đến lúc ổn định được sự nghiệp. Nhiều người cũng không cần mất nhiều năm thế đâu, nhưng ý tôi là – chậm cũng được, chỉ cần bạn có đam mê, bạn sẽ làm được thôi.
Với cả bạn kia có khi nên tự làm thử một project riêng, hoặc thử góp sức thực hiện project của người khác xem sao. Tài nguyên mở trên GitHub nhiều lắm, có thể thử giúp họ thêm thắt mấy feature lặt vặt, fix vài con bug đơn giản. Hoặc thử tự làm mấy project chơi chơi, web chat này, cài game, làm blog này,… Đơn giản thôi, không cần quá cầu kì.