FOUNDERS

Coding with AI

Tarik Ćoralić
May 21st, 2026
18min read
JUMP TO SECTION
A place for quotes, summaries, key points or something else that you want to highlight in this blog post.

Each problem is unique in its own way. Sometimes you get stuck with some bug without having an idea what to do next except to use joker “call other dev”. Sometimes you miss an estimate for the new feature by a lot just because you haven’t planned it properly or you have missed some obvious points because you haven’t asked the right questions at the right time. 

As you gain experience, you probably start having your own way of approaching these problems, set of some unwritten. You formed these rules, by bleeding on some problems, basically from your mistakes and falls. Would it be better to gain advantage by developing/learning a strategy much earlier in a career, and avoid unnecessary bleeding.

Having an exact strategy on how to approach problems in development can make your life easier. Even though you don’t need to follow exact steps every time, you will by time incorporate these steps unconsciously in your routine. Start by forcing yourself to follow these steps, write them somewhere in a visible place in your (home)office. Let’s try to define strategy!

Handling features

Even though your first tasks on your first real jobs will be to fix some minor bugs, soon after you will start working on some startup or get an opportunity to work on an important company project, there you will need to implement some features.

We have divided feature implementation in following steps:
- Analysis
- Estimation
- Coding
- Testing

Analysis

Getting to know the feature you are developing is the most important thing, you need to know every corner of it and you need to know answers to all questions about it. Start by approaching the problem from a critical standpoint and label all those uncertainties you have and clear those things. Forget about all the technical details and just think of a functionality from a user perspective as if you are going to use it. Communicating properly with others in a team will be the only right way that will give results. So, communicating with a designer, PM , other devs, product and anyone else involved will save you a lot more time and meetings in a later phase.

This is the phase where most engineers spend less time than needed mostly because of:
- firm deadlines and they try to save time in analysis and estimation
- not willing to participate and communicate in meetings which are related to analysis
- because of mindset that these meetings are waste of time
- If you are less experienced engineer you might be having a fear of asking stuping questions
- jump on coding directly and try to figure out things during development


As a part of analysis you need to do following:

1. Read your ticket
Read your ticket carefully. Make sure all acceptance criterias are clear to you. If there are no AC’s, there must be some product or project manager who should explain the ticket to you. 

After you have read your ticket, if you are working on client-side there should be some design that will show you what you need to code. 

2. Design analysis
You need to analyze design, and communicate any potential discrepancies or unclarities with the designer.
- Check if designer is following design system and using standardized components
- Check if implementation complexity is on a much higher level then benefits we are getting?

3. Compare design and acceptance criteria (AC)
Compare ticket description (and AC’s) with implemented design. If they are not in sync, communicate those differences with products, PM and designer. You need to have a clear picture, and know everything about the feature you are going to implement.

4. Ask questions 
- Don’t be afraid to ask questions about anything.
- Asking questions and proper communication is in general one of the most important things that will take you to successfully finalize your tasks on time.

5.  Check the codebase and analyze technical implementation
After you are clear about what you need to implement, you should take a quick look at the current state of the app and check the codebase where you are adding this feature. Think from a logical standpoint, are there some things that are not possible to implement in a way that non-tech people have envisioned it.  See if you have proper knowledge of the technology you are working on, try figuring out if you can implement requested or you need guidance from more senior dev.
Ask for opinions from people who have already touched that part of the app.

6. Client side - server side sync
Also, if you are interacting with the backend side (or vice-versa), you need to take into account if you have everything ready from the other side. Also, point out any additional work that should be done on the other side before you can complete your task.

7.  Divide ticket into subtasks
After you have verified all the stuff mentioned, you need to create your own plan of the implementation. Divide ticket into minor subtasks, either creating those subtasks in reality or having it just on a piece of paper. 

8. Create implementation plan
Write down your plan and keep notes of any future adjustments.

Estimation

When approaching ticket estimation, the best case scenario is that you have done all the steps from analysis and you come prepared for the pointing session. Don’t be afraid to postpone estimations, or to reject estimating when things are not clear enough to you. Once you estimate the ticket, any broken deadline from the dev side is on you. Of course, some unexpected things will always happen, issues will occur, but you need to make sure that you did your best.

Why are most estimates inaccurate ?
- Not investing enough time in analysis phase - being unprepared
- Being too optimistic and not anticipating unexpected events
- Blind guessing

