Supercharging Cloud Development: How Our 50-Engineer Team Cracked the Claude Code
At MadAppGang, we find it frustrating to see talented developers using Claude Code merely as a basic autocomplete function. You've got this magical eight-ball that can literally design entire systems, and you're asking it to fix syntax errors.
Our team of 50 engineers just finished migrating the entire cloud infrastructure. What should have been an 18-month death march took only 8 weeks. We're not geniuses, we just realised something that everyone else is missing about Claude Code.
The token trap: How context windows affect performance
Do you remember that moment when Claude starts producing complete rubbish? When the quality of the code drops off a cliff and you get responses that make no sense?
That's not just Claude having a bad day. It's actually you sabotaging your AI assistant by accident.

The Claude model, developed by Anthropic, has a large context window, but its performance drops quickly when overloaded.
This's what's actually happening behind the scenes. Every conversation with Claude uses a context window of 200,000 tokens. That sounds huge, right? However, when you activate ultrathink mode, Claude uses 32,000 tokens just to process your request. Add in some tool calls, file searches, and your previous conversation, and you're suddenly using 50% of your capacity.
According to research from Chroma DB, model performance starts to deteriorate significantly once you reach that 50% mark. The model literally can't pay equal attention to everything anymore. It's like trying to remember a conversation while someone's reading you the phone book.
We learned this the hard way. One of our junior developers spent three hours debugging why Claude kept creating duplicate authentication logic. It turned out that he had been in the same conversation for two hours with ultrathink mode activated. The context had become so distorted that Claude couldn't remember what it had already built.
Smarter AI use: Rethinking the ultrathink mode trap that everyone falls into
Let’s show you something that has transformed the way our entire team uses Claude Code. Most developers discover ultrathink mode and embrace it wholeheartedly. "More thinking equals better code", right? Dead wrong.
Ultrathink burns 32,000 tokens of thinking space. 'Think harder' uses 16,000. Regular thinking uses 4,000. You'd assume ultrathink would always produce the best results. But here's what we discovered after thousands of hours of usage:
Using ultrathink mode is like using a sledgehammer to hang a picture frame. Sometimes, it's necessary for complex architectural decisions, challenging debugging sessions, and system design problems. But for most tasks? You're just wasting tokens and reducing your context quality.

Our new rule: Start with regular think mode. Only escalate when you hit a wall. Save ultrathink for when you're genuinely stuck and need Claude to explore every possible angle.
One of our senior engineers put it perfectly: "It's not about how hard Claude thinks. It's about how clearly you communicate what you need."
Claude as a colleague: Our subagent strategy that tenfolded our output
This is where things get interesting.
Rather than having one big conversation in which Claude tries to juggle everything, we approach it as if we were running an engineering team. After all, you wouldn't ask one developer to handle database architecture, front-end design, and DevOps simultaneously, would you?
Here's our playbook: when working on a complex feature, we create specialised subagents. Each one gets a fresh context window and a laser-focused mission. The main Claude instance acts as the orchestrator, like a technical lead managing a team.
We needed to implement end-to-end encryption across our entire messaging system. Rather than using one mega-prompt, we created:

- The cryptography specialist subagent is responsible for designing the encryption scheme.
- A database subagent will handle secure key storage.
- A front-end subagent is needed for UI implementation.
- A testing subagent will validate everything.
Each subagent can work in depth without affecting the main context. The orchestrator, Claude, pulled it all together into a cohesive implementation.
The difference in code quality was like night and day. There were clean abstractions, no duplication, and proper separation of concerns. It resembled code that a senior team would produce.
These techniques are not just theoretical. They are proven use cases that have helped us to deliver production-grade features in weeks.
Creating a project index: The AI-friendly code mapping hack for cloud development
This one trick saves us 10 hours per developer per week.
We created a tool called the Project Index, which is essentially a smart map of our entire codebase. It's not the actual code, but rather a minified representation showing how everything connects. It's like having Google Maps for your project, rather than trying to navigate by reading every street sign.
Every time a file changes, the index is updated automatically. It tracks:
- import statements and dependencies
- method signatures and return types
- file relationships and module boundaries
- API contracts between services

Instead of searching through thousands of files, Claude reads this index first when he needs to understand our codebase. It instantly knows where everything is located and how everything is connected.
Previously, Claude would sometimes create new utility functions that already existed elsewhere. Even worse, it would modify one file without updating its dependencies. Now? It navigates our codebase as if it were a developer who had been on the team for years.
The setup takes about 5 minutes. The time saved? Immeasurable.
Local docs for global results: our Claude’s documentation trick
Want to know the first thing we do on any new machine with Claude Code?
Could you install the local documentation?
Claude Code doesn't have instant access to its latest documentation. When you ask about new features or capabilities, it has to fetch the information from Anthropic's website, parse the HTML, and convert it to markdown. This whole process eats up tokens and time.
We mirror the docs locally and keep them synced. One command:

Claude is instantly aware of every new feature and update. There's no need for web fetching or token waste – just instant answers.
This may sound minor, but it fundamentally changes how you can use the tool. You can ask Claude to explore its capabilities, suggest better approaches, or even reveal features you didn't know existed.
Validating AI code: Ensuring reliability with the blind subagent testing loop
It took us far too long to figure this out: Claude will lie to you.
Not maliciously. But it'll mark tasks as complete when they're not. It'll claim that tests have passed when they haven't. It will confidently report success while your application is failing.
Our solution? Never let Claude grade his homework.
Every feature implementation now follows this pattern:
- Claude builds the feature.
- A separate blind validator subagent then tests it.
- The validator has no context regarding the implementation, only the requirements.
- Only the validator can mark tasks as complete.
This may seem excessive, but it's the difference between "probably works" and "definitely works".

Last month, we shipped complete payment integration, with every single component validated by blind subagents. There were zero bugs in production. This has never happened before in the MadAppGang’s history.
The YOLO flag decision
Controversial opinion: We run Claude Code with the --dangerously-skip-permissions flag.
Yes, the one that sounds like you're about to format your hard drive.
Here's why: We run Claude in isolated virtual machines (VMs) with snapshot capabilities. Not having to approve every file operation significantly increases productivity. Claude can work autonomously while we focus on architecture and reviews.
Is this for everyone? No, but if you have proper isolation and backups, the productivity gains are undeniable.
Our key takeaways about AI-assisted engineering
This all sounds a bit overwhelming. There are too many tools, too many concepts, and too much complexity.
Each of these techniques emerged from a simple frustration: something didn't work, so we asked Claude how to fix it.
Start with one problem. Your code quality may deteriorate after long discussions. Try clearing your context more often. Maybe Claude keeps recreating existing functions. Build a simple file index.
You don't need to implement everything at once. Pick one friction point in your development workflows and solve it. Then move on to the next one.
Why Claude isn’t a competitor but a true engineering partner
Six months ago, our team was sceptical about AI-assisted software development. “It's just fancy autocomplete,” they said.
Now? We're shipping features in days that used to take months. This isn't because Claude writes all our code, but because we've learned to use it as a true engineering partner.
The tools and techniques are constantly evolving. What works today might be obsolete next month. But the principle remains: treat Claude Code like a brilliant but literal-minded colleague. Provide clear context, focused tasks, and proper validation.
The future of development isn't about AI replacing developers. It's about developers who know how to leverage AI, replacing those who don't.
What's your biggest challenge with Claude Code right now? Because we guarantee there's a solution you haven't discovered yet.
The real superpower lies in learning to push the boundaries of the tool until you find what works.