Agent Skills in Claude Code and Visual Studio Code: Setup, Benefits, Risks, and a Step-by-Step Example
Do you remember your first pull request? The one where you spent nights writing code, tested it thoroughly, watched the tests pass, and then confidently clicked "Request Review"? Hours later, your screen filled with red comments from more experienced developers. Your code seemed perfectly fine to you, yet suddenly it was surrounded by questions and suggestions.
It's a familiar feeling for many developers entering a new team or learning their craft. And that uncomfortable moment, which feels like criticism at first, is actually the beginning of genuine professional growth. This is where the real learning happens.
When people first encounter code reviews, they typically view it as one thing: "catching bugs." And while that's certainly a component, it only explains half — maybe even less than half — of the actual value that code reviews provide.
The real power of code review lies in knowledge transfer and accelerated learning.
Think about this: the judgment and practical experience that a senior developer has built over 10 years of professional work can be efficiently transferred to a junior developer through a single, well-written PR comment. Few educational resources, lectures, or textbooks can match that pace of knowledge transfer. When someone reviews your code and points out that you're returning an Optional from your service layer instead of handling the empty case right there, you're not just learning a coding pattern — you're learning about defensive programming principles, responsibility boundaries, API design philosophy, and how to make your code harder to misuse.
The comment might take 30 seconds to write but saves hours of future debugging and weeks of eventual refactoring. This is educational leverage.
Consider this real example: a junior developer might write code that queries the database inside a loop:
List<Order> orders = orderRepository.findAll();
for (Order order : orders) {
User user = userRepository.findById(order.getUserId()); // N+1 problem
System.out.println(user.getName());
}The code works fine with 10 test orders. A senior reviewer catches this and explains: "This creates an N+1 query problem. With 1,000 orders in production, you'll execute 1,001 database queries instead of 2. The fix is using JOIN FETCH to load relationships upfront." That single comment teaches: database optimization, query performance implications, how scale changes behavior, the difference between development and production data volumes. The junior developer now knows to look for this pattern everywhere.
Research from IBM shows that fixing a bug discovered during development costs 15 times less than fixing it in production. If a bug costs $100 to fix during code review, it costs $1,500 to fix after deployment. But the cost isn't just money — it's customer trust, support tickets, downtime, and team morale.
Code review catches problems before they reach users. A security vulnerability found in review never makes the news. A performance bug caught during review never causes customer frustration. This prevention has massive value that's often invisible because the problem never happened.
There are entire categories of problems that become invisible when you develop alone. Your code is always read within the context of your own knowledge. The variable name `x` makes perfect sense to you. The missing exception handling seems fine because "that situation will definitely never occur" — at least not in your mental model.
But code doesn't exist in isolation. It will be read by you again six months from now, without any of the current context in your head. It will be read by a colleague on your team who has a different mental model of the system. It will be read by a new developer joining the team who is seeing your codebase for the first time, with no prior knowledge of the decisions you made or the constraints you were working under.
It is only in those moments of being read by fresh eyes that you truly see what you actually wrote: code that was written in a language only you could initially understand, full of implicit assumptions and contextual knowledge that wasn't captured anywhere.
Code review acts as a device that narrows this gap in advance. It surfaces these implicit assumptions before they become expensive bugs or force refactoring work down the line.
In recent years, many developers have started generating code with AI tools like GitHub Copilot, Claude, or ChatGPT. It's fast and convenient. The code appears clean and well-structured. It has already become an integral part of most developers' daily workflows. However, if you closely examine code created by AI, something peculiar emerges: It works. But something feels subtly uneasy about it.
AI creates "code that works." A skilled human reviewer creates "correct code" — and these are different things. AI might fetch all users from the database and filter them at the application layer using standard patterns it learned. An experienced code reviewer will immediately recognize the architectural problem and suggest filtering at the query level, which is essential for handling millions of users efficiently.
The ability to distinguish between code that "technically works" and code that is "truly correct in context" — this is the skill that good code review teaches and reinforces. This distinction is more important than ever in an age where code generation is fast and cheap, but thoughtful review remains irreplaceable.
The difference between a good reviewer and someone who is just beginning to learn code review is not simply experience or seniority. It's what they see when they look at code.
Beginner reviewers tend to focus on the surface level: indentation, variable names, spelling, formatting conventions. Senior reviewers read the intent: Is this function trying to do too much? Can this be written more simply without losing clarity? Will my colleague in six months understand what's happening here without needing to trace through the entire codebase?
When reviewing code, good reviewers automatically ask themselves three powerful questions:
Code review begins the moment you write code, not when you post the PR to your team. The entire process typically includes these stages:
This process isn't a formality to check off. It's an investment in both the immediate code quality and the long-term health of the codebase and team knowledge.
You don't need to master all the nuances and subtleties of code review to be helpful. When you open a PR next time, focus on just one of these areas. Ask about null values and how they're handled. Ask about edge cases that might break assumptions. Ask if the names and structure explain the intent clearly enough. Small, consistent practice compounds into genuine expertise over months and years.
This is the truth that many people miss: good reviews start not with grand knowledge, but with a small question, asked consistently, with genuine curiosity about understanding the code better.
Every time you review code, you're training pattern recognition. With ten reviews, you start recognizing common mistakes. With fifty reviews, you see architectural patterns emerging. With a hundred reviews, you anticipate failures before they happen.
Start with a checklist:
You don't learn all at once. Layer skills progressively. Each new skill builds on previous ones. By the time you're reviewing security, you've already internalized naming and clarity. When you get to performance, you understand architecture.
In teams with strong code review culture, the effect compounds. When junior developers see senior developers asking thoughtful questions and explaining decisions, they begin asking those questions too. When mistakes are treated as learning opportunities rather than character failures, people become more honest about uncertainty. When good patterns are explicitly praised, people recognize and repeat them.
Six months later, the entire team's average code quality has improved significantly. Not from one mandate or process change, but from accumulated patterns of behavior and continuous learning.
Comments
Post a Comment