Why You Should Still Code
Why You Should Still Code
AI can code. In fact, it can code pretty well. I can only speak to my personal experience, but for me a threshold was passed around March of this year, when I could reliably outsource nearly all of my coding to Claude agents — specifically, Opus 4.5 is where, if I wanted to do something, I could almost always get Claude to code it up faster than I could write it by hand. Code quality is still somewhat of a mixed bag, which I will talk about later, but generally, if you know what you are doing, you can get the agent to reliably output decent-quality code with relatively few bugs (often fewer bugs than in code I write by hand). As scary as it was, it was also exciting! Just think of all the projects I could do now that coding time wasn't the limiting factor. I had to test this new technology out! What could it do? Naturally, I had Claude agents polish up a number of existing personal projects (including this website) and set Claude up to assist with my research. It was particularly helpful in getting this website together — I've made personal websites in the past, but it's a real time sink, and time is something I often don't have as a graduate student. While I started making this website by mostly hand-coding it with AI suggestions, it quickly evolved into a Claude agent writing nearly all the code. Similarly, in my research it was a marvel to see it at work, condensing week-long projects into 30 minutes. Many different approaches could be tried at the same time, greatly speeding up the trial and error that is inherent in research and allowing better solutions to be found. So why am I writing this post?
We should still keep coding for two main reasons: 1) offloading coding tasks to an AI is boring and unengaging, and 2) by delegating coding tasks to an AI, we may be missing important insights. I will argue that we must find ways to work effectively with these coding agents to speed up coding tasks while still contributing to the code. This post approaches the topic from my perspective: that of a researcher who uses code in their work. I won't tackle the ethical issues associated with AI use here (there are a lot of them), nor will I tackle uses other than generating code or speculate about the future capabilities of these models. Instead, I reflect on my own experiences with AI-assisted coding and pose some of the questions I believe need to be addressed now.
Towards the end of my "try Claude out on everything" sprint, I began to feel very unmotivated. While agents were very effective at completing technically demanding tasks, it just didn't feel rewarding anymore. Why do it if I could just send it off to Claude? Compounding this, it still takes a lot of mental effort to work with these models in research: I still have to read what they are saying, check their outputs, and carefully plan approaches to problems. Basically, it's like having a very talented scientist with limited domain knowledge work on the coding side of your project while you become management / quality control. At least for me, there has always been very little mental reward in doing these management / QA jobs, especially for an AI's work. My main problem is that agentic coding is just boring: all the fun bits — the troubleshooting, hammering away trying to figure out how something works, writing beautiful code — were gone. I find prompting Claude all day boring. Not to mention, writing code is a mentally challenging activity; in some ways it is like going to the gym for your brain, and without it, it feels as though many skills I once had are slowly eroding. I am sure some people do not enjoy writing code, and for them coding is just tedious busy work they have to do; if you are one of these people, this point may not apply to you. However, I am sure many people like me enjoyed the challenge, and it was one of the day-to-day things that kept them engaged and thinking about their research. I truly believe that keeping technically inclined people engaged and learning is critical for the future of science.
Another thing I found during my experiment was that navigating my research code base felt almost like treading through thick fog: it was very easy to lose track of what does what, how things worked, or what was changed. Agents are very prone to over-engineering: code that should be simple often gains multiple checks for correct data types, array sizes, and a billion other things, and trivial solutions become far more complicated than they should be in the name of being exactly "textbook" correct. While using frontier models with explicit instructions can somewhat remedy this issue, it is still a problem. Compounding this, many parts of the code that are scientifically critical are often under-engineered or written completely wrong; agents still lack important scientific "intuition," and if their work is not carefully checked, this can lead to scientifically inaccurate results. For example, I have found that agents, if not given explicit instructions, often mess up mass definitions and struggle to understand when two definitions are equivalent, leading to awkward code. Moreover, code is often deeply interconnected with the problem you are trying to solve. By writing code, you expose yourself to the challenges and drawbacks of your analysis. For example, if it takes a very complicated multi-step process to do something, it is a hint that you may have a suboptimal approach or do not understand the problem fully. Conversely, having insights about the problem itself can help you write more efficient code; simplicity is often a hint of understanding, and a hard one to ignore for a human who has 24 hours in a day and a limited typing speed. There is also something to be said for just playing around with the data yourself and trying random functions on it. Even bugs can sometimes have unintended effects and help you develop new insights and understanding. I worry that critical scientific insights will be lost if we outsource our coding entirely to agents.
In this post, I want to draw attention to two issues relating to using agents: first, it is not mentally stimulating, and second, we may be losing key insights into the research process. On the flip side, AI usage has the potential to accelerate research greatly; I have seen it in my own work. I don't think abandoning agents is the answer; at this point they are too helpful to ignore. My question is: is there a way to keep, say, 95% of the speedup from using agents while keeping research engaging and retaining insights into the problem? Answering this question may be critical for the health of science in the age of agents. We need technically talented people in science who are engaged with their work. We need to keep making deep insights into problems without skimming over critical details. And we also need to move fast — the baseline pace of scientific progress will speed up, and it will become more challenging to keep up without these tools. Additionally, I believe that these tools can enable us to do better science. For these reasons, I think we should still keep coding. Maybe not all of our projects, but we should pick and choose important chunks to do manually. Here is what I am beginning to do:
- Accelerate exploration and ideation with agents, but go back and rewrite critical pieces
- Use agents mainly for code patterns you have written before — if you don't know how to do it, do it yourself first
- Leave general "plumbing" code to agents; write key scientific functions by hand
- Verify key results with handwritten code
If you're missing coding like me, there is no reason you can't pick it up again! While time constraints will always be an issue, my hope is that we can find ways to work efficiently with these new tools while staying engaged and continuing our journey toward new insights and understanding.
Generative AI Disclosure: This blog post was written by me, then edited and polished using AI.