Taste Still Matters In AI & Software Engineering
Nowadays, anyone can be a software engineer and build a frontend or backend or entire full-stack application in the age of GenAI and LLMs. However, few can build software that sells, are loved by 1000s and displays good design and taste. In this post we explore why taste might be more important than ever 2025 and beyond.
Introduction: The Vibe Coding Revolution
$1.8 billion. 8 months. Zero to unicorn. These three numbers tell the story of Lovable—the fastest software company to achieve unicorn status in history1. Not by building better infrastructure. Not by revolutionizing databases. But by understanding a simple truth: 90% of the population can’t code, but everyone has ideas they want to bring to life.
Welcome to the vibe coding revolution. In less than one year, we’ve witnessed the rise of platforms like Lovable, Bolt.new, Emergent, and Leap that transform natural language into fully functional applications. This isn’t just democratization—it’s a complete inversion of what makes engineers valuable. When anyone can build software by describing what they want, success depends not on your ability to write code, but on knowing what’s worth building and how to make it resonate with users.
Tools like Lovable, Vercel V0, Bolt.new, and recent new actors such as Leap or Emergent, are making it possible for anyone to create software without traditional coding skills. This shift is not just about making coding accessible; it’s about changing the very nature of how we think about software development. You might have heard about “vibe coding”, “spec-driven development”, or “AI-first development”—all terms that capture this new paradigm where taste, intuition, and user empathy become the most valuable skills in software engineering.
The evidence is everywhere. Emergent AI hit 700,000+ users and $10M ARR in just two months with a “no developers required” platform2. GitHub Copilot now serves 20 million developers, generating 20-50% of their code3. Neo AI achieved a 34% medal rate on Kaggle competitions, outperforming Microsoft (22.4%) and OpenAI (16.9%) at autonomous ML engineering4. And according to Y Combinator, 25% of their current batch reports that AI generates 95% of their codebase5.
The rise of these tools has sparked a debate about the future of software engineering. And many of these vibe coding tools seems to be really successful such as Lovable: whom reached $1.8 billion valuation in just 8 months—becoming the fastest software company to achieve unicorn status in history1. Are we witnessing the end of traditional coding as we know it? Will AI-driven tools replace human developers, or will they augment our capabilities, allowing us to focus on higher-level design and product intuition?
To quote the former Tesla AI Director, Andrej Karpathy for a definition of vibe coding:
The Vibe Coding Definition: “There’s a new kind of coding I call ‘vibe coding’, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.” — Andrej Karpathy, Former Tesla AI Director6
Vibe coding represents a fundamental shift: leveraging AI to enhance creativity and intuition rather than just writing code. But the question remains: can everyone build software that resonates with users and exhibits good taste?
We’re witnessing the commoditization of code itself. What can’t be commoditized is the ability to sense what users want, craft effortless experiences, and make micro-decisions that separate beloved products from forgotten ones.
The Great Shift: We’re witnessing the commoditization of code itself. As Google engineer Jack O’Brien notes, “virtually all new software will be created by autonomous agents,” yet “concerningly, few software engineers today truly have great taste”7.
In this article we will deep-dive into the new wave of agentic coding and distill why taste has become the most valuable skill in software engineering today, in my honest opinion, working with AI coding / Vibe-coding for the past year.
From Copilots to Autonomous Coding Agents: The Evolution of AI in Software Engineering
When looking into what has happened in terms of AI-assisted software development, it’s clear that we’ve moved through three distinct waves, each representing a significant leap in how AI integrates into the software engineering process.
These waves are:
- Wave 1: AI Assistants (2021-2024) - Tools like GitHub Copilot, Cursor, and Tabnine that provide code completion and intelligent assistance to developers, enhancing productivity but still requiring significant human input.
- Wave 2: Autonomous Agents (2024-2025) - Platforms like Devin AI and Neo AI that can autonomously handle entire software engineering tasks with minimal human oversight, including environment setup, bug reproduction, and even completing real jobs on platforms like Upwork.
- Wave 3: Vibe Coding Platforms (2024-Present) - Tools like Lovable, Emergent, and Bolt.new that allow users to create full-stack applications from natural language descriptions, effectively eliminating the need for traditional coding skills.
The Three Waves of AI-Assisted Development
AI Assistants
2021-2024
Code completion and intelligent assistance tools that enhance developer productivity
Key Players
Capabilities
Each wave represents a fundamental shift in the relationship between human developers and AI. Wave 1 made developers faster. Wave 2 made AI capable of independent work. Wave 3 democratized software creation entirely8. Importantly, GitHub Copilot pioneered this space in 2021, predating even ChatGPT by over a year—proving that specialized AI tools could transform software development before general-purpose AI became mainstream.
Market Dynamics: Who’s Winning the Race
The market data reveals which approaches are capturing user attention and revenue. Traffic analysis from the last 90 days (as of 2025-08-19) shows the current competitive landscape9. In the graph below you can cut by ARR (Annual Recurring Revenue), Estimated Traffic and Market Share based on verified data from funding announcements and industry analysis:
Platforms prioritizing user experience (Lovable, Bolt.new) achieve unprecedented growth rates despite less technical complexity than established players, supporting our thesis that taste has become more valuable than pure technical capability.
The market has crystallized into three distinct categories, each serving different user needs and showcasing different approaches to the taste versus technical complexity trade-off:
AI Development Platform Categories
The data reveals a clear pattern: platforms that prioritize user experience and workflow design over pure technical capabilities are achieving unprecedented growth rates10. Lovable’s journey from zero to $1.8B valuation in 8 months wasn’t built on superior AI models—it was built on understanding what users actually want when they say “build me an app.”
Market Data Disclaimer: Market share figures are estimates based on publicly available traffic data, funding announcements, and industry analysis. Actual revenue figures may vary as most companies are private. Traffic measurements may not directly correlate with usage patterns or revenue generation.
The Commoditization Acceleration: From 20% to “No Developers Required”
The speed of this transformation has caught even industry experts by surprise. In just four years, we’ve moved from AI handling basic code completion to platforms claiming “no developers required” for complex applications. If I look at my own productivity using AI coding tools, I have probably 8-10x my own productivity compared to traditional coding. And nowadays, when asked by management how many people I would need to hire, I would in theory do well with a team of 2-3 rather then 10-15 people.
The Commoditization Reality: GitHub Copilot went from 1 million users generating simple autocomplete to 20 million users with AI writing 20-50% of their code3. Meanwhile, platforms like Emergent built 10,000+ applications in just two weeks2. The mechanical act of coding is becoming a commodity faster than anyone predicted.
This acceleration has created what researchers call the “pit of death” problem—a point where AI-generated code becomes too complex for the AI itself to debug or extend11. As one developer observed: “Things start fast and awesome… But then you start prompting more and more, and you struggle to get what you want out of it. Eventually, some prompt you use breaks everything.” However, with this in mind, I would never vibe code in a language I don’t at least have some understanding of. I would say that vibe coding is more like “augmented coding” rather than “no coding”. I suspect many developers or engineers who have been building systems for years, feels the same way.
What This Means for Traditional Development:
The implications are profound and immediate, if you haven’t been living under a rock:
- Shift from Implementation to Orchestration: Developers are becoming AI coordinators rather than code writers
- Product Definition Becomes Primary: Knowing what to build matters more than knowing how to build it
- Prompt Engineering as Core Skill: The ability to communicate intent to AI systems becomes crucial
- User Experience Differentiation: With similar technical capabilities, UX design separates winners from losers
I don’t think this is unique for software or ai engineering, any type of profession or domain where AI capabilities are increased will force practitioners to become more of an “orchestrator” or “manager” of AI systems rather than doing the actual work themselves. Which is not necessarily bad, as more brainpower and time can be spent on higher-level thinking, creativity and problem solving.
The Taste Advantage: As Formation.dev notes, “When AI can generate dozens of implementations, product thinking becomes the compass”12. The platforms achieving massive growth aren’t the ones with the best AI models—they’re the ones with the best understanding of user workflows and needs.
The Pattern: Technology Scales, Taste Doesn’t
Looking across all three waves, a clear pattern emerges. Technical capabilities can be replicated and scaled through AI, but the human judgment about what users want, how interfaces should feel, and which features matter most—this remains uniquely human and becomes more valuable as everything else becomes commoditized.
The companies winning in each category—whether it’s GitHub Copilot’s developer-centric approach, Lovable’s poc-ready focus, or Cursor’s premium user experience—all share one trait: they made decisions based on deep user empathy rather than technical feasibility alone. As we’ll explore in the next section, this shift from technical skills to taste and product intuition represents the most significant change in software engineering since the advent of high-level programming languages.
The Evolution of Software Engineering: From Instructions to Intentions
Understanding why taste matters requires examining software engineering’s evolution through three major paradigms that have layered increasingly sophisticated abstractions while making certain skills obsolete and others critical.
These three major paradigms with a fourth emerging are:
- Software 1.0: The Deterministic Era (1950s-2000s) - Programming was about writing explicit instructions. Every behavior had to be coded by humans, requiring deep technical expertise in algorithms and data structures.
- Software 2.0: The Learning Era (2000s-2020s) - Machine learning introduced systems that could learn patterns from data. While humans still designed architectures and training processes, the logic emerged from data rather than explicit coding.
- Software 3.0: The Generative Era (2020s-Present) - Large language models and generative AI allow developers to describe what they want in natural language, and the AI generates code. This shifts the focus from coding skills to prompt engineering and product intuition.
- Software 4.0: The Autonomous Era (2025s-Future) - Emerging autonomous agents will manage the entire software lifecycle, from design to deployment and maintenance, with humans providing high-level goals and taste-based guidance.
The Evolution of Software Engineering
Concrete Examples: The Evolution in Practice
Let’s examine how the same problem—building a user authentication system—evolves across each paradigm. This example highlights how the required skills shift from deep technical expertise to high-level product intuition and taste.
NB: the examples are to mainly illustrate the paradigm shifts, not to provide production-ready code. For instance training a neural network for auth is not realistic, but it serves to illustrate the paradigm shift.
Expand to see code examples for each paradigm below:
Taste in Action: Code Examples
See how taste transforms technically correct code into user-delighted experiences
1 Software 1.0: Explicit Instructions
Traditional programming requires manually coding every aspect of authentication
// Hundreds of lines of manual implementation
class AuthenticationService {
async register(email: string, password: string) {
// Validate input
if (!email.includes('@')) {
throw new Error('Invalid email');
}
if (password.length < 8) {
throw new Error('Password too short');
}
// Hash password
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
// Store in database
const user = await db.users.create({
email,
password: hashedPassword,
created_at: new Date()
});
// Generate JWT
const token = jwt.sign(
{ userId: user.id },
process.env.JWT_SECRET,
{ expiresIn: '24h' }
);
return { user, token };
}
// ... hundreds more lines for login, logout,
// password reset, session management, etc.
}
Issues:
- Requires deep knowledge of security best practices
- Easy to introduce vulnerabilities
- Significant time investment for standard functionality
- Must handle all edge cases manually
# Training an auth model on successful login patterns
import tensorflow as tf
# Train model on authentication patterns
auth_model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(2, activation='softmax')
])
# Learn from millions of auth attempts
auth_model.fit(
training_data, # Historical auth patterns
labels, # Success/failure labels
epochs=100
)
# Model learns to detect:
# - Suspicious login patterns
# - Potential security threats
# - User behavior anomalies
# - Optimal session durations
def authenticate(credentials):
# Use ML model for intelligent auth
risk_score = auth_model.predict(credentials)
if risk_score < threshold:
return approve_login()
else:
return require_2fa()
Taste Benefits:
- Learns from patterns instead of explicit rules
- Adapts to new threats automatically
- Handles complex patterns humans might miss
- Still requires significant ML expertise
2 Software 3.0 & 4.0: Natural Language to Implementation
From describing what you want to autonomous system management
// Natural language prompt to AI
const prompt = `
Create a secure authentication system with:
- Email/password registration and login
- JWT token generation with refresh tokens
- Password reset via email
- Rate limiting and brute force protection
- Session management with Redis
- OAuth integration for Google and GitHub
- Compliance with GDPR and security best practices
`;
// AI generates complete implementation
const authSystem = await AI.generateCode(prompt);
// Human reviews and refines
const refinedAuth = await human.review(authSystem, {
focus: ['security', 'user_experience'],
businessRules: companyPolicies,
designSystem: brandGuidelines
});
// Deploy with human oversight
await deploy(refinedAuth, {
monitoring: true,
rollback: automatic
});
Issues:
- Still requires human validation
- May not understand unique business context
- Needs guidance on trade-offs
- Quality depends on prompt engineering
// High-level goal definition
const authGoals = {
objective: "Secure, frictionless user authentication",
constraints: {
security: "Bank-grade encryption",
compliance: ["GDPR", "SOC2", "ISO27001"],
userExperience: "One-click where possible",
scalability: "Support 10M concurrent users"
},
preferences: {
style: "Minimal friction, maximum security",
brand: "Trustworthy yet approachable"
}
};
// Autonomous AI agent manages everything
const authAgent = new AutonomousAuthAgent(authGoals);
authAgent.on('decision_needed', (decision) => {
// Human provides taste-based guidance only
if (decision.type === 'ux_tradeoff') {
return human.evaluateTaste(decision.options);
}
});
// Agent autonomously:
// - Designs architecture
// - Implements code
// - Deploys to production
// - Monitors performance
// - Fixes bugs
// - Scales infrastructure
// - Updates for new threats
// Human role: Define goals and provide taste
humanRole = {
define: "What success looks like",
guide: "Which experiences feel right",
validate: "Does this serve our users?"
};
Taste Benefits:
- Fully autonomous implementation and maintenance
- Self-improving based on real usage
- Humans focus purely on goals and taste
- System evolves faster than human-managed code
The Taste Difference
Both code examples work, but the taste-driven approach considers the full user journey, business context, and system architecture. When AI can generate any code, the ability to envision and guide toward the better solution becomes your competitive advantage.
The Pattern: From Technical Skills to Human Judgment
When looking across these paradigms, a clear pattern emerges: technical complexity gets abstracted away, while human judgment becomes more critical. This isn’t just a coincidence—it’s the fundamental trajectory of technological progress.
Software 1.0 → 2.0: The First Abstraction
- What became commoditized: Writing basic algorithms and data structures
- What became critical: Understanding data, statistics, and machine learning theory
- Skills that emerged: Data science, ML engineering, statistical modeling
Software 2.0 → 3.0: The Second Abstraction
- What became commoditized: Training models and understanding ML theory
- What became critical: Prompt engineering, product intuition, and user experience design
- Skills that emerged: AI orchestration, prompt engineering, vibe coding
Software 3.0 → 4.0: The Coming Abstraction
- What will be commoditized: Code generation and prompt engineering
- What will become critical: Goal setting, taste, and human-AI collaboration
- Skills that will emerge: AI alignment, taste curation, system orchestration
The Taste Trajectory: As each layer of technical complexity gets automated, the skills that remain are increasingly about human judgment, aesthetic sense, and understanding what users actually want. We’re moving from “how to build it” to “what should be built” and “does this feel right?”
Why Software 3.0 Changes Everything
The shift to Software 3.0 represents the most dramatic change in software engineering since the invention of high-level programming languages. For the first time in computing history, the primary bottleneck is no longer technical knowledge—it’s taste.
Consider the implications:
- Democratization at Scale: Anyone can now build functional software by describing what they want
- Technical Skills Commodity: Knowing syntax, frameworks, and even architectural patterns matters less
- Taste as Differentiator: The ability to sense what users want becomes the primary competitive advantage
- Speed vs. Quality Tension: Rapid iteration is possible, but maintaining quality requires human judgment
The Convergence Problem: When everyone can build software, the challenge shifts from “Can we build it?” to “Should we build it?” and “How do we make it exceptional?” This is where taste becomes the ultimate differentiator.
Software 4.0: The Autonomous Era (Speculation)
Looking ahead, Software 4.0 will likely emerge when AI systems can autonomously handle the entire software lifecycle—from understanding user needs to deploying and maintaining applications. In this era:
- AI agents will collaborate to build and maintain complex software ecosystems
- Human role will shift to high-level goal setting and taste curation
- Success metrics will focus on user satisfaction and goal alignment rather than technical performance
- The ultimate skill will be the ability to guide AI systems toward outcomes that resonate with human values and preferences
The companies and individuals who thrive in this future won’t be those with the best AI models—they’ll be those with the best taste for what humans actually want.
Implications for Today’s Engineers
Finally, understanding this evolution helps explain why the skills that matter most are changing rapidly. The transition isn’t just about learning new tools—it’s about fundamentally rethinking what makes an engineer valuable in an AI-first world.
Some key skills I foresee declining, increasing, or becoming critical in the near future:
- Declining Skills: Deep framework knowledge, API memorization, low-level optimization
- Increasing Skills: Product intuition, design thinking, cross-functional collaboration
- Future-Critical Skills: AI orchestration, human-AI interaction design, goal setting, taste development
Skills Transition in the Vibe Coding Era
Technical skills decline while human judgment becomes critical
Declining in Value
API & Syntax Memorization
Knowing specific API calls, language syntax, and framework details by heart
Deep Framework Knowledge
Specialized expertise in particular frameworks or libraries
Algorithm Implementation
Hand-coding complex algorithms and data structures from scratch
Low-Level Optimization
Manual performance tuning and system-level optimizations
Increasing in Value
Product Intuition
Understanding what users actually want and need from software
Design Thinking
Aesthetic judgment and user experience design principles
Cross-Functional Collaboration
Working effectively with designers, PMs, and stakeholders
AI Output Curation
Evaluating, refining, and improving AI-generated code and designs
Future-Critical Skills
AI Orchestration
Coordinating multiple AI agents and tools to achieve complex outcomes
Human-AI Interaction Design
Designing interfaces and workflows that effectively combine human and AI capabilities
Goal Setting & Outcome Definition
Defining success metrics and guiding AI toward desired outcomes
Taste Development
Cultivating aesthetic and product judgment through experience and reflection
The visual above illustrates the profound shift happening in software engineering. Technical skills that once required years to master are being commoditized by AI, while human judgment skills—particularly taste—become the primary differentiator. This isn’t just a trend; it’s the new reality of software development.
The next section explores what “taste” actually means in the context of software engineering and why it has become the most important skill for the vibe coding era.
What Exactly Is “Taste” in Software, and Why Does It Matter?
Definition: Software Taste
In software engineering, taste is the ability to make nuanced decisions that transform technically correct code into delightfully intuitive user experiences. It’s the difference between building something that works and building something people love to use.
While traditional metrics focus on performance, scalability, and maintainability, taste encompasses the harder-to-measure qualities that separate good software from great software. It’s about understanding not just what to build, but how to build it in a way that feels inevitable, elegant, and human. When talking about strategy or other composable systems, I often use the concept of “pillars”. I.e. the foundation of a building or house. I think taste can also be broken down into a few key pillars or dimensions that together define what good taste looks like in software engineering.
See more about this in the so called “Taste Pillars” below:
The Five Pillars of Software Taste
In the vibe coding era, these human judgment skills become the primary differentiators
Problem Definition Mastery
The ability to identify the real problem beneath surface-level requirements. Great taste starts with asking the right questions and understanding what users actually need, not just what they say they want.
Key Examples:
Experience Design Intuition
The capacity to envision and craft user journeys that feel natural and delightful. This goes beyond UI/UX into the entire interaction model and emotional response.
Key Examples:
Architectural Wisdom
The judgment to design systems that remain flexible, maintainable, and scalable while avoiding over-engineering. It's about building for today's needs with tomorrow's growth in mind.
Key Examples:
Quality Judgment
The ability to assess and improve software quality holistically - considering not just bugs and performance, but also maintainability, usability, and long-term value.
Key Examples:
Constraint Navigation
The skill to work creatively within real-world limitations - time, budget, team capabilities, and technical constraints - while still delivering exceptional value.
Key Examples:
Development Priority
Start with Critical pillars as they provide the foundation for all other taste development. High priority skills amplify your impact, while Medium priority areas help you stand out from other AI-assisted developers.
Why Taste Trumps Technical Skills in the AI Era
The commoditization of coding fundamentals has created a profound shift in what separates excellent developers from average ones. As AI handles more routine implementation work, the value moves to higher-order thinking—the cognitive processes that involve analysis, evaluation, and synthesis rather than recall and application. In Bloom’s taxonomy of learning, this includes the ability to analyze user problems, evaluate solution tradeoffs, and create novel approaches that address real human needs rather than just technical requirements8:
Taste in Action: Code Examples
See how taste transforms technically correct code into user-delighted experiences
1 API Response Handling
How taste transforms generic error handling into user-friendly experiences
// Standard error handling
fetch('/api/users')
.then(response => {
if (!response.ok) {
throw new Error('HTTP error!');
}
return response.json();
})
.catch(error => {
console.error('Fetch error:', error);
setError('Something went wrong');
});
Issues:
- Generic error messaging provides no actionable guidance
- No distinction between different error types or user scenarios
- Debugging-focused error handling instead of user-focused
- No recovery options or next steps provided
// User-focused error handling with taste
fetch('/api/users')
.then(async response => {
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
if (response.status === 401) {
return { error: 'session_expired', message: 'Please sign in again to continue' };
} else if (response.status === 429) {
const retryAfter = response.headers.get('retry-after') || '60';
return { error: 'rate_limited', message: `Too many requests. Please try again in ${retryAfter} seconds.`, retryAfter };
} else if (response.status >= 500) {
return { error: 'server_error', message: 'Our servers are having trouble. We\'ve been notified and are working on it.' };
}
return { error: 'unknown', message: errorData.message || 'Something unexpected happened. Please try again.' };
}
return response.json();
})
.catch(error => {
if (error.name === 'AbortError') {
return { error: 'cancelled', message: 'Request was cancelled' };
}
return { error: 'network', message: 'Please check your connection and try again' };
});
Taste Benefits:
- Contextual error messages that guide user actions
- Differentiated handling for different error scenarios
- Graceful degradation with actionable next steps
- User-friendly language that reduces anxiety
- Built-in recovery mechanisms (retry timing, re-auth flows)
The Taste Difference
Both code examples work, but the taste-driven approach considers the full user journey, business context, and system architecture. When AI can generate any code, the ability to envision and guide toward the better solution becomes your competitive advantage.
This shift represents a fundamental change in how we think about software development. When AI can generate syntactically correct code for almost any requirement, the differentiating factor becomes the quality of the requirements themselves and the judgment calls made throughout implementation.
Taste is what transforms a feature request like “add user authentication” into questions like:
- How do we make signup feel inviting rather than burdensome?
- What does a secure-yet-convenient flow look like for our specific users?
- How do we handle edge cases like expired sessions gracefully?
- What kind of feedback makes users feel confident in the process?
The New Skill Hierarchy: From Coding to Orchestrating
This section is comprehensive but could be condensed. Consider combining some subsections or moving organizational examples to appendix for better flow.
The transformation from traditional software engineering to AI-orchestrated development represents a complete inversion of the skill hierarchy. What was once foundational is becoming automated, while what was once considered “soft skills” now determines who thrives in the vibe coding era.
The Great Inversion: When Everything Changes
The Formation.dev Framework for AI-Era Engineering
Research shows that engineers who excel in the AI age share five core competencies12:
- Product Thinking - The ability to understand user needs and translate them to solutions
- Communication - Clear articulation of intent to both humans and AI systems
- Problem Decomposition - Breaking complex challenges into AI-manageable pieces
- Prioritization - Knowing what to build vs. what not to build
- Curiosity - Continuous learning as tools and capabilities evolve daily
The skill hierarchy has fundamentally inverted. Traditional development prioritized technical depth: algorithms, data structures, framework mastery. The vibe coding era prioritizes human judgment: taste, empathy, and strategic thinking.
From Implementation to Orchestration
In terms of engineering work itself, the shift is from “doing” to “orchestrating”. Instead of writing every line of code, engineers now guide AI systems to produce code that meets high-level goals. This requires:
- Defining Clear Intent: Articulating what the software should achieve, not how to achieve it
- Coordinating AI Tools: Managing multiple AI agents and tools to handle different aspects of development
- Reviewing and Refining: Evaluating AI outputs for quality, taste, and alignment with user needs
- Focusing on Uniquely Human Skills: Empathy, creativity, and ethical judgment that AI cannot replicate
See more about this shift in the comparison below:
Taste in Action: Code Examples
See how taste transforms technically correct code into user-delighted experiences
1 Engineering Focus Evolution
How engineering priorities have shifted from technical implementation to human-centered orchestration
// Time Allocation
Implementation: 70% ████████████████████░░░░░
Design: 20% ██████░░░░░░░░░░░░░░░░░░
Communication: 10% ███░░░░░░░░░░░░░░░░░░░░░
// Core Skills
- Writing efficient algorithms
- Debugging complex code
- Framework expertise
- Performance optimization
- Database design
- System architecture
Issues:
- Heavy focus on technical implementation
- Limited time for user research and design
- Minimal cross-functional collaboration
- Skills becoming commoditized by AI
// Time Allocation
Implementation: 20% ██████░░░░░░░░░░░░░░░░░░
Design: 40% ████████████░░░░░░░░░░░░
Communication: 40% ████████████░░░░░░░░░░░░
// Core Skills
- Prompt engineering & AI guidance
- User research & empathy
- Cross-functional collaboration
- Quality curation & validation
- Strategic product thinking
- Taste development
Taste Benefits:
- 70% less time on routine implementation
- 3x more time on design and user research
- Focus on uniquely human skills
- AI-resistant competencies that add real value
The Taste Difference
Both code examples work, but the taste-driven approach considers the full user journey, business context, and system architecture. When AI can generate any code, the ability to envision and guide toward the better solution becomes your competitive advantage.
The shift is already visible in how successful engineers spend their time. According to recent studies, engineers using AI tools report spending 70% less time on implementation and 3x more time on design and user research13.
The New Core Competencies
1. AI Orchestration: The New Programming
In the vibe coding era, programming isn’t about writing code—it’s about orchestrating AI agents to achieve complex outcomes. This requires:
Multi-Agent Coordination
- Managing different AI tools for different tasks (Cursor for refactoring, V0 for UI generation, Claude for architecture)
- Understanding each tool’s strengths and limitations
- Knowing when to use AI vs. when to intervene manually
Prompt Engineering as Design In this new paradigm, prompt engineering becomes a core design skill. It involves:
- Crafting clear, unambiguous prompts that convey intent effectively
- Iterating on prompts based on AI outputs
- Embedding constraints and preferences into prompts
For example, consider the task of implementing a discount calculation feature. The traditional approach involves manually coding complex business logic, while the AI orchestration approach focuses on defining clear requirements and letting AI handle the implementation:
Taste in Action: Code Examples
See how taste transforms technically correct code into user-delighted experiences
1 Discount Calculation Logic
From manual implementation to AI orchestration with clear requirements
// Manual implementation approach
function calculateDiscount(user: User, cart: Cart): number {
let discount = 0;
// Basic business logic without clear requirements
if (user.createdAt < new Date(Date.now() - 6*30*24*60*60*1000)) {
discount += 0.1;
}
// More complex logic follows...
// (50+ lines of business logic)
return discount;
}
Issues:
- Implementation details mixed with business requirements
- Hard to modify business rules without code changes
- No clear documentation of the discount logic
- Edge cases often missed in initial implementation
// AI Orchestration: Define clear intent and constraints
const discountPrompt = `
Create a discount calculation function that:
- Rewards loyalty (users > 6 months get 10% base discount)
- Scales with purchase size (additional 5% per $100, max 25%)
- Considers user segment (premium users get extra 15%)
- Returns clear explanation of discount breakdown
- Handles edge cases gracefully (negative values, null users)
Prioritize clarity over performance. Include examples.
`;
// Let AI generate the implementation based on clear requirements
Taste Benefits:
- Clear separation of requirements from implementation
- Business rules are explicit and easy to understand
- AI handles edge cases and implementation details
- Easy to iterate on business logic by updating prompts
The Taste Difference
Both code examples work, but the taste-driven approach considers the full user journey, business context, and system architecture. When AI can generate any code, the ability to envision and guide toward the better solution becomes your competitive advantage.
The skill isn’t in implementing the logic—it’s in knowing what logic should exist and how to communicate that clearly to AI systems.
2. Quality Curation: The Editor’s Eye
When AI can generate thousands of variations, the valuable skill becomes selecting the right one. This “editor’s eye” involves:
Pattern Recognition Across AI Outputs
- Identifying when AI-generated code will cause technical debt
- Recognizing security vulnerabilities in generated patterns
- Spotting UX anti-patterns before they reach users
The Three-Pass Review Method
- Functional Pass: Does it work as intended?
- Taste Pass: Does it feel right to users?
- Future Pass: Will this decision haunt us in six months?
3. Strategic Product Thinking: The Why Behind the What
The most critical skill in the new hierarchy is understanding why something should be built, not how to build it. To exemplify this, consider a common scenario: a user requests a new feature. The traditional response is to implement it as specified. In the vibe coding era, the response is to deeply understand the underlying job the user is trying to accomplish.
This skill manifests as:
Jobs-to-be-Done Analysis
- What job is the user hiring this feature to do?
- What’s the emotional outcome they’re seeking?
- How does this fit into their broader workflow?
Constraint-Based Innovation
On the other hand, constraints become opportunities for innovation. Instead of asking “How do we add all requested features?” the question becomes “What’s the minimum that delivers maximum value?”
// Traditional thinking: "How do we add all requested features?"
const features = [auth, payments, notifications, analytics, ...];
// Strategic thinking: "What's the minimum that delivers maximum value?"
const coreValue = identifyJobToBeDone(userResearch);
const mvp = features.filter(f => directlySupportsJob(f, coreValue));
const future = features.filter(f => validatesThenExpands(f, mvp));
To summarize, the new skill hierarchy places human judgment—particularly taste, strategic thinking, and orchestration—at the top. The engineers who thrive in this era won’t be those who can write the most complex algorithms, but those who can define the right problems, guide AI to solve them, and curate outputs that resonate with users.
The Hybrid Professional: Neither Pure Engineer Nor Pure Designer
The professionals thriving in the vibe coding era don’t fit traditional categories. They’re emerging as a semi-new archetype:
The Product Engineer Profile
- Technical enough to validate AI output and understand system constraints
- Design-minded enough to prioritize user experience over technical elegance
- Business-aware enough to connect features to outcomes
- Empathetic enough to feel user pain points viscerally
- Curious enough to continuously experiment with new approaches
You may find these people at early stage startups or mental hospitals. Jokes aside, these are kinda the new unicorns if you will. These professionals command premium salaries because they bridge worlds. They can have a technical conversation with engineers, a design conversation with designers, and a strategy conversation with executives—all while shipping products users love.
Skills That Surprisingly Don’t Transfer
Interestingly, some traditionally valuable skills don’t translate well to the vibe coding paradigm, at least based on my observations so far:
Deep Framework Expertise
- AI can instantly access any framework documentation
- Staying current with API changes becomes AI’s job
- Time spent memorizing is better spent understanding user needs
Algorithm Optimization
- AI generates optimal algorithms for standard problems
- Premature optimization remains the root of all evil
- User-perceived performance matters more than technical metrics
Code Golf Mentality
- Clever, condensed code is harder to maintain
- AI and humans both prefer clear, explicit implementations
- Readability trumps brevity in the collaboration age
Low-Level Debugging
- AI can often identify and fix bugs faster
- Understanding high-level system behavior is more valuable
- Debugging becomes about guiding AI to the right solution
Lucky for us, these skills are also some of the hardest to maintain as technology evolves. The engineers who double down on human-centric skills—taste, empathy, strategic thinking—will find their value increasing as AI handles more routine technical work.
The Path Forward: Developing Orchestration Skills
Companies like Spotify, Airbnb, and Stripe are already restructuring around this new hierarchy—adding “AI orchestrators” to teams, creating “Experience Engineers,” and implementing “taste reviews” alongside code reviews.
For engineers looking to adapt, the path involves three phases:
- Augmentation (0-3 months): Start using AI tools, focus on prompt engineering, redirect saved time to user research
- Integration (3-6 months): Blend AI and human judgment, practice quality curation, build taste through analysis
- Orchestration (6+ months): Coordinate multiple AI agents, lead vision while AI handles implementation
The engineers who master this transition won’t just survive the AI revolution—they’ll define what great software looks like in an era where anyone can build anything. The hierarchy hasn’t just shifted; it’s inverted entirely, placing human judgment at the apex where technical skill once reigned.
Practical Examples: Vibe Coding vs. Traditional Development
The best way to understand the shift toward taste-driven development is through concrete examples. Let’s examine how leading vibe coding platforms approach common development challenges differently than traditional methods.
Platform Success Stories: What Gets It Right
The most successful vibe coding platforms demonstrate taste through their approach to developer experience:
- Cursor: Shows restraint by providing contextual suggestions at the right moment, not overwhelming users with options
- V0: Focuses on end-to-end user journeys, not just component generation
- Replit Agent: Understands that coding is just one part of building software—handles environment, dependencies, and deployment
The Taste Test: Same Feature, Different Approaches
Let’s examine how taste manifests in real development scenarios:
Scenario 1: User Dashboard Design
Traditional: Build what specifications say—create requested widgets, implement all features, focus on technical completion.
Vibe Coding: Build what users need—question why users need a dashboard, identify key decisions they’re making, design information hierarchy based on usage patterns.
The Taste Difference: “What job is this trying to do?” vs. “How do I implement these requirements?”
Form Validation: Technical Rules vs. Human Psychology
In traditional development, form validation often focuses on rigid rules and error messages that can frustrate users. In contrast, a taste-driven approach considers the user’s emotional journey through the form.
Taste in Action: Code Examples
See how taste transforms technically correct code into user-delighted experiences
1 Form Validation Approach
How taste transforms validation from gatekeeping to guidance
// Traditional validation approach
const validateForm = (data) => {
const errors = [];
if (!data.email.match(/^S+@S+.S+$/)) {
errors.push("Invalid email format");
}
if (data.password.length < 8) {
errors.push("Password must be at least 8 characters");
}
// Show all errors on submission
if (errors.length > 0) {
showErrorMessage(errors.join(", "));
return false;
}
return true;
};
Issues:
- Validates only on submission, no real-time feedback
- Technical language that feels like system requirements
- Assumes users will make mistakes instead of helping them succeed
- No positive reinforcement when users get things right
// Taste-driven validation approach
const validateWithTaste = (field, value) => {
switch (field) {
case 'email':
if (!value) return { valid: false, hint: "We'll need your email to send updates" };
if (!value.includes('@')) return { valid: false, hint: "Almost there! Don't forget the @ symbol" };
if (value.match(/^S+@S+.S+$/)) return { valid: true, message: "Perfect! ✓" };
return { valid: false, hint: "Just need the domain part (like gmail.com)" };
case 'password':
if (value.length < 3) return { valid: false, hint: "Keep going..." };
if (value.length < 8) return { valid: false, hint: `${8 - value.length} more characters to go` };
return { valid: true, message: "Strong password! ✓" };
}
};
Taste Benefits:
- Real-time validation as users type provides immediate guidance
- Conversational language that explains the 'why' behind requirements
- Positive reinforcement when users succeed builds confidence
- Progressive hints help users course-correct without frustration
The Taste Difference
Both code examples work, but the taste-driven approach considers the full user journey, business context, and system architecture. When AI can generate any code, the ability to envision and guide toward the better solution becomes your competitive advantage.
The Business Impact: Why Taste Drives Revenue
The difference between technical correctness and taste isn’t just aesthetic—it has measurable business impact.
Research from leading SaaS companies reveals:
The Taste Premium: Real Business Metrics
Companies that prioritize taste and user experience see:
- 2.6x higher customer retention compared to feature-focused competitors
- 73% reduction in support tickets when error handling considers user emotion
- 41% higher conversion rates with taste-driven onboarding flows
- 3x faster user adoption when features solve actual jobs-to-be-done
- 58% increase in NPS scores through thoughtful micro-interactions
Source: Analysis of top 100 SaaS companies by growth rate (2024-2025)
Below are two detailed case studies comparing taste-driven platforms to traditional competitors:
Business Case Studies
Real-world examples of how taste-driven decisions create massive business value
Linear vs. Jira: Speed Beats Features
How taste for developer experience defeated feature completeness in project management
Linear
Taste-Driven Approach
Strategy:
Built by designers and engineers who felt existing tools' pain. Focused on speed, keyboard shortcuts, and delightful animations over feature completeness.
Results:
Key Insights:
- Speed trumps feature completeness when users feel the pain daily
- Keyboard-first design appeals to technical users who value efficiency
- Delightful animations create emotional connection to productivity tools
- Solving your own problem creates authentic product taste
Traditional Tools (Jira, etc.)
Traditional Approach
Strategy:
Feature-complete enterprise solutions with every requested capability, comprehensive customization, and extensive integration options.
Challenges:
- Overwhelming interface with too many options
- Slow performance despite powerful capabilities
- Frustrating user experience for daily tasks
- Built for administrators, not end users
Outcome:
- High churn despite market dominance
- User complaints about complexity and speed
- Teams actively seeking alternatives
- Technical correctness without user delight
Notion vs. Confluence: Simplicity Conquers Power
How intuitive design defeated enterprise feature sets in knowledge management
Notion
Taste-Driven Approach
Strategy:
Simple blocks that compose into complex systems. Minimal learning curve despite powerful capabilities, focusing on flexibility without complexity.
Results:
Key Insights:
- Composable building blocks feel more intuitive than rigid templates
- Visual design makes complex information management approachable
- Personal use cases drive team adoption organically
- People want flexibility without overwhelming complexity
Enterprise Wikis (Confluence, etc.)
Traditional Approach
Strategy:
Comprehensive enterprise knowledge management with advanced permissions, extensive templates, and enterprise integration capabilities.
Challenges:
- Steep learning curve for basic operations
- Complex permission systems confuse users
- Template-heavy approach limits creativity
- Optimized for IT requirements, not user workflows
Outcome:
- Losing market share to simpler alternatives
- Low user adoption despite IT department mandates
- Users create workarounds with consumer tools
- Technical superiority doesn't translate to user satisfaction
Why These Differences Matter
These examples illustrate a fundamental shift in how we think about software development. In the age of AI-assisted coding, the technical implementation becomes commoditized. What remains valuable is the human judgment to:
- Understand the real problem behind feature requests (worth 2.6x in retention)
- Anticipate user mental models and emotional responses (73% fewer support tickets)
- Design for the edge cases that matter to user experience (41% better conversion)
- Balance complexity with usability (3x adoption speed)
- Create systems that feel human even when they’re automated (58% NPS increase)
The platforms that succeed in the vibe coding era won’t be those with the most advanced AI models—they’ll be those that combine AI capability with human taste to create experiences that users don’t just tolerate, but genuinely enjoy. And now we have the data to prove it: taste directly correlates with business success.
Developing Taste: How to Build Product Intuition in the AI Age
Taste isn’t an innate talent—it’s a skill that can be developed through deliberate practice and the right frameworks. As AI handles more of the technical heavy lifting, developing taste becomes the most important investment you can make in your engineering career.
The Taste Development Framework
4-step progression from technical focus to user-centered thinking
Develop User Empathy Through Direct Contact
Transform abstract requirements into real human needs through firsthand user exposure
Practice Methods:
Study Exceptional User Experiences
Develop systematic analysis skills for what makes experiences work or fail
Practice Methods:
Practice Constraint-Based Problem Solving
Learn to find elegant solutions by embracing limitations rather than unlimited resources
Practice Methods:
Develop Business Context Awareness
Understand how technical decisions impact business outcomes and user behavior
Practice Methods:
Taste Development Accelerators
Pair with taste-forward developers, build things people actually use, and study why technically superior products fail to inferior but more intuitive alternatives.
AI accelerates taste development by enabling rapid prototyping and faster feedback loops—you can test user experiences and iterate on emotional responses at unprecedented speed.
Common Mistakes
Avoid optimizing for developers instead of users, assuming users think like you, prioritizing consistency over contextual appropriateness, and eliminating all friction instead of just bad friction.
Measuring Your Taste Development
Unlike technical skills, taste development is harder to measure objectively. Here are leading indicators:
You’re developing taste when:
- Stakeholders start asking for your opinion on user experience decisions
- You can predict user confusion before user testing reveals it
- Your feature requests focus on user jobs-to-be-done, not technical capabilities
- You find yourself simplifying rather than adding complexity
- Users describe your interfaces as “intuitive” without being able to explain why
The goal isn’t to become a designer—it’s to become an engineer whose technical decisions consistently improve user outcomes. In the vibe coding era, that’s what separates good developers from indispensable ones.
Conclusion: The Age of Taste Has Arrived
We stand at an inflection point: Lovable reached $1.8B valuation in 8 months, Emergent hit $10M ARR in 2 months, and GitHub Copilot serves 20 million developers generating 50% of their code.
The transformation is clear: as AI handles implementation, engineering value shifts from “Can we build it?” to “Should we build it?” Technical skills are commoditized while human capabilities—empathy, taste, strategic thinking—become invaluable.
Your Path Forward
Start developing taste today:
- Build with vibe coding platforms and notice what feels right vs. technically correct
- Shadow real users to understand their actual problems
- Analyze products you love to identify taste decisions
- Practice AI orchestration while focusing on user outcomes
The market rewards taste: product-minded engineers command 40% higher salaries, taste-focused companies (Airbnb, Stripe, Linear) consistently outperform competitors, and vibe coding platforms prioritizing user experience achieve unprecedented growth.
As Jack O’Brien observed, “virtually all new software will be created by autonomous agents,” but “few software engineers today truly have great taste.” This gap represents the greatest opportunity in modern software engineering.
We’re witnessing software engineering’s evolution into something more creative, more human, and ultimately more impactful. When anyone can build anything, those who know what’s worth building—and how to make it resonate—will shape technology’s future.
The age of taste has arrived. The only question is: will you develop yours?
Footnotes
-
TechCrunch. “Lovable becomes a unicorn with $200M Series A just 8 months after launch” (July 2025). Record-breaking unicorn status achievement with $1.8B valuation. ↩ ↩2
-
Emergent AI. “$10M ARR in just 2 months from launch” (August 2025). Platform growth metrics and 700,000+ user adoption with “no developers required” positioning. ↩ ↩2
-
TechCrunch. “GitHub Copilot crosses 20M all-time users” (July 2025). AI code generation adoption and productivity metrics. ↩ ↩2
-
Hacker News. “Neo (Autonomous ML engineer) is leading the MLE Bench with 34.2% score” (2025). Autonomous ML engineering benchmarks outperforming Microsoft (22.4%) and OpenAI (16.9%) on MLE-Bench. ↩
-
Y Combinator. “AI-First Startups: 2025 Batch Analysis” (2025). Survey data on AI code generation usage among startups. ↩
-
Andrej Karpathy. “Vibe Coding” original tweet (February 2025). Coined the term “vibe coding” paradigm. ↩
-
Jack O’Brien. “Taste and Tradeoffs” (October 2024). Analysis of taste in software engineering and AI’s impact. ↩
-
Bloom, B.S. (Ed.). Taxonomy of Educational Objectives: The Classification of Educational Goals. Handbook I: Cognitive Domain (1956). Higher-order thinking involves analysis, synthesis, and evaluation rather than just comprehension and application. ↩ ↩2
-
Developer community reports on “pit of death” problem in AI-generated code, where complexity exceeds AI’s ability to maintain or debug the codebase. Commonly reported across Cursor, Bolt, and V0 platforms (2024-2025). ↩
-
Industry analysis of AI development waves based on GitHub, Y Combinator, and market research data (2021-2025). Evolution from assistants to autonomous agents to vibe coding platforms. ↩
-
Growth analysis based on Lovable’s $1.8B valuation achievement, Emergent’s $10M ARR in 2 months, and traffic data showing user experience-focused platforms outperforming purely technical solutions (2024-2025). ↩
-
Formation.dev. “5 Nontechnical Skills That Matter for Software Engineers in the Age of AI” (2025). Product thinking as compass for AI-assisted development. ↩ ↩2
-
McKinsey. “The AI Productivity Paradox: 35-45% Task Reduction” (2025). Research on AI automation of routine coding tasks. ↩
Was this helpful?
Let me know what you think!