- Home
- Lập trình
- Những công cụ quan trọng khi đi làm mà sinh viên học AI/IT thường không được dạy trên trường đại học
Những công cụ quan trọng khi đi làm mà sinh viên học AI/IT thường không được dạy trên trường đại học
Những công cụ quan trọng khi đi làm mà sinh viên học AI/IT thường không được dạy trên trường đại học
CNTT luôn là 1 trong các lĩnh vực hot, được nhiều bạn trẻ theo học. Trong CNTT có rất nhiều chuyên ngành hẹp để các bạn lựa chọn, cả phần cứng lẫn phần mềm, từ web, app, game, mạng và AI – mảng đặc biệt hot trong những năm gần đây. Trong quá trình học trên các trường đại học cũng như cao đẳng, các bạn sẽ được dạy rất nhiều thứ, từ các môn Toán, lập trình, cơ sở dữ liệu cho đến các môn chuyên ngành. Nhìn chung các bạn sẽ được dạy các KIẾN THỨC để sau này đi làm. Tuy nhiên, các bạn gần như sẽ không bao giờ được dạy về các CÔNG CỤ cần thiết để làm việc trong môi trường làm việc thực tế. Không biết sử dụng các công cụ này chính là 1 trong những khó khăn mà các bạn sinh viên vừa mới ra trường gặp phải trong quá trình đi xin việc cũng như làm quen với công việc mới. Dưới đây mình xin liệt kê 4 công cụ không thể thiếu khi đi làm của những bạn làm về AI nói riêng cũng như dân IT nói chung, mà các bạn thường KHÔNG được dạy trên trường:
Xem thêm về Danh sách các công cụ và kỹ năng quan trọng dành cho sinh viên ngành Công nghệ thông tin
🔥Docker
Cái tên đầu tiên mình muốn đề cập đến là Docker. Docker là 1 nền tảng giúp lập trình viên có thể xây dựng, chạy và triển khai ứng dụng 1 cách nhanh chóng thông qua việc đóng gói sản phẩm vào các đơn vị tiêu chuẩn hóa được gọi là Container. Khi các bạn còn đang ngồi trên giảng đường đại học, khi thực hiện 1 project, có thể là 1 bài tập nhóm hay đồ án tốt nghiệp, thứ các bạn tập trung và dành phần lớn thời gian làm, là lập trình, chạy, kiểm thử và cuối cùng là demo. Hết! Thầy cô cũng sẽ chấm điểm và đánh giá project của các bạn thông qua các bước này. Tuy nhiên, sản phẩm của các bạn, nếu sau này muốn đem đi thương mại hóa, muốn triển khai cho khách hàng thì phải làm như thế nào, thì không ai biết cả. Trò không biết thầy không quan tâm. Các bạn sẽ không thể nào vác nguyên cái laptop của các bạn rồi đưa cho khách hàng sử dụng. Các bạn cũng không thể bắt khách hàng phải sử dụng hệ điều hành A, cài thư viện B, tải về dữ liệu C để có thể chạy chương trình của các bạn. Và đây chính là lúc mà Docker thể hiện vai trò của mình. Tất tần tật mọi thứ cần thiết để chạy chương trình hay ứng dụng của các bạn, từ mã nguồn, dữ liệu, thư viện hay bất kì 1 thứ gì khác sẽ được đóng gói lại thành 1 package. Sau đó bất kể bạn cần chạy chúng ở đâu, ở 1 máy chủ nào đó, trên thiết bị của khách hàng hay ở đâu đi nữa thì chỉ cần chạy 1 câu lệnh run với package này, thế là xong. Nếu ngôn ngữ lập trình Java có 1 câu slogan nổi tiếng là Write Once Run Anywhere thì Docker cũng có 1 câu tương tự, đó là Build Once Run Anywhere
Note: Hình như hiện tại theo mình biết cũng có 1 vài các chương trình đào tạo CNTT trên các trường đại học, các bạn cũng đã được giới thiệu về Docker rồi
🔥Git
1 công cụ khác mà mình tin chắc rằng nếu biết sử dụng, các bạn sinh viên IT sẽ có lợi thế khi đi xin việc, đó chính là Git. Khi các bạn còn đi học, với các bài tập hay project lập trình, các bạn sẽ chủ yếu là làm solo hoặc cùng lắm là làm trong 1 nhóm cơ từ 3 đến 5 thành viên. Việc chia sẻ, copy cũng như là đồng bộ code giữa các thành viên nhìn chung khá đơn giản, chỉ với 1 chiếc USB là xong. Tuy nhiên sau này, khi đi làm ở công ty, các bạn sẽ phải tham gia vào các dự án to nhỏ khác nhau, và trong mỗi dự án, có thể có từ hàng chục đến hàng trăm lập trình viên cùng tham gia lập trình. Lúc này những chiếc USB sẽ trở nên vô nghĩa, và đây cũng là lúc mà Git phát huy vai trò của mình. Git là 1 hệ thống quản lý phiên bản phân tán, hay tiếng anh gọi là Distributed Version Control System. Hiểu 1 cách đơn giản thì Git là 1 hệ thống giúp lưu trữ, theo dõi và quản lý mã nguồn, dữ liệu và các file có liên quan của 1 project. Bất kể project này chỉ có vài chục dòng code hay vài chục triệu dòng code, được thực hiện bởi 1 lập trình viên hay 1 nghìn lập trình viên thì Git cũng đảm bảo rằng tất cả các hành động như là đoạn code hay file nào được thêm, bớt hay sửa, dù là được thực hiện bởi bất kỳ thành viên nào trong team thì sẽ đều được ghi lại 1 cách đầy đủ. Điều này giúp cho tất cả mọi người có thể cùng tham gia vào quá trình phát triển dự án mà không sợ xung đột.
🔥Jenkins
Khi các bạn đi làm ở công ty, tham gia vào phát triển các dự án, mỗi 1 dòng code các bạn viết ra, mỗi 1 đoạn code các bạn thêm vào mã nguồn của cả dự án đều phải được kiểm tra 1 cách kĩ lưỡng, vì có thể chúng sẽ là nguyên nhân khiến toàn bộ chương trình bị lỗi hoặc hoạt động không như mong muốn. Tuy nhiên công việc này khá là nhàm chán, và cũng không dễ để có thể test được thủ công xem liệu đoạn code mới của các bạn có thể gây ra lỗi gì không, vì nhiều khi các bạn chạy thì không có lỗi nhưng đem đi triển khai cho khách thì lỗi lại xuất hiện. Và đây là lúc mà Jenkins – vị cứu tinh của các lập trình viên thể hiện vai trò của mình. Jenkins là một công cụ tự động hóa mã nguồn mở, được sử dụng cho việc tích hợp liên tục (Continuous Integration, CI) và triển khai liên tục (Continuous Deployment, CD). Jenkins giúp tự động hóa quá trình xây dựng, kiểm tra và triển khai phần mềm, giúp các nhóm phát triển phần mềm phát hiện lỗi sớm hơn và phát hành sản phẩm nhanh chóng hơn.
Các tính năng chính của Jenkins bao gồm:
• Tích hợp liên tục (CI): Tự động hóa quá trình tích hợp mã nguồn từ nhiều lập trình viên vào một kho lưu trữ chung, xây dựng và kiểm tra mã nguồn mỗi khi có thay đổi.
• Triển khai liên tục (CD): Tự động triển khai ứng dụng tới các môi trường khác nhau (như staging và production) sau khi mã nguồn được kiểm tra và xác thực.
• Hỗ trợ plugin phong phú: Jenkins có một hệ sinh thái plugin rất phong phú, cho phép mở rộng các tính năng và tích hợp với nhiều công cụ khác nhau trong quá trình phát triển phần mềm.
Tóm lại, Jenkins giúp nâng cao hiệu quả và chất lượng của quá trình phát triển phần mềm bằng cách tự động hóa các tác vụ lặp đi lặp lại.
🔥Các dịch vụ đám mây (AWS, Azure, GCP,…)
Khi các bạn còn đang đi học, khi phải chạy 1 chương trình gì đó, có thể là 1 trang web, 1 game, 1 mô hình Deep learning, các bạn thường sẽ chạy và triển khai chúng trên chính chiếc laptop của các bạn. Tuy nhiên, khi đi làm, chiếc laptop còm cõi của các bạn sẽ không thể đảm nhận vai trò là máy chủ cho 1 trang web với hàng nghìn request mỗi phút. Nó cũng không thể nào chạy được các mô hình Deep Learning với hàng chục triệu tham số trong thời gian thực. Ngoài ra laptop của các bạn có khỏe đến mấy, cấu hình có khủng cỡ nào thì cũng sẽ có lúc nó không còn đáp ứng được yêu cầu về cấu hình để có thể chạy hay triển khai sản phẩm nữa. Và cũng không khách hàng nào dám xài laptop của các bạn khi họ không được đảm bảo về yếu tố bảo mật. Tất cả những nguyên nhân trên cùng với 1 vài những lý do khác như chi phí hay tính mở rộng là lý do mà các nền tảng và dịch vụ đám mây ra đời, với 3 cái tên tiêu biểu là AWS của Amazon, Microsoft Azure của Microsoft hay Google Cloud Platform của Google. Các dịch vụ đám mây sẽ giúp chúng ta thay vì phải lưu trữ và xử lý dữ liệu trên các máy chủ và hạ tầng địa phương thì có thể truy cập và sử dụng các tài nguyên này từ xa thông qua internet. Có rất nhiều dịch vụ đám mây phục vụ cho các mục đích khác nhau, bao gồm:
• Lưu trữ đám mây (Cloud storage)
• Máy chủ ảo (Virtual server)
• Dịch vụ tính toán (Computing services)
Các bạn, hay nói chính xác hơn là công ty của các bạn có thể thoải mái chọn bất kỳ dịch vụ đám mây nào tùy theo nhu cầu sử dụng. Cần khả năng lưu trữ dữ liệu, cần khả năng tính toán để huấn luyện mô hình Deep Learning hay cần máy chủ để chạy, bất kể bạn cần gì thì cũng sẽ có các dịch vụ đám mây thỏa mãn nhu cầu sử dụng của bạn. Với cá nhân mình, trong suốt quãng thời gian làm việc hơn 8 năm qua ở các công ty với các vị trí khác nhau, từ Data Scientist, Machine Learning Engineer hay giờ là AI Engineer, AWS luôn là sự lựa chọn mà mình sử dụng, từ việc huấn luyện các mô hình AI, lưu trữ các bộ dữ liệu cho đến triển khai mô hình
Mình hi vọng những chia sẻ này có ích cho các bạn, đặc biệt là các sinh viên IT sắp sửa ra trường 😁
Nguồn: Việt Nguyễn