Phát triển lập trình trong thời đại của Trí tuệ Nhân tạo (A.I.)
Tôi may mắn được đặt chân đến Mỹ vào năm 1980 đúng vào thời điểm máy tính cá nhân với Apple và IBM PC mở ra một kỷ nguyên mới cho ngành công nghệ thông tin ở các trường đại học. Thị trường lập trình viên bùng nổ. Khi tôi bước chân vào đại học thì ai ai cũng nói về ngành CNTT. Nó là một ngành nóng từ đó cho đến nay.
Quy trình xây dựng một phần mềm hầu như không thay đổi từ đó cho đến trước khi ChatGPT xuất hiện vào cuối năm 2022. Quy trình bắt đầu với phân tích yêu cầu đầu ra thật rõ ràng. Sau đó đánh giá tính đầy đủ và chính xác các dữ liệu và thông tin đầu vào. Từ dữ liệu đầu vào bạn thiết kế và xây dựng một quy trình (flowchart) khả thi để đi từ điểm khởi đầu đến điểm kết thúc đáp ứng được yêu cầu đầu ra. Một trong những chuyên môn của tôi là kiến trúc sư phần mềm. Cho những phần mềm phức tạp, có rất nhiều quy trình/phương án để có thể đi từ điểm khởi đầu đến điểm kết. Việc của tôi là tìm ra một phương án hiệu quả nhất có thể bao gồm cấu trúc phần mềm và cấu trúc dữ liệu trước khi đội ngũ IT triển khai viết code. Một sai lầm mà nhiều dự án phần mềm mắc phải là bỏ qua khâu thiết kế để rồi khi nó quá cồng kềnh khó sửa và chi phí chìm quá lớn đã để phá bỏ làm lại từ đầu.
Công cụ trí tuệ nhân tạo như chatGPT thay đổi toàn diện cách xây dựng phần mềm này.
Hôm qua tôi ngồi xem Takara dùng chatGPT-4 để thiết kế và viết một minimal viable product MVP cho một ý tưởng mà cậu ta chia sẻ với tôi. Thế là cậu ta hỏi chatGPT các phương án có thể giải quyết vấn đề. Sau đó nghĩ ra một mô hình đơn giản và chia nhỏ bài toán ra thành từng phần mà chatGPT có thể hiểu. Sau đó cậu ta bảo chatGPT viết code theo ngôn ngữ cậu ta muốn cho từng phần. Copy những dòng codes do ChatGPT viết để tích hợp lại với nhau thành một giải pháp tổng hợp và chạy test.
Điều này có nghĩa là phần lớn những công việc viết codes sẽ do chatGPT làm. Việc lớn nhất của người lập trình bây giờ là làm sao chuyển đổi bài toán phức tạp thành một mô hình đơn giản hơn nhưng vẫn có đầy đủ các yếu tố chính của bài toán ban đầu. Sau đó chia nhỏ bài toán/qui trình này thành những phần nhỏ mà chatGPT có thể hiểu rõ và viết code. Nếu bài toán lớn thì khả năng chia nhỏ này đòi hỏi kiến thức thiết kế phần mềm để tối ưu quy trình tổng. Như thế các công cụ trí tuệ nhân tạo sẽ giúp công việc của người lập trình nhẹ nhàng hơn và không mất quá nhiều thời gian để hoàn tất công việc.
Tuy nhiên đừng nghĩ rằng ChatGPT có thể thay thế người lập trình viên. Nó chỉ là công cụ giúp người lập trình viên hoàn tất công việc viết code nhanh chóng thôi. Nhưng để tận dụng được những công cụ như ChatGPT-4 trong việc xây dựng phần mềm một cách hiệu quả thì bạn cũng cần có kiến thức và kinh nghiệm đọc và đánh giá code vì code viết bởi ChatGPT có thể có lỗi hay dùng quy trình kém hiệu quả và bạn có thể yêu cầu nó sửa và hiệu chỉnh theo yêu cầu của bạn.
Một dự án đòi hỏi team 10 coders và một IT quản lý dự án thì với ChatGPT có thể chỉ cần 1 IT quản lý dự án, 1 IT tổng hợp và testing (người này có thể là người quản lý dự án) và 1 lập trình viên giàu kinh nghiêm với sử dụng ChatGPT để viết code. Nói một cách khác cần 2-3 người có kinh nghiệm là đủ. Có nghĩa một môi trường lập trình chuyên nghiệp thời đại AI có lẽ sẽ không có nhiều cơ hội cho lập trình viên không kinh nghiệm vì những công việc đó ChatGPT có thể đảm nhận. Trong tương lai các công ty phần mềm sẽ ưu tiên tuyển dụng vị trí lập trình viên cho những người biết sử dụng các công cụ AI cho công việc viết code.
Các bạn sinh viên CNTT sẽ ngạc nhiên và sốc vì thị trường lao động cho CNTT thay đổi nhanh chóng khi mình ra trường. Thế thì lập trình viên mới ra lò chưa có kinh nghiệm tìm cơ hội ở đâu trong thế giới mà công việc viết code đơn giản của mình không còn nữa? Tôi nghĩ các bạn ngay từ trong ghế học đường, có nghĩa là ngay từ bây giờ cần phải biết dùng ChatGPT như một người dạy kèm. Hỏi công cụ giúp tìm lỗi, đánh giá codes bạn viết đồng thời gợi ý để tối ưu và so sánh kết quả code do bạn viết với code do ChatGPT viết. Coi ChatGPT là người bạn đồng hành, là một team member trong các dự án phần mềm của bạn.
Nói một cách khác phát triển phần mềm sẽ hiệu quả hơn với một tốc độ chưa từng thấy trước đây. Từ ý tưởng ra MVP sẽ nhanh hơn nhiều giúp các nhóm khởi nghiệp công nghệ đánh giá tính khả thi kinh doanh nhanh chóng mà không mất nhiều vốn. Những ai còn nghi ngờ mấy cái công cụ trí tuệ nhân tạo không ảnh hưởng đến cái nghề lập trình của mình. Chúng ta có câu ‘Đừng chờ nước tới trôn mới nhảy’.
Takara đang xây dựng một phần mềm cho giáo dục (không liên quan gì đến luận án Tiến Sĩ của cậu ấy) từ một ý tưởng trao đổi với cha ngày hôm qua và sáng nay cậu ta nói với cha để coi con thể làm xong MVP và demo cho cha xem khi vừa về đến Việt Nam không! Hai cha con đang ngồi ngoài sân bay chờ lên máy bay về Việt Nạm. Ngồi kế bên xem cậu ta vừa viết code, vứa test, vừa học. Cậu ta vừa dùng ChatGPT để viết code đồng thời vừa học một ngôn ngữ phần mềm mới Flutter để build smartphone app. Thế giới CNTT ngày nay khác xa so với thời tôi viết code. Cảm thấy mình trở nên già rồi.
Nguyện Thành