Coding With AI Tools: Practical Considerations

April 8, 2025

Explore the real-world advantages and limitations of AI-assisted coding and how to integrate these tools effectively into your workflow.

The rise of large language models (LLMs) like ChatGPT, Cursor, Claude, Copilot, and Codeium (coincidence...?) has revolutionized the programming experience for developers of all skill levels. These tools have even sparked trends like "vibe coding."

In this post, I won't debate whether generative AI (Gen AI) tools will replace developer jobs. It's clear they will reduce the need for developers to handle repetitive, low-level tasks while significantly benefiting those who know how to integrate them effectively into their workflow.

Nor will I argue whether using these tools is inherently good or bad. While the meme-worthy concept of "vibe coding" is unlikely to be viable in serious organizations, there's room for developers to utilise these tools while still understanding every piece of code they deploy, whether written by a human or AI [Ars Technica].

Instead, my goal is to take a pragmatic approach—exploring the strengths and weaknesses of these AI coding assistants and discussing how we can best integrate them into our workflows to build better software more efficiently.

Pros

TLDR, these tools excel in solving well-documented problems that are extensively covered on the internet. Their key advantages include:

  • Powerful code completion for common features and patterns
    • In my personal journey as a web developer (which I'm still new to), I've used AI tools to generate new TSX/React components and set up a Django API backend for more complex data models.
  • Efficient identification of common mistakes in boilerplate code
    • These tools perform well when working with widely discussed technologies, catching common pitfalls that might otherwise go unnoticed.
  • Accelerated learning for new tools and frameworks
    • They can help developers quickly grasp new technologies, allowing them to function as pseudo-full-stack developers for common use cases.

Cons

On the flip side, AI tools struggle with less-documented problems, particularly those that arise from recent software updates or exceed the LLM's training data cutoff. Here are some notable limitations:

  • Inability to address recent software bugs
    • For example, I encountered a bug on my website that led ChatGPT to send me on a wild goose chase for an hour. A simple Google search, however, pointed me to two GitHub discussions revealing that the issue stemmed from a bug in the latest "next-mdx-remote" dependency.
    • See Link 1, Link 2
Error: A React Element from an older version of React was rendered. This is not supported. It can happen if:
- Multiple copies of the "react" package is used.
- A library pre-bundled an old copy of "react" or "react/jsx-runtime".
- A compiler tries to "inline" JSX instead of using the runtime.
  • Limited understanding of large codebases
    • LLMs have a finite context window, making them ill-suited for analyzing and refactoring extensive projects.
  • Potential to introduce new bugs
    • AI-generated code can sometimes be a patchwork of different solutions, leading to unexpected issues when amalgamating code from multiple requests.

Final Thoughts

AI coding assistants can make us more effective developers; however it's always important for developers to always understand the code we deploy, and to understand where these tools might falter.