Willem's Fizzy Logic

5 Coding tasks I don’t use Generative AI for

5 Coding tasks I don’t use Generative AI for

After seeing a bunch of blog posts about what tasks you can use AI for, I figured it was time to write something about where I don’t use AI for!

I’ve found over the past couple of years that AI is awesome for coding tasks. It changed my work for the better in many places. However, it did change for the good because I learned when to skip AI and use other tools to get the job done.

Here are 5 tasks where I don’t use AI in my daily workflow.

Task 1: Create a new project structure

Whenever I start a new project, I am happily writing commands like dotnet new web -n <stuff>. And npx create-next-app. And here’s the reason why:

Project templates are well tested by the maintainers of the products I use. And it’s much faster to use a project template than to ask AI to build the project from scratch.

Here’s a fun fact: I tried building a next app with Github Copilot Agent Mode. It gave me the command npx create-next-app@latest instead of generating all the files for the project. Good job intern, you’ve learned well 😉

Whenever I can use a CLI to generate code based on a template, I will. It’s much easier and faster. I can modify the code afterwards with any agent I like.

Generative AI models excel at tasks that aren’t precise. They’re not great at exact tasks. Also, generative AI models are slow. A new next.js project is created in mere milliseconds on my machine. And while I admit that I spend a great deal of money on my machine with a top-of-the-line NVME drive, I’m pretty sure project templates are faster than an LLM on any machine.

Task 2: Develop standard UI components

I’ve tried it so many times, letting AI generate pagers, tables, dropdowns, etc. It’s just too complicated for the model. And of course this will change, but I think that it will remain a good idea to use a standard UI framework for building user interfaces. Frameworks like Shadcn, Bootstrap, and many others out there look great and are well tested. You don’t get that with your own AI generated “stuff”.

Using quality input for an AI generated application helps a great deal to increase the quality of your code base so you can focus on the business logic that’s unique to your application. So, while I’m talking about UI frameworks here, the same could be said for other frameworks too. Use a framework that’s well tested and well-known. You will have an easier time!

There’s a cost aspect to this too. Open-source frameworks are maintained by a large group of people. You can’t copy that without spending a lot of time and money yourself. It’s cheaper and better to contribute to open-source software.

Task 3: Refactoring that I can do with the built-in refactoring tools

Often, when writing code, I find myself going back to stuff I created earlier and changing a variable name or extract code into a separate method. This kind of refactoring can be done with AI, but it’s dangerous I’ve found. AI will forget things, change the structure of the code, or remove code that it thinks you don’t need.

Refactoring tools take a structured approach to your code and therefore don’t break things as easily. Unless there’s a logic error in the refactoring tool, you’ll get great results much faster.

I don’t use AI for most of my refactoring work, because it simply isn’t suitable for it. There’s one exception to my rule here.

For my work I get to deal with old codebases (some are over 40 years old). We need to convert those to newer frameworks and modern languages. This is a case where refactoring isn’t getting you anywhere. This kind of stuff is where AI shines, I don’t need an exact conversion, I need something that looks 80% right and I can do the rest.

Task 4: Something that I can do fast with one or two statements

If you’ve used Github Copilot, Cursor, or Windsurf you know about the inline chat. This handy tool can take a short prompt and make simple code adjustments in the current file. I’ve cought myself abusing the inline chat way too many times for simple tasks, like removing or rewriting a short if-statement.

I teached myself not to be lazy anymore. Don’t use the inline chat for simple things like writing a single method name or a single line of code. Just type it in if you know the answer. It’s faster.

Task 5: Learn a new framework or library

With AI agents coming to the forefront of development it’s tempting to think you don’t need to learn how to use that framework because AI will fix it for you. It doesn’t fix anything.

Since agents can go sideways and produce output that’s nonsensical or even dangerous it’s important to understand the stuff it creates. Yes, of course, you can use AI to review your code. I do that all the time. But still: You better check your code because the AI reviewer makes mistakes too.

Let’s look at this from a slightly different angle: Remember StackOverflow? We all do, because we copied code from that place. A lot of the stuff on there is dangerous because it can abuse a library or framework in ways that can cause serious problems in the future. Other source code on there is dangerous because it is slow to execute. Overall, you must double check what you take from there.

AI is trained on the code we shared on StackOverflow and copied from that place. So, guess what, it sucks too. And that’s too bad, because now we’re stuck with AI generating solutions that just don’t make sense.

However, if you spend time learning the frameworks you use, you’ll find that you can use AI to generate the first solution and then optimize that solution because you know how it’s supposed to be done.

I recommend disabling copilot, cursor and windsurf for learning a new framework. It forces you to think through your solutions and read the manual. I can also recommend getting a subscription to LinkedIn learning or Pluralsight if you are more of a video person. I prefer books personally, because I can control my learning pace a little better.

My worry for the future

I find generative AI a wonderful tool for writing code. I’ve built things in much less time than I otherwise needed to get the same result. I’ve been able to do this, because I spent 18 years learning the craft from courses, wonderful colleagues, MVP friends, and conference talks. I’ve been successful because I was willing to learn the craft and because my employer finds it important for me to keep learning.

Because we now have AI, clients are starting to expect us to be faster than ever before. Some junior developers get no time to learn how to write software properly and I’m worried because the pressure is on them: They’re forced to use tools like Copilot, because otherwise the project becomes too expensive. It’s hard to be faster with AI without making it dangerous if you don’t know how to write software properly.

There’s no way back from using AI. But we need to make sure that our junior developers get time to write artisanal code and learn from the masters in their craft so they can write software that stays around for a long time. Anything you don’t need to rewrite is cheaper. Yes, even if you use AI to rewrite a legacy codebase.

About

Willem Meints is a Chief AI Architect at Aigency/Info Support, bringing a wealth of experience in artificial intelligence and software development. As a Microsoft AI Most Valuable Professional (MVP), he has been recognized for his significant contributions to the AI community.

In addition to his professional work, Willem is an author dedicated to advancing the field of AI. His latest work focuses on effective applications of large language models, providing valuable guidance for professionals and enthusiasts alike.

Willem is a fan of good BBQ, reflecting his appreciation for craftsmanship both in and out of the digital realm.

Contact