There is a lot of noise around AI right now. Every week there seems to be a new tool, a new claim, a new startup promising to replace developers entirely. We have been watching it closely, and more importantly, we have been using it. Not to replace anyone, but to make our development team sharper and more efficient. At Twilo, we have been integrating Claude into our coding workflow for a while now, and we wanted to be honest about what that actually looks like day to day. It is not magic. It is not a replacement for experience. But used properly, it is one of the most useful tools we have added to our process in years.
The Paint Roller and the Brush

The best way we have found to describe using Claude Code is this: it is like using a paint roller. You can cover a lot of ground quickly, and it does a genuinely impressive job of laying down the bulk of the work. But you still need to go in with the brush to do the detailing. That is the human touch, and it is the part that makes the difference between something that works and something that works well.
A paint roller will never cut in around a window frame neatly. In the same way, AI-generated code will rarely account for the subtle decisions that come from understanding the full context of a project. Things like naming conventions that match the rest of the codebase, handling an edge case that only makes sense if you have spoken to the client, or structuring something in a way that another developer can pick up six months later without pulling their hair out.
Sometimes a Junior, Sometimes an Expert
One of the things that has surprised us is how flexible Claude is depending on how you approach it. Sometimes it makes sense to treat it like a junior developer. Hand it the tedious, repetitive tasks that would otherwise eat into your afternoon. Things like scaffolding boilerplate, writing unit tests for straightforward functions, or converting data between formats. It frees us up to focus on the more important and nuanced problems that actually require human decision-making.
Other times, it makes sense to flip that dynamic entirely and treat Claude like an expert. We use it as a second pair of eyes, getting it to check coding styles against industry standards, flagging anti-patterns we might have missed, or trying to identify subtle bugs that have slipped through. It is remarkably good at catching things that are easy to overlook when you have been staring at the same code for hours.
A Surprisingly Good Spec Checker
If you have ever worked on a large project, you will know that specifications can be big, detailed documents. Even when they are well written, related details are often spread across different sections. You might have a requirement on page four that directly impacts something on page twelve, and keeping all of that in your head while building is a challenge.
Claude is really good at reading a project specification and checking it against the codebase to see if what is being built is accurate and nothing has been overlooked. We have started feeding it our specs regularly, and it picks up on gaps and inconsistencies that are easy to miss when you are deep in the build.
On a related note, it is also brilliant at making a large document very queryable. Rather than scrolling through a fifty-page spec trying to find that one detail about how a particular field should behave, you can just ask. Claude pulls together the relevant details from across the document and gives you a clear, accurate answer. It saves a surprising amount of time, especially on complex builds where the spec is a living document that gets updated throughout the project.
Hunting Down Bugs Across the Stack
Debugging complicated issues is one of the most mentally taxing parts of development. The kind of bugs that span both front-end and back-end, where you are tracing a problem through multiple layers, reading documentation, and trying to hold the entire flow in your head at once. It is time consuming, and it can drain your focus for the rest of the day.
We have had a lot of success explaining what we are doing to reproduce an issue, giving Claude any error messages we are seeing, and having it pin down and fix the error. It does not get it right every time, which is why we always set it to ask for permission before making changes. Without that safeguard, it can sometimes come up with a solution that either makes your code less maintainable, or you can tell is not actually solving the real underlying issue. It might patch the symptom rather than fixing the cause. So a human always needs to be there to oversee the change and make sure it makes sense in the wider context.
But when it does get it right, and it does more often than not, it can save you hours of digging. That is time you get back to spend on the work that actually moves a project forward.
It Does Not Get Everything Right
We want to be upfront about this. Claude is not infallible. Everything it produces needs to be reviewed. It can misunderstand context, make assumptions that do not quite fit, or suggest an approach that technically works but is not the best solution for the situation.
That said, it is surprisingly good more than half the time. And even when it is not perfect, the output is usually close enough that refining it is still faster than starting from scratch. The net result is a genuine time saving and, we believe, better code overall. Having a tool that encourages you to review and think critically about every change is no bad thing.
It Is Only a Tool
There are people out there using AI to run entire virtual development companies. No human developers, just prompts and generated code. From what we have seen, we believe the end product in that scenario would be inferior. Code that passes a basic check is not the same as code that is maintainable, scalable, and built with a real understanding of the problem it is solving.
AI is a tool. A very good one, but still a tool. The value it brings depends entirely on the person using it. A paint roller in the hands of someone who does not know how to prep a wall is just going to make a mess faster. The same applies here. Claude makes experienced developers more productive. It does not turn someone without that experience into a developer.
Better Code, Not Just Faster Code
We believe that using AI as both a coding tool and an auditor lets us create better code. Not just faster, but genuinely better. It catches things we might miss. It handles the repetitive work so we can focus on the decisions that matter. It gives us a second opinion when we need one, and it makes large, complex projects more manageable.
The key is that a human is always in the loop. Every line of code gets reviewed. Every suggestion gets questioned. The AI does not ship anything on its own. That is what separates using AI responsibly from hoping it will do the job for you.
If you are curious about how we work, or you have a project that could benefit from a development team that is constantly looking for ways to work smarter, we would love to hear from you.