Sau 10 năm làm công nghệ thông tin tôi mới hiểu tại sao các môn học đều có ý nghĩa
“Chào anh em ‘cày cuốc’ trong làng IT! Lucas ‘tái xuất’ sau một ‘chuyến hành trình’ dài 10 năm ‘lăn lộn’ với đủ thứ ‘công nghệ’ trên đời. Hôm nay, mình muốn ‘tâm sự mỏng’ về một điều mà có lẽ nhiều anh em, đặc biệt là những ‘newbie’ hoặc những người đang ‘chật vật’ với đống kiến thức ‘hàn lâm’ ở trường, sẽ cảm thấy ‘đồng cảm’: ‘Sau 10 năm làm công nghệ thông tin tôi mới hiểu tại sao các môn học đều có ý nghĩa’.
Hồi còn ‘mài đũng quần’ trên ghế giảng đường, thú thật là mình cũng không ít lần ‘tặc lưỡi’ tự hỏi: ‘Cái môn Giải tích này học để làm gì nhỉ?’, ‘Mấy cái thuật toán loằng ngoằng của môn Cấu trúc dữ liệu có bao giờ mình dùng tới không?’, hay ‘Mấy cái sơ đồ UML khô khan của môn Phân tích thiết kế hệ thống chắc chỉ để ‘qua môn’ thôi chứ gì?’. Lúc đó, mình chỉ nghĩ đơn giản là ‘cứ học cho xong’, ‘cứ qua môn là được’.
Nhưng cuộc đời ‘coder’ nó ‘tréo ngoe’ lắm anh em ạ! Sau 10 năm ‘vẫy vùng’ trong cái ‘biển’ công nghệ thông tin này, mình mới ‘ngộ’ ra một chân lý: Tất cả những môn học mà mình từng ‘ngán ngẩm’ ngày xưa, hóa ra đều có ‘võ’ của nó, đều đóng góp vào cái ‘skillset’ của một lập trình viên ‘cứng cựa’ mà mình đang có ngày hôm nay.
Giải tích và Đại số tuyến tính: Thoạt nghe có vẻ ‘chẳng liên quan’ đến việc ‘gõ code’ hàng ngày đúng không? Nhưng thực tế, những kiến thức về logic, tư duy trừu tượng, khả năng phân tích và giải quyết vấn đề mà các môn này rèn luyện lại là ‘nền tảng’ cực kỳ quan trọng. Khi anh em phải đối mặt với những hệ thống phức tạp, những thuật toán ‘khó nhằn’, chính cái ‘nền’ logic vững chắc này sẽ giúp anh em ‘bóc tách’ vấn đề và tìm ra hướng giải quyết. Đặc biệt, trong các lĩnh vực như AI, Machine Learning hay xử lý đồ họa, kiến thức toán học lại càng trở nên ‘sống còn’.
Cấu trúc dữ liệu và Giải thuật (DSA): Hồi sinh viên, mình cũng ‘khổ sở’ với mấy cái cây nhị phân, đồ thị, sắp xếp, tìm kiếm… Nhưng khi đi làm, mình mới thấy tầm quan trọng ‘sống còn’ của nó. Việc lựa chọn cấu trúc dữ liệu phù hợp có thể ảnh hưởng đến hiệu suất của ứng dụng một cách ‘chóng mặt’. Hiểu biết về các thuật toán giúp mình viết code ‘tối ưu’ hơn, ‘nhanh’ hơn và ‘tiết kiệm tài nguyên’ hơn. Những bài toán về hiệu suất, về tối ưu hóa hệ thống mà mình gặp hàng ngày đều có ‘bóng dáng’ của DSA trong đó.
Lập trình hướng đối tượng (OOP): Cái khái niệm về lớp, đối tượng, kế thừa, đa hình… ngày xưa mình học cũng chỉ để ‘trả bài’. Nhưng khi làm việc với các dự án lớn, mình mới thấy OOP giúp code trở nên ‘modular’, ‘dễ bảo trì’ và ‘dễ mở rộng’ như thế nào. Nó giúp mình tổ chức code một cách ‘logic’ và ‘dễ quản lý’, đặc biệt khi làm việc theo team.
Cơ sở dữ liệu: Mấy cái mô hình quan hệ, truy vấn SQL ngày xưa mình học cũng chỉ để ‘qua môn’. Nhưng giờ đây, hầu hết mọi ứng dụng đều cần lưu trữ và quản lý dữ liệu. Hiểu rõ về các loại cơ sở dữ liệu, cách thiết kế schema hiệu quả, cách viết các câu truy vấn tối ưu là một kỹ năng ‘không thể thiếu’ của bất kỳ lập trình viên nào.
Mạng máy tính: Mấy cái giao thức TCP/IP, HTTP, DNS… ngày xưa mình học cũng thấy ‘khô khan’ lắm. Nhưng trong kỷ nguyên internet này, hầu hết các ứng dụng đều liên quan đến mạng. Hiểu biết về cách dữ liệu truyền đi, cách các hệ thống giao tiếp với nhau giúp mình xây dựng các ứng dụng web, ứng dụng di động và các hệ thống phân tán một cách hiệu quả hơn.
Phân tích và thiết kế hệ thống: Mấy cái sơ đồ UML ngày xưa mình vẽ cũng chỉ để ‘lấy điểm’. Nhưng khi tham gia vào các dự án lớn, mình mới thấy tầm quan trọng của việc phân tích yêu cầu, thiết kế hệ thống một cách bài bản trước khi bắt tay vào code. Nó giúp mình có một cái nhìn ‘tổng quan’ về dự án, tránh được những sai lầm ‘chết người’ và đảm bảo dự án đi đúng hướng.
Tóm lại: Sau 10 năm ‘chinh chiến’, mình mới thấm thía rằng những kiến thức ‘nền tảng’ mà mình học ở trường không hề ‘vô dụng’. Chúng giống như những ‘viên gạch’ xây nên ‘tòa nhà’ sự nghiệp của mình. Có thể ở thời điểm học, mình chưa thấy được ứng dụng thực tế của chúng, nhưng theo thời gian và kinh nghiệm làm việc, mình mới nhận ra ‘giá trị’ thực sự của những môn học đó.
Vậy nên, gửi gắm đến những anh em đang còn ngồi trên ghế nhà trường: hãy trân trọng những kiến thức mà các thầy cô truyền đạt. Đừng chỉ học để ‘qua môn’, mà hãy cố gắng hiểu sâu sắc bản chất của từng môn học. Có thể bây giờ anh em chưa thấy được ‘lợi ích’ ngay lập tức, nhưng trong tương lai, những kiến thức này sẽ là ‘vũ khí’ lợi hại giúp anh em ‘vươn xa’ trong sự nghiệp lập trình của mình. Hãy tin mình, mọi thứ đều có ý nghĩa cả!” 😉