3 điểm bởi GN⁺ 2024-01-16 | 1 bình luận | Chia sẻ qua WhatsApp

Học lập trình một mình trong 10 năm

  • Đặt ra câu hỏi vì sao lại có sự vội vàng trong việc học lập trình.
  • Các hiệu sách tràn ngập những cuốn như "Học Java trong 24 giờ", và có rất nhiều sách khẳng định rằng có thể học C, SQL, Ruby, thuật toán, v.v. chỉ trong vài ngày hoặc vài giờ.
  • Khi tìm trên Amazon từ năm 2000 trở đi với các từ khóa tương đương "dạy, tự học, thời gian", có 512 cuốn sách được tìm thấy. Trong 10 cuốn đứng đầu thì 9 cuốn là sách lập trình.
  • Ngay cả khi thay "tự dạy" bằng "học" và thay "thời gian" bằng "ngày" để tìm kiếm, kết quả vẫn tương tự.
  • Kết luận là mọi người либо đang quá vội khi học lập trình, либо cho rằng lập trình dễ học hơn bất cứ thứ gì khác.

"Tự học C++ trong 24 giờ" thực sự có nghĩa là gì

  • Trong 24 giờ không có đủ thời gian để viết nhiều chương trình quan trọng và học từ thành công cũng như thất bại.
  • Cũng không đủ thời gian để làm việc cùng các lập trình viên giàu kinh nghiệm và hiểu cách tồn tại trong một môi trường C++.
  • Sách chỉ có thể nói về sự quen thuộc hời hợt, chứ không phải sự thấu hiểu sâu sắc.
  • Có thể bạn sẽ học được một phần cú pháp của C++, nhưng sẽ không học được cách sử dụng ngôn ngữ đó như thế nào.
  • Alan Perlis nói rằng nếu một ngôn ngữ không ảnh hưởng đến cách bạn suy nghĩ về lập trình, thì nó không đáng để học.

Học lập trình một mình trong 10 năm

  • Nghiên cứu cho thấy cần khoảng 10 năm để trở thành chuyên gia trong nhiều lĩnh vực như cờ vua, sáng tác âm nhạc, vận hành điện báo, hội họa, chơi piano, bơi lội, quần vợt, nghiên cứu thần kinh tâm lý học và tô pô học.
  • Điều quan trọng là luyện tập có chủ đích: không chỉ lặp đi lặp lại, mà phải thử thách bằng những bài toán vượt quá năng lực hiện tại, thực hiện, phân tích hiệu suất trong và sau khi làm, rồi sửa sai.
  • Để trở thành chuyên gia thực sự có thể cần cả đời.

Nếu bạn muốn trở thành lập trình viên

  • Hãy hứng thú với lập trình và lập trình một cách vui vẻ.
  • Trò chuyện với các lập trình viên khác và đọc chương trình của người khác quan trọng hơn bất kỳ cuốn sách hay khóa học nào.
  • Bạn có thể dành 4 năm ở đại học hoặc thêm nhiều thời gian ở cao học, nhưng nếu trường học không phù hợp với bạn, bạn vẫn có thể có trải nghiệm tương tự nhờ nỗ lực cá nhân hoặc trong công việc.
  • Hãy làm dự án cùng các lập trình viên khác và học nhiều ngôn ngữ lập trình khác nhau.
  • Vì trong "khoa học máy tính" có chữ "máy tính", bạn cần biết máy tính mất bao lâu để thực thi các lệnh.
  • Tham gia vào công việc tiêu chuẩn hóa ngôn ngữ cũng là điều tốt, nhưng tốt nhất là nên rời khỏi đó càng sớm càng tốt.
  • Chỉ học bằng sách thôi là không đủ.

Phụ lục: Chọn ngôn ngữ

  • Đưa ra lời khuyên về việc nên học ngôn ngữ lập trình nào trước.
  • Nên dùng ngôn ngữ mà bạn bè bạn đang dùng, giữ mọi thứ đơn giản và học theo cách có tính tương tác.
  • Khuyên dùng Python hoặc Scheme làm ngôn ngữ lập trình đầu tiên.

Phụ lục: Sách và các tài liệu khác

  • Dù nhấn mạnh rằng "chỉ học bằng sách là không đủ", bài viết vẫn gợi ý một số cuốn sách và trang web.
  • Giới thiệu sách và tài liệu về học lập trình bằng Scheme và Python.

Ý kiến của GN⁺

  • Bài viết nhấn mạnh cách tiếp cận thực tế với việc học lập trình và cảnh báo trước những lời hứa hẹn sai lệch rằng có thể trở thành chuyên gia trong thời gian ngắn.
  • Bằng cách đưa ra kết quả nghiên cứu rằng cần 10 năm hoặc 10.000 giờ luyện tập có chủ đích để phát triển năng lực chuyên môn, bài viết mang đến góc nhìn dài hạn về việc học.
  • Bài viết nhấn mạnh rằng để có sự hiểu biết sâu về lập trình và nâng cao năng lực, cần tham gia nhiều dự án khác nhau, học nhiều ngôn ngữ lập trình và hiểu các nguyên lý cơ bản của khoa học máy tính. Đây là lời khuyên hữu ích cho các kỹ sư phần mềm mới bắt đầu cân nhắc việc học lập trình.

