ChatGPT – Trợ lý quyền lực cho Developer hay Đối thủ nặng ký?

Tác giả: Huỳnh Văn Tuân
Sau một thời gian thử nghiệm, dưới đây là đánh giá riêng của riêng mình trong việc ChatGPT-3 ảnh hưởng như thế nào đến việc viết code, và giúp được gì cho các junior/senior hay expert.

Gần đây, ChatGPT với hơn 100 triệu người dùng khi chưa đầy 2 tháng ra mắt công chúng, nó thật sự là một “cơn bão” công nghệ hơn là sự ra đời 1 công nghệ mới.

 

Sự bàn tán về ChatGPT “thần thánh” này từ trong văn phòng đến quán trà đá.

 

ChatGPT sẽ gây việc tinh giảm nhân lực, ảnh hưởng tới “miếng cơm, miếng cháo” của Coder/ Developer của bạn và chính tôi?

 

Hay ChatGPT là trợ thủ đắc lực, là Hotgirl quyền năng luôn bên cạnh Developer giúp cho các chúng ta hoàn thành mục tiêu công việc nhanh và tốt hơn?

 

ChatGPT có thể hiểu về ngôn ngữ tự nhiên khá tốt, hỗ trợ đa ngôn ngữ (cả tiếng Việt thần thánh của ta – mình đã thử Bard của google tại thời điểm bài viết này (5/2023) thì chưa hỗ trợ tiếng Việt:

Mình hiện tại là một PM, Leader, FullStack developer với hơn 10 YoE trong các lĩnh vực PHP/Android/iOS/Python, làm việc tại Viện nghiên cứu và công ty product bên US, … 
 
Sự bùng nổi và quá hot của ChatGPT được cộng đồng chia sẻ là có thể hiểu code của rất nhiều ngôn ngữ, có thể fix bug, có thể viết comment cho đoạn function/class hay tối ưu code, gợi ý code,… 
 
Bạn biết rồi đó, đôi khi code chúng ta viết ra ta còn “chưa” hiểu hết ấy mà – [đùa thôi] – người viết code như mình rất ngán việc viết comment vì nó tốn quá nhiều thời gian, hơn nữa, coder cũng là người, mà là người thì làm sao không mắc lỗi, code viết ra làm gì luôn luôn được 100% chuẩn như cơm mẹ nấu được!  
 
Vì vậy, mình phi ngay vào ChatGPT, với mong muốn đánh giá được ChatGPT có mang lại lợi ích nhất định nào cho “sự nghiệp” của mình hay không, thật ra ủ mưu “nó mà tốt á, sẽ áp dụng cho nguyên cả team luôn tận dụng” code lẹ còn đi cà phê nè.

ChatGPT-3 ảnh hưởng thế nào đến việc viết code?

Sau một thời gian thử nghiệm, dưới đây là đánh giá riêng của mình trong việc ChatGPT-3 ảnh hưởng như thế nào đến việc viết code, và giúp được gì cho các junior/senior hay expert.
 
ChatGPT có thể hiểu được code (khá nhiều ngôn ngữ lập trình) – điều đó đúng. Hiểu ở mức độ khá thông minh (thử nghiệm trên ChatGPT-3 ở thời điểm 5/2023 – và tương lai ChatGPT-4, 5 …  sẽ lại tốt hơn nữa).
Trước tiên, mình xin đưa ra một ví dụ nhỏ yêu cầu ChatGPT giải thích và hỏi kết quả sẽ xuất ra:

ChatGPT trả lời:

Theo đánh giá của mình, trong trường hợp này ChatGPT xứng đáng là hotgirl trợ lý khá tốt trong việc giải thích code:
– Câu từ tiếng Việt khá dễ hiểu
– Giải thích tường tận
– Hiểu đúng câu hỏi của mình + kết quả trả lời đúng.
 
Chưa hết, đây mới là điểm gây cấn: Rõ ràng, đoạn code trên ví dụ trên mình đã cố tình không check giá trị đầu vào $num hợp lệ, hàm fibo sẽ bị lỗi, không thể thực thi khi truyền $num là số nhỏ hơn 0.  Nếu gọi fibo( -1 ) -> chương trình sẽ lỗi ngay!!!
 
Lại nhờ vả tiếp em nó, đưa ra 3 mục tiêu:
– Tối ưu code để hạn chế lỗi input
– Tối ưu code để thực thi nhanh hơn
– Giải thích code.
Mình“Hãy tối ưu hàm fibo trên để hạn chế các lỗi input, và tối ưu code để giảm thiếu thời gian thực thi, giải thích code giúp tôi”
 
ChatGPT
Như bạn thấy ở trên, ChatGPT đã viết lại đoạn code của mình, có kiểm tra đầu vào là số nguyên dương.
 
Cách tiếp cận code được viết khác đi, tuy nhiên cũng rất dễ hiểu luôn.
 
Bên cạnh đó, được yêu cầu giải thích nên em nó giải thích 1 lèo các phần cũng khá tốt, tối ưu code những phần nào cơ bản biết trước giá trị thì cố định luôn ví dụ [0, 1] , hay dùng mảng để lưu trữ tránh tính toán lặp.
 
Chưa dừng lại ở đây: Mình tiếp tục muốn biết xem để xuất 1 giải pháp nào tốt hơn khi tính dãy fibo cho số lớn như 1000 chẳng hạn, thì tối ưu như thế nào:
 

Mình: “Có thể tối ưu code để thực thi nhanh hơn hay không, khi số lượng số cần tính nhiều hơn”.

 

ChatGPT“Khi số lượng số cần tính Fibonacci nhiều hơn, ta có thể tối ưu code bằng cách sử dụng kỹ thuật ma trận. Kỹ thuật này giúp tính toán các giá trị Fibonacci với độ phức tạp thời gian thấp hơn so với cách tiếp cận vòng lặp truyền thống.
Dưới đây là một phiên bản tối ưu hơn của hàm fibo sử dụng ma trận:” 
ChatGPT sử dụng ma trận, hơi cao tí rồi đây.
 
Mình nghĩ không hẳn tự dưng em nó tạo ra code kiểu này đâu, mà em nó tổng hợp, học từ các bài nghiên cứu đã có nhiều giải thuật về dãy Fibonacy dùng Matrix rồi (xem thêm Ví dụ).
 
ChatGPT tối ưu bởi cách tiếp cận sử dụng ma trận, với code viết khá rõ ràng.
 
Tuy nhiên không chắc chắn fresher/junior có thể hiểu tốt code này, các bạn Senior trở lên thì khá ok.
 
Mình chạy thử 2 giải thuật tối ưu mà hotgirl này đề xuất với số lượng là 1000. Thì với cách tối ưu sử dụng mảng ở trên thời gian thực thi là 0.057734966278076 (microseconds) trong khi sử dụng tối ưu theo ma trận thì nhanh hơn chỉ 0.029184103012085.
 
Tuy nhiên, không phải lúc nào cứ áp dụng giải pháp ma trận sẽ tốt, nó chỉ tốt nếu số input vào lớn. Do đó, tuỳ theo bài toán cụ thể mà chúng ta áp dụng giải thuật hợp lý, không ai mang dao mổ trâu đi làm thịt ếch bao giờ – nói lại thèm ếch chiên giòn.
Và, điểm lưu ý, tất cả gợi ý, câu trả lời của ChatGPT không hẳn developer ở level nào cũng hiểu được.
 
Và nếu bạn không hiểu thực sự code nó làm gì, nó sẽ làm gì?
 
Thì tốt nhất bạn không nên dùng, vì ẩn chứa nhiều rủi ro cả về kết quả mong muốn + bảo trì, nâng cấp code sau này!
 
ChatGPT em đẹp đấy, em giỏi đấy, nhưng xin lỗi em nó được tạo ra dựa mô hình máy học, không chắc chắn các gợi ý đều có thể chạy được và nếu xảy ra lỗi ở case nào đó -> ai sẽ sẽ chịu trách nhiệm cho cái sai đó (code này của mình đưa vào thì -> lỗi kỹ thuật hay lỗi tại ai đó chứ không phải mình à).
 
Ngoài ví dụ trên, bạn có thể yêu cầu nhiều hơn như chuyển sang ngôn ngữ Java, Swift, Python, … em nó sẽ phù phép sang ngôn ngữ đó cho bạn!!
 
Và nếu bạn không hiểu thực sự code nó làm gì, nó sẽ làm gì? Thì tốt nhất bạn không nên dùng, vì ẩn chứa nhiều rủi ro cả về kết quả mong muốn + bảo trì, nâng cấp code sau này!
Huỳnh Văn Tuân
Trích “ChatGPT – Trợ lý quyền lực cho Developer hay Đối thủ nặng ký?"
Ở một case khác, chương trình bạn gặp lỗi trong quá trình thực thi, bạn sẽ ngay lập tức alo chị google, tìm anh stackoverflow, … để tìm được 1 vài gợi ý fix lỗi này, tìm ở rất nhiều nơi để tìm được 1 giải pháp nào “tốt” chưa chắc nhưng sửa được lỗi là cái đầu tiên hướng đến.
 
Và việc này, ChatGPT sẽ hoàn toàn giúp bạn đi tìm tòi trên internet, tổng hợp và đưa ra các hướng giải quyết cho bạn, nếu không fix được thì lại hỏi em nó tiếp, cho tới khi em nói không thể đưa giải pháp nào sửa lỗi được thì thì thôi.
 
Với những bạn coder là fresher, hay junior thì còn rất nhiều thứ để học, từ viết code thế nào tới viết như thế nào tốt hơn,… thì ChatGPT cũng hoàn toàn có thể đưa ra các gợi ý cho các bạn.
 
Tuy nhiên các bạn chưa đủ tốt về khả năng đánh giá code đó, giải pháp đó thật sự ổn hay không?
 
Liệu rằng có nên dùng hay không? Sử dụng có mang lại ảnh hưởng những vấn đề khác hay không như thời gian thực thi, giới hạn bài toán. 
 
VD: Fresher được hotgirl ChatGPT trên gợi ý dùng matrix để code dãy fibo, thế nào mang vào như bắt được bí kíp vậy là thật sự chưa ổn!!
 
Nhưng nó cũng mang tới 1 trong rất nhiều lựa chọn cho chúng ta, giúp chúng ta biết có những ý kiến đó, giải pháp đó, chúng ta có thể sẽ học được nhiều thứ.

Tóm lại, ChatGPT thế nào? 

Có nên rước em nó về nhà dùng luôn hay để đứa khác nó rước về? ChatGPT như dao 2 lưỡi:
 
– Nếu bạn biết cách dùng (biết cách hỏi) và có khả năng kiểm soát được thì sẽ rất tốt, tối ưu thời gian và hỗ trợ đưa ra giải pháp hữu ích để giúp giải quyết các vấn đề.
 
Còn nếu chỉ mới biết cách dùng, khả năng kiểm soát, đánh giá chưa tốt thì với ChatGPT chỉ nên dừng lại ở cấp độ là kênh tham khảo, đừng thần thánh hoá và phụ thuộc quá vào em nó. Vì ChatGPT sẽ học từ người dùng, nếu chưa đúng thì đánh giá chưa đúng để em nó sẽ sửa lại, tự train (học) lại liên tục, sẽ cải thiện dần.
 
Vừa rồi, mình cũng dùng ChatGPT để lên dàn ý cho từng chương mục trong giáo án đi dạy của mình, và yêu cầu ChatGPT lên danh sách 40 câu hỏi trắc nghiệm về PHP/MySQL để mình cho sinh viên thi cuối kỳ, từ những gợi ý đó, sẽ chọn lọc, bổ sung cho phù hợp sau đó đưa vào đề thi. Và, phải thừa nhận là giảm rất nhiều thời gian và công sức.

Để sử dụng tốt ChatGPT

Mình cần phải biết cách hỏi.

 

Nếu bạn tốt tiếng Anh thì khuyến khích sử dụng tiếng Anh nhé, nên nêu từng vấn đề nhỏ càng tốt, như mình đã mỗ xẻ vấn đề ở trên, đưa ra các yêu cầu cụ thể nên cải thiện phần nào, mình cần xử lý chỗ nào trong tổng thể đó, thì ChatGPT sẽ giúp chúng ta tốt hơn.

ChatGPT có cạnh tranh, làm cho chúng ta (những người viết code) thất nghiệp hay không?

Theo mình, tại thời điểm này có lẻ là chưa đâu, vẫn phải cần chúng ta đánh giá, kiểm nghiệm một cách chặt chẽ.

 

Và rõ ràng, ChatGPT đang hỗ trợ xử lý từng đoạn, chưa thể xây dựng nên 1 tổng thể.

 

Ví dụ: muốn xây dựng 1 phần mềm từ ý tưởng X nào đó, ChatGPT chưa thể build 1 cách toàn diện mọi thứ để hiện thực hoá ý tưởng này cho bạn được [đến ngày đó chắc mình cũng về trồng rau nuôi cá rồi, vì có ai thuê mướn nữa đâu], nhưng nó có thể là trợ lý tốt.

Bài viết khá dài, cảm ơn chân thành các bạn đã chịu khó đọc tới đây!
 

Như một lời kết muốn gửi đến các bạn theo nghề viết code: Có thể tận dụng ChatGPT trong công việc của mình. Tuy nhiên, hãy xem ChatGPT như một trợ lý, và đây là một kênh để tham khảo, không phải là tất cả.

 

 
Có thể tận dụng ChatGPT trong công việc của mình. Tuy nhiên, hãy xem ChatGPT như một trợ lý, và đây là một kênh để tham khảo, không phải là tất cả.
Huỳnh Văn Tuân
Trích “ChatGPT – Trợ lý quyền lực cho Developer hay Đối thủ nặng ký?"
Ông bà ta có câu, “girl càng xinh thì càng nguy hiểm, nên thận trọng!“, và ChatGPT có thể sẽ trở thành trợ lý xinh đấy!!
 
———————-
Tớ vẫn luôn ở đây nhé: https://tuanhuynh.dev/ 
———————–

Cuộc thi "Là IT Thì Mình Cứ Viết Đi"

Bài viết “ChatGPT – Trợ lý quyền lực cho Developer hay Đối thủ nặng ký?” đã thắng giải “Bài viết xuất sắc nhất” trong cuộc thi viết “Là IT Thì Mình Cứ Viết Đi” do ITviec tổ chức, từ ngày 26/04/2023 đến 26/06/2023, nhân dịp kỷ niệm 10 năm thành lập.

tong-ket-cuoc-thi-viet-3