Lời khuyên cho sinh viên khoa học máy tính

Lời khuyên cho sinh viên khoa học máy tính

Một sinh viên viết cho tôi: “Là sinh viên năm thứ nhất về khoa học máy tính, em bị lẫn lộn bởi vài ngôn ngữ lập trình. Bạn em bảo em rằng em nên học PHP và Java. Trường em chỉ dạy Java. Em nên học ngôn ngữ nào bây giờ? Em có nên theo học thêm lớp đào tạo đặc biệt về các ngôn ngữ khác không? Xin thầy lời khuyên.”

Đáp: Tôi đã trả lời câu hỏi này nhiều lần trước rồi. Xin đọc lại các câu trả lời trước vì mỗi năm, tôi thường nhận được vài câu hỏi về ngôn ngữ lập trình. Sự kiện là các ngôn ngữ nào đó là hiện thời “nóng” không nên ảnh hưởng tới mục đích học tập dài hạn của bạn. Ngôn ngữ tới rồi đi, ở lại lâu hơn chút ít nhưng cuối cùng chúng sẽ bị thay thế khi công nghệ thay đổi. Đừng lẫn lộn giữa các ngôn ngữ lập trình với các khái niệm nền tảng mà bạn đang học trong trường bây giờ. Chúng là nền tảng nơi bạn sẽ xây dựng nghề nghiệp của bạn trên đó.

Là sinh viên khoa học máy tính năm thứ nhất, bạn sẽ học các ngôn ngữ lập trình như C++ hay Java bởi vì chúng là phổ biến bây giờ. Một khi bạn học một ngôn ngữ rồi, rất dễ dàng để học ngôn ngữ khác và bạn không cần đào tạo đặc biệt. Là sinh viên đại học, bạn sẽ được dạy cho các khái niệm nền tảng về lập trình như hướng đối tượng, hàm hay thủ tục v.v. Bạn phải hiểu những khái niệm, hình mẫu, cấu trúc dữ liệu và logic nào đó vì chúng sẽ cho bạn nền tảng mạnh để làm việc với bất kì ngôn ngữ tương lai nào. Bạn cần biết về vòng đời phát triển như thác đổ, mau lẹ agile, xoáy ốc v.v. Bạn cũng cần biết về những cách tiếp cận phát triển nào đó như cấu trúc, scrum, lập trình cực đoan, lập trình song song v.v.

Tôi tin sinh viên cần biết ngôn ngữ cơ bản C hay C++ vì nó là nền tảng. Nó sẽ giúp bạn biết nhiều hơn về mối quan hệ giữa phần cứng và phần mềm như sử dụng bộ nhớ v.v. Ngày nay, nhiều ứng dụng trong môi trường Web yêu cầu Java, C# và Dot.Net. Có nhiều ngôn ngữ mới hơn như Python, Ruby, Ajax, PHP, JS, CSS (nếu bạn thích chọc ngoáy) nhưng nếu bạn đã biết C++ hay Java thì bạn có thể học các ngôn ngữ này trong vài tuần.

Để là người lập trình giỏi hơn, xin nhớ rằng vấn đề không phải là về nhiều ngôn ngữ bạn biết mà là cách bạn viết mã. Bạn phải học về “viết mã an ninh” bằng việc đưa an ninh vào đầu tiên khi viết mã. Nếu bạn dùng cơ sở dữ liệu, học cách tránh việc nhồi lệnh SQL. Nếu bạn chấp nhận cái vào của người dùng, học cách tránh bị tràn bộ đệm. Vì không ai làm việc một mình thêm nữa, bạn phải phát triển cách viết mã sạch và bảo trì được. Phải chắc rằng bạn có lời chú thích, tên biến viết rõ để người khác có thể hiểu được logic của bạn khi họ kiểm điểm hay bảo trì mã của bạn.

Nếu bạn thích làm việc trong môi trường phát triển web, bạn cần biết rõ Java, C#, Dot.Net và JavaScript. Ngày nay dường như có thể Ruby và Python đang thay thế PHP cho web. Nếu bạn thích môi trường nền di động, phải chắc rằng bạn học về iOS, Java, Objective C cho Apple và Java và JavaScript cho Android. Khu vực nóng khác là Web 2.0 yêu cầu kĩ năng trong Adobe Flex, JavaScript, Adobe Flash, AJAX và JavaScript Object Notation.

Bên cạnh kĩ năng kĩ thuật, xin hội tụ vào “kĩ năng mềm” như lắng nghe, trao đổi, làm việc tổ, cộng tác, và nếu có thể thì lấy một hay hai môn doanh nghiệp phụ. Ngày nay các công ti sẽ tìm kiếm người tốt nghiệp máy tính hiểu được doanh nghiệp và có thể thảo luận, trao đổi các vấn đề kĩ thuật với người doanh nghiệp và khách hàng. Nhiều công ti toàn cầu cũng yêu cầu ít nhất một ngoại ngữ (ưa chuộng là tiếng Anh), tri thức về tài chính, kĩ năng lãnh đạo và tri thức nào đó về toàn cầu hoá. Nhiều sinh viên khoa học máy tính tin rằng “Máy tính là tất cả về kĩ năng kĩ thuật, KHÔNG phải vậy đâu.” Để xây dựng nghề nghiệp trong lĩnh vực này, bạn cần nhiều hơn chỉ là kĩ năng kĩ thuật. Bạn phải trao đổi tốt cả bằng miệng và bằng viết. Trong thế giới toàn cầu hoá này, bạn cần kĩ năng nào đó có thể giúp bạn cạnh tranh, thích nghi với những điều kiện thị trường thay đổi nhanh chóng. Bạn phải học nhiều hơn là ngôn ngữ lập trình để sống còn vì chúng ta không còn trong thế kỉ 20 mà trong thế kỉ 21 hay thời đại tri thức, nơi tri thức rộng và kĩ năng sâu là được cần tới.

Tác phẩm, tác giả, nguồn

  • Tác phẩm: Lời khuyên cho sinh viên
  • Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
  • Wiki hóa: https://kipkis.com

Có thể bạn muốn xem