Indos
INT'L MOD
- Thread starter
- #181
I've observed two distinct patterns in how teams are leveraging AI for development. Let's call them the "bootstrappers" and the "iterators." Both are helping engineers (and even non-technical users) reduce the gap from idea to execution (or MVP).


This "70% problem" reveals something crucial about the current state of AI-assisted development. The initial progress feels magical: you can describe what you want, and AI tools like v0 or Bolt will generate a working prototype that looks impressive. But then reality sets in.
Junior engineers often miss these crucial steps. They accept the AI's output more readily, leading to what I call "house of cards code" – it looks complete but collapses under real-world pressure.
The reality is that AI is like having a very eager junior developer on your team. They can write code quickly, but they need constant supervision and correction. The more you know, the better you can guide them.
This creates what I call the "knowledge paradox":
The good news? This gap will likely narrow as tools improve. But for now, the most pragmatic approach is to use AI to accelerate learning, not replace it entirely.
Start small
newsletter.pragmaticengineer.com
1. How developers are actually using AI

The Bootstrappers: Zero to MVP
Tools like Bolt, v0, and screenshot-to-code AI are revolutionizing how we bootstrap new projects. These teams typically:- Start with a design or rough concept
- Use AI to generate a complete initial codebase
- Get a working prototype in hours or days instead of weeks
- Focus on rapid validation and iteration
The Iterators: daily development
The second camp uses tools like Cursor, Cline, Copilot, and WindSurf for their daily development workflow. This is less flashy but potentially more transformative. These developers are:- Using AI for code completion and suggestions
- Leveraging AI for complex refactoring tasks
- Generating tests and documentation
- Using AI as a "pair programmer" for problem-solving
2. The 70% problem: AI's learning curve paradox
A tweet that recently caught my eye perfectly captures what I've been observing in the field: Non-engineers using AI for coding find themselves hitting a frustrating wall. They can get 70% of the way there surprisingly quickly, but that final 30% becomes an exercise in diminishing returns.
This "70% problem" reveals something crucial about the current state of AI-assisted development. The initial progress feels magical: you can describe what you want, and AI tools like v0 or Bolt will generate a working prototype that looks impressive. But then reality sets in.
The two steps back pattern
What typically happens next follows a predictable pattern:- You try to fix a small bug
- The AI suggests a change that seems reasonable
- This fix breaks something else
- You ask AI to fix the new issue
- This creates two more problems
- Rinse and repeat
The hidden cost of "AI Speed"
When you watch a senior engineer work with AI tools like Cursor or Copilot, it looks like magic. They can scaffold entire features in minutes, complete with tests and documentation. But watch carefully, and you'll notice something crucial: They're not just accepting what the AI suggests. They're constantly:- Refactoring the generated code into smaller, focused modules
- Adding edge case handling the AI missed
- Strengthening type definitions and interfaces
- Questioning architectural decisions
- Adding comprehensive error handling
Junior engineers often miss these crucial steps. They accept the AI's output more readily, leading to what I call "house of cards code" – it looks complete but collapses under real-world pressure.
A knowledge gap
The most successful non-engineers I've seen using AI coding tools take a hybrid approach:- Use AI for rapid prototyping
- Take time to understand how the generated code works
- Learn basic programming concepts alongside AI usage
- Build up a foundation of knowledge gradually
- Use AI as a learning tool, not just a code generator
The knowledge paradox
Here's the most counterintuitive thing I've discovered: AI tools help experienced developers more than beginners. This seems backward. Shouldn't AI democratize coding?The reality is that AI is like having a very eager junior developer on your team. They can write code quickly, but they need constant supervision and correction. The more you know, the better you can guide them.
This creates what I call the "knowledge paradox":
- Seniors use AI to accelerate what they already know how to do
- Juniors try to use AI to learn what to do
- The results differ dramatically
- Rapidly prototype ideas they already understand
- Generate basic implementations they can then refine
- Explore alternative approaches to known problems
- Automate routine coding tasks
- Accept incorrect or outdated solutions
- Miss critical security and performance considerations
- Struggle to debug AI-generated code
- Build fragile systems they don't fully understand
- You don't develop debugging skills
- You miss learning fundamental patterns
- You can't reason about architectural decisions
- You struggle to maintain and evolve the code
Implications for the future
This "70% problem" suggests that current AI coding tools are best viewed as:- Prototyping accelerators for experienced developers
- Learning aids for those committed to understanding development
- MVP generators for validating ideas quickly
The good news? This gap will likely narrow as tools improve. But for now, the most pragmatic approach is to use AI to accelerate learning, not replace it entirely.
3. What actually works: practical patterns
After observing dozens of teams, here's what I've seen work consistently:"AI first draft" pattern
Let AI generate a basic implementation- Manually review and refactor for modularity
- Add comprehensive error handling
- Write thorough tests
- Document key decisions
"Constant conversation" pattern
Start new AI chats for each distinct task- Keep context focused and minimal
- Review and commit changes frequently
- Maintain tight feedback loops
"Trust but verify" pattern
- Use AI for initial code generation
- Manually review all critical paths
- Conduct automated testing of edge cases
- Implement regular security audits
4. What does this mean for developers?
Despite these challenges, I'm optimistic about AI's role in software development. The key is understanding what it's really good for:- Accelerating the known. AI excels at helping us implement patterns we already understand. It's like having an infinitely patient pair programmer who can type really fast.
- Exploring the possible. AI is great for quickly prototyping ideas and exploring different approaches. It's like having a sandbox where we can rapidly test concepts.
- Automating the routine. AI dramatically reduces the time spent on boilerplate and routine coding tasks, letting us focus on the interesting problems.
Start small
- Use AI for isolated, well-defined tasks
- Review every line of generated code
- Build up to larger features gradually
- Break everything into small, focused files
- Maintain clear interfaces between components
- Document your module boundaries
- Use AI to accelerate, not replace, your judgment
- Question generated code that feels wrong
- Maintain your engineering standards
How AI-assisted coding will change software engineering: hard truths
A field guide that also covers why we need to rethink our expectations, and what software engineering really is. A guest post by software engineer and engineering leader Addy Osmani








