AI Pair Programming: Khi nào nên tin AI, khi nào nên nghi ngờ?
Làm việc với AI như Copilot hay Cursor giống như pair programming với junior dev. Đây là những nguyên tắc để không bị AI dẫn vào đường cụt.
Tuần trước, tôi pair programming với một junior dev. Anh ấy suggest một đoạn code, tôi hỏi: “Em chắc chắn không?”. Câu trả lời: “Copilot suggest đấy anh.”
Đó là lúc tôi nhận ra: Nhiều dev đang tin AI một cách mù quáng.
AI Pair Programming không phải là “ngồi nhìn AI code rồi bấm Tab”. Nó giống như làm việc với một junior dev rất thông minh nhưng thiếu kinh nghiệm.
Đây là những nguyên tắc tôi rút ra sau 2 năm làm việc với AI.
Nguyên tắc 1: AI giỏi Pattern, yếu Context
Khi nào NÊN tin AI
AI rất giỏi với những pattern lặp đi lặp lại:
1. Boilerplate Code
// Bạn gõ:
public function store(Request $request)
{
// AI sẽ suggest chuẩn:
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
]);
$user = User::create($validated);
return response()->json($user, 201);
}
Độ tin cậy: 90%. Đây là pattern cơ bản, AI suggest đúng hầu hết.
2. Test Cases
// Bạn viết hàm:
public function calculateTax($amount) {
return $amount * 0.1;
}
// AI sẽ suggest test:
public function test_calculate_tax()
{
$result = $this->calculateTax(1000);
$this->assertEquals(100, $result);
}
Độ tin cậy: 85%. AI tốt với happy path, nhưng hay quên edge cases.
Khi nào KHÔNG NÊN tin AI
1. Business Logic phức tạp
// Tính commission cho sales (logic thật của một công ty tôi làm):
public function calculateCommission($sales, $tier, $month)
{
// Nếu tháng 12, tier VIP được bonus x2
// Nếu sales > 100M, được thêm 5%
// Nhưng nếu là tháng đầu tiên, chỉ tính 50%
// ...
}
AI sẽ suggest một đoạn code “hợp lý”, nhưng sai hoàn toàn vì nó không biết business rules của bạn.
Độ tin cậy: 20%. Chỉ dùng AI để draft structure, phải tự viết logic.
2. Security-critical Code
// AI có thể suggest:
public function resetPassword(Request $request)
{
$user = User::where('email', $request->email)->first();
$user->password = bcrypt($request->password);
$user->save();
}
Vấn đề: Thiếu token verification, thiếu rate limiting, thiếu email confirmation.
Độ tin cậy: 30%. Luôn phải review kỹ code liên quan authentication/authorization.
Nguyên tắc 2: Verify trước khi Accept
Red Flags phải dừng ngay
1. AI import library lạ
// AI suggest:
import { obscureLibrary } from 'some-random-package';
Hành động: Google library đó trước. Kiểm tra:
- Có bao nhiêu downloads/week?
- Lần update cuối khi nào?
- Có security issues không?
2. AI dùng API/method bạn chưa thấy bao giờ
// AI suggest:
$user->magicMethod()->doSomething();
Hành động: Cmd+Click vào method đó. Nếu không tồn tại → AI đang hallucinate.
3. AI suggest code “quá hay”
Nếu AI suggest một đoạn code mà bạn nghĩ: “Wow, sao hay vậy, tôi không nghĩ ra được”, hãy nghi ngờ.
Có thể:
- Code đó có bug tiềm ẩn
- Code đó dùng feature deprecated
- Code đó không phù hợp với architecture của bạn
Nguyên tắc 3: Dạy AI hiểu Codebase của bạn
AI không tự động hiểu project của bạn. Bạn phải “dạy” nó.
Cách 1: Naming Convention nhất quán
Bad:
// File 1:
public function getUserData() {}
// File 2:
public function get_user_info() {}
// File 3:
public function fetchUser() {}
AI sẽ bối rối và suggest random.
Good:
// Tất cả đều dùng convention giống nhau:
public function getUser() {}
public function getOrder() {}
public function getProduct() {}
AI sẽ học pattern và suggest đúng.
Cách 2: Comment ở những chỗ “weird”
public function calculatePrice($product)
{
// IMPORTANT: Giá sản phẩm A luôn cố định 100k theo hợp đồng với nhà cung cấp
// Không được dynamic pricing
if ($product->id === 'A') {
return 100000;
}
return $product->base_price * $this->getMultiplier();
}
Comment này giúp AI (và đồng nghiệp) không suggest “refactor” đoạn code này.
Cách 3: Dùng .cursorrules hoặc .github/copilot-instructions.md
# Project Rules
- Always use Repository Pattern for database access
- Never use DB::raw() without explicit permission
- All API responses must use ApiResource
- Follow PSR-12 coding standard
AI sẽ đọc file này và suggest code phù hợp hơn.
Nguyên tắc 4: AI là Junior Dev, bạn là Senior
Hãy treat AI như một junior dev rất năng suất:
Junior Dev giỏi:
- Viết boilerplate nhanh
- Tìm syntax mới
- Suggest test cases
Junior Dev yếu:
- Hiểu business logic
- Đưa ra architectural decisions
- Biết trade-offs
Workflow tôi dùng:
- Tôi thiết kế architecture (AI không làm được)
- AI viết boilerplate (getter, setter, CRUD)
- Tôi viết business logic (AI chỉ assist)
- AI suggest test cases (tôi bổ sung edge cases)
- Tôi review tất cả (AI không tự review được)
Nguyên tắc 5: Đừng để AI phá vỡ Flow
Anti-pattern: “Tab Zombie”
Bạn ngồi đó, AI suggest, bạn bấm Tab. AI suggest tiếp, bạn bấm Tab.
Vấn đề: Bạn không hiểu code bạn đang viết.
Giải pháp: Nếu AI suggest > 5 dòng, hãy đọc kỹ trước khi Accept. Nếu không hiểu, đừng Accept.
Pattern tốt: “AI Draft, You Refine”
// AI suggest:
public function processOrder($orderId)
{
$order = Order::find($orderId);
$order->status = 'processed';
$order->save();
}
// Bạn refine:
public function processOrder(int $orderId): void
{
$order = Order::findOrFail($orderId);
if ($order->status === OrderStatus::PROCESSED) {
throw new OrderAlreadyProcessedException();
}
$order->markAsProcessed();
event(new OrderProcessed($order));
}
AI cho bạn 70%, bạn bổ sung 30% còn lại (error handling, events, type hints).
Kết luận: Trust, but Verify
AI Pair Programming giống như lái xe có cruise control:
- Cruise control giúp bạn bớt mỏi chân trên cao tốc
- Nhưng bạn vẫn phải cầm vô lăng
- Và sẵn sàng phanh khi có tình huống
Quy tắc vàng:
- Tin AI với boilerplate và patterns
- Nghi ngờ AI với business logic và security
- Luôn review trước khi Accept
- Đừng bao giờ commit code mà bạn không hiểu
AI không thay thế được bạn. Nó chỉ làm bạn nhanh hơn, nếu bạn biết cách dùng.
Khi nào bạn NÊN tin AI suggestion 100%?
Thử Thách Kiến Thức Lịch Sử?
Khám phá hàng trăm câu hỏi trắc nghiệm lịch sử thú vị tại HistoQuiz. Vừa học vừa chơi, nâng cao kiến thức ngay hôm nay!