Observation on Programming with AI

I reckoned getting familiar with AI coding tools is necessary, tried some, and to my surprise, I turned out to be quite optimistic.

March 13, 2025

The communities of software developers–at least some members of them–have been wrapped in the dread of being replaced, since generative large-language-models (LLMs) and their applications on programming emerged. One’s opinion on if this statement stands may vary, but it is difficult to deny that generative LLMs is and will continue to be part of programming.

I believe such events have already happened before, and the programming as we know of is the aftermath of them: assembly emerged so people didn’t have to write machine code; high-level languages emerged so people can write in English-like syntaxes; code completion emerged so people didn’t have to remember the spell of every single API.

The magnitude of influence of generative LLMs, however, seems to be larger than all previous ones. With its help, human can use plain and ambiguous language to generate code that, regardless of it’s complexity, works. The level of abstraction, as well as the possibilities it unlocks, have never been higher.

A lot of people—many of them way more experienced and have a deeper understanding in programming than me—have expressed their opinions on this topic, such as The End of Programming as We Know of It, which I mostly agree with.

As a front end developer with rather short career experience, I reckon it would be necessary to leverage, or at least understand the “AI coding tools”, which I expect to be essential in the future of programming. I tried some of the most popular ones, was impressed and unimpressed by some aspects of them, and below are my thoughts.

In the end, somebody has to get their hands dirty

For some tasks, AI coding tools can be magical. It recognizes patterns and turns repeat tasks into several tab clicks. Programmers can also give out specific commands, and AI will take on the task at once. The magic falls off pretty quick, however, when there is abstraction included in the commands. The gap between the generated result and the vision becomes larger and harder to look away, that is, if it's working at all.

The reason is obvious. It's easy for AI to write a todo list application, but it's a lot harder for AI to write a todo list application that exactly matching one's vision. How would it look? Are there tags? Recursive tasks? Areas? The list goes on. Writing code through the lens of AI while demanding the output satisfying all the criteria is very difficult.

Then there are updates. New features have to be added while not causing any degradation. This task requires more abstract thinking, planning, and a huge amount of contextual information. Wishing for an entire application written and maintained by AI is almost like alchemy at this point, you throw some ingredients in, have no way to know exactly what is happening inside, all you can do is pray.

The last mile of the implementation, difficult already for human programmers, is the obstacle AI has not overcome yet, but vital for an application to be complete. AI can be a game changer for a limited scope, but the application won't be release-ready without somebody who can get their hands dirty to fix that one bug that reproduces over and over.

It was never about the code

It took me some time to realize that, coding is just a minor part of a software engineer's job. The actual job is solving real world problems using technical approach, and many tasks of the problem solving part, such as figuring out root issues behind symptoms, or talking to people for exchanging information, and many more, while require software engineering knowledge, do not contain coding. Yes, coding is important, as it directly impacts the velocity and quality of the solution, but there are many works need to be laid down before the first line of code is typed in.

I found the role of human, in this problem-solving system, similar to sensors for the real world. We observe the signals, and from them we identify the problems and approaches. Only after the necessary tasks are figured out that they are passed to the implementors, be them humans or machines. JARVIS can achieve a lot of crazy things, but it doesn't see the vision which made Tony Stark taking on action to eventually save half of the universe.

AI is really good at implementing one specific feature, and they will continue to be better, so if you are concerned about being replaced by AI as a programmer, it is not the most optimal way to compete with them on coding. The good news is that, it doesn't know what should be written in the first place. That is where human step in, inspect the result, then give further, adjusted instructions. In fact, I believe they who can leverage AI won't be replaced but proof themselves more valuable instead, as AI is the coding army that does not eat, sleep or slack off, while always ready for any commands given by their mastermind.

That is the situation for now, at least. I can see that in a few years, AI agents gain ability to gather some of the real world feedback and start to iterate by themselves. In the next phase of AI-enhanced coding, the abstraction level of both human and AI's tasks will be yet higher, and more abstract thinking will be required for those who aspire to be a proficient programmer.

Leave the fun part to me

As AI become an integral part of programming, the skill of efficient communication with it will be crucial for programmers. Specifically, the abilities of efficient reading, organized thinking, and giving clear instructions through writing, will be essential. Even before the AI days they were already extremely important skills, as like I mentioned before, a huge part of the job is communication, but with AI these skills directly impact one's coding productivity.

I'm very glad that I picked up regularly reading and writing for the last couple years, as these hobbies not only bring joy to me, but also becoming more and more valuable everyday. Because of that, I'm not very concerned of the possibility of being replaced for now.

Quite oppositely, I'm rather excited about the AI coding era. You see, I like creating things, that's the reason I fell in love with programming in the first place–to make my ideas become real, playable video games. Solo game development is not easy at all, as it requires great programming, project management, and art skills, to make a complete game by oneself. I learned it the hard way, after many abandoned projects. Often I found myself hating the code base, weeks after the start, as my excitement worn off by the definitely important, somewhat troublesome, but certainly boring parts. I look forward to be able to focus on making playable content, instead of struggling at collision detection or state machines, as for those specific scopes, AI could do the heavy lifting for me.