AI và nghề lập trình
AI gần đây đã nổi lên thành một xu hướng và đang phát triển rất nhanh chóng. Có rất nhiều dự đoán rằng AI sẽ thay thế nghề lập trình trong tương lai. Vậy liệu điều đó có trở thành sự thật không? và chúng ta nên làm gì để thích ứng với những thay đổi này.
Là một kĩ sư phần mềm, việc đối mặt với những thay đổi liên tục về công nghệ là điều không thể tránh khỏi. Và rất rõ ràng là AI đã đem lại những cải thiện rất tốt về mặt hiệu suất làm việc mà ai cũng có thể nhìn thấy.
Riêng bản thân mình, sử dụng AI vào công việc đã giúp mình tăng hiệu suất lên ít nhất là gấp đôi. Nhiều bài toán và các vấn đề cần giải quyết được xử lý nhanh hơn, giúp mình có thêm thời gian để suy nghĩ những điều quan trọng hơn.
Mình đã dùng AI như thế nào?
Phần lớn công việc của mình liên quan đến việc đưa ra những quyết định trong giải pháp kĩ thuật. Do đó, việc nghiên cứu những vấn đề mới - tìm tòi - thử sai để đưa ra các quyết định gần như liên tục. Để hỗ trợ vấn đề này, ban đầu mình sử dụng ChatGPT Plus cho các mục đích nghiên cứu, tìm hiểu khái niệm, tham khảo giải pháp, xây dựng các demo nhỏ để kiểm chứng thực tế. Sau này, mình xây dựng một sản phẩm riêng thay cho ChatGPT Plus cho mục đích cá nhân (bật mí là mình đang trong quá trình hoàn thiện sản phẩm để chuẩn bị release và chia sẻ với cộng đồng trong một thời gian rất gần).
Về coding, hiện tại đã có rất nhiều extension có thể hỗ trợ khá tốt việc đề xuất và generate ra code. Cá nhân mình thích dùng Codeium trên VS Code (mình dùng VS Code chủ yếu trong nhiều dự án gần đây trên NodeJS, Python)
Trong công việc, những thứ cần liên quan đến viết lách, sử dụng câu cú cho hay, mình cũng thường dùng ChatGPT Plus để hỗ trợ. Hiện tại, Jira, Confluence cũng tích hợp vào các tính năng về AI cho phép có thể tìm kiếm thông tin, tóm lược nội dung bài viết khá tiện.
Ngoài ra mình cũng vọc vạch chút Stable Diffusion cho mục đích giải trí, tạo nội dung. Vì mình còn rất mới trong mảng "art" này vẫn còn trong giai đoạn tìm tòi và học hỏi nên chưa dám gọi là hiệu quả. Chủ yếu vui là chính.
Liệu AI có thể thay thế được lập trình viên?
Có thể. Tuy nhiên đó là một tương lai còn rất xa. Bản chất của nghề lập trình đòi hỏi nhiều quyết định và tư duy của con người khá nhiều. Mình là một người theo trường phái craftsmanship. Mình tin rằng lập trình là một nghề mang tính sáng tạo, tỉ mỉ và cần sự tận tâm như một nghệ nhân. Ngày nào AI chưa có cảm xúc và suy nghĩ thật sự như một con người, thì ngày đó nó vẫn chưa thể thay thế được hoàn toàn những người làm nghề lập trình.
Một cách thực tế hơn, mình đã thử test nhiều tool như Agent Swarm, Crew AI, Auto Agent. Những công cụ này có thể giúp giải quyết được một phần việc hoặc giúp tự động hóa được một số tác vụ bình thường. Tuy nhiên để tạo ra được những dòng code cho một sản phẩm hoàn chỉnh, cần sự thay đổi liên tục theo thời gian thì rõ ràng vẫn còn một khoảng cách rất xa.
Tuy nhiên, trước mắt lập trình viên sẽ bị thay thế bới những lập trình viên biết sử dụng AI hiệu quả. Đó là lẽ tất yếu vì yếu tố cạnh tranh của ngành. Những lập trình viên biết sử dụng AI hiệu quả sẽ có hiệu suất cao hơn, có lợi thế cạnh tranh hơn so với những người còn lại.
Thực tế việc sử dụng AI
Đây là đúc kết từ thực tế mình quan sát được và nó phản ánh một phần góc nhìn cá nhân của mình. Trong những bạn bè và đồng nghiệp của mình chỉ có một số ít người sử dụng AI, và rất ít người thật sự dùng hiệu quả. Phần lớn mọi người cứ loay hoay ở việc không biết làm sao để AI trả lời đúng với ý mình hỏi. Có nhiều bạn vẫn không thể tìm được những câu trả lời phù hợp cho vấn đề của mình dù đã sử dụng ChatGPT Plus.
Ngoài ra, mức giá 20$ / tháng của ChatGPT Plus / Copilot Pro cũng làm cho nhiều bạn ngán ngẩm và e dè sử dụng. Một giải pháp phổ biến đó là mua và share tài khoản ChatGPT Plus / CoPilot Pro, hoặc chỉ sử dụng phiên bản miễn phí.
Ở góc nhìn cá nhân của mình, nếu một công cụ thực sự là cần thiết thì việc bạn trả tiền để sử dụng nó chính là một khoản đầu tư. 20$ tương đương một bữa bù khú với bạn bè. Bỏ một bữa tiệc trong tháng và thuê một trợ lý của riêng mình với mức giá này để nó có thể tận tình phục vụ bạn ngày đêm thì cũng khá hợp lý.
Điều gì quyết định việc bạn sử dụng AI hiệu quả?
Các LLM hiện tại về bản chất là các engine hỗ trợ suy luận. Việc ta dùng nó hiệu quả hay không phụ thuộc vào đầu vào mà ta cung cấp cho nó. Đó chính là chất lượng câu hỏi.
Chất lượng một câu hỏi phụ thuộc những gì?
Đặt đúng câu hỏi: việc đưa ra một câu hỏi đúng cho tình huống thực tế là điều rất quan trọng. Khi bạn gặp một vấn đề nan giải, hãy suy nghĩ mình nên đặt những câu hỏi nào đúng để giải quyết vấn đề đó. Một câu hỏi đúng sẽ đi sâu vào bản chất vấn đề thay vì tập trung vào hiện tượng xung quanh.
Phạm vi câu hỏi phải đủ nhỏ để có thể giải quyết được: Trong lập trình hẳn bạn đã nghe về bài toán chia để trị. Các LLMs hiện tại cũng không đủ thông minh như một con người để giúp bạn chia nhỏ bài toán, giải quyết từng phần và tổng hợp đáp án lại để đưa cho bạn. Chính bạn phải là người làm điều đó. Nếu phạm vi câu hỏi quá rộng, hãy tách nhỏ vấn đề ra thành nhiều bài toán nhỏ. Giải từng bài toán thành phần rồi đưa ra tổng hợp vấn đề của chính bạn.
Câu hỏi với thông tin đầy đủ: khi đưa ra một câu hỏi cho LLM, ta cần phải đưa các thông tin chi tiết - đầy đủ để tránh việc hiểu nhầm. Có một số cách để ta làm điều này:
- Hãy nghĩ LLMs như một con người. Đặt ta vào vị trí của người nhận câu hỏi, để xem có đủ thông tin để phản hồi tốt nhất chưa. Nếu không, hãy viết lại câu hỏi của bạn.
- Sử dụng ví dụ. Có rất nhiều bài toán / câu hỏi mà ta có đáp án hoặc phương pháp để tìm ra đáp án rồi. Tuy nhiên ta muốn sử dụng LLM để tự động hóa việc trả lời những câu hỏi tương tự. Với các bài toán này, ta có thể đưa cho LLM một số ví dụ cho các tình huống để nó dùng làm thông tin tham khảo để suy luận.
Đặt LLM vào một vai trò cụ thể để cô lập vùng kiến thức, hành vi và cách nó phản hồi với câu hỏi: khi ta đặt một câu hỏi chung chung và không đưa LLM vào một vai trò cố định, ta sẽ nhận được một câu trả lời rất chung chung.
Ví dụ: nếu bạn hỏi về coding trên một ngôn ngữ / nền tảng cụ thể, hãy đặt LLM vào vai trò của một developer đã master ngôn ngữ đó. Một câu prompt như dưới đây sẽ giúp bạn có một câu hỏi chất lượng hơn khá nhiều nếu chỉ hỏi bình thường
You are a senior developer. You have mastered mainstream languages: [coding languages]. As an expert in these areas, you excel at using these languages to build complex, large-scale software systems. Your goal is to assist me in writing, debugging, troubleshooting and improving my code. I have a problem that need your help. [describe your problem]
Sử dụng những techniques chung về prompting: kĩ thuật prompting thật ra không quá khó để học. Không quá khó để phải có một vị trí prompt engineer như những ngày đầu LLM ra đời. Bất kì ai cũng có thể học được các kĩ thuật prompting này. Chỉ cần bạn rèn luyện nhiều, vận dụng nhiều vào thực tế thì bạn sẽ càng thuần thục.
Bạn có thể tham khảo một resource khá hữu ích về prompting techniques ở đây nếu muốn đào sâu: https://www.promptingguide.ai/techniques
Mình sẽ tiếp tục chia sẻ một số bài viết về chủ đề này trong thời gian tới. Hy vọng bạn có được những thông tin hữu ích.
Trân trọng!
Comments ()