Lời khuyên cho các bạn mới bắt đầu từ một giáo viên dạy lập trình

Tôi đã dạy lập trình cho các bạn mới bắt đầu hoàn toàn được vài năm rồi và thậm chí còn phát triển một chương trình giảng dạy riêng để phù hợp cho những bạn trên. Tôi đã đọc được rất nhiều lời khuyên mơ hồ và có vấn đề ở đây, vậy nên tôi muốn chia sẻ những gì tôi tích lũy được từ kinh nghiệm giảng dạy của mình trong một bài đăng ngắn và tường minh.

  1. Hãy bắt đầu bằng một ngôn ngữ dễ – suy cho cùng thì việc bạn chọn ngôn ngữ gì nó cũng chả quan trọng lắm, nhưng từ kinh nghiệm giảng dạy của mình thì tôi thấy rằng tránh tiếp cận những loại ngôn ngữ nặng đô như Java hay C# sẽ tốt hơn cho các bạn. Bởi vì những ngôn ngữ này buộc các bạn phải học những sắc thái của lập trình hướng đối tượng, thứ mà một người mới không nên bận tâm tới. Hãy tiếp cận một ngôn ngữ nhẹ nhàng hơn như JavaScript hoặc Python. Tôi đã thấy mọi người khuyên các bạn mới rằng nên chọn một ngôn ngữ phổ biến trong các tin tuyển dụng để tăng mức lương tiềm năng của họ. Đây là một lời khuyên tồi, tại vì hầu hết các công ty công nghệ có tiếng không quan tâm bạn biết những ngôn ngữ nào, miễn là bạn đã nắm vững các nguyên tắc cơ bản của ít nhất là một ngôn ngữ. Đã có lần tôi được đề nghị vào vị trí senior dùng ngôn ngữ Ruby, mà tôi còn chả xài Ruby bao giờ.
  2. Đừng có đâm đầu vào các framework trước tiên – khi học các nguyên tắc cơ bản trong lập trình, hãy bỏ qua các framework. Các bạn mới bắt đầu đã có quá đủ thời gian khó khăn với những đoạn code đơn giản rồi, các framework sẽ làm mấy bạn choáng ngợp với những đoạn code phức tạp mất. Các framework cũng giấu đi nhiều chi tiết mà người mới bắt đầu nên học để nắm vững các nguyên tắc cơ bản. Tôi đã thấy mọi người khuyên các bạn mới rằng nên chọn một framework phổ biến để khiến bản thân trở nên đáng giá trong mắt các nhà tuyển dụng hơn. Đây là một lời khuyên tồi, tại vì hầu hết các công ty công nghệ có tiếng sẽ mặc định rằng bạn có thể dễ dàng học để sử dụng một framework mới khi làm việc, miễn là bạn đã nắm vững các nguyên tắc cơ bản. Có rất nhiều lần tôi đã được đề nghị vào vị trí senior sử dụng Angular, và tôi chưa bao giờ học Angular. Tôi cũng đã nhiều lần nhận được đề nghị vào vị trí senior React, và tôi chưa bao giờ học React nốt.
  3. Đừng có lo lắng về front end và back end từ đầu – tôi đã thấy mọi người khuyên các bạn mới rằng hãy quyết định xem họ muốn theo phát triển front-end hay back-end. Đây là một lời khuyên tồi, tại vì người mới thậm chí còn chả hiểu lập trình là cái quái gì, hãy để các sắc thái của front-end và back-end được yên. Các bạn nên tập trung vào học lập trình cơ bản trước đã, mà những thứ này thì không thực sự là front end hay back end. Khi bạn đã có vài năm kinh nghiệm và đã cân cả front-end lẫn back-end thì bạn có thể quyết định cái nào bạn thích.
  4. Đừng có thụ động làm theo các hướng dẫn – cần tránh việc chỉ xem hoặc đọc hướng dẫn mà không tự mình viết một dòng code nào. Bạn sẽ cần phải làm theo một hướng dẫn ở một mức độ nào đó để tìm hiểu cú pháp mới hoặc một khái niệm mới, nhưng ở một khía cạnh nào đó, bạn nên tự mình viết ra đoạn code không có trong hướng dẫn. Hầu như khi bạn tự viết code mới chính là lúc bạn thực sự tự học.
  5. Đừng có tự nghĩ ra project riêng khi mới bắt đầu – tôi đã thấy mọi người khuyên các bạn mới rằng nên tự lên ý tưởng về các project có vẻ thú vị hoặc giải quyết một vấn đề mà họ gặp phải trong cuộc sống. Đây là một lời khuyên tồi, tại vì những project thú vị đòi hỏi các đoạn code phức tạp, và người mới nên bắt đầu với những dòng code đơn giản thôi. Điều đó có nghĩa là bạn sẽ bắt đầu bằng cách tạo ra thứ gì đó nhàm chán như một chương trình chuyển đổi đơn vị. Nhưng đó là cách bạn phải học. Và bạn cũng không nên cố gắng nghĩ ra các chương trình đơn giản của riêng mình để làm, bởi vì người mới bắt đầu không có đủ kiến thức để biết đâu là đơn giản và đâu là phức tạp. Thay vào đó, bạn nên theo một chương trình giảng dạy bao gồm danh sách các project được sắp xếp xen kẽ với các hướng dẫn và bài tập.
  6. Đừng có vừa vô đã đọc tài liệu – tôi đã thấy mọi người khuyên các bạn mới học bằng cách đọc tài liệu. Đây là một lời khuyên tồi, tại vì đầu tiên là hầu hết các tài liệu không hướng dẫn người đọc một cách rõ ràng về cách sử dụng một thứ gì đó mà chỉ đơn thuần là tài liệu tham khảo còn người mới bắt đầu thì cần được hướng dẫn rõ ràng. Thứ hai là, biết cách đọc tài liệu là một kỹ năng và người mới bắt đầu chưa luyện kỹ năng đó. Các lập trình viên có kinh nghiệm thường coi kỹ năng này là điều hiển nhiên, nhưng theo kinh nghiệm giảng dạy của tôi, tôi có thể tự tin nói rằng những người mới bắt đầu không biết đọc tài liệu. Ở cuối chương trình học của tôi có một video giải thích chi tiết cách đọc một trang MDN kia kìa.
  7. Đừng có vừa vô đã lo thiết lập môi trường (set up environment) – tôi đã thấy các chương trình giảng dạy phổ biến bắt đầu bằng việc cho các bạn mới thiết lập môi trường phát triển (development environment) trên máy tính của họ rồi sau đó đi sâu vào các sắc thái của Git cũng như nhiều công cụ dòng lệnh khác (command line tools). Ý tưởng là họ muốn các bạn mới sẽ tập sử dụng các công cụ giống như các lập trình viên chuyên nghiệp. Tôi không đồng tình với hướng tiếp cận này. Đầu tiên là, người mới bắt đầu thậm chí còn không biết liệu họ có thích lập trình hay không, vì vậy một chương trình giảng dạy nên bắt đầu bằng cách cho người mới bắt đầu lập trình thực tế càng sớm càng tốt để xem tâm lý của họ như thế nào trước. Thứ hai, việc thiết lập một môi trường phát triển rất nhàm chán, vì vậy khi bắt đầu với điều đó có thể khiến các bạn ấy chạy vội. Cuối cùng, việc thiết lập môi trường phát triển thường có thể dẫn đến lỗi cấu hình mà các bạn mới sẽ không biết cách giải quyết. Tôi khuyên các bạn nên sử dụng một trình soạn thảo code trực tuyến như Replit, nơi mọi thứ đã được thiết lập sẵn khá nhiều để bạn có thể bắt đầu lập trình được liền.
  8. Đừng có đi đóng góp cho mấy project open source – tôi đã thấy mọi người khuyên các bạn mới rằng nên học bằng cách đóng góp vào một project open source. Đây là một lời khuyên tồi, lý do thì giống như mục “đừng tự nghĩ ra project cá nhân”. Open source rất phức tạp còn các bạn mới thì chỉ nên bắt đầu viết những dòng code đơn giản thôi. Việc đóng góp vào một project open source đòi hỏi bạn phải hiểu code của người khác. Người mới bắt đầu có khi còn không hiểu được code của mình, vì vậy khả năng để đọc hiểu được code của người khác là rất thấp. Ngay cả những lập trình viên có kinh nghiệm cũng phải chật vật với điều này.
  9. Đừng có cày LeetCode – LeetCode là một trang web với hàng ngàn đề giải thuật, và “cày LeetCode” có nghĩa là đi giải một đống bài giải thuật để chuẩn bị cho các cuộc phỏng vấn ở các công ty công nghệ ưu tú. Ý tưởng là giải quyết dứt điểm được nhiều đề trên Leetcode để pass phỏng vấn chính là cách duy nhất để có được một công việc software developer tại công ty công nghệ ưu tú nào đấy. Đây là một giai thoại được đưa ra bởi các lập trình viên thiếu kinh nghiệm và tệ hại, những người chưa bao giờ đối mặt với bất cứ vấn đề phức tạp hoặc thú vị nào. Họ coi mấy cuộc phỏng vấn công nghệ như những câu đố học thuật tách bạch khỏi phát triển phần mềm ngoài đời. Nhưng điều này chỉ đơn giản là sai sự thật vì các chương trình phức tạp và thú vị cũng yêu cầu biết giải thuật. Như tôi đã nói, người mới bắt đầu không nên đi giải bài trên LeetCode, bởi vì ngay cả những bài LeetCode đơn giản nhất cũng quá nâng cao đối với người mới bắt đầu. Và cho tới khi bạn đã nắm vững các nguyên tắc cơ bản bằng cách làm nhiều project phức tạp và thú vị, bạn sẽ không cần phải cày LeetCode để vượt qua một cuộc phỏng vấn nữa. Bạn có thể giải đề trên LeetCode để luyện tập thêm và thử thách bản thân, nhưng không nên xem nó như một cánh cổng dẫn đến các công ty công nghệ ưu tú. Hồi tôi được mời làm software developer ở Microsoft, tôi còn chưa đi giải đề LeetCode bao giờ.

Leave a Reply

Your email address will not be published. Required fields are marked *