1 bình luận

 
GN⁺ 2024-01-16
Ý kiến trên Hacker News
  • Một người dùng cho biết vào năm 1999 họ đã mua cuốn "Sams Teach Yourself C++ in 24 Hours", và nhân viên thu ngân nhìn thấy cuốn sách đó đã cười rồi kể cho họ nghe về một bài báo nào đó. Lần khác, khi 16 tuổi đang xem sách lập trình ở Borders, có người đã đưa cho họ cuốn "The C Programming Language", và đó đã trở thành bước ngoặt làm thay đổi cuộc đời. Sự nghiệp của người dùng này phần lớn được định hình nhờ việc gặp gỡ các lập trình viên và những người quan tâm đến lập trình trên khắp thế giới.

      • Việc gặp gỡ những người quan tâm đến lập trình đã ảnh hưởng lớn đến quá trình hình thành sự nghiệp.
  • Một người dùng khác nói rằng bài tiểu luận họ đọc lần đầu khi còn thiếu niên mang ý nghĩa rất đặc biệt; khi đọc lại, họ nhận ra bài viết đã được cập nhật kể từ khi đăng năm 1998 vì có tham chiếu đến Malcolm Gladwell và nhắc đến Ratatouille. Bản gốc vẫn còn có thể xem trong kho lưu trữ và ngắn hơn nhiều.

      • Nhắc đến việc bài tiểu luận đã được cập nhật theo thời gian.
  • Một người dùng khác cho biết họ thường học qua sách, nhưng cách tiếp cận này hữu ích hơn với các lĩnh vực ngoài CS thay đổi chậm như toán học hay vật lý. Họ phê bình một cuốn sách gần đây của O'Reilly về lập trình lượng tử vì không giải thích chi tiết các mạch lượng tử, nên không giúp họ hiểu thực sự mình đang làm gì. Theo họ, sách chỉ là một công cụ học tập, còn các dự án sở thích đôi khi hiệu quả hơn nhờ trải nghiệm thực tế. Sách hữu ích để chỉ đúng hướng, nhưng tất nhiên phải tìm được cuốn phù hợp với nhu cầu của mình. Một số người chỉ mở sách khi có thể đọc hết cả cuốn, nhưng họ cho rằng đó là một thái độ ngớ ngẩn. Họ đã đặt cuốn Generative Deep Learning của O'Reilly và hy vọng sẽ rút ra được điều gì đó; theo họ, chỉ cần giữ lại vài thông tin trong sự nghiệp cũng đã là có ích.

      • Quan điểm về vai trò của sách như một công cụ học tập và tầm quan trọng của các dự án sở thích.
  • Một người dùng nói rằng họ rất ấn tượng khi các liên kết Amazon.com cũ trên trang vẫn trả về kết quả liên quan. Họ nhắc đây là một ví dụ tốt cho câu "Cool URIs don't change".

      • Ấn tượng về việc các liên kết cũ vẫn còn hiệu lực.
  • Một người dùng khác chia sẻ danh sách các luồng thảo luận trong suốt 16 năm qua, và nói rằng sau một năm thì việc đăng lại là chấp nhận được; các liên kết được đưa ra để thỏa mãn sự tò mò của những độc giả hiếu kỳ.

      • Chia sẻ danh sách các luồng thảo luận trước đây.
  • Một người dùng khác nhấn mạnh tầm quan trọng của luyện tập có chủ đích: không chỉ lặp đi lặp lại, mà phải thử thách bản thân với các nhiệm vụ vượt quá năng lực hiện tại, dám thử, rồi phân tích hiệu suất trong và sau khi thực hiện, sửa sai và lặp lại.

      • Nhấn mạnh tầm quan trọng của luyện tập có chủ đích.
  • Một người dùng nhớ lại một video họ xem cách đây 5-6 năm, trong đó có nhắc rằng số lượng lập trình viên đang tăng lên và phần lớn có dưới 5 năm kinh nghiệm. Họ nói điều này hợp lý khi IT/web ngày càng ảnh hưởng nhiều hơn đến cuộc sống của chúng ta. Với 20 năm kinh nghiệm, người dùng này biết nhiều điều mà người có dưới 5 năm kinh nghiệm có lẽ không bao giờ cần phải biết, nhưng kinh nghiệm vẫn hữu ích; đồng thời, những lập trình viên ít kinh nghiệm hơn cũng có thể làm được rất nhiều điều mà họ khó tưởng tượng nổi.

      • Quan điểm về giá trị của kinh nghiệm lập trình và năng lực của các lập trình viên mới.
  • Một người dùng khác suy đoán rằng bài viết gắn mốc năm 1998 hẳn đã được cập nhật, vì có nhắc đến Clojure và Go.

      • Suy đoán về khả năng bài viết đã được cập nhật.
  • Một người dùng cho rằng việc học lập trình cuối cùng sẽ ngày càng mang tính nghệ thuật, đến mức đạt tới cảnh giới của nghệ thuật, và những nền tảng cơ bản chỉ cần 2-3 năm chuyên tâm là đủ.

      • Góc nhìn cá nhân về việc học lập trình.
  • Cuối cùng, một người dùng nói rằng việc tự học lập trình là rất quan trọng, vì đây là nghề đòi hỏi phải học liên tục. Những gì học cách đây 5 năm có thể vẫn còn áp dụng được hôm nay, nhưng cũng có thể cần học thêm điều mới để phù hợp với bối cảnh hiện tại.

      • Quan điểm về nhu cầu học hỏi liên tục trong nghề lập trình.