Claude code icon for VSCode - an orange spider looking thing and the word Claude

My Experience with Claude Code: AI-Assisted Development in Practice — Bruce from Tennessee

This is Bruce from Tennessee with a summary of my experience working with Claude Code over the past several weeks. Claude Code, from Anthropic, is one of several AI tools that can be used to create software, as I’ll discuss in this post. The show notes contain a link to an overview of Claude Code in Anthropic’s documentation.

The problem to be solved is I want a data processing and analysis pipeline for a large data product with thousands of files. In particular, I want to understand the potential errors, inconsistencies, and uncertainties in this data product, with the hope of helping to produce an improved version. I’m not going into the details of that work here, as I’m collaborating with a graduate student who needs to be able to publish their work for their degree.

In this work, I’m using Claude Code to both help me improve my software development skills and develop this data pipeline. I’m doing this with the $17/month Claude Pro subscription, which I also use for a lot of other things.

What Claude Code Actually Is

Before diving into my experiences, let me clarify what Claude Code is and how it differs from other Claude products.

Claude is one of the leading AI tools, published by Anthropic. It can be thought of as three products: Claude Chat, Claude Code, and Claude Cowork. In fact, if you download the Claude desktop app for macOS or Windows, you’ll see three tabs: one each for Chat, Code, and Cowork.

Claude Chat is what most people are familiar with, particularly through the web interface at https://claude.ai.

I have used Claude Cowork, but I’m not going to go into it here. It is a desktop tool that can be used to automate file and task management. As an example, I used it to extract the text from about 40 different PDF files in a folder on my computer and give me that text in markdown files in that same folder.

With Claude Chat, you ask questions and get answers. It is great for writing standalone scripts, explaining concepts, debugging specific snippets or problems, and generating code that you’ll paste into an editor.

You can do a lot of that with Claude Code as well, but its primary use is as an agent. You describe what you want to build, and it writes code, modifies files, runs commands to test the code, and iterates until it thinks it has finished building what you asked for. It can build new projects as well as help you understand and extend existing projects. It is designed for multi-file projects with complex dependencies and structure. It builds and runs tests, like what Bart described in Programming By Stealth episodes 33, 34, and 135. You tell it the programming styles and conventions you use, like whether to use spaces or tabs, and it will make sure that’s done consistently across the entire project.

As discussed in Anthropic’s Claude Code overview documentation, Claude Code can be used from the terminal, a Visual Studio Code extension, the desktop app, or a web interface. Given that the data pipeline I’m building will run on my computer, the web interface didn’t make sense for me, and I didn’t want to give Claude Code the kind of direct access to the GitHub repository it requires. My experience then, is primarily using the Terminal interface and the Visual Studio Code extension.

I’m focussing here on building a new project, but I’ve used Claude Code to help me analyze other people’s work. In those cases, I cloned the repository from GitHub, opened that directory in VS Code, started Claude Code using the extension, had Claude analyze the code in that project and give me a summary of what it found. Then I started asking questions. Claude was really useful helping me understand how those software packages did what they did. That was particularly true for a project where the documentation was rather sparse.

My Problem to Be Solved

While I have made my living as a software developer in ages past, I haven’t done this scale of work in two decades, and I’ve never done it in Python — which is a really good language for data science and this kind of project. While I’ve followed a lot of the evolution in software development over the decades, and I’ve managed dozens of software developers, that’s different than actually putting them into practice. With Claude Code, I have a tool that’s helping me understand how those practices are applied, as well as a tool that’s helping me build what I want. It’s even helping me learn how to more effectively use Claude Code itself.

My Observations

