kleiber.me
Five Observations Working with Claude Code
Excerpt
### It Enables Me to Do More but Makes Me Lazy and Less Confident I fully understand the issues that many take with actual *vibe coding*. At least for now, I’m relatively sure that in the hands of people without any software development experience, tools like Claude Code will do more harm than good. They produce functional products, but these products, more often than not, are unmaintainable, and we don’t even have to talk about the security implications. … ### It Finds Hacky Ways to Solve Complex Problems In my experience, code (and documentation) reviews are crucial when working with Claude Code. While, at least in my opinion, it rarely fails to create a working solution, it very often finds extremely overengineered and hacky solutions to relatively simple problems. Hence, “it works as intended” is most definitely not a good metric for AI generated code. Instead, I’m constantly reviewing the changes Claude Code introduces and “solve the underlying issue and don’t create a hacky solution” has become a staple of sorts. This also leads to a situation in which keeping the project maintainable becomes an even more constant task than it already is. The moment I start using Claude Code, especially for larger features, I’m likely introducing new maintainability issues. Of course, this is a trade-off and through good prompting and reviews, these issues can be reduced quite well. … Put differently: Despite using `CLAUDE.md`, spec files, etc., I am having a really hard time keeping Claude Code within the scope of what I want it to do. ### It Gets Stuck in the Current Context and Ignore the Rest Generally speaking, it’s a good idea to keep Claude Code’s context as focused as possible. I usually reset the context after each completed task or feature. If done consistently, many common issues are gone! However, a related, and significantly trickier, challenge is the fact that Claude Code often only selectively looks at files and parts of the project. For instance, when I request a refactor of existing code based on a recent change (e.g., a change in data structures), there’s a good chance it will only refactor about 1/3 of the affected files, all while claiming it has reviewed the entire project with utmost confidence. Although this issue can be mitigated through the use of tools, I simply don’t trust Claude Code to consider the whole project, even with a relatively small codebase.
Related Pain Points
Selectively ignores parts of codebase during refactoring
6Claude Code refactors only a portion of affected files while claiming to have reviewed the entire project, missing related code that needs updates and causing inconsistent implementations.
Generates over-engineered and hacky solutions
6Claude Code frequently produces overly complex, hacky implementations for relatively simple problems, creating technical debt and maintainability issues even when code is functional.
Difficult to keep Claude Code within task scope
5Despite using specification files and documentation, Claude Code frequently deviates from intended task scope and makes changes beyond what was requested.
Requires experienced developers to guide and validate
5Claude Code generates convincing but flawed code that novice developers cannot identify as problematic; requires experienced developers to guide it, validate output, and prevent it from generating nonsensical or backwards logic.