How I Use AI to Ship 3x Faster Without Cutting Corners
AI tools haven't replaced my thinking — they've removed the parts of coding I found tedious. Here's my exact workflow: what I delegate to AI, what I never do, and how I maintain code quality while moving fast.
Many developers feel that AI coding tools are “cheating” or “will make us lazy.” I disagree. Over the last two years I’ve used various AI tools — Claude, ChatGPT, Cursor, Antigravity — and the result: I ship more, faster, with the same or better quality.
The key: knowing what to delegate to AI and what you still need to think through yourself.
What I Delegate to AI
1. Boilerplate and repetitive code
// I just describe it to AI:
// "Create a TypeScript type for a booking API response with fields:
// id, passenger_name, route_from, route_to, departure_time,
// status (pending/confirmed/cancelled), total_price"
// AI generates:
type BookingStatus = "pending" | "confirmed" | "cancelled";
interface BookingResponse {
id: string;
passengerName: string;
routeFrom: string;
routeTo: string;
departureTime: Date;
status: BookingStatus;
totalPrice: number;
}
This takes 5 minutes manually, 30 seconds with AI.
2. CSS/Tailwind styling
Prompt: "Build a card component with Tailwind CSS:
- Dark background (#18181B)
- Thin border that glows on hover
- 24px padding
- rounded-xl corners
- Smooth transition"
3. Regex and string manipulation
// Prompt: "Create a function that extracts all URLs from a text string"
function extractUrls(text: string): string[] {
const urlRegex =
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g;
return text.match(urlRegex) || [];
}
4. Documentation and comments
AI is excellent at generating JSDoc from existing code:
/**
* Calculates the total booking price, accounting for
* applicable discounts and taxes.
*
* @param basePrice - Base ticket price
* @param discount - Discount percentage (0-100)
* @param taxRate - Tax rate (default: 0.11 for VAT)
* @returns Total price after discount and tax
*/
function calculateTotalPrice(
basePrice: number,
discount: number,
taxRate = 0.11,
): number {
const discountedPrice = basePrice * (1 - discount / 100);
return discountedPrice * (1 + taxRate);
}
What I Do NOT Delegate to AI
1. Architecture and system design decisions
“Do we need microservices or a monolith?” — you need to think this through yourself based on business context.
2. Critical business logic
Price calculations, business rules, important data validation — these require deep domain understanding. AI can get it wrong.
3. Reviewing AI-generated code
You must review every line of AI-generated code. I never paste anything without reading it first. AI can:
- Generate syntactically correct but logically wrong code
- Use deprecated libraries
- Miss important edge cases
My Daily Workflow
Morning: Plan what to work on today (own brain)
↓
Break tasks into small subtasks
↓
For each task:
If boilerplate/repetitive → delegate to AI
If logic/architecture → think it through, use AI for sanity check
↓
Review all AI output before committing
↓
Manual testing — AI can't replace this
Tools I Use
- Antigravity — primary editor, built-in context-aware AI
- Claude — discussing approaches, explaining concepts, reviewing
- ChatGPT — early brainstorming, ideation
Conclusion
AI hasn’t made me lazy. AI takes away the boring parts so I can focus on the parts that require thinking and creativity. The result: more features shipped with less burnout.
Loading comments...