Lợi nhuận:
- Khả năng phân biệt đâu là nơi AI cung cấp tốc độ thực sự trong vòng đời phát triển phần mềm và đâu là quyết định và trách nhiệm thuộc về kỹ sư
- Khả năng áp dụng kỷ luật kỹ thuật ba lớp để xác minh mọi mã và thiết kế được tạo ra thông qua quá trình biên dịch, thử nghiệm và đánh giá.
- Tập thói quen xóa bối cảnh để tận dụng AI mà không chia sẻ mã nguồn, thông tin xác thực và dữ liệu khách hàng bí mật
Khi bạn nhìn vào một ngày làm việc của một kỹ sư máy tính, bức tranh ở hầu hết các nhóm đều giống nhau: hiểu yêu cầu kinh doanh, thiết kế, viết mã, đọc mã của người khác, gỡ lỗi (quá trình tìm hiểu lý do tại sao một chương trình hoạt động không chính xác và sửa nó), viết bài kiểm tra, chuẩn bị tài liệu, xem xét mã và tham dự các cuộc họp. Nói cách khác, thời gian dành cho việc "đánh giá kỹ thuật" thực sự, tức là liệu một giải pháp có đúng, an toàn và bền vững hay không, sẽ bị tiêu tốn do công việc lặp đi lặp lại. Đây là lúc trí tuệ nhân tạo (gọi tắt là AI; phần mềm hoạt động trên văn bản và mã với mô hình ngôn ngữ lớn) phát huy tác dụng. AI không đưa ra quyết định cho bạn; Nó giúp bạn chuẩn bị cho quyết định, tạo ra khung mã, thu hẹp lỗi và đưa ra một bản nháp đã hoạt động trước mặt bạn. Trong suốt mô-đun này, chúng tôi sẽ định vị AI không phải là “lập trình viên tự động” mà là đối tác lập trình theo cặp có kỷ luật, có đầu ra luôn được biên dịch, kiểm tra và xem xét.
Trong phần đầu tiên này, chúng tôi làm rõ ba điều: Ở giai đoạn nào của vòng đời phát triển phần mềm (các giai đoạn mà phần mềm trải qua từ ý tưởng đến sản xuất: phân tích, thiết kế, mã hóa, thử nghiệm, triển khai, bảo trì) AI có mang lại giá trị thực tế hay không; những quyết định nào phải thuộc về kỹ sư; và kỷ luật xác minh và bảo mật mà bạn phải tuân thủ khi thực hiện việc này là gì. Nếu mái nhà này không được lắp đặt đúng cách, các kỹ thuật trên các thiết bị tiếp theo có thể trở nên nguy hiểm; Bởi vì một lỗi trong phần mềm có thể tiếp cận hàng triệu người dùng cùng lúc và có thể trở thành lỗ hổng bảo mật.
Khái niệm: Ảo giác: Sự bịa đặt thuyết phục của AI về một phương pháp, thư viện, API hoặc hành vi không thực sự tồn tại. Bối cảnh: Đầu vào bạn cung cấp cho AI (mã, thông báo lỗi, yêu cầu, ràng buộc). Xác minh: Kiểm tra đầu ra một cách độc lập (biên dịch, kiểm tra, tài liệu). Ba khái niệm này là xương sống của toàn bộ mô-đun.
Máy gia tốc AI ở doanh nghiệp nào, rủi ro ở doanh nghiệp nào?
Việc làm phần mềm có hai hướng xét về kết quả. Ở một đầu là công việc chuẩn bị có thể đảo ngược, rủi ro thấp; Ở đầu bên kia, có những tác vụ khó hoàn tác xâm nhập vào môi trường sản xuất và có thể gây mất dữ liệu, lỗ hổng bảo mật hoặc gián đoạn. Giá trị của AI thay đổi tùy thuộc vào vị trí của bạn trên quang phổ này.
loại hình kinh doanh
Đóng góp của AI
Vai trò của kỹ sư
Bộ xương mã/bản soạn sẵn
Tạo nhanh cấu trúc lặp đi lặp lại
Kiểm soát trạng thái logic và cạnh
gỡ lỗi
Giả thuyết và danh sách nguyên nhân có thể
Sao chép và xác nhận nguyên nhân gốc rễ
viết bài kiểm tra
Kiểm tra dự thảo và tạo kịch bản
Khẳng định có ý nghĩa và kiểm tra phạm vi
tái cấu trúc
Đề xuất tái cấu trúc
Duy trì hành vi thông qua thử nghiệm
Tài liệu
Bản thảo và cấu trúc đầu tiên
Kiểm tra tính chính xác đối với mã
Quyết định về kiến trúc/an ninh
Danh sách các tùy chọn và ưu và nhược điểm
Quyết định cuối cùng và trách nhiệm
Quy tắc rất đơn giản: rủi ro của đầu ra AI bằng với thiệt hại mà nó sẽ phải gánh chịu nếu đầu ra đó mắc lỗi. Việc đề xuất sai tên biến là vô hại; Xác thực không đúng cách (kiểm tra xem người dùng có thực sự là người họ tuyên bố hay không) khiến toàn bộ hệ thống dễ bị tấn công. Vì vậy, câu hỏi đầu tiên cần đặt ra trước khi sử dụng kết quả đầu ra là: "Điều gì xảy ra nếu điều này sai và ai sẽ nhận thấy điều đó và khi nào?"
Thận trọng: AI tạo ra mã trôi chảy và tự tin. Sự lưu loát không đảm bảo tính chính xác. Một mô hình ngôn ngữ có thể tạo ra một tên hàm không thực sự tồn tại, một chuỗi tham số không chính xác hoặc thậm chí là một mẫu không an toàn. Trong phần mềm, điều này không tồn tại trên giấy; Nó biên dịch, chạy và bùng nổ trong quá trình sản xuất.
Những quyết định nên được giao cho kỹ sư
Một số quyết định không bao giờ được tự động hóa hoàn toàn; mang theo rủi ro kỹ thuật, pháp lý và đạo đức:
- Phê duyệt sản xuất: Việc đưa mã vào sản xuất và chịu trách nhiệm về việc này.
- Bảo mật và kiến trúc: Các quyết định tốn kém như xác thực, ủy quyền, mã hóa và mô hình dữ liệu.
- Giấy phép và bản quyền: Khả năng sử dụng mã được sản xuất trong sản phẩm thương mại và tuân thủ giấy phép.
- Làm việc với dữ liệu bí mật: Giao dịch với dữ liệu khách hàng, bí mật mã nguồn và thông tin nhận dạng.
Cảnh báo: Ngay cả khi AI nói "mã này an toàn và sẵn sàng để sản xuất", việc chấp nhận điều này mà không kiểm tra bảo mật, xem xét và xác thực mã dưới tải thực là không thể chấp nhận được. Trong công việc quan trọng về an toàn, kết quả đầu ra của AI không bao giờ thay thế được sự chấp thuận của kỹ sư có năng lực; Bất kỳ đầu ra nào dẫn đến quyết định đều phải được kỹ sư được ủy quyền xác minh và phê duyệt độc lập trước khi thực hiện.
Kỷ luật xác minh: Kiểm soát ba lớp
Áp dụng ba lớp kiểm soát để sử dụng đầu ra AI như một người đánh giá cấp cao thay vì mù quáng. Đây là phản xạ cơ bản mà chúng tôi sẽ lặp lại trong suốt học phần.
- Biên dịch và kiểm tra tĩnh: Mã có thực sự biên dịch/chạy không? Có lỗi loại, biến không được sử dụng, API không tồn tại không? Công cụ phân tích tĩnh (công cụ kiểm tra mã mà không chạy mã) nói lên điều gì?
- Tái tạo độc lập (thử nghiệm): Chạy mã với các đầu vào nhỏ, đã biết và xem liệu bạn có nhận được đầu ra như mong đợi hay không. Hãy thử các trường hợp cạnh (null, 0, âm, rất lớn).
- Xác minh nguồn: Mọi API, phiên bản thư viện và tính năng ngôn ngữ mà AI sử dụng phải được xác minh từ tài liệu chính thức.
Lời nhắc xác minh (giúp kiểm tra đầu ra dễ dàng hơn): "Liệt kê TẤT CẢ các thư viện, phương thức và tính năng ngôn ngữ bên ngoài mà bạn sử dụng trong mã của mình. Đối với mỗi thư viện, hãy cho biết phiên bản nào có sẵn và gắn nhãn 'phải được xác minh từ tài liệu'. Đừng tạo ra bất kỳ API nào mà bạn không chắc chắn; nếu bạn không chắc chắn, hãy viết rõ ràng là 'không chắc chắn'. Ngoài ra, hãy liệt kê mọi trường hợp khó khăn mà bạn chưa giải quyết dưới dạng một danh sách riêng."
Phê bình lời nhắc mã của riêng bạn: "Hãy xem xét kỹ mã bạn vừa viết, giống như một kỹ sư cấp cao đã thuê bạn. Đưa ra các mục cụ thể theo ba tiêu đề sau: (1) lỗi logic/trường hợp phức tạp, (2) rủi ro bảo mật, (3) các vấn đề về hiệu suất hoặc khả năng đọc. Đối với mỗi mục, hãy viết 'tại sao lại xảy ra sự cố' và 'cách khắc phục được đề xuất'. Nếu không có vấn đề gì, hãy nói 'Tôi không thể tìm thấy vấn đề'; đừng cố gắng thêu dệt nó."
Nhắc yếu / Nhắc mạnh
YẾU:"Viết cho tôi một hàm xác thực người dùng."(Kết quả: không rõ ngôn ngữ nào, quy tắc nào, hành vi lỗi nào; mã chung, thường không an toàn hoặc nằm ngoài ngữ cảnh.) MẠNH:"Viết hàm xác thực email cho Python 3.11. Đầu vào: chuỗi. Đầu ra: Đúng nếu hợp lệ, Sai nếu không. Quy tắc: chuỗi trống Sai; Không yêu cầu tuân thủ RFC, định dạng cơ bản là đủ. KHÔNG SỬ DỤNG thư viện bên ngoài. Kiểm tra 5 mẫu bên dưới khối nối thêm hàm: hợp lệ, trống, không '@', gấp đôi '@', chỉ chứa dấu cách."
Sự khác biệt là trong bối cảnh. Lời nhắc mạnh mẽ; Nó bao gồm ngôn ngữ, phiên bản, hợp đồng đầu vào-đầu ra, các ràng buộc và kỳ vọng kiểm tra. Kỷ luật duy nhất này làm giảm đáng kể nguy cơ ảo giác và mã không an toàn.
Hộp đựng nhỏ
Trường hợp 1 - Phương pháp giả tạo. Một nhà phát triển được AI cho biết rằng có một phương thức tên là date.addBusinessDays(5) trong thư viện ngày và phương thức này được giải thích một cách tự tin. Nhìn vào tài liệu, anh thấy rằng không có phương pháp nào như vậy, cách chính xác là vòng lặp thủ công. Ảo giác được ghi lại trước khi nó được đưa vào sản xuất với quá trình xác minh kéo dài 10 phút.
Trường hợp 2 - Mất trạng thái biên. AI tạo ra hàm “tính trung bình”; Nó hoạt động khi được thử nghiệm với 1.000 hàng dữ liệu. Tuy nhiên, khi danh sách trống, nó sẽ báo lỗi chia cho 0. Vì kỹ sư đã thêm thử nghiệm đầu vào trống nên anh ấy sẽ nhìn thấy và sửa lỗi trước khi lỗi xuất hiện. Kiểm tra tình trạng một cạnh sẽ ngăn cảnh báo sản xuất vào lúc 3 giờ sáng.
Trường hợp 3 - Rủi ro về quyền riêng tư. Một chuyên gia sắp dán một tệp có chuỗi kết nối cơ sở dữ liệu thực tế và khóa API vào một công cụ công khai. Ghi nhớ chính sách của tổ chức; Nó thay thế các bí mật bằng <REDACTED>, rút gọn mã thành một ví dụ đại diện và yêu cầu nó. Vì vậy, anh ta nhận được sự giúp đỡ trong 5 phút, nhưng thông tin danh tính của anh ta không xuất hiện.
Nguyên tắc làm việc với mã bí mật và thông tin nhận dạng
Phần nhạy cảm nhất của phần mềm; bí mật mã nguồn, thông tin nhận dạng (khóa API, mật khẩu, mã thông báo) và dữ liệu khách hàng/cá nhân. Nguyên tắc cơ bản: dọn dẹp trước khi chia sẻ, chỉ hỏi bản chất của vấn đề bằng một ví dụ tiêu biểu nếu có thể.
Mẫu lời nhắc ẩn danh: "Có lỗi trong hàm sau. Tôi đã thay thế logic nghiệp vụ thực tế và các hằng số ẩn bằng các giá trị đại diện (khóa API, tên bảng, tên trường chung). Sự cố: Tôi gặp lỗi Y trong đầu vào X. Chỉ cần tìm lỗi logic trong mã đại diện này và giải thích phiên bản đã sửa. [mã đại diện]"
Mẹo: Nếu nghi ngờ, hãy làm bài kiểm tra sau: "Liệu tổ chức của tôi có gặp rắc rối nếu tôi viết điều này một cách công khai trên diễn đàn không?" Ngay cả khi câu trả lời không rõ ràng, hãy làm rõ nó trước. Việc đặt lại luôn rẻ hơn so với việc truy đuổi rò rỉ sau này.
Những lỗi thường gặp
- Sử dụng đầu ra mà không cần biên dịch/kiểm tra. “AI đã viết” không phải là lời biện minh; Mỗi đoạn mã được xác minh bằng cách chạy nó.
- Đưa ra yêu cầu không có ngữ cảnh. Nếu ngôn ngữ, phiên bản, đầu vào-đầu ra và các ràng buộc không được cung cấp, mã sẽ trở nên chung chung và thường không an toàn.
- Chia sẻ thông tin bí mật mà không cần suy nghĩ. Khóa API, mật khẩu và dữ liệu khách hàng không được tiết lộ khi chưa được xóa.
- Nhầm lẫn ngôn ngữ chính xác với độ chính xác. AI nói càng tự tin thì bạn càng nên cẩn thận; Giọng điệu tự tin không phải là bằng chứng.
- Giao quyền quyết định cho AI. Quyết định đưa vào sản xuất, an ninh, kiến trúc vẫn thuộc về kỹ sư; AI chỉ sản xuất vật liệu.
Tóm lại
AI tăng tốc các phần lặp đi lặp lại và tốn thời gian của công việc phần mềm: mã khung, soạn thảo thử nghiệm, thu hẹp lỗi, tài liệu. Tuy nhiên, quyết định và trách nhiệm vẫn thuộc về người kỹ sư. Mọi đầu ra phải vượt qua ba lớp kiểm soát (biên dịch/tĩnh, kiểm tra, nguồn). Viết lời nhắc có ngữ cảnh và xóa thông tin ẩn là hai thói quen chính mà chúng ta sẽ lặp lại trong mỗi bài của mô-đun này. Khi bạn sử dụng AI có kỷ luật, bạn sẽ đạt được tốc độ; khi bạn sử dụng nó mà không có kỷ luật, bạn sẽ mang theo lỗi và lỗ hổng trong quá trình sản xuất.
Nhiệm vụ ứng dụng
Chọn một nhiệm vụ viết mã nhỏ từ công việc của chính bạn hoặc từ một dự án tưởng tượng (ví dụ: chức năng xác thực). Đầu tiên viết một dấu nhắc yếu và nhận được kết quả. Sau đó áp dụng mẫu lời nhắc mạnh mẽ từ bài học này: thêm ngôn ngữ/phiên bản, hợp đồng đầu vào-đầu ra, các ràng buộc và kỳ vọng kiểm tra. Đặt hai bản in cạnh nhau và viết sự khác biệt. Sau đó, biên dịch đầu ra mạnh mẽ và kiểm tra nó với ít nhất ba trường hợp đặc biệt (null, 0/âm, định dạng không mong muốn) và ghi lại những gì bạn tìm thấy trong thử nghiệm nào.
danh sách kiểm tra
- [ ] Tôi đã thêm ngôn ngữ, phiên bản và hợp đồng đầu vào-đầu ra vào lời nhắc.
- [ ] Tôi đã viết "Đừng bịa đặt, hãy cho tôi biết nếu bạn không chắc chắn" và hạn chế về phạm vi.
- [ ] Tôi đã biên soạn/chạy mã, kiểm tra các cảnh báo tĩnh.
- [ ] Tôi đã thử nghiệm với ít nhất ba trường hợp đặc biệt.
- [ ] Tôi đã xác minh các API được sử dụng từ tài liệu chính thức.
- [ ] Tôi đã xóa mọi mã/thông tin xác thực bí mật hoặc công cụ doanh nghiệp đã sử dụng.
- [ ] Tôi khẳng định việc quyết định đưa vào sản xuất và bảo mật vẫn thuộc về con người.