I have four key observations after several weeks of use:

  1. Time efficiency: Tasks that would take me days to weeks now take hours. But this is AI-assisted development—I’m still driving the process.

  2. Quality improvement: Because iteration is easier, I often don’t stop at the first working solution. I can explore alternatives, ask about tradeoffs, and refine the implementation. The end result is better than I’d produce alone and better than Claude Code produced on its first pass. In addition, writing and running tests is tedious. Using Claude Code for this means I have much better testing than I would have bothered with if I was writing things by hand.

  3. Active learning: I ask extensive questions and challenge Claude’s answers. This questioning process is teaching me how to effectively apply modern best practices and improving my Python understanding.

  4. Mixed capability: Claude can produce brilliant solutions and make baffling mistakes. So, I review everything carefully. Come to think of it, at least some of that’s true about me too. At least the baffling mistakes part.

With that summary up front, I’ll dive into some details.

How Claude Code Works: Command Line and VS Code

There are multiple ways to install Claude Code. I chose to use Homebrew with brew install claude-code. I then launch it from my terminal window by navigating to the project directory and typing claude. This gives me a prompt where I type my questions and requests in natural language. Claude uses the code base and the CLAUDE.md file as context — more on that in a minute –, and either answers my question or plans and executes its response to my request. I see answers and reasoning in the terminal window. I also get prompts asking for permission for Claude to modify files and run specific commands, as well as questions that Claude needs answers for, as it discovers things it hadn’t asked about before.

When I started using Claude Code, the other installation path required installing node.js and was a bit more complex. In the few months since, they’ve released a cleaner native installer which autoupdates. With homebrew, I need to run brew upgrade often, as Claude Code is updated multiple times a week. I may well uninstall the homebrew version and switch to that native installer.

The VS Code extension provides an alternative interface, but the same capabilities. In this case, Claude Code is a tab in VS Code. One really cool feature is that I can highlight a section of code in another tab, and then ask Claude to “explain this” or “why did you choose this approach?”

The CLAUDE.md File: Project Context

I mentioned the CLAUDE.md file, which Claude Chat and Claude Cowork do not use. This is a markdown file that Claude Code reads every time you start a Claude Code chat. You can think of it as a long prompt that Claude Code gets automatically run at the start of a chat to guide Claude’s response and actions. The most common place for a CLAUDE.md file is in the root folder for a project. This is a project-specific use, and this CLAUDE.md file contains information about the project and instructions for Claude Code to follow. If this was a multi-developer project, we would all be sharing the same project-specific CLAUDE.md file. For my project, the CLAUDE.md file specifies the overall project goals, the version of Python I’m using, that I want to follow the PEP 8 Python style guidelines, and how tests should be constructed with pytest, and the process I want to follow for merging code. It also describes the main data sources and the file structure for the project. This is all context that helps keep Claude Code on the track I want it to be on and ensures consistency in development style and practices. Again, this is something that I co-wrote with Claude Code.

You can also have a CLAUDE.md file in your user home directory, which is a developer-specific set of instructions and preferences. I’ve not gone down that path yet, but I could, for example, specify what I want for the level of detail in explanations and my preferences for editors, linters, and package managers. Where the two files conflict, Claude Code is at least supposed to use what’s in the project-specific file.

There are lots of articles and videos about the CLAUDE.md file. I particularly like the article from builder.io.

Tokens and Rate Limits

Claude has multiple plans, which give you different sessions and weekly quotas. A session starts when I ask any of the Claude tools — Code, Cowork or Chat — to do something and I don’t already have an active session. For Claude Pro in March 2026, the session runs for the next 5 hours. Session quotas and lengths vary by plan and will likely change in the future. At the end of that 5 hours, my session quota resets and I can start a new session. I’ve absolutely hit those session limits, particularly when I’m working on more complex requests. When that happens, I can wait until the session ends or pay for extra usage. Most of the time, I just wait, since I’m not on a deadline. This session and its limits are across all of the Claude products — Chat, Code, and Cowork. I’ve run into this same session quota just using Claude Chat when I was asking a lot of complex questions. As for the weekly limit, all I can say is I’ve never come close to hitting it.

There are tools to help you monitor your Claude usage. I selected an open-source tool called Claude Usage Tracker based on its GitHub stars and activity. That gives me a menu bar widget showing where I am on the current session quota, as well as the amount of time until the session resets. There are multiple ways to monitor this within Claude Code, the Claude Desktop app, and the Claude.ai web interface, but the menu bar widget is simple and does all I need.

