Phát triển là việc liên tục tạo ra những điều mới mẻ và hữu ích.
Khi nghe từ "phát triển", chúng ta thường nghĩ ngay đến việc phát triển sản phẩm mới. Điều này khác với việc sản xuất từng sản phẩm riêng lẻ; nó hàm ý tạo ra bản thiết kế hoặc khuôn mẫu của sản phẩm, nói cách khác.
Do đó, các bản thiết kế và khuôn mẫu được tạo ra thông qua quá trình phát triển sản phẩm mới sẽ được sử dụng lặp đi lặp lại trong các nhà máy để sản xuất hàng loạt các sản phẩm giống hệt nhau.
Ngoài ra, từ "phát triển" còn được dùng để chỉ việc phát triển năng lực cá nhân, hoặc phát triển xã hội và quốc gia. Những cách dùng này không chỉ đơn thuần là tăng thêm những gì sở hữu, mà còn hàm ý khả năng liên tục sử dụng và hưởng lợi từ những năng lực đã được phát triển.
Trong khi sức mạnh kinh tế của các cá nhân và xã hội có thể biến động theo điều kiện kinh tế, thì các năng lực đã được phát triển thường là vĩnh viễn.
Ngay cả khi chúng giảm đi, đó được xem là sự suy thoái, chứ không phải là sự biến động như sự thịnh vượng kinh tế.
Hơn nữa, còn có sự phát triển của công nghệ và kiến thức. Khác với năng lực của các cá nhân hoặc xã hội cụ thể, những điều này có đặc điểm là dễ dàng chia sẻ.
Và trong số các kết quả của những phát triển này—sản phẩm, năng lực, kiến thức và công nghệ—một số có thể hữu ích cho các quá trình phát triển tiếp theo.
Bằng cách phát triển những kết quả hữu ích như vậy, phạm vi phát triển được mở rộng, đồng thời hiệu quả và chất lượng cũng được cải thiện.
Phát triển phần mềm dựa trên AI
Nhìn chung, việc phát triển đòi hỏi rất nhiều thời gian và công sức. Đặc biệt khi xã hội tiến bộ và nhiều thứ trở nên tinh vi hơn, việc tạo ra những cái mới càng trở nên khó khăn hơn.
Tuy nhiên, với sự ra đời của AI tạo sinh, tình hình này đang thay đổi. Hiện tại, phát triển phần mềm đang trải qua một sự chuyển đổi đáng kể, nhờ vào khả năng lập trình cao của AI tạo sinh.
Một tầm nhìn tương lai, nơi các tác nhân tự chủ dựa trên AI tạo sinh trở thành trung tâm của phát triển phần mềm với vai trò kỹ sư phần mềm, đã và đang trở thành hiện thực.
Chúng ta hiện đang ở trong giai đoạn chuyển tiếp. Mặc dù chúng ta chưa thể hoàn toàn giao phó việc phát triển cho AI tạo sinh, nhưng việc khéo léo sử dụng AI tạo sinh có thể thúc đẩy mạnh mẽ quá trình phát triển phần mềm.
Điều này được gọi là Phát triển phần mềm dựa trên AI.
Phát triển theo hướng phát triển
Khi AI tạo sinh hợp lý hóa việc phát triển phần mềm, nó không chỉ giúp phát triển phần mềm mục tiêu cuối cùng hiệu quả hơn mà còn cả việc phát triển phần mềm hỗ trợ quá trình phát triển.
Như đã đề cập trước đó, các kết quả hỗ trợ phát triển giúp mở rộng phạm vi phát triển và góp phần nâng cao hiệu quả và chất lượng. Hơn nữa, nếu được tạo ra một cách hiệu quả, chúng có thể được tái sử dụng trong các dự án phát triển khác.
Vì vậy, bằng cách phát triển phần mềm hữu ích trong quá trình phát triển phần mềm, hiệu quả tổng thể cuối cùng có thể được tăng lên, và những tài sản này cũng có thể được tận dụng cho việc phát triển trong tương lai.
Theo truyền thống, việc phát triển phần mềm hỗ trợ phát triển như vậy là một thông lệ phổ biến trong lĩnh vực này, nhưng nó đòi hỏi thời gian và công sức phát triển riêng, cần phải đánh giá cẩn thận và triển khai có mục tiêu.
Bằng cách sử dụng AI tạo sinh, phần mềm đơn giản để tự động hóa các tác vụ nhỏ, ngẫu hứng có thể được tạo ra nhanh chóng. Đối với các tác vụ có quy trình rõ ràng, AI tạo sinh có thể tạo ra các chương trình chính xác gần như không có lỗi.
Điều này giúp việc phát triển phần mềm hỗ trợ phát triển trong quá trình phát triển phần mềm trở nên dễ dàng hơn bao giờ hết.
Và khi suy nghĩ sâu sắc hơn, một phong cách phát triển xuất hiện, nơi các công cụ hữu ích được liên tục phát triển trong quá trình phát triển, từ đó biến đổi chính phương pháp phát triển.
Chúng ta sẽ gọi đây là Phát triển theo hướng phát triển.
Để thực hành Phát triển theo hướng phát triển, cần có thói quen quan sát một cách khách quan quá trình phát triển phần mềm của mình để xem phần nào có thể giao cho phần mềm và phần nào chỉ con người mới có thể làm, cùng với kỹ năng phát triển phần mềm hỗ trợ phát triển đó.
Hơn nữa, AI tạo sinh có thể được tích hợp vào các công cụ phần mềm này. Bằng cách nhúng nó vào phần mềm, không giống như một tác nhân AI tạo sinh độc lập, phạm vi xử lý có thể được thu hẹp và một lộ trình rõ ràng có thể được xác định ở một mức độ nào đó.
Trong khi các tác nhân AI có thể đạt được kết quả tương tự thông qua gợi ý, phần mềm tích hợp AI tạo sinh có thể dễ dàng tăng độ chính xác hơn bằng cách kết hợp cả chương trình và gợi ý.
Nếu Phát triển theo hướng phát triển có thể được thực hành, dự án thứ hai sẽ thấy sự cải thiện cả về chất lượng và chi phí so với dự án đầu tiên. Hơn nữa, với mỗi dự án tiếp theo—thứ ba, thứ tư, v.v.—những cải thiện sẽ tiếp tục tích lũy.
Điều này hoàn toàn khác với việc chỉ đơn thuần phát triển phần mềm bằng cách sử dụng AI tạo sinh. Một khoảng cách đáng kể sẽ xuất hiện theo thời gian giữa các nhóm chỉ đơn giản thành thạo các công cụ AI tạo sinh và các nhóm thực hành Phát triển theo hướng phát triển.
Kiểm thử dựa trên tái cấu trúc mã
Có một khái niệm gọi là Phát triển theo hướng kiểm thử (TDD), trong đó bao gồm việc đầu tiên thiết kế các bài kiểm thử dựa trên đặc tả, sau đó phát triển phần mềm để vượt qua các bài kiểm thử đó.
Ban đầu, tôi cũng nghĩ rằng với AI tạo sinh giúp việc phát triển các chương trình kiểm thử tự động trở nên dễ dàng, thì Phát triển theo hướng kiểm thử có thể thực hiện được.
Tuy nhiên, khi bắt đầu thực hành Phát triển theo hướng phát triển, tôi nhận ra rằng cách tiếp cận thiết kế kiểm thử trước khi triển khai không phải lúc nào cũng phù hợp.
Đặc biệt đối với phần mềm như ứng dụng web, có liên quan đến các khía cạnh chủ quan như tính dễ sử dụng và thiết kế giao diện mà người dùng có thể trải nghiệm bằng cách tương tác, tôi nhận thấy rằng việc chạy và tương tác thực tế với phần mềm được ưu tiên hơn so với việc kiểm thử chi tiết.
Điều này là do nếu có sự không hài lòng đáng kể ở cấp độ UI/UX khi tương tác, có khả năng các phần cơ bản như framework, kiến trúc cơ bản, mô hình dữ liệu hoặc các trường hợp sử dụng có thể cần phải thay đổi.
Trong dự án phát triển phần mềm cá nhân hiện tại của mình, tôi cũng nhận thấy các vấn đề về tính linh hoạt chức năng và hiệu suất, khiến tôi phải thay thế hai framework bằng những framework khác.
Ngoài ra, có một phần có hiệu suất sử dụng bộ nhớ kém, yêu cầu phải xem xét lại toàn bộ quá trình xử lý.
Chính tại những thời điểm tái cấu trúc này, việc kiểm thử lần đầu tiên trở thành một cân nhắc có ý thức.
Nếu điều này xảy ra trong giai đoạn đầu phát triển, hoặc nếu các tính năng và đặc tả sẽ thay đổi đáng kể dù sao đi nữa, thì việc kiểm thử có thể không cần thiết.
Tuy nhiên, nếu quá trình phát triển đã diễn ra tốt đẹp và có nhiều mục cần kiểm tra, thì việc kiểm thử có thể sẽ cần thiết trong quá trình tái cấu trúc để đảm bảo không có thiếu sót hoặc lỗi chức năng.
Do đó, ý tưởng tạo chương trình kiểm thử vào thời điểm phát triển đã tiến triển đến một mức độ nhất định và việc tái cấu trúc trở nên cần thiết, thì đó cũng không phải là một ý tưởng tồi.
Tại thời điểm này, điều quan trọng không phải là tạo kiểm thử cho tất cả mã, mà là tập trung kiểm thử vào các phần đã ổn định, ít có khả năng thay đổi nhiều trong tương lai, để lại các phần vẫn đang biến động mà không có kiểm thử tự động.
Điều này có thể được gọi là Kiểm thử dựa trên tái cấu trúc mã.
Kết luận
AI tạo sinh đang thay đổi đáng kể lĩnh vực phát triển phần mềm.
Trong các bài viết trước, tôi đã đề cập đến tầm quan trọng của việc hướng tới trở thành một Kỹ sư đa năng, người có thể vượt xa vai trò kỹ sư full-stack truyền thống để phát triển các hệ thống đa năng kết hợp nhiều miền, cơ sở hạ tầng và môi trường thực thi khác nhau.
Tôi cũng đã viết một bài báo gợi ý rằng chúng ta đang bước vào kỷ nguyên Phát triển theo trải nghiệm và hành vi, tập trung vào việc nâng cao trải nghiệm người dùng thông qua hành vi của phần mềm, thay vì phương pháp phát triển phần mềm truyền thống là căn chỉnh đặc tả với triển khai.
Phát triển theo hướng phát triển và Kiểm thử dựa trên tái cấu trúc mã chính là những cách tiếp cận sẽ dẫn chúng ta đến những chân trời mới này trong phát triển phần mềm.