When estimating, you should keep in mind following things:

1. Estimate each subtask separately
Estimate each subtask separately and in the end just summarize the points. 

2. Consider PR reviews 
You should consider also adding some points for PR reviews - because those can take some time, especially when complex logic is implemented.

3. Meetings and communication in the team
Consider time you will need to invest into communication with the team if needed (ex integration)

4. Dev Testing 
Dev testing is a really important part to minimize bugs produced, so that will take some time also. Also, if you are working in different environments, you need to test on all those also. If deploying is your responsibility, you should take into account that time also.

5. Unexpected things
And just when you thought you had your final estimate, pause for a second, and add some points for unexpected things. Always expect the unexpected.

Coding

Once the time has come for you to start coding your feature, just go over your plan and go task by task. Seek help on time once you are stuck, at least talk with someone or use the rubber duck method.

1. Split your code
It would be best to have one feature branch on which you will merge multiple minor subtasks - meaning split your code to get approvals faster. Dev test everything in detail.

2. Escalate the issues - push deadlines on time
If you encounter any issue, either something is much harder to implement or you notice something that you have missed, don’t be afraid to escalate the issue, to contact anyone involved in it. Be honest, don’t be optimistic in a way that the newly found issue won’t affect deadlines, sooner you accept it and push the deadline for a valid reason you will lower stress and pressure for everyone, most importantly for you.

3. Compare implementation with AC’s, design and description
When you finish coding and you are just about to create a PR, go over AC’s, ticket description and design and verify that your work is in sync with the requirements.

4. Self-review your code and seek improvements
Before creating a PR, you also need to do self-review of your code, and seek improvements. See if you can refactor something or do some other code improvements.

5. Think of edge cases and dev test everything once more
Dev test everything in detail - this will keep bugs away from you.
Try to find possible edge cases, be as destructive to your code as you can.

6. Create a PR 
When creating a PR, add comments with explanations for problematic places where you feel that someone could add a comment. It is always better to comment first, to show that you are aware the code is not easy to understand.

7. Resolve comments, finalize discussions
To merge your code it is really important to resolve/reply to comments on your PR as soon as possible, so you don’t get conflicts and also to speed up merging PR. Don’t leave your PR in a vacuum for some time.

Testing

In the end, when your code is merged, test it on the environment once more to make sure that it really works.

Mistake that a lot of developers do is they skip environment specific testing and directly move ticket to QA and issues might arise:
- Code was not deployed because of build issues and QA returns ticket
- There are some environment specific bugs which you did not covered during dev testing
- Someone else changes uncovered one of the cases you haven’t handled properly

Handling bugs

While most of these rules and principles apply to bugs, there are some key differences in the approach that we will mention in this section.

Before we delve into the details on how to tackle bugs that have appeared in the feature development process, we should quickly mention the types of bugs that you might encounter.

Types of bugs

Styling
Description: Styling bugs refer to issues related to how elements are presented visually on the user interface.
◦ Examples: Incorrect colors, font sizes, margins, paddings, or issues with layout responsiveness.

Logical mistakes
Description: Logical mistakes are errors in the application's logic flow, where the program does not perform the intended actions due to flawed reasoning or oversight.
◦ Examples: Infinite loops, unreachable code, or unintended consequences of conditional statements
Business logic

Description: Business logic bugs are errors related to how the application handles specific rules and processes that are essential to the core functionality of the software.
◦ Examples: Incorrect calculations, flawed decision-making processes, or rules not applied correctly.

Rendering
Description: Rendering bugs occur when the content or elements on a webpage or application do not display correctly or as intended.
◦ Examples: Misaligned elements, overlapping content, or elements not appearing in the correct order.

Cross browser compatibility
Description: Cross browser compatibility bugs occur when a website or application behaves differently across various web browsers or versions.
◦ Examples: Features not working in certain browsers, layout issues specific to a browser's rendering engine, or performance variations.

Data issues
Description: Data issues involve problems with the integrity, accuracy, or consistency of data within the application.
◦ Examples: Incorrect data retrieval, data corruption, or mismatches between different data sources.

State management
Description: State management bugs involve problems with how data is stored and managed within an application, especially across different parts of the application.
◦ Examples: Inconsistent data updates, incorrect data being displayed, or data loss under certain conditions

