AI Is Writing My Code — Now What?
Writing computer code has hit an inflection point. Code generating LLMs such as Anthropic's Claude Code, OpenAI's Codex, Cursor, etc. are able to write JavaScript, SQL, Python, HTML/CSS, etc. faster than even expert programmers (for this particular document I'm grouping software engineers, computer scientists, programmers, etc. into "programmers"). So, what does that mean for those programmers tasked with "writing code"?
Your Job Hasn't Changed
You likely didn't get hired to "write code". Gone are the days when an "architect" wrote a "spec" and handed it off to a "junior developer" to write the implementation and a "quality assurance" group would test the implementation.
You were hired to provide functionality (or a portion of functionality) that worked, answered a need, and is reliable.
Ultimately, you're responsible for the code's correctness (as every LLM reminds you in small font at the bottom of the page). And you're not "done with code". You have to be able to read the Python code that you're responsible for.
You are also responsible for interpreting the customer need (regardless if it's internal or external). That communication loop is essential for a successful project.
Below are the tasks you are (and always were) responsible for. This applies to regular "for hire" programming as well as free and open source and academic code.
Understanding the Tools
Code generating LLMs are tools. You must have an understanding of how they work and what the state of the art is today. This in itself is a key skill set.
- What models to use? What are their strengths and weaknesses?
- How much testing and review of their code is needed?
- What model spend makes sense?
- When does using an LLM not make sense?
Direction and Management
The code generating LLM (or LLM for short), needs to be given the task. The task (usually described in a Markdown file) must be clear and concise. Also, it needs to be monitored to "stay on track" and corrected as necessary.
Key direction files such as CLAUDE.md are critical to manage the LLM. These include:
- What language(s) and infrastructures to use?
- What libraries (if any) to use or to "roll your own"
- What tests are AI owned and which are human owned?
- What is the test code coverage requirements?
- Cybersecurity requirements
- Regulatory requirements (if any)
- CI Tooling to use
- Logging
- Error/Warning handling
- Documentation requirements
- UI considerations? CLI, web app, GUI app, etc.?
- (many more ...)
Should the LLM create the code that is the application or should the application "business logic" be in an AI itself?
Use of repositories and access are key responsibilities of the code owner. This includes:
- Business Model
- Software License
- Code Repository (e.g., GitHub, etc.)
- Packaging (e.g. to PyPI)
Tests/Correctness
Ultimately the programmer is responsible for correctness.
What tests does the human write and what does the LLM write? Human tests may be more of a "spec" or functional tests. Once the functionality is defined, the LLMs can write regression tests. But don't outsource all of your tests to the LLM. They define what the software does.
Representing the Project
Ultimately you will represent your project in some way. Either on the web as websites or papers, or in person.