Software engineering is about to split into two eras: before AI and after.
But not in the way most people think. AI won't replace developers. It will change what developers do.
Here's what I see coming after building AI-powered development tools.
What Changes
1. Code Generation Becomes Commodity
Writing boilerplate is already automated:
// Before: 30 minutes to write
export interface User {
id: string;
email: string;
name: string;
createdAt: Date;
updatedAt: Date;
}
export class UserRepository {
async create(data: CreateUserDto): Promise<User> { ... }
async findById(id: string): Promise<User | null> { ... }
async update(id: string, data: UpdateUserDto): Promise<User> { ... }
async delete(id: string): Promise<void> { ... }
}
// After: 30 seconds with AI
// "Create a User entity with CRUD repository"
This part is already here. It's useful but it's not the revolution.
2. Code Understanding Becomes the Bottleneck
As AI generates more code faster, the bottleneck shifts:
Before AI:
- Bottleneck: Writing code
- Skill: Typing speed, syntax knowledge, library familiarity
After AI:
- Bottleneck: Understanding code
- Skill: System thinking, architecture, asking the right questions
This is why we built Glue focused on understanding rather than generation. The hard part isn't writing processPayment(). It's knowing:
- What already exists
- What this function connects to
- What breaks if it changes
- Whether it fits the existing architecture
3. Architecture Matters More
When anyone can generate code, code quality differentiates by architecture:
// AI-generated code that "works"
async function handleCheckout(cart: Cart, user: User) {
const payment = await processPayment(cart.total, user.paymentMethod);
await updateInventory(cart.items);
await sendConfirmationEmail(user.email, cart);
await updateUserStats(user.id);
await triggerAnalytics('checkout_complete', { cart, user });
return { success: true, orderId: payment.orderId };
}
// What senior engineers see:
// - No transaction wrapping
// - Partial failure leaves inconsistent state
// - Synchronous when async would work
// - Direct dependencies instead of events
// - No retry logic for external calls
AI can write the first version. Humans still need to architect the second.
4. The Rise of Code Intelligence
The new skill is navigating codebases, not writing them:
// What we built for this future (60+ MCP tools)
const aiTools = {
// Instead of: "Read these 50 files"
search_symbols: 'Find AuthService',
get_symbol_call_graph: 'What does AuthService.login call?',
find_callers: 'What calls AuthService.login?',
// Instead of: "Remember the architecture"
get_feature_catalog: 'What features exist?',
get_code_dependencies: 'How do modules connect?',
// Instead of: "Figure out impact"
analyze_blast_radius: 'What breaks if I change this?',
get_code_hotspots: 'Where are the problem areas?'
};
The developer who can quickly understand a 500K-line codebase beats the one who can type fastest.
What Stays the Same
1. Problem Definition
AI can't figure out what to build. It can only build what you describe.
User: "Add authentication"
AI: *generates 5 different auth implementations*
User: "Add OAuth with Google, session-based, with 2FA support,
matching our existing middleware pattern in src/middleware/auth.ts"
AI: *generates exactly what you need*
Clarity of requirements matters more than ever.
2. System Design
AI generates components. Humans design systems.
Components AI can generate:
- User service
- Payment processor
- Email sender
- Database queries
What AI can't decide:
- Should these be microservices or monolith?
- What are the failure modes?
- How does this scale?
- What are the security boundaries?
3. Trade-off Decisions
Every real decision involves trade-offs AI can't evaluate:
"Should we use Postgres or MongoDB?"
AI answer: "Here are pros and cons of each..."
Real answer requires knowing:
- Team's existing expertise
- Current infrastructure
- Future scaling needs
- Compliance requirements
- Budget constraints
- Timeline pressure
4. Domain Knowledge
AI knows programming. It doesn't know your business:
// AI generates valid code
if (order.total > 10000) {
requireApproval(order);
}
// But doesn't know:
// - This threshold is from SOX compliance
// - It used to be $5000 before Q3 audit
// - Legal is reviewing whether crypto payments count
// - The mobile app has a different threshold (bug)
The New Development Workflow
Here's how I see development evolving:
Before (Coding-First)
- Get requirements
- Write code
- Write tests
- Code review
- Deploy
After (Understanding-First)
- Get requirements
- Explore existing codebase (AI-assisted)
- Identify affected systems (AI-assisted)
- Design integration approach (human)
- Generate implementation (AI-assisted)
- Verify fits architecture (human)
- (AI-assisted)
The AI steps save time. The human steps prevent disasters.
What We're Building For This Future
Our platform is designed for the understanding-first workflow:
// 1. Explore: What exists?
const features = await discoverFeatures(workspaceId);
// Returns auto-clustered features from code graph
// 2. Understand: How does it work?
const callGraph = await getSymbolCallGraph('processPayment');
// Returns full call tree, 10 levels deep
// 3. Identify impact: What changes?
const impact = await analyzeBlastRadius('PaymentService');
// Returns affected files, tests, features
// 4. Generate: With full context
await claude.chat({
messages: [systemPrompt, ...contextFromTools, userRequest],
tools: mcpTools // 60+ specialized code tools
});
// AI generates code that fits existing patterns
Skills That Will Matter
Rising:
- System design and architecture
- Code review and quality assessment
- Requirement clarification
- Codebase navigation
- Integration thinking
Declining:
- Syntax memorization
- Boilerplate writing
- Documentation writing (will be generated)
- Simple debugging (AI catches obvious issues)
Constant:
- Problem solving
- Domain expertise
- Team collaboration
- Production operations
The Bottom Line
AI doesn't replace developers. It changes what they do.
The future belongs to developers who can:
- Understand complex systems quickly
- Design architectures that scale
- Evaluate AI output for quality and fit
- Navigate large codebases confidently
Code generation is solved. Code understanding is the next frontier.
That's why we're building tools for understanding, not just generation. The developers who thrive will be the ones who can see the whole system — and AI tools that provide that visibility will be essential.