These aforementioned bug types are most common bug types that you will encounter, some other notable mentions are:

Compatibility issues
Description: Compatibility bugs arise when the software does not work correctly with other software components or systems it needs to interact with.
◦ Examples: API changes not accounted for, incompatible library versions.

Performance bugs
Description: Performance bugs impact the speed or responsiveness of the software.
◦ Examples: Slow loading times, high memory usage, or inefficient algorithms causing delays.

Security bugs
Description: Security bugs involve vulnerabilities that could be exploited by malicious users or code.
◦ Examples: Incorrect authentication setup, missing authentication middleware.

Localization issues
Description: Localization bugs occur when the software does not behave correctly or display content properly in different languages or locales.
◦ Examples: Text truncation, incorrect date/time formatting, or issues with character encoding.

Deployment bugs
Description: Installation or deployment bugs prevent the software from being installed or deployed correctly.
◦ Examples: Configuration errors, incorrect environment variables

While all of these bug types could be a separate topic itself, we were thinking of a general way to handle all of these variations. It is not mandatory to take all these steps when fixing your bug, but it is a good idea to take all them into consideration when doing your development to minimize unexpected issues that might occur from your fix.

We have split this method into 4 parts: ticket analysis, problem analysis, coding, testing

Ticket analysis

1. Read the ticket carefully
a. Make sure you fully understand the problem at hand
b. Read the documentation related to the bug at hand to make sure you didn’t miss any hidden requirements or acceptance criteria
c. Ask questions to people who are reporters of the issue as well as your PM or team lead
d. Make sure everything is clarified
2. Reproduce the bug
a. Sometimes a bug that is reported is not even a bug, a lot of the times the reporter of the issue did not go through previous point before the issue is raised
b. Make sure you understand under what circumstances this error is reproduced
c. If there are some more issues related than what is being reported, notify the PM/QA about it
3. Analyze
a. Confirm whether the issues is caused by client side or server side changes
b. Confirm whether the issues might be caused by another team
c. With proper analysis, there might be no need for development, problems are often solved by communication with the team
d. Make sure you document your analysis (post your findings in the comments of the ticket or similar)
e. Assume the feature is a black box and write all the IN-OUT cases for the feature and highlight those for which the problem presents itself

Problem analysis

1. Search where the issue happens on a higher level
a. Try to locate the screen/component where you think the problem resides
b. What is happening and how should it behave differently ?
c. When did the issue start to appear ? Get some insights from the Git Lens extension.
2. Debug the code to find the exact location of the culprit
a. In some cases, try not to look at the part where you think the bug is happening, sometimes you have to go a few steps back or a few steps further to locate the actual cause of the issue.
b. Read the lines of code line by line, understand what is happening under the hood
3. Think of the IN-OUT parameters that you wrote in the previous section, check if the line that you suspect produces unexpected results for the highlighted cases

Coding

1. By the time you come down to this part, you most likely know what change to make to fix the bug at hand
2. Visualize the problem, go over the exact steps that you have tried and didn’t work (Rubber duck)
3. If you don’t know how to do it (even after the analysis step), ask for help from a more senior developer
4. If you have a sense that you could write this code cleaner/better write it down 
a. Always do some minor refactoring if you have the time to do so.

Testing

1. Developer testing
a. By doing proper developer testing, you will save valuable development/testing time further and lower the chances of encountering a “boomerang” effect with your bug ticket. Just think of the path the ticket has to go before it comes back to you.
b. Use the IN-OUT cases that you wrote in one of the previous steps to check if all works as expected
c. This includes testing your fix after your changes were deployed to the staging environment

One thing to note from all of this is that even the most senior don’t go through all of these exact steps, the point of this guide was that all of these points make a strategic way to tackle issues and to make sure they have tried with everything that is in their power. Usually, when this method doesn’t help, the developer mostly relies on the help of someone who had previous experience with a similar issue, someone more experienced or perhaps trying to fish for an answer on Stackoverflow which should always be the last resort.

Each problem is unique in its own way. Sometimes you get stuck with some bug without having an idea what to do next except to use joker “call other dev”. Sometimes you miss an estimate for the new feature by a lot just because you haven’t planned it properly or you have missed some obvious points because you haven’t asked the right questions at the right time. 

As you gain experience, you probably start having your own way of approaching these problems, set of some unwritten. You formed these rules, by bleeding on some problems, basically from your mistakes and falls. Would it be better to gain advantage by developing/learning a strategy much earlier in a career, and avoid unnecessary bleeding.