Iterative Feature Definition

Let me walk through how I used Claude Code to define and develop something I needed my data pipeline to do.

To start, I wrote a GitHub issue describing what I wanted. I asked Claude to review what I wrote and identify questions about implementation. It asked about error handling, edge cases, and integration points I hadn’t considered. I answered those questions and had it rewrite the issue incorporating my answers.

Reading that revised description helped me see additional requirements and a few mistakes in Claude’s understanding. I edited the issue to address those. I asked Claude to review again. It asked more questions. Another iteration of updates.

After three rounds, the issue description was substantially more complete than my initial version. This iterative process -— where Claude asks questions that force me to think through details -— produces better specifications than I’d write alone.

My Development Workflow

The next step is where the agentic part of Claude Code really comes into play. Once I was happy with the GitHub issue describing what I wanted, I simply gave Claude Code the instruction to “Implement the feature in issue #6.” It went off and thought for a bit, and then made changes to about 15 files to implement that feature, including creating a bunch of unit tests and some integration tests. It then ran the tests, diagnosed the failures, and then updated the code so that the tests pass. Because of the iteration on the specification, what Claude Code was really close to what I wanted and only required minor edits on my part.

While I could ask Claude Code to stage and commit the changes, I’m not doing that in this project. If you’re not familiar with git workflows, a file that’s been changed is “unstaged”. You tell git to stage a file through the git add command, which tells git that this file is part of the next batch of changes you want to commit to the repository. For each modified file, I read through the changes. If something’s unclear or maybe wrong, I ask Claude to explain. I might ask Claude to fix a problem, or I might fix it manually. Once I understand and agree with all of the changes in a file, I stage that file and move on to the next one. Once I’ve reviewed everything, then I work with Claude to write the commit message and commit the changed files into the repository.

This review process serves two purposes: quality control and learning. I’m verifying the code is probably doing what I want while absorbing patterns and techniques I can apply later.

Asking About Tradeoffs

One of the questions I ask Claude Code quite often is “What are different approaches for achieving this outcome, and what are the tradeoffs?”

Claude will present multiple implementation options -— maybe a simple approach that works but scales poorly, a complex approach that handles edge cases, and a middle ground. It explains performance implications, maintainability concerns, and dependencies for each.

This changes how I work. Instead of implementing the first solution I think of, I explore the design space. I make informed decisions about tradeoffs rather than discovering problems later. And I don’t rely on just Claude Code for that decision. I’ll often follow up on links I ask for about the tradeoffs, do my own Internet searches, or ask a different AI the same question.

Learning Resources

There are extensive tutorials available for working with Claude Code. I recommend the Claude Code tutorials on YouTube by Net Ninja and Leon van Zyl. I have also found Anthropic’s official documentation to be quite useful.

Also: ask Claude Code itself. Claude Code has functionality specifically designed to teach you better ways to use the tool.

Closing Thoughts

There’s a lot more I could say, but this article is already longer than I was targeting.

Claude Code is one option among several AI development tools. I chose it because Anthropic appears focused on privacy and it is one of the leaders for this kind of use. I was also already using Claude Chat extensively and I have a paid Claude Pro plan. The fact that my father’s name is Claude doesn’t hurt either.

Is it the best tool? Today? Maybe, maybe not. Next month? Maybe, maybe not. The AI development space moves quickly. It’s a good tool, and I think it’s likely to remain among the leaders, which is good enough for me.

What I can confirm: I’m accomplishing in hours what would otherwise take days, if not weeks. I’m learning modern development practices while building real software. And I’m producing higher-quality results because the tool makes iteration tractable.

Claude Code makes mistakes. I catch at least some of them during code review. It also produces insights I would have missed. It’s a partnership, not autopilot.

If you’re a developer — whether experienced and returning after years away, or newer to the field — I recommend exploring AI-assisted development. The specific tool matters less than learning to work effectively with these capabilities.

Thanks, and may you find beauty in the world around you.

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top