[Các môn học cần thiết cho ngành CNTT khi học ở Đại học]
Chào các bạn trẻ, mình lập trình viên U40, có vài chia sẻ về các môn học mình thấy cần thiết khi đi học Đại học mà các bạn có thể tham khảo khi bước vào năm 1. Lúc trước mình đi học Đại học ngành CNTT thì nhà trường đưa cho 1 quyển danh sách các môn học và mình không biết môn học nào cần thiết để học cả, nên mình học nhiều nhất có thể, nhưng thật ra thì như vậy không phải là điều tốt để giúp các bạn có thể tốt nghiệp sớm và có kinh nghiệm thực tế để được tuyển dụng.
Không có khái niệm "đào tạo lại" sau khi bạn tốt nghiệp ở các công ty. Trái lại bạn sẽ phải học rất nhanh và rất nhiều trong thời gian ngắn khi đi làm để hoà nhập với các công việc được giao. Vì vậy, hãy chăm chỉ học tập khi đi học, thay vì chờ đợi sau khi tốt nghiệp sẽ có công ty tuyển bạn về, dậy lại cho bạn kiến thức.
Mình sẽ liệt kê các môn học mà mình thấy quan trọng theo từng năm học, ở mỗi trường Đại học sẽ có các môn học tương tự nhau với tên gọi khác nhau.
Đại học sẽ không dậy cho bạn kỹ năng đủ tốt để có thể đi làm, nhưng sẽ dậy cho bạn các kỹ năng cần thiết và bạn học thêm để bổ sung cho các kỹ năng đó để có thể đi làm được.
1. Năm 1
Đây là lúc các bạn bắt đầu nhập học, nhiều bạn sẽ vẫn còn cảm giác vui sướng khi đã thi đỗ đại học và chưa chuẩn bị tinh thần cho việc đi học Đại học. Thực tế thì các bạn cần chuẩn bị tâm lý sẵn là khi đi học Đại học sẽ rất khác so với khi học cấp 3, khi bạn sẽ phải làm quen với những người bạn mới, cách học mới khi bạn phải tự tìm hiểu, tự tìm thông tin trên mạng, thay vì có người dậy bạn, chỉ cho bạn từng bước.
Về cơ bản thì năm 1 bạn sẽ học các môn đại cương không liên quan đến ngành CNTT như Toán, Lý, Hoá, các môn xã hội học bắt buộc. Các bạn không cần tập trung thời gian vào những môn học này, đủ điểm qua môn là được và tập trung chính vào học thật tốt.
Tiếng Anh là yêu cầu bắt buộc và các bạn ngoài học trên trường, cần học tiếng Anh ở nhà, ở trung tâm nếu có điều kiện, chủ yếu là nâng cao kỹ năng đọc hiểu trước, sau đó là kỹ năng giao tiếp.
- Ngôn ngữ lập trình đầu tiên mà chương trình dậy. Ngôn ngữ tốt nhất để học lập trình từ khi bắt đầu là Python / Javascript. Vì sao? Vì cú pháp rất đơn giản, dễ hiểu và không phải biên dịch loằng ngoằng như C++, Java. Bạn cần học thật tốt ngôn ngữ lập trình này để nắm vững các khái niệm cơ bản của lập trình như biến, vòng lặp, if else, hàm, mảng, các toán tử,...để tạo ra các chương trình cơ bản trên nền console, ví dụ tính tổng các số đầu vào và in kết quả ra 1 file.
- Tiếp theo là 1 ngôn ngữ lập trình hướng đối tượng. Trước đây trường mình dậy C++ là ngôn ngữ lập trình bắt đầu cho sinh viên và dậy trong 2 kỳ. Mình thấy đây là điều không tốt vì C++ là ngôn ngữ lập trình khó cho người mới học, đặc biệt là với khái niệm tham chiếu và con trỏ, nó quá phức tạp. Ngôn ngữ lập trình hướng đối tượng mình thấy tốt nhất là Java vì cú pháp rõ ràng, rất nhiều tài liệu để học. Sau khi học xong lập trình hướng đối tượng thì bạn phải nắm vững 4 tính chất: đóng gói, kế thừa, đa hình, trừu tượng, phân biệt rõ khi nào dùng abstract class, khi nào dùng Interface, biết cách tạo ra các class với các thuộc tính, các phương thức phù hợp.
Tóm lại, năm 1 học xong bạn phải biết 1 ngôn ngữ lập trinh dạng script như Python/Javascript và 1 ngôn ngữ lập trình hướng đối tượng như Java/C#.
2. Năm 2
Trong năm thứ 2, thì bạn sẽ tiếp tục học các môn Toán, Lý, Hóa và các môn xã hội bắt buộc và các bạn cũng chỉ cần đủ điểm để qua môn. Năm này thì cái các bạn cần tập trung nhất là về:
- Toán rời rạc: đây là môn Toán cần thiết nhất cho sinh viên ngành CNTT khi dậy về logic, đồ thị,...
- Cấu trúc dữ liệu và giải thuật: đây là môn học vô cùng quan trọng với các bạn làm lập trình, khi các bạn sẽ học các thuật toán như sắp xếp, xử lý chuỗi, thuật toán cây, duyệt đồ thị,...Các kiến thức của môn học này sẽ được sử dụng rất nhiều (đặc biệt là xử lý chuỗi) sau này và các thuật toán sắp xếp sẽ được hỏi thường xuyên khi phỏng vấn.
- Cơ sở dữ liệu: đây là môn học vô cùng quan trọng vì mọi phần mềm đều cần có chỗ lưu và xử lý dữ liệu tối ưu. Học xong môn này bạn sẽ nắm rõ 1 cơ sở dữ liệu quan hệ phổ biến như MySQL, Microsoft SQL. Nếu bạn học thêm được NoSQL nữa thì tốt.
Tóm lại, năm 2 học xong bạn phải biết về thuật toán và cách cài đặt 1 số thuật toán cơ bản để giải quyết các bài toán phổ biến như sắp xếp danh sách, duyệt đồ thị, duyệt cây. Phải có khả năng sử dụng ngôn ngữ truy vấn SQL để truy vấn cơ sở dữ liệu.
3. Năm 3
Đây là năm quan trọng nhất trong quãng đường đi học Đại học của các bạn vì sự phân biệt rõ ràng giữa bạn nào học tốt và không tốt sẽ bắt đầu từ đây. Các bạn nào đã có nền tảng tốt về lập trình hướng đối tượng, cơ sở dữ liệu, thuật toán thì sẽ bắt đầu chọn hướng mà bạn muốn học để sau đi thực tập và có công việc làm theo ngành bạn muốn. Các môn học trong năm này sẽ chủ yếu là các môn học chuyên ngành, bạn sẽ chọn các môn học mà phù hợp nhất với mảng CNTT mà bạn muốn theo đuổi.
Nếu là theo hướng làm lập trình thì bạn sẽ chọn các môn học liên quan đến:
- Hệ điều hành: nắm được khái niệm cơ bản về hệ điều hành của máy tính
- Mạng máy tính: nắm được khái niệm cơ bản về mạng và truyền dữ liệu
- Công nghệ phần mềm: nắm được các khái niệm về quy trình phát triển phần mềm
- Kiểm thử và đảm bảo chất lượng phần mềm: học cách test phần mềm để có ít lỗi nhất
- Phân tích thiết kế hướng đối tượng: học cách viết tài liệu để xây dựng nên 1 hệ thống phần mềm
- Lập trình web: môn học bắt buộc để bạn có kiến thức lập trình Frontend (HTML, CSS, Javascript) và Backend (PHP, Java, C#, Javascript).
Mục tiêu là bạn học cách sử dụng 1 Framework ở Frontend cho Javascript và 1 Framework ở Backend. Đây là điều khó để học vì quá nhiều kiến thức mới để lập trình được 1 Website, nhưng việc học kiến thức cơ bản và có kinh nghiệm về Framework sẽ giúp bạn có công việc thực tập trong năm 3.
- Lập trình di động: nếu bạn thích theo hướng phát triển ứng dụng di động, theo hướng Frontend.
Mục tiêu là các bạn có những sản phẩm dự án đầu tiên do bạn tự làm và đưa code lên github cá nhân. Thời gian còn lại thì bạn có thể phát triển thêm các projects để đưa lên github của bạn, quan trọng nhất là bạn biết sử dụng Framework ở Frontend và Backend tuỳ theo ngôn ngữ mà bạn chọn để phát triển.
Tóm lại, nếu bạn nào giỏi thì đầu năm 3, khá thì từ giữa năm 3 đã có thể đi thực tập sau khi hoàn thành môn học lập trình Web hoặc lập trình di động.
Các bạn nên chọn các công ty lớn có chính sách đào tạo chuẩn chỉ, dù là làm thực tập không lương, cái này hơn rất nhiều so với việc bạn được trả vài triệu nhưng không học được gì.
4. Năm 4
Năm này thì bạn chủ yếu học thêm 1 số môn học chuyên ngành ít quan trọng còn lại, học cải thiện điểm các môn học nếu bạn muốn nếu điểm tổng kết quá thấp (mình thấy là các bạn chỉ cần cố gắng loại khá là được, không cần phải cố gắng học giỏi các môn để có điểm cao, nếu bạn chỉ có mong muốn đi làm sau khi tốt nghiệp). Nếu thấy kiến thức còn hổng hoặc có kỹ năng nào đó bạn muốn học thêm mà không có thời gian thì việc bỏ tiền đi học thêm các khoá học ở các trung tâm uy tín là lựa chọn tốt để tăng cơ hội tìm việc sau khi bạn tốt nghiệp.
Quan trọng nhất là trong năm này, bạn sẽ cần phải làm đồ án tốt nghiệp và hướng đến là xây dựng 1 hệ thống phần mềm tương đối lớn, có áp dụng nhiều kỹ năng lập trình nâng cao, công nghệ mới, áp dụng càng nhiều càng tốt. Các bạn đi thực tập bên ngoài sẽ có cơ hội áp dụng những kiến thức nhà truờng không dậy để mang vào đồ án tốt nghiệp.
Ngoài ra, thì lúc này bạn đang đi thực tập nên thời gian sẽ rất ít để làm đồ án, vì vậy, nếu bạn thấy khó cân được cả 2 thì có thể nghỉ thực tập, tập trung vài tháng để phát triển đồ án, còn nếu giỏi thì ngày đi thực tập, tối về cầy đồ án.
Mục tiêu là trong năm 4, bạn phải tốt nghiệp đúng hạn và điểm loại khá trở lên, đặc biệt điểm đồ án tốt nghiệp phải cố gắng để cao nhất.
5. Tổng kết
Trước đây mình có mắc sai lầm là chỉ chăm vào học cho điểm số tốt vì mình e ngại do mình học trường tư, chất lượng trung bình nên sau này không được ưu tiên tuyển dụng. Nhưng mà mình đã sai vì thực tế bằng đại học chỉ giúp bạn vượt qua vòng CV, còn phỏng vấn để được tuyển hay không là do việc bạn có khả năng thuật toán đến đâu, kinh nghiệm làm việc với các công nghệ các công ty đang sử dụng ra sao. Muốn biết các công ty cần gì thì bạn chỉ cần vào các trang tuyển dụng như itviec, topdev mà tìm tên công ty và các kỹ năng họ yêu cầu.
Nếu bạn bắt đầu đi thực tập từ giữa năm thứ 3 thì đến khi tốt nghiệp, bạn đã có hơn 1 năm kinh nghiệm + kinh nghiệm làm với các Framework các công ty đang sử dụng thì đây là điểm mạnh nhất của bạn (trong phần lớn vị trí tuyển dụng làm lập trình viên) so với CV của các bạn khác, có điểm số tốt hơn nhưng lại chưa có kinh nghiệm thực tế.
Ngoài ra, bạn cần có 1 thái độ chăm chỉ, chịu khó, không ngại khi làm những gì mà bạn chưa được học, vui vẻ, hoà đồng với mọi người, mở rộng nhiều kết nối với các anh chị đi trước sẽ là điểm cộng để giúp bạn có vị trí thực tập và tìm công viêc sau này.