Having an exact strategy on how to approach problems in development can make your life easier. Even though you don’t need to follow exact steps every time, you will by time incorporate these steps unconsciously in your routine. Start by forcing yourself to follow these steps, write them somewhere in a visible place in your (home)office. Let’s try to define strategy!

Handling features

Even though your first tasks on your first real jobs will be to fix some minor bugs, soon after you will start working on some startup or get an opportunity to work on an important company project, there you will need to implement some features.

We have divided feature implementation in following steps:

  1. Analysis
  2. Estimation
  3. Coding

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6
Block quote

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

Each problem is unique in its own way. Sometimes you get stuck with some bug without having an idea what to do next except to use joker “call other dev”. Sometimes you miss an estimate for the new feature by a lot just because you haven’t planned it properly or you have missed some obvious points because you haven’t asked the right questions at the right time. 

As you gain experience, you probably start having your own way of approaching these problems, set of some unwritten. You formed these rules, by bleeding on some problems, basically from your mistakes and falls. Would it be better to gain advantage by developing/learning a strategy much earlier in a career, and avoid unnecessary bleeding.

Having an exact strategy on how to approach problems in development can make your life easier. Even though you don’t need to follow exact steps every time, you will by time incorporate these steps unconsciously in your routine. Start by forcing yourself to follow these steps, write them somewhere in a visible place in your (home)office. Let’s try to define strategy!

Handling features

Even though your first tasks on your first real jobs will be to fix some minor bugs, soon after you will start working on some startup or get an opportunity to work on an important company project, there you will need to implement some features.

We have divided feature implementation in following steps:

  1. Analysis
  2. Estimation
  3. Coding

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6
Block quote

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

Each problem is unique in its own way. Sometimes you get stuck with some bug without having an idea what to do next except to use joker “call other dev”. Sometimes you miss an estimate for the new feature by a lot just because you haven’t planned it properly or you have missed some obvious points because you haven’t asked the right questions at the right time. 

As you gain experience, you probably start having your own way of approaching these problems, set of some unwritten. You formed these rules, by bleeding on some problems, basically from your mistakes and falls. Would it be better to gain advantage by developing/learning a strategy much earlier in a career, and avoid unnecessary bleeding.

Having an exact strategy on how to approach problems in development can make your life easier. Even though you don’t need to follow exact steps every time, you will by time incorporate these steps unconsciously in your routine. Start by forcing yourself to follow these steps, write them somewhere in a visible place in your (home)office. Let’s try to define strategy!

Handling features

Even though your first tasks on your first real jobs will be to fix some minor bugs, soon after you will start working on some startup or get an opportunity to work on an important company project, there you will need to implement some features.

We have divided feature implementation in following steps:

  1. Analysis
  2. Estimation
  3. Coding

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6
Block quote

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

Each problem is unique in its own way. Sometimes you get stuck with some bug without having an idea what to do next except to use joker “call other dev”. Sometimes you miss an estimate for the new feature by a lot just because you haven’t planned it properly or you have missed some obvious points because you haven’t asked the right questions at the right time. 

As you gain experience, you probably start having your own way of approaching these problems, set of some unwritten. You formed these rules, by bleeding on some problems, basically from your mistakes and falls. Would it be better to gain advantage by developing/learning a strategy much earlier in a career, and avoid unnecessary bleeding.

Having an exact strategy on how to approach problems in development can make your life easier. Even though you don’t need to follow exact steps every time, you will by time incorporate these steps unconsciously in your routine. Start by forcing yourself to follow these steps, write them somewhere in a visible place in your (home)office. Let’s try to define strategy!

Handling features

Even though your first tasks on your first real jobs will be to fix some minor bugs, soon after you will start working on some startup or get an opportunity to work on an important company project, there you will need to implement some features.

We have divided feature implementation in following steps:

  1. Analysis
  2. Estimation
  3. Coding

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6
Block quote

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.

Block quote

Ordered list

  1. Item 1
  2. Item 2
  3. Item 3

Unordered list

  • Item A
  • Item B
  • Item C

Text link

Bold text

Emphasis

Superscript

Subscript

