← Back to home

AI-Assisted Development

How I use AI tools without letting them control engineering decisions

I use ChatGPT, Claude, Codex, Cursor, Gemini, and Perplexity as engineering accelerators for debugging, research, UI exploration, documentation, productivity, and production support. The important part is knowing where AI is useful, where it is risky, and how to validate the output before it reaches a real app.

PositionAI as accelerator, not replacement
FocusFlutter, mobile, UX, research, debugging
Risk controlManual review, security, architecture checks
OutcomeFaster work with production discipline

Overview

Practical production workflow with architecture judgment in control

Practical production workflow

ChatGPT, Claude, Codex, Cursor, Gemini, and Perplexity as part of day-to-day engineering work.

I use AI tools for Flutter debugging, issue analysis, research, documentation support, UI prototyping, utility generation, asset workflows, and faster exploration. I treat the output as a starting point that still needs review, cleanup, architecture alignment, testing, and production hardening.

Key learning

AI becomes more useful when the engineer already understands the architecture, business logic, platform constraints, and performance risks.

Use cases

Debugging, research, UI prototypes, localization, docs, boilerplate, and small integrations.

Model fit

Different AI systems perform better for different tasks: UI, reasoning, Android analysis, or research.

Production discipline

Generated code is reviewed through branches, architecture checks, security review, and performance validation.

Professional perspective

AI-generated code can look functional while hiding performance issues, scalability gaps, incorrect assumptions, or long-term maintenance problems. I use AI to move faster, but never as a replacement for engineering fundamentals.

Tool Selection

Different AI tools are useful for different engineering situations

ChatGPT

Debugging, explanation, utility generation, UI ideas, asset workflows.

Useful for Flutter/Dart productivity, quick code explanation, documentation structure, app icon/image workflows, and rapid prototyping.

Claude

Long-context reasoning, refactoring review, architecture writing.

Useful when the problem needs careful reading, comparing trade-offs, reviewing large explanations, or turning rough notes into a clean case-study narrative.

Cursor

Editor-based code exploration and controlled implementation.

Useful for navigating local code, making scoped changes, checking repeated patterns, and accelerating small implementation tasks when the architecture is already clear.

Gemini

Android investigation, platform behavior, and technical comparison.

Useful for Android-specific research, performance discussion, platform questions, and comparing possible implementation approaches.

Perplexity

Research and source discovery.

Useful for quickly collecting references, checking recent ecosystem changes, and finding documentation paths before making implementation decisions.

Codex

Code generation and autocomplete.

Useful for boilerplate code generation, quick syntax autocompletes, and structural translation of algorithms.

Human judgment

The final decision still belongs to the engineer.

AI can suggest a direction, but I validate it against the project architecture, existing code style, security boundaries, platform behavior, and release risk.

Practical Use Cases

Where AI improves development speed without reducing engineering quality

01

Debugging support

Use AI to explain stack traces, compare possible causes, isolate Flutter/iOS/Android build problems, and create focused checklists.

02

UI prototyping

Generate quick HTML layout experiments, compare interaction ideas, and translate validated concepts into Flutter widgets manually.

03

Documentation

Convert rough implementation notes into installation guides, SDK usage documentation, changelogs, release notes, and technical summaries.

04

Repetitive code

Speed up localization keys, model scaffolding, mapping functions, simple API integrations, and boilerplate that still gets reviewed.

05

Research

Compare packages, platform policies, build tool behavior, store review constraints, and possible implementation trade-offs.

06

Design assets

Support image resizing, app icon preparation, placeholder visual creation, and properly sized assets when original resources are missing.

07

Testing ideas

Ask for edge cases, failure states, validation scenarios, and test data ideas before writing production tests.

08

Product thinking

Use AI to organize user feedback, review-store signals, analytics observations, and ASO hypotheses into clearer decision frameworks.

Where I Do Not Blindly Trust AI

AI output can look correct while hiding architecture, security, and maintenance problems

Architecture

Layer violations

AI may put API calls in UI, skip use cases, duplicate state logic, or ignore established repository patterns. I check every suggestion against the existing architecture.

Performance

Hidden runtime cost

Generated solutions can add expensive rebuilds, unnecessary loops, large widget trees, blocking startup work, or inefficient data transformations.

Security

Secrets and data exposure

I avoid sharing private keys, production credentials, customer data, tokens, backend secrets, or sensitive project information with AI tools.

Business logic

Wrong assumptions

AI often guesses product rules. I do not accept logic that touches subscriptions, identity, payments, auth, or customer state without manual validation.

Platform behavior

iOS and Android edge cases

Generated answers can miss signing, permissions, background behavior, store review rules, native SDK differences, and release-only failures.

Maintainability

Short-term code that becomes long-term debt

AI can produce code that works once but does not match naming, folder structure, testing patterns, error handling, or team conventions.

Responsible AI Workflow

The production rule: AI can accelerate the draft, but engineering review decides what ships

Step 01

Clarify the problem first

I define the actual bug, feature, or research question before prompting. Clear problem framing prevents generic or over-engineered output.

Step 02

Use the right tool

I choose tools based on the task: research, long-context reasoning, local code navigation, Android investigation, UI generation, or documentation.

Step 03

Isolate changes

AI-assisted code changes should be small, reviewable, and isolated. Large generated rewrites create debugging and ownership problems.

Step 04

Check architecture

I verify whether the output respects Clean Architecture, state management boundaries, dependency injection, localization, theme usage, and existing project patterns.

Step 05

Validate security

I check secrets, API keys, auth flows, payment logic, identity behavior, storage, and any user data handling before accepting AI-generated suggestions.

Step 06

Test and measure

Before shipping, I validate builds, runtime behavior, performance, edge cases, Crashlytics signals, analytics behavior, and release impact.

Professional perspective

Junior developers can sometimes rely too heavily on AI-generated code without fully understanding what was produced. That can create hidden debugging, performance, scalability, and maintainability issues later. My approach is different: I use AI to move faster, but I keep engineering fundamentals, architecture consistency, security, and product context in control.

AI is most powerful when the developer already understands the system. Back to portfolio

Contact

Ready to discuss senior Flutter, mobile architecture, or product engineering roles