Học công nghệ thông tin/3
Một sinh viên hỏi tôi: “Liệu có thể học Khoa học máy tính, cho dù em không thích viết mã được không? Em biết rằng khoa học máy tính là lĩnh vực học tập có thể giúp em có được việc làm tốt. Nhưng em sợ rằng em có thể không học tốt việc viết mã.”
Đáp: Bạn có thể tính bạn còn bao nhiêu tiền trong ngân hàng khi bạn chi $25 trong nhà hàng không? Tất nhiên, bạn tính được vì bạn biết số học. Khi bạn học cộng, trừ, nhân và chia ở trường phổ thông, bạn có phải thích số học không? Có thể có và có thể không, nhưng bạn vẫn phải học nó vì nó là điều cần thiết.
Cũng giống như số học, viết mã là ngôn ngữ được thiết kế để trao cho máy tính các lệnh. Trong Khoa học máy tính, bạn học về lí thuyết máy tính, nhưng để dùng nó, bạn cần biết các ngôn ngữ lập trình để cho bạn có thể bảo máy tính làm mọi thứ cho bạn. Bạn có phải “thích” viết mã không? Không nhất thiết, nhưng bạn vẫn phải học viết mã để trao đổi với máy tính.
Bất kể việc học Công nghệ thông tin (tức là Khoa học máy tính, Kĩ nghệ phần mềm và Quản lí hệ thông tin), sinh viên thường chia thành hai nhóm; nhóm thứ nhất coi nó là rất khó, và thậm chí cho dù bạn có việc làm trong lĩnh vực này, bạn vẫn phải làm việc chăm chỉ. Nếu bạn đồng ý với điều đó, bạn có thể không lựa chọn công nghệ trong đại học. Nhóm thứ hai nghĩ công nghệ không khó, chừng nào bạn đưa nỗ lực vào, và phát triển kĩ năng, bạn sẽ có được việc làm tốt.
Tại sao sinh viên nghĩ công nghệ thông tin là khó? Tôi nghĩ lí do là trong việc học công nghệ; bạn phải phát triển cách học khác. Bạn không thể ghi nhớ các sự kiện để qua được bài thi; bạn không thể học nhồi nhét trước kì thi, mà bạn học cách trao cho máy tính các lệnh để cho nó có thể làm mọi thứ cho bạn. Do đó, để học công nghệ, bạn phải “học qua hành” và nếu bạn không quen với phương pháp này, bạn có thể thấy nó khó.
Câu hỏi là: “Bạn có phải viết mã không?” Tất nhiên, bạn cần viết mã nhưng viết bao nhiêu thì tuỳ vào việc làm, vì một số việc yêu cầu nhiều hơn những việc khác. Công nghệ thay đổi nhanh chóng, ngôn ngữ lập trình cũng vậy. Cách tốt nhất để học ngôn ngữ lập trình là thực hành viết vài dòng mã một lúc; từ các lệnh đơn giản cho tới các thuật toán phức tạp hơn. Nhớ rằng bạn phải “học qua hành” và không cố ghi nhớ mọi thứ. Để giỏi lập trình, bạn phải thực hành bằng việc phạm sai lầm; bạn sẽ phạm nhiều sai lầm và học từ chúng cho tới khi bạn không còn phạm sai lầm nữa. Đến lúc đó, bạn rất giỏi lập trình.
Sau kĩ năng lập trình, bạn cũng cần học về các cấu trúc dữ liệu và thuật toán. Bạn sẽ cần thiết kế các thuật toán dùng các ngôn ngữ lập trình. Bạn nên biết về “bảng băm”; “danh sách móc nối”; “cây”; “cây tìm kiếm nhị phân”; và cả đồ thị có hướng và vô hướng. Để là nhà khoa học máy tính hay kĩ sư phần mềm giỏi, bạn cần hiểu kiến trúc máy tính từ mức thấp nhất, như transistor, mạch tích hợp, mạch lật, bộ nhớ ẩn, cho tới bộ nhớ, đơn vị điều khiển, RAM, CPU, và GPU. (Lưu ý: Hiểu biết về mô hình GPU của tính toán hiệu năng cao sẽ là quan trọng vì chẳng bao lâu hầu hết các máy tính sẽ dùng GPU trong tương lai.)
Ngày nay, phần lớn các chương trình Công nghệ thông tin bao giờ cũng bao gồm môn học về an ninh máy tính. Sự kiện là đa số những mong manh an ninh đều tới từ viết mã kém vì nhiều trường không cung cấp đào tạo tốt về lập trình và nhiều sinh viên không biết cách giữ an ninh cho mã của họ. Một chương trình đào tại CNTT tốt phải dạy cho sinh viên viết lập trình có tính phòng thủ; sinh viên phải hiểu cách giữ an ninh cho mã của họ.
Sinh viên thường hỏi tôi: “Chúng em có phải giỏi về toán để học công nghệ không?” Tôi bảo họ rằng nền tảng của công nghệ thông tin là toán học (tức là, số học, đại số tuyến tính, tính toán, phương trình vi phân, thống kế và xác suất.) Họ không phải “rất giỏi” về toán, nhưng họ cần hiểu rõ nó đủ để tiến bộ trong nghề nghiệp của họ. Tuy nhiên, công nghệ thông tin không phải là về các kĩ năng kĩ thuật mà cũng là về kĩ năng mềm nữa. Nhưng những kĩ năng này không phải là cái gì đó sinh viên có thể học trong một lớp mà phát triển qua thời gian. Để phát triển những kĩ năng này, sinh viên cần tham gia vào thảo luận trên lớp, trình bày của tổ và học cách tranh cãi quan điểm của họ trong lớp. Theo ý kiến của tôi, phương pháp học chủ động là cách tốt hơn để học công nghệ.
Để thành công trong bất kì nghề nào, bạn cần được tự động viên. Không có nghề nghiệp dễ dàng hay cách dễ dàng để phát triển kĩ năng. Nếu bạn không có động cơ hay tham vọng mà muốn cái gì đó dễ dàng, thì bạn sẽ làm phí thời gian trong đại học, và nghề nghiệp của bạn có thể không phải sáng sủa như bạn ước ao. Động cơ thành công của bạn phải tới từ bên trong; bạn phải đưa nỗ lực, thời gian vào và sẵn lòng học từ những sai lầm của bạn. Không có nghề nào quá khó nhưng có nỗi sợ về điều khó. Nếu sinh viên khác có thể học được công nghệ, bạn cũng có thể chứ. Bạn không phải thích viết mã, nhưng bạn vẫn có thể học viết mã. Bạn không phải thích số học, nhưng bạn có thể học số học vì nó là điều cần thiết. Đừng phí thời gian đi tìm cách dễ dàng để có việc làm tốt. Có nhiều sinh viên đang đi tìm cách dễ dàng đó và phần lớn đã hối tiếc về sau, sau khi họ đã có bằng cấp nhưng không có việc làm. Hôm nay và trong tương lai gần, phần lớn các việc làm sẽ dùng công nghệ, và có kĩ năng công nghệ là điều cần thiết.
English version
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