AI tạo sinh có thể tạo ra hình ảnh chân thực như ảnh chụp, hình minh họa và tranh vẽ chỉ bằng cách nhận chỉ dẫn là điều đã được biết đến rộng rãi.
Trong khi đó, trong thế giới kinh doanh, sự chú ý đang đổ dồn vào khả năng tạo chương trình của AI tạo sinh.
AI đàm thoại được hỗ trợ bởi các mô hình ngôn ngữ lớn, một công nghệ nền tảng, và đặc biệt xuất sắc trong việc đàm thoại bằng nhiều ngôn ngữ khác nhau và dịch thuật giữa chúng.
Ngôn ngữ lập trình, dùng để tạo chương trình, cũng là một loại ngôn ngữ. Các lập trình viên con người, theo một nghĩa nào đó, dịch các yêu cầu phần mềm nhận được bằng lời nói sang ngôn ngữ lập trình.
Đây là lý do tại sao AI tạo sinh đàm thoại, sử dụng các mô hình ngôn ngữ lớn, cũng rất thành thạo trong lập trình.
Hơn nữa, lập trình là một tác vụ trí tuệ mà tính đúng đắn của kết quả thường có thể được xác minh tự động và ngay lập tức. Điều này là do một chương trình đã tạo có thể được thực thi và tự động kiểm tra xem nó có tạo ra đầu ra mong muốn hay không.
Trên thực tế, khi các lập trình viên con người tạo ra một chương trình, họ thường đồng thời tạo ra các chương trình kiểm thử để xác minh kết quả, phát triển chương trình chính trong khi kiểm tra xem nó có hoạt động như dự định hay không.
AI tạo sinh cũng có thể tiến hành lập trình trong khi kiểm thử theo cách tương tự. Nếu một người cung cấp hướng dẫn chính xác, AI có thể tự động lặp lại và hoàn thành chương trình cho đến khi nó vượt qua tất cả các kiểm thử.
Tất nhiên, do những hạn chế về khả năng lập trình của AI tạo sinh và sự mơ hồ trong hướng dẫn của con người, có nhiều trường hợp kiểm thử không thể vượt qua ngay cả sau nhiều lần lặp lại. Hơn nữa, các kiểm thử không đầy đủ hoặc không chính xác thường dẫn đến lỗi hoặc vấn đề trong chương trình đã hoàn thành.
Tuy nhiên, khi khả năng của AI tạo sinh được cải thiện, và các kỹ sư con người tinh chỉnh các phương pháp hướng dẫn của họ, cùng với các cơ chế tăng cường kiến thức lập trình của AI tạo sinh thông qua tìm kiếm trên internet, phạm vi tự động tạo ra các chương trình phù hợp đang mở rộng từng ngày.
Ngoài ra, với sự tập trung của thế giới kinh doanh, các công ty hàng đầu tham gia nghiên cứu và phát triển AI tạo sinh cũng đang đầu tư mạnh vào việc cải thiện khả năng lập trình của AI tạo sinh.
Trong tình huống này, việc mở rộng phạm vi và khối lượng các tác vụ lập trình tự động có thể giao phó cho AI tạo sinh dự kiến sẽ tăng tốc.
Có nhiều trường hợp các cá nhân chưa từng phát triển chương trình trước đây đã thiết lập một môi trường phát triển cơ bản bằng cách sử dụng thông tin trên internet, sau đó dựa vào AI tạo sinh để lập trình, hoàn thành các dự án cùng nhau như một nhóm hai người.
Là một lập trình viên, tôi cũng sử dụng AI tạo sinh để lập trình. Khi đã nắm được cách, tôi có thể hoàn thành phần mềm mà không cần chỉnh sửa chương trình chút nào, chỉ đơn giản bằng cách sao chép và dán mã vào các tệp theo hướng dẫn của AI tạo sinh.
Chắc chắn, có nhiều trường hợp tôi gặp khó khăn. Chủ yếu là do những khác biệt nhỏ giữa cài đặt máy tính hoặc công cụ phát triển lập trình của tôi và các cấu hình phổ biến, hoặc vì các thành phần phần mềm miễn phí mới hơn so với những gì AI tạo sinh đã được đào tạo, gây ra khoảng cách kiến thức, hoặc vì các yêu cầu của tôi hơi bất thường.
Trong các trường hợp không có những khác biệt nhỏ hoặc hoàn cảnh đặc biệt như vậy, và khi được hướng dẫn để tạo các chức năng phần mềm rất phổ biến, các chương trình phù hợp thường được tạo ra trong hầu hết các tình huống.
Hướng tới kỷ nguyên phần mềm lỏng
Là một nhà phát triển phần mềm, tôi có thể phát hành phần mềm mình tạo ra, và phần mềm đó, do các kỹ sư chúng tôi phát hành, sẽ được nhiều người dùng sử dụng.
Tương lai mà việc phát triển phần mềm này có thể được thực hiện bởi bất kỳ ai với AI tạo sinh là một phần mở rộng của cuộc thảo luận cho đến nay.
Tuy nhiên, đây không chỉ là sự thay đổi ở phía phát triển phần mềm; những thay đổi đáng kể cũng đang đến với phía người dùng.
Việc hướng dẫn AI tạo sinh bằng lời nói để tự động thêm hoặc sửa đổi chức năng trong phần mềm có thể được thực hiện không chỉ trong giai đoạn phát triển trước khi phát hành phần mềm mà còn trong quá trình sử dụng. Hơn nữa, nó có thể được thực hiện bởi chính người dùng phần mềm.
Các nhà phát triển phần mềm có thể xác định phạm vi những gì có thể và không thể thay đổi, sau đó phát hành phần mềm với các tính năng tùy chỉnh được hỗ trợ bởi AI tạo sinh.
Điều này sẽ cho phép người dùng yêu cầu AI tạo sinh sửa đổi những bất tiện nhỏ hoặc các tùy chọn thiết kế màn hình trong phần mềm.
Hơn nữa, người dùng có thể thêm các tính năng hữu ích tìm thấy trong các ứng dụng khác, kết hợp nhiều thao tác thành một lần nhấp chuột, hoặc xem các màn hình thường xuyên truy cập tất cả trên một màn hình hiển thị.
Đối với các nhà phát triển phần mềm, việc cho phép tùy chỉnh của người dùng như vậy mang lại những lợi ích đáng kể: nó loại bỏ nỗ lực tự thực hiện các yêu cầu tính năng, và nó có thể tăng cường sự phổ biến của phần mềm bằng cách tránh các đánh giá tiêu cực và sự không hài lòng về khả năng sử dụng.
Khi người dùng có thể tự do thay đổi màn hình và chức năng theo cách này, khái niệm này sẽ khác biệt đáng kể so với những gì chúng ta thường gọi là "phần mềm".
Sẽ phù hợp hơn khi gọi nó là "Phần mềm lỏng", ngụ ý một cái gì đó thậm chí còn linh hoạt và dễ thích nghi hơn phần mềm (vốn đã linh hoạt hơn phần cứng), và một cái gì đó hoàn toàn phù hợp với người dùng.
Các chức năng từng được hiện thực hóa chỉ bằng phần cứng. Sau đó, phần mềm có thể thay thế xuất hiện, cho phép các chức năng thông qua sự kết hợp giữa phần cứng và phần mềm.
Từ đó, chúng ta có thể hình dung sự xuất hiện của Phần mềm lỏng, có nghĩa là các bộ phận có thể được sửa đổi bởi AI tạo sinh. Do đó, các chức năng sẽ được hiện thực hóa bằng phần cứng + phần mềm (do nhà phát triển cung cấp) + Phần mềm lỏng (các sửa đổi của người dùng).
Trong kỷ nguyên Phần mềm lỏng này, ý tưởng của người dùng về các sửa đổi sẽ bùng nổ.
Một ý tưởng sửa đổi đột phá do một người dùng phát minh có thể trở thành chủ đề nóng trên mạng xã hội, dẫn đến những người khác bắt chước và sửa đổi các ứng dụng Phần mềm lỏng khác nhau.
Hơn nữa, Phần mềm lỏng có khả năng xử lý các ứng dụng phần mềm khác nhau một cách tích hợp cũng có thể sẽ xuất hiện. Điều này có nghĩa là người dùng có thể xem dòng thời gian từ nhiều nền tảng mạng xã hội khác nhau trong một ứng dụng, hoặc kết quả tìm kiếm có thể tích hợp kết quả từ nhiều nền tảng.
Theo cách này, trong một thế giới mà Phần mềm lỏng phổ biến, các thiết bị khác nhau, bao gồm PC và điện thoại thông minh, sẽ cung cấp các chức năng hoàn toàn phù hợp với cuộc sống và hoạt động cá nhân của mỗi chúng ta.
Một Hiện Tượng Đang Diễn Ra
Đối với các kỹ sư phần mềm như tôi, điều quan trọng là phải hiểu rằng Phần mềm lỏng (Liquidware) không phải là một khái niệm tương lai hay điều gì đó còn cách đây vài năm nữa.
Điều này là do ngay cả những Phần mềm lỏng rất đơn giản cũng đã có thể thực hiện được.
Ví dụ, giả sử tôi là một kỹ sư đang phát triển một ứng dụng web cho trang thương mại điện tử của công ty mình.
Một ứng dụng web như vậy sẽ có cơ sở dữ liệu, hệ thống quản lý bán hàng và hệ thống vận chuyển sản phẩm trên các máy chủ được quản lý nội bộ hoặc thông qua dịch vụ đám mây. Khi người dùng mua hàng, các hệ thống này sẽ liên kết với nhau để xử lý việc thu tiền và gửi sản phẩm.
Các hệ thống và cơ sở dữ liệu cốt lõi của doanh nghiệp như thế này không thể bị sửa đổi một cách tùy tiện.
Tuy nhiên, thiết kế màn hình web của một trang thương mại điện tử hướng người dùng có thể được sửa đổi để phù hợp với từng người dùng mà không gây ra vấn đề đáng kể. Tất nhiên, nếu các thay đổi của một người dùng ảnh hưởng đến màn hình của những người dùng khác, đó sẽ là một vấn đề, nhưng các tùy chỉnh dành riêng cho từng người dùng thì không sao.
Ví dụ, có thể hình dung nhiều sửa đổi khác nhau: phóng to văn bản, thay đổi nền sang tông màu tối, định vị lại các nút thường xuyên nhấn vào vị trí dễ thao tác hơn bằng tay trái, sắp xếp các mặt hàng theo giá trên màn hình danh sách, hoặc hiển thị chi tiết của hai sản phẩm cạnh nhau.
Về mặt kỹ thuật, những sửa đổi này có thể đạt được bằng cách thay đổi các tệp cấu hình và các chương trình như HTML, CSS và JavaScript hiển thị màn hình trong trình duyệt.
Từ góc độ bảo mật, các tệp này ban đầu chạy trên trình duyệt web. Do đó, các phần có thể được sửa đổi bởi một kỹ sư có kiến thức về ứng dụng web chỉ xử lý các chức năng và dữ liệu an toàn để sửa đổi.
Vì vậy, ở phía máy chủ của ứng dụng web thương mại điện tử, có thể tạo ra một cơ chế để lưu trữ các tệp này riêng biệt cho mỗi người dùng đã đăng nhập, thêm một màn hình để trò chuyện với AI trò chuyện, và sau đó sửa đổi các tệp HTML, CSS và JavaScript của người dùng đó trên máy chủ theo yêu cầu của họ.
Nếu văn bản này, cùng với thông tin cấu hình và mã nguồn hiện có của ứng dụng web thương mại điện tử, được trình bày cho một AI tạo sinh, nó có thể sẽ cung cấp các bước và các chương trình cần thiết để thêm chức năng như vậy.
Theo cách này, Phần mềm lỏng đã là một chủ đề hiện tại; sẽ không có gì ngạc nhiên nếu nó là một hiện tượng đang diễn ra ngay bây giờ.
Kỹ sư đa năng
Ngay cả khi phạm vi lập trình tự động bằng AI đang mở rộng và kỷ nguyên Phần mềm lỏng (Liquidware) đã bắt đầu, việc phát triển phần mềm vẫn chưa thể được thực hiện hoàn toàn bởi AI tạo sinh.
Tuy nhiên, chắc chắn rằng tầm quan trọng của lập trình trong phát triển phần mềm sẽ giảm đáng kể.
Hơn nữa, để phát triển phần mềm một cách suôn sẻ, cần có một loạt kiến thức và kỹ năng kỹ thuật rộng lớn, từ lập trình chung đến cơ sở hạ tầng đám mây, mạng, bảo mật, nền tảng, khung phát triển và cơ sở dữ liệu—tất cả các lớp của chồng hệ thống để toàn bộ hệ thống có thể hoạt động.
Những nhân sự có kiến thức và kỹ năng như vậy được gọi là kỹ sư full-stack.
Theo truyền thống, một vài kỹ sư full-stack sẽ xử lý thiết kế tổng thể, trong khi các kỹ sư còn lại sẽ chuyên về lập trình, hoặc tập trung vào các lĩnh vực cụ thể không phải lập trình trong chồng hệ thống, do đó phân chia vai trò.
Tuy nhiên, khi AI tạo sinh đảm nhận khía cạnh lập trình, chi phí phát triển phần mềm sẽ giảm đáng kể, dẫn đến việc lập kế hoạch cho nhiều dự án phát triển phần mềm mới.
Do đó, trong mỗi dự án phát triển, các kỹ sư chỉ có thể viết chương trình sẽ trở nên không cần thiết; thay vào đó, một số lượng lớn kỹ sư full-stack sẽ được yêu cầu.
Hơn nữa, trong kịch bản này, việc chỉ có kiến thức và kỹ năng full-stack sẽ không đủ. Điều này là do các loại phần mềm được yêu cầu trong các dự án phát triển khác nhau sẽ đa dạng hóa, có nghĩa là việc phát triển sẽ không phải lúc nào cũng được yêu cầu sử dụng cùng một chồng hệ thống. Hơn nữa, nhu cầu về các hệ thống phức tạp yêu cầu nhiều chồng hệ thống chắc chắn sẽ tăng lên.
Ví dụ, chồng hệ thống cho một ứng dụng web khác với chồng hệ thống cho các hệ thống nghiệp vụ hoặc hệ thống lõi. Do đó, một kỹ sư full-stack ứng dụng web không thể được giao phó một dự án phát triển hệ thống lõi.
Tương tự, các ứng dụng web, ứng dụng điện thoại thông minh và ứng dụng PC đều có các chồng hệ thống khác nhau. Trong thế giới phần mềm nhúng, như IoT, chồng hệ thống sẽ hoàn toàn khác nhau cho mỗi thiết bị nhúng.
Tuy nhiên, khi tầm quan trọng của lập trình giảm đi và chi phí phát triển phần mềm tổng thể giảm xuống, việc phát triển các hệ thống phức tạp kết hợp phần mềm với các chồng hệ thống khác nhau này có khả năng sẽ tăng lên.
Trong khi việc phát triển như vậy sẽ yêu cầu tập hợp nhiều kỹ sư full-stack khác nhau, thì các kỹ sư có thể giám sát toàn bộ hệ thống và xử lý thiết kế cơ bản sẽ đóng vai trò quan trọng.
Điều này có nghĩa là sẽ có nhu cầu về các kỹ sư có kiến thức và kỹ năng đa năng trên nhiều chồng hệ thống, vượt qua ranh giới của các chồng hệ thống riêng lẻ.
Những kỹ sư như vậy có thể sẽ được gọi là kỹ sư đa năng.
Và cũng giống như nhu cầu về các kỹ sư chỉ có thể lập trình sẽ giảm do AI tạo sinh, một kỷ nguyên cuối cùng sẽ đến khi nhu cầu về các kỹ sư full-stack bị giới hạn trong một chồng hệ thống duy nhất cũng sẽ giảm đi.
Nếu bạn muốn duy trì hoạt động như một kỹ sư IT trong kỷ nguyên đó, bạn phải bắt đầu ngay lập tức trên con đường trở thành một kỹ sư đa năng.
Vai trò của Kỹ sư đa năng
Các ngôn ngữ lập trình, nền tảng và framework sẽ được phát triển rất đa dạng.
Tuy nhiên, một kỹ sư đa năng không cần phải thành thạo tất cả, bởi vì họ cũng có thể nhận được sự hỗ trợ từ AI tạo sinh.
Nếu bạn giao phó cho AI tạo sinh, ngay cả những ngôn ngữ lập trình, nền tảng hoặc framework bạn chưa từng sử dụng trước đây cũng có thể được tạo ra chỉ bằng cách cung cấp hướng dẫn bằng lời nói.
Tất nhiên, có nguy cơ đưa vào các lỗi (bug) hoặc lỗ hổng bảo mật, hoặc tích lũy nợ kỹ thuật có thể khiến việc sửa đổi trong tương lai trở nên khó khăn.
Để xác định và giảm thiểu những rủi ro này, kiến thức về ngôn ngữ hoặc thư viện cụ thể là cần thiết. Tuy nhiên, kiến thức này cũng có thể được lấy từ AI tạo sinh. Một kỹ sư đa năng chỉ cần có khả năng xây dựng vững chắc các quy trình và cơ chế để phát hiện và ngăn chặn những vấn đề này, hoặc để xử lý chúng sau khi xảy ra.
Các quy trình và cơ chế này không thay đổi đáng kể với các chồng hệ thống khác nhau. Nếu các quy trình và cơ chế để ngăn chặn lỗi và lỗ hổng bảo mật, đồng thời đảm bảo khả năng mở rộng trong tương lai được chính thức hóa, thì phần còn lại có thể được giao cho AI tạo sinh hoặc các kỹ sư chuyên về các lĩnh vực cụ thể đó.
Các kỹ sư đa năng không cần phải có kiến thức chi tiết hoặc kinh nghiệm lâu năm với từng chồng hệ thống riêng lẻ.
Một trong những vai trò chính của kỹ sư đa năng là thiết kế cách phân phối các chức năng và cách nhiều hệ thống phần mềm phức tạp, hoạt động cộng tác trên các chồng hệ thống khác nhau, tương tác với nhau.
Ngoài ra, việc xem xét cách phát triển và quản lý toàn bộ phần mềm cũng là một vai trò quan trọng đối với kỹ sư đa năng.
Phần mềm đa năng
Hãy cùng xem xét loại hình phát triển phần mềm nào cần đến kỹ sư đa năng.
Trước đó, tôi đã đưa ra ví dụ về việc phát triển một ứng dụng web thương mại điện tử.
Dưới sự chỉ đạo của một giám đốc điều hành được ban lãnh đạo cấp cao giao nhiệm vụ làm mới ứng dụng web thương mại điện tử này, nhóm lập kế hoạch có thể đưa ra các yêu cầu sau:
Tích hợp nền tảng cộng đồng người dùng: Điều này có nghĩa là cung cấp một nền tảng không chỉ dành cho ứng dụng hoặc trang web thương mại điện tử chuyên biệt, mà còn là nơi người dùng có thể tương tác về chính các sản phẩm và cách sử dụng chúng. Mục tiêu là duy trì người dùng, tạo hiệu ứng truyền miệng, làm phong phú nội dung thông qua đóng góp của người dùng và tích hợp phản hồi (cả tích cực và tiêu cực) vào quá trình phát triển sản phẩm, lập kế hoạch sản phẩm mới và tiếp thị.
Tương thích đa thiết bị: Điều này giúp cộng đồng người dùng và thông tin sản phẩm có thể truy cập được từ nhiều thiết bị khác nhau, bao gồm không chỉ ứng dụng web mà còn ứng dụng điện thoại thông minh, trợ lý giọng nói, thiết bị đeo và thiết bị gia dụng thông minh.
Tương thích đa nền tảng: Điều này bao gồm không chỉ nền tảng cộng đồng người dùng của công ty mà còn, ví dụ, danh sách sản phẩm và chia sẻ đánh giá trên các trang thương mại điện tử tổng hợp, tích hợp với mạng xã hội, và liên kết chức năng và thông tin với các công cụ AI khác nhau.
Làm mới hệ thống kinh doanh: Trong khi tạm thời liên kết với các hệ thống quản lý bán hàng và phân phối sản phẩm hiện có, điều này cũng liên quan đến việc làm mới các hệ thống này. Sau khi làm mới, kế hoạch bao gồm tổng hợp dữ liệu bán hàng theo thời gian thực và dự báo nhu cầu, cũng như tích hợp với hệ thống quản lý kho hàng. Hơn nữa, việc liên kết với các hệ thống kho hàng phân phối theo khu vực do các công ty giao hàng cung cấp và dịch vụ vận chuyển sản phẩm của bên vận chuyển sẽ được thực hiện theo từng giai đoạn, đòi hỏi hệ thống thông tin phải dần dần điều chỉnh các tích hợp của mình cho phù hợp.
Tương thích Phần mềm lỏng (Liquidware): Tất cả các giao diện hướng người dùng, tất nhiên, sẽ tương thích với Phần mềm lỏng. Ngoài ra, các giao diện người dùng nội bộ cho việc phát triển và lập kế hoạch sản phẩm (như tổng hợp thông tin và phản hồi), các phòng ban vận hành hệ thống và báo cáo cho ban quản lý cũng sẽ được chuyển đổi sang Phần mềm lỏng.
Nếu một kế hoạch phát triển phần mềm phức tạp như vậy được trình bày, một nhóm phát triển phần mềm truyền thống có thể sẽ không chấp nhận ngay lập tức. Hoặc, thông qua các cuộc thảo luận về các đặc tả hệ thống, họ sẽ chứng minh một cách logic về sự cần thiết của chi phí và thời gian phát triển khổng lồ, buộc phải cắt giảm đáng kể các đặc tả.
Tuy nhiên, điều gì sẽ xảy ra nếu AI tạo sinh có thể tự động hóa hầu hết việc lập trình, và hơn một nửa số chồng hệ thống được đề xuất đã có kinh nghiệm bởi một thành viên nào đó trong nhóm? Và điều gì sẽ xảy ra nếu nhóm có một lịch sử thành công trong việc khởi chạy các chồng hệ thống, nền tảng và framework mới từ đầu với sự hỗ trợ của AI tạo sinh? Và điều gì sẽ xảy ra nếu bạn, với tư cách là một kỹ sư đa năng, đã bắt đầu trên con đường này và dự định tiếp tục?
Từ góc độ đó, nó sẽ trông giống như một dự án rất hấp dẫn. Bạn sẽ được làm việc với một nhóm lập kế hoạch đưa ra các đề xuất đầy tham vọng từ ban lãnh đạo cấp cao, và một nhóm phát triển có tiềm năng phát triển thành một nhóm phát triển phần mềm đa năng.
Ngoài ra còn có sự yên tâm về các hệ thống hiện có. Đây cũng là một dự án có thể được phát triển tăng dần thông qua một quy trình phát triển linh hoạt (agile), bắt đầu với các tính năng mang lại lợi ích nhanh chóng, có tác động cao và thu thập phản hồi từ những người dùng sớm chấp nhận.
Xem xét tất cả những điều này, việc phát triển phần mềm đa năng này sẽ xuất hiện như một dự án rất hấp dẫn.
Kết luận
Với lập trình tự động được thúc đẩy bởi AI tạo sinh, Phần mềm lỏng (Liquidware) và phát triển phần mềm đa năng đang dần trở thành hiện thực.
Trong bối cảnh này, các kỹ sư IT ngày càng cần phải vượt ra ngoài phạm vi full-stack và hướng tới trở thành kỹ sư đa năng.
Xa hơn nữa, phạm vi của họ sẽ mở rộng hơn nữa, vượt ra ngoài lĩnh vực hệ thống IT để bao gồm kỹ thuật kinh doanh đa năng—tự kỹ thuật hóa các hoạt động tổ chức, bằng cách kết nối khách hàng, nhân viên nội bộ và AI—và kỹ thuật cộng đồng đa năng.
Và thậm chí xa hơn nữa, tôi dự đoán sự xuất hiện của một lĩnh vực được gọi là kỹ thuật xã hội đa năng, nhằm mục đích cải thiện xã hội một cách toàn diện.