Learning how to use AI to code might sound simple, but here's what most developers discover: 80% of
code can be AI-generated, yet you still can't fall asleep at the wheel. The difference between productive AI coding and frustrating copy-paste chaos? Knowing when and how to actually use these tools.
Some developers achieve 10-30% faster coding speeds with proper AI implementation, but some others
struggle because they skipped the fundamentals.
This guide will show you exactly how to use coding AI effectively in your daily work. We'll cover:
• Choosing the best AI for developers (such as Claude, Cursor, and others)
• Understanding Ask, Plan, and Agent modes
• Setting up AI powered coding tools correctly
• Avoiding the mistakes that derail AI code writing

Getting Started with AI Powered Coding Tools
What You Need to Know Before Using Coding AI

AI powered coding tools operate on large language models that have zero semantic understanding. They
predict what code should look like based on syntax patterns, not actual comprehension. This matters
because you need to verify everything they generate.
LLMs excel at auto-regressive token prediction, which makes them powerful for coding where outputs can be tested and verified. The verifiable nature of code is exactly what makes coding AI practical, but it also means you remain responsible for understanding what gets committed.
You need basic software engineering knowledge to use these tools effectively. Without understanding
core concepts, you can't evaluate whether AI-generated code solves your actual problem or just looks
correct.

Setting Realistic Expectations for AI Code Writing

Developers using AI tools properly achieve 10-30% faster coding on real projects. Test writing shows even stronger results, with some projects reaching over 1,000 assertions that wouldn't exist without AI
assistance.
AI brings tangible value in specific areas:

  • ● Understanding unfamiliar codebases quickly
    ● Generating boilerplate documentation and docstrings
    ● Enforcing coding guidelines and compliance standards
    ● Planning project structures and mapping dependencies

However, 70% of developers believe AI gives them an advantage at work, yet rigorousstudies show experienced developers can be 19% slower while perceiving a 20% speedimprovement. The gap between perceived and actual productivity matters.

AI struggles with design and architectural consistency. It may solve the same problem differently across
files. It can also be confidently wrong about library versions and API behavior.

Essential Tools and Accounts to Set Up

Most productive developers use two to three tools for different purposes. The common combination
pairs an IDE tool with an AI chat assistant.
Tool categories break down into distinct use cases:

  • ● AI-integrated editors: Cursor, Windsurf, VS Code with Copilot for inline completion and multi-file edits
    ● Terminal-based agents: Claude Code, Codex for command-line task delegation
    ● Dedicated applications: Claude Desktop, ChatGPT for research, planning, and architecturedecisions
    ● Cloud-based agents: Devin, GitHub Copilot for simple task automation

Start with one IDE tool and one chat assistant. Cursor and Claude Desktop form a strong foundation, but GitHub Copilot works well for teams already on GitHub.
Create a context file immediately. Tools like Cursor use rules files, while others use GEMINI.md or similar
naming. Include coding style, dependency versions, and recurring patterns. Quality context beats
quantity.

The Core AI Coding Workflow That Actually Works

Start with Discussion Mode, Not Code Generation
Developers who skip planning redo tasks from scratch roughly 40% of the time. The fix isn't better
prompts but discussing requirements before writing any code.
AI coding assistants are too eager to execute. They make assumptions about your architecture and
patterns, which compound into wrong decisions. Force the AI to:
  • 1. Read your codebase first
    2. Ask clarifying questions
    3. Propose an approach
    4. Wait for approval before touching code
Break Down Tasks into Manageable Pieces
Feed the AI manageable tasks, not entire codebases at once. LLMs perform best with focused prompts:
  • ● Implement one function
    ● Fix one bug
    ● Add one feature at a time

When you ask for too much in one go, the output becomes inconsistent, as if multiple developers
worked without coordination.
Migrate one service at a time during large projects. Each iteration carries forward the context of what's
been built and incrementally adds to it.
Use Ask Mode for Questions and Clarifications
Ask mode answers questions without touching your code. Highlight code, type a question, and get
explanations about what it does, testing suggestions, or edge case handling. You can inquire about
library usage, SQL queries, or algorithm efficiency without triggering file changes.
A recommended workflow bounces between ask and code modes:
  • ● Discuss what you want
    ● Get suggestions
    ● Provide feedback
    ● Once the AI understands the mission, switch modes to edit files
All that conversation ensures correct code changes.
Switch to Agent Mode for Complex Changes
Agent mode handles multi-step tasks autonomously. It analyzes your codebase, determines relevant
files, proposes edits, and runs terminal commands until the task completes. Use agent mode when:
  • ● Tasks span multiple files
    ● Coordinated changes are needed across your project
Agent mode applies edits automatically rather than waiting for explicit approval, though it surfaces risky commands for review. Context windows remain finite, so custom instructions help maintain consistency when the agent builds frontend after backend.
When to Use Plan Mode for Larger Features
Plan mode lets you iterate on requirements before any code gets written. The agent explores your
codebase and builds context. By the time coding starts, it knows exactly what to do.
Use plan mode when:
  • ● Tasks touch three or more files
    ● The work involves architectural decisions
    ● You cannot describe the exact code change in one sentence
For large features, you might spend an hour in plan mode before writing any code.
Keep Sessions Short and Focused
Context switching destroys code quality. Work on one task, one codebase, one problem at a time. Limit
intense work to four hours daily to avoid diminishing returns.

Choosing and Using the Best AI for Developers

How to Pick Between Cursor, Claude, and Other Tools
The real difference comes down to workflow philosophy and autonomy:
  • ● Claude Code operates agent-first — you describe tasks and review results
    ● Cursor functions IDE-first — you drive and approve changes inline
Both handle code generation, refactoring, and terminal commands, but implementation differs.
Cursor lets you switch between GPT-5.3-Codex, Claude Sonnet 4.5, Gemini 3 Pro, and Composer models within sessions. Claude Code runs Anthropic models exclusively.
Pricing snapshot:
  • ● Cursor: USD 20.00 monthly (individual) / USD 40.00 per user flat-rate (teams)
    ● Claude Code: requires Premium at USD 20.00 monthly / USD 150.00 per user (AnthropicPremium seats for teams)
Setting Up Rules and Context for Consistent Results
Create a .cursor/rules directory with .mdc files for layer-specific instructions. Split rules by use case since
loading too many instructions reduces output quality. Unit test rules shouldn't mix with integration test
rules because they contradict.
For Claude Code, AGENTS.md contains core context and routing rules. Use /agents command to
configure specialist agents, each with isolated context.
Using Multiple AI Tools Together
Most power users run both tools:
  • ● Claude Code handles autonomous multi-file work like refactoring and test generation
    ● Cursor manages interactive editing and completions
One developer reported this combination saves 10-20 hours weekly for USD 40.00 monthly total.
Training Your AI Tool to Match Your Coding Style
Document context in session-end files like GEMINI.md with dependency versions and architecture
details. This functions as a cheat sheet for next sessions. Configure naming conventions and formatting
preferences directly: "Generate Python code following PEP 8 standards, using snake_case for variables".

Avoiding Common AI Coding Mistakes

Never Commit Code You Don't Understand
Make one rule non-negotiable: never merge code you can't explain line by line.
AI-generated pull requests contain 1.7 times more issues overall, with higher rates of logic, security, and
performance defects. The code compiles and looks correct, but understanding beats appearance.
How to Catch and Fix AI Hallucinations
Hallucinations follow predictable patterns. AI tends to:
  • ● Invent function signatures
    ● Import non-existent libraries
    ● Call APIs with wrong parameters
In fact, 66% of developers cite AI solutions that are almost right but not quite as their top frustration.
Defense:
  • ● Run type checkers immediately after accepting generated code
    ● Verify all suggested dependencies exist in actual registries before installation
Managing Context to Prevent Confusion
Context rot degrades model accuracy as token count increases. Keep context tight by:
  • ● Referencing only relevant files
    ● Pasting specific error snippets instead of entire logs
    ● Starting fresh sessions when the AI produces inconsistent outputs
Context pollution affects subsequent generations, so a clean session beats a contaminated one.
Staying Engaged During Code Generation
Verification time expands even when generation time compresses. Review each function as it generates
instead of batch-reviewing later. Test AI outputs with edge cases like:
  • ● Null values
    ● Empty arrays
    ● Boundary conditions where models typically fail
Learning from AI Instead of Copying Blindly
Developers report getting faster at writing code but understanding less of it. Attempt problems yourself
before asking AI. When you receive generated code:
  • ● Study why the solution works
    ● Understand what its limitations are
    ● Build actual expertise rather than dependency

Conclusion

You now have everything you need to use AI coding tools effectively without falling into common traps.
Start with one IDE tool and one chat assistant, then master Ask, Plan, and Agent modes for different
scenarios. Most importantly, never commit code you don't understand. AI can make you faster, but only
if you stay engaged and verify everything.
Keep your sessions focused, your context tight, and your learning continuous. The productivity gains will
follow accordingly.
Key Takeaways

Master AI coding tools to achieve 10-30% faster development while maintaining code
quality and understanding.

  • ● Start with discussion mode before generating code — plan requirements and get AI clarificationto avoid 40% task rework rates
    ● Use focused workflows: Ask mode for questions, Agent mode for multi-file changes, Plan modefor large features
    ● Never commit AI-generated code you can't explain line by line — AI creates 1.7x more bugsthan human code
    ● Set up proper context with rules files and coding standards to get consistent, quality outputsfrom your AI tools
    ● Combine multiple tools strategically — use IDE integration for inline edits and chat assistants forplanning and architecture
The key to successful AI coding isn't replacing your skills but amplifying them. Stay engaged during code
generation, verify everything with testing, and treat AI as a powerful assistant that requires your
oversight and understanding to deliver real productivity gains.
Our Overview — What We'd Reach For First
After all the theory, here's our honest take: if you're new to AI coding, you don't need to adopt every
tool on day one. We'd build the habit in this order, and we'd be specific about which tool earns its place
at each stage.
Why This Order?
Stage 1 — Chat assistant for planning. Planning before coding produces the highest return on time
invested. A short conversation with Claude or ChatGPT before writing any code surfaces architectural
decisions that would otherwise require multiple rewrites later. The habit transfers across codebases and
frameworks, and the base tier of either tool covers planning work without additional cost.

Stage 2 — AI-integrated editor. Inline completion delivers the most immediate productivity gain once
requirements are clear. Cursor suits solo developers because of its model flexibility, while GitHub Copilot fits teams already standardized on GitHub. Both produce measurable speed improvements within thefirst working session.

Stage 3 — Terminal agent. Add this stage after the first two become routine. Agent tools like ClaudeCode handle multi-file work effectively, but they require disciplined context management. A vague taskin a poorly organized repository produces output that takes longer to verify than to rewrite. The value isreal, but the prerequisites matter.
Honest Trade-offs Worth Mentioning
  • ● If you only have budget for one tool: go with an AI-integrated editor. The chat assistant tier of Claude or ChatGPT is usable on a free plan for the planning work.
    ● If your team is small and ships a lot of UI: Cursor + Claude Desktop is the combination we keep coming back to.
    ● If your team is large and centralized on GitHub: Copilot Enterprise reduces friction more than the marginal feature differences justify switching.
    ● Set up proper context with rules files and coding standards to get consistent, quality outputsfrom your AI tools
    ● If you write a lot of tests or do migrations: skip ahead to Claude Code earlier — that's where the agent style pays for itself fastest.
The Mistake We Keep Seeing
Developers chase the newest tool, switch every two weeks, and never build the habits that actually
compound. Pick one stack, stay with it for a month, write down what works, and only then expand. The
tool that's already on your machine and configured correctly will out-produce the shiny one you haven't
learned yet — every single time.
Where to Learn This Properly
Reading guides like this one gets you started, but structured courses move you further faster. Anthropic
offers a full set of free courses through Anthropic Academy at https://anthropic.skilljar.com — no
Anthropic account required, just a free Skilljar sign-up. The courses most relevant to this guide:
  • ● Claude 101 — fundamentals of using Claude for everyday tasks
    ● Claude Code 101 — getting started with Claude Code in your daily workflow
    ● Claude Code in Action — deeper integration into real development work
    ● Building with the Claude API — full coverage of the API for developers
    ● Introduction to Agent Skills — how SKILL.md files work and how to write your own
    ● Introduction to Subagents — managing context with specialized sub-agents
    ● AI Fluency: Framework & Foundations — the broader skill of collaborating with AI effectively
Pick one course that matches the gap in your current workflow, and finish it before adding another tool.
Free courses are only valuable if you actually complete them.

Bottom line: start small, stay engaged, verify everything. The productivity follows the
habits — not the other way around.

READ MORE

Similar articles

FOUNDERS
Problem Solving - Features
Ahmed Selimović
August 28th, 2024
FOUNDERS
n8n Workflows
Amina Dervišić
May 6th 2026