Dancing with AI: My Month with Claude Code

Published on

Almost without noticing, I’ve already spent a full month exploring Claude Code. During this time, it has quickly become the new darling of developers everywhere, with discussions about Claude Code flooding my social media timeline. When a fellow developer on Discord asked me to share my thoughts on Claude Code, I thought this would be a perfect opportunity to reflect on my experience with it, as well as how AI has transformed my development work over the past two years.

I should note that this article doesn’t cover specific AI usage techniques—it’s purely my personal reflections on AI-assisted programming.

From ChatGPT to Claude Code

While AI has a long history, it was ChatGPT that first made most developers truly appreciate its potential as a programming powerhouse. I still vividly remember my astonishment when I first saw the code suggestions provided by ChatGPT. As a self-taught hobbyist programmer without formal training, it felt like suddenly having a “professional” colleague available for consultation at any time—a tremendous boost to my confidence.

Actually, before ChatGPT stole the spotlight, GitHub Copilot had already demonstrated AI’s potential in programming assistance. Early Copilot felt more like a smart “code completion tool” that could generate simple functions based on comments, improving efficiency to some degree but not significantly enhancing my personal abilities. With the introduction of Copilot Chat, it evolved into a comprehensive assistant combining automatic code generation, real-time communication, and context awareness. At this point, developers were both excited and anxious, with “AI will replace programmers” becoming the talk of the town. But as experience accumulated, this “replacement theory” gradually subsided, and people began to realize that AI, like many technological tools throughout history, would ultimately become an enabler rather than a replacer.

Just when I thought GitHub Copilot had an insurmountable advantage with Microsoft’s deep pockets and vast code repositories, Cursor gave me a pleasant surprise. Though it appeared to be just a combination of VSCode and Copilot on the surface, Cursor’s deeper integration, superior small models, and pioneering support for Claude’s large language model significantly enhanced its intelligence. Its code completion developed an uncanny rapport with developers, consistently anticipating exactly what you intended next. And just when I thought Cursor would be my long-term development companion, Claude Code appeared and shattered my assumptions once again.

When I first saw Claude Code’s introduction, I wasn’t impressed. I found it difficult to imagine programming without the comfort of an IDE, relying solely on the terminal. But after trying it for just a few hours, I upgraded from Claude Pro to Max without hesitation. Like the new tools before it, Claude Code once again revolutionized my understanding of AI-assisted programming, offering not just a new way to learn and code, but also helping me effortlessly complete many previously tedious tasks.

Claude Code: Not Pretty, But Pretty Good

While Claude Code abandons the IDE interface, its core logic isn’t fundamentally different from VSCode + Copilot or Cursor. You could even think of it as the ultimate evolution of Cursor’s Agent mode. Claude Code is like a master from the command-line era, taking simple descriptions from users and “automatically” executing a series of operations through built-in tools, system utilities, and user-configured services to achieve your goals.

For example, if you want Claude Code to understand or summarize your current project, just type: “Tell me about this project.” It will automatically scan the code in the current directory, use command-line tools for filtering and analysis, and present organized conclusions. Thanks to its larger context capacity, it dramatically reduces the hassle of manually providing information.

The biggest impact of Claude Code is offering the possibility of completing development tasks with almost no direct code contact. This new experience has shocked developers already familiar with various AI tools—who knew you could “write” code this way?

Claude Code’s near-”fully automatic” processing capability isn’t limited to programming assistance and can be applied to other fields. Google’s recently launched Gemini CLI may perform even better in non-programming domains.

You’re the Programming Subject, Not a Spectator

Recently, social media has been filled with developers showcasing how Claude Code automatically completes projects and sharing various methods to better “squeeze out” its potential. I’ve even seen claims that if you’re not keeping Claude Code running while you sleep, you’re not fully leveraging its value, missing out on the true essence of “Vibe Coding.”

To be honest, while I believe Claude Code is capable of independently completing some development work, at least for me personally, in the vast majority of cases, I still prefer to supervise and guide its operations, actively intervening. There are many specific reasons for this.

For instance, despite Claude Code’s large context capacity, its global perspective remains insufficient. Careful observation reveals it often gets stuck on laughably simple problems. It might stubbornly insist an enum value is .middle instead of .center, repeatedly trying the wrong approach until a compilation error finally makes it realize: “I used the wrong enum value, let me look up the correct definition.” Such issues are commonplace.

Moreover, while AI-written code appears rigorous, it lacks flexibility and creativity. If you let it independently implement a feature, the result might work, but the solution often feels awkward or suboptimal. Therefore, I usually write a basic version or clear outline first, then let AI optimize and refine it. Programming is like writing—both unconsciously reflect personal style. The code AI writes independently might look “better,” but it’s not necessarily what I want.

Additionally, while AI knows many APIs, without abundant mature examples to learn from, it can’t truly master them. Often, Claude Code will blindly try various “brute force” solutions when solving problems, switching between different approaches. At such times, simply pressing ESC and providing a clear hint about the right direction will quickly lead to success. Without intervention, it might appear to work diligently for dozens of minutes yet achieve nothing.

Therefore, over the past month, I’ve consistently used Claude Code with my IDE open, actively intervening more than 80% of the time to get the results I want faster and more accurately.

Although tools like Copilot, Cursor, and Claude Code have dramatically reduced how often I type code, I still spend at least 40% of my AI usage time in conversation with them. The main purpose of chatting with AI isn’t simply seeking solutions, but organizing my own thoughts through interaction and having it help validate my ideas. Even when using Cursor, I mostly disable Agent mode (using Manual mode), and even when using its code snippets, I prefer typing them manually to maintain muscle memory and make adjustments according to personal preferences.

Don’t Let Vibe Coding Hinder Your Technical Growth

“Don’t Let Vibe Coding Hinder Your Technical Growth” was the title of my newsletter issue #83. In the comments, a reader left this message:

Growing until you get laid off by some company? Technology has always been just a tool—for work, for making money, for hobbies, for realizing dreams. Once you understand these underlying goals and their driving forces, then decide where to focus your limited energy, most people will find that technical growth is just one path among many. I hope readers won’t be affected by the anxiety created by those self-imposed limitations. Under technological change, just see the destination clearly and adjust your path accordingly. A programmer’s destination was never just about becoming a so-called expert.

Perhaps in this reader’s eyes, “growth” is limited to the programming field. But what I want to express is that in today’s era of rapid large model development, early AI adopters might gain significant short-term advantages. However, as AI becomes more widespread (not just in programming), today’s small leads from being first will eventually disappear as information gaps close.

AI tools tend to create dependency, especially for those with weaker self-control. Over time, this can even lead to the degradation or loss of original skills. Therefore, when using AI, never see it merely as a tool for quickly completing immediate tasks—instead, use AI to enhance your own capabilities. Only then, when the moment of “AI replacement” truly arrives, will you avoid being the one replaced.

If I had to choose between using AI to work faster or using AI to improve myself better, I would choose the latter without hesitation.

If this article helped you, feel free to buy me a coffee ☕️ . For sponsorship inquiries, please check out the details here.

Weekly Swift & SwiftUI highlights!