Skip to content
,

I want help coding or building software

8 min read
Featured image: Coding and building, with official Claude, ChatGPT, Gemini, and Grok logos

Priya pasted a 40-line Python traceback into three chat boxes, then installed two coding agents because a group chat said “just let it run.” Forty minutes later she had a “fix” that renamed customer_id in one file and left it in six others, a second agent fighting the first on the same branch, and a 12,403-row join sitting in a notebook nobody had re-run. The original error was a missing CSV in /data/raw/. Nobody had listed the folder.

This is Part 2 of Which AI product should I use? You want help coding or building software. That is a different job from writing and questions. A chat window can explain an error. An agent in a folder can change the tree. Mixing those without a review step is how you get two agents and one missing file. Names below (Claude Code, Codex, Gemini CLI / Antigravity, Grok Build) move. Re-check the vendor the week you install.

What you’ll learn

  • When a paste in chat is enough, and when you need an agent that can see the repo
  • What Claude Code, ChatGPT Codex, Gemini’s coding CLI path, and Grok Build are for, in plain English
  • A try-this-first default that does not require four installs
  • A first-hour loop: clone, ask, change, check
  • The fails that rename a column in one file and ship 12,403 surprise rows

Two jobs people mash together

Job A is language about code: “what does this error mean,” “name this function,” “sketch a SELECT.” You paste a snippet. You copy a suggestion back. The project on disk does not move until you type.

Job B is an agent in a project folder. It lists files, proposes diffs, maybe runs tests. You still have to read the diff. The blast radius is the repo, not a paragraph.

Priya needed Job A for 90 seconds (the CSV path), then maybe Job B to add a existence check. She bought Job B twice and skipped the folder listing. If you only need Job A, stay in the chat box from Part 1. Installing an agent because it sounds more serious is how Friday gets expensive.

When a chat window is enough
When a chat window is enough: explain an error, name a function, sketch a query, then stop and open an agent when the change spans files …

Coding surfaces, not slogans

Coding surfaces, not brand slogans
Coding surfaces: chat window for snippets, Claude Code as an agent in a folder, ChatGPT Codex as OpenAI’s coding agent path, and Grok Bui…
SurfaceFamilyOpen it ifDo not open it if
Chat windowAny of the fourThe change fits in a pasteYou have not looked at the other files
Claude CodeAnthropicYou will let an agent read a real projectYou only needed a paragraph
ChatGPT CodexOpenAIYour stack is already ChatGPT and you want the coding agent pathYou are collecting agents for sport
Gemini CLI / AntigravityGoogleYou already live in Google’s coding tools (names have shifted; re-check)You have never opened a terminal and the job is one function
Grok BuildxAIYou already pay for a Grok path that includes Build, and you want a terminal agentA SuperGrok chat tab would have been enough

Depth lives in the brand series: Claude Code in the Claude series, Codex in ChatGPT, Gemini coding, Grok Build. This page is the hallway. Confirm current install docs at Anthropic, OpenAI, Google, and x.ai/build.

Rule of thumb: One agent in one repo. Two agents on one branch is not a team. It is a merge conflict generator.

Try this first

AMS default for a person who will actually touch a folder: Claude Code in a clone, not in production, with plan-or-approve behavior turned on if the product offers it. If your company already standardized on Codex or Grok Build, use that. Do not install a second family “to compare” on the same tree.

If you have never opened a terminal, start with Job A in a chat box this week. An agent is not a personality upgrade. It is permission to edit files. Earn that with one small, reviewed change.

First hour: explore, change, check

  1. Copy the repo or work in a throwaway folder. Do not point an agent at the only copy of payroll scripts.
  2. Ask it to list the tree and name the file that should own customer_id. Read the answer. Priya would have seen /data/raw/ was empty.
  3. Give one change: “If the CSV is missing, raise a clear error. Do not invent a file.”
  4. Read the diff. Search for every rename. If it touched six files for a path check, reject it.
  5. Run the test or the script yourself. The agent’s “all good” is a claim.

A brief you can paste into an agent (or a chat box, if you are still on Job A):

# Goal: fail clearly when the input CSV is missing.
# Repo: toy-orders
# Do not rename columns. Do not invent /data/raw/orders.csv.
# Change only the loader. Show me the diff. Stop after one file.

def load_orders(path):
    import pandas as pd
    return pd.read_csv(path)

# Current fail: FileNotFoundError with no hint.
# Wanted: a message that names the path and says "export missing, not a join bug."

What that code is for: a 6-line loader and a constraint list. If the agent rewrites your join logic to “fix” a missing file, the brief failed in the review, not in the model.

Worked example: 12,403 rows

Toy grain: one row per order line. Priya’s notebook joined orders to customers after an agent “helpfully” dropped a duplicate check. The join came back at 12,403 rows. Yesterday it was 1,188. The extra zeros were a many-to-many from a renamed key that still existed under the old name in dim_customer.sql.

CheckBefore agentAfter sloppy agent
Row count on the join1,18812,403
Files touched1 (loader)7 (loader + models + a random README)
Missing CSVStill missingStill missing, plus a new column alias

The coding-agent lesson is the same as the analytics one: count the rows. If you cannot say what one row means, stop. For joins as a skill, the SQL series is the long path. The agent does not replace that.

What “review the diff” looks like

People skip review because the agent’s English is confident. Review is a search, not a vibe. Search the diff for customer_id, for deleted tests, for new network calls, for files you did not name. If the product has a plan mode, use it on anything bigger than a typo. If it wants to run commands, read the command. rm and git push --force are not personality. They are blast radius.

A decent review takes less time than Priya’s 40 minutes of two agents. You are not proving you do not trust machines. You are checking that the missing CSV stayed a missing CSV and did not become a silent empty frame with 12,403 rows. The data quality series is the longer habit; the agent does not retire it.

Chat vs agent, in one more story

If Priya had stayed in a chat box, pasted the traceback, and asked “what file is missing,” she would have had the answer in one screen. The agent was useful only after that: add a check, one file, one test. The group chat that said “just let it run” was selling autonomy as a status symbol. Autonomy is a dial. Watch, then approve batches, then maybe walk away on chores you have seen it do correctly ten times. Walking away on the first night is how keys leak and READMEs get rewritten in a tone you do not use.

Common mistakes

  • Two agents, one branch. Pick a family.
  • Production checkout as the sandbox. Clone first.
  • Accepting a 400-line diff for a missing-file message.
  • Pasting API keys into the chat “so it can test.” Use env vars. Rotate if you already pasted.
  • Skipping tests because the agent wrote some. Run them.
  • Using a coding agent to write the thank-you from Part 1. That is the wrong door.

Install without turning Friday into theater

Install docs change. The shape does not. You install a CLI or a desktop app, you authenticate in a browser, you point it at a folder you can afford to ruin. You do not pipe an install script into production as root because a tweet had a curl one-liner. You do not give the agent your only copy of the warehouse models. You do not store API keys in the repo “for convenience.” If the product wants ANTHROPIC_API_KEY or XAI_API_KEY in the environment, that is an env var on your machine, not a file named secrets.txt next to orders.csv.

Eligibility is a moving SKU. Claude Code, Codex, Gemini’s CLI path, and Grok Build have all been tied to paid plans at various times. If the install says you need Pro, Max, SuperGrok, or Premium Plus, believe the page in front of you, not this paragraph. A failed install is not a reason to paste the whole repo into a chat box. It is a reason to stay on Job A until the account is sorted.

How to practice this week

Take a script you own. Make one tiny, reviewed change with one agent. If you do not have a repo, stay on chat for a week and come back. Next in this chooser: Part 3, files and office work. The decision tree is Part 6.

Quick recap

  • Snippets stay in chat. Folder changes need one agent and a diff you read.
  • Try Claude Code in a clone unless your house already picked Codex, Gemini’s CLI path, or Grok Build.
  • Count the rows. Search the rename. You still ship the commit.

Sources