Understanding Without Writing
Learn to read code well enough to verify it does what you asked. You don't need to write code—you need to understand it.
Claude wrote code for you. It looks like it works. But how do you know it does what you asked?
You don’t need to become a programmer. You need to develop enough literacy to verify, question, and direct. This lesson teaches you to read code the way a manager reads a report—for the key points, not every detail.
Why Reading Matters
Imagine you asked Claude to:
Rename files to include today's date, then move the originals to an Archive folderClaude writes a script. You run it. Your files disappear.
What happened? Maybe the script deleted files instead of moving them. Maybe “Archive” was created somewhere unexpected. Maybe “today’s date” was interpreted as something other than what you meant.
If you could read the code—even superficially—you’d catch this before running it.
The Structure of Code
Most code Claude writes follows a predictable structure:
# 1. SETUP - Getting readyimport os # Load tools we needfrom datetime import date # Load date functionality
# 2. CONFIGURATION - Settings you might changefolder_path = "./documents" # Where to lookdate_format = "%Y-%m-%d" # How dates look
# 3. MAIN LOGIC - What actually happensfor file in os.listdir(folder_path): # For each file... new_name = date.today() + "_" + file # Build new name os.rename(file, new_name) # Rename it
# 4. OUTPUT - Reporting what happenedprint("Done! Renamed 5 files.")You don’t need to understand every symbol. You need to recognize the sections:
- Setup — Loading capabilities (usually at the top)
- Configuration — Values you might want to change
- Main Logic — The actual work
- Output — What it tells you
Reading for Intent
When scanning code, look for:
Action Words (Verbs)
These tell you what the code does:
read,open— Accessing fileswrite,save— Creating or modifying filesdelete,remove— Destroying things (⚠️ pay attention!)rename,move— Changing locationsprint,log— Showing informationsend,post— Communicating externally
Loops (Repetition)
When you see for or while, the code is doing something multiple times:
for file in files: # Do this for each filefor line in document: # Do this for each linewhile True: # Keep doing this forever (until stopped)Conditions (Decisions)
When you see if, the code is making choices:
if file.endswith(".pdf"): # Only if it's a PDFif "confidential" in text: # Only if this word appearsif date > deadline: # Only if past the deadlinePractice: Reading a Real Script
Here’s a script Claude might generate. Read it and answer: What does this do?
import osfrom pathlib import Path
source_folder = "./inbox"archive_folder = "./processed"
# Create archive folder if it doesn't existPath(archive_folder).mkdir(exist_ok=True)
# Process each filefor filename in os.listdir(source_folder): if filename.endswith(".pdf"): # Read the file source_path = os.path.join(source_folder, filename)
# Build new path dest_path = os.path.join(archive_folder, filename)
# Move the file os.rename(source_path, dest_path) print(f"Moved: {filename}")
print("Processing complete.")What it does:
- Sets up two folders: inbox and processed
- Creates the “processed” folder if it doesn’t exist
- For each file in inbox:
- If it’s a PDF, move it to processed
- Print what was moved
- Say “Processing complete” at the end
What it doesn’t do:
- Process non-PDF files (they’re skipped)
- Read the contents of files (just moves them)
- Delete anything (rename in Python = move)
Asking Claude to Explain
You can always ask Claude to explain code:
Explain this script step by step in plain English.Highlight anything that modifies or deletes files.Or more specifically:
In this script, what happens to files that aren't PDFs?Walk me through what happens when this runs on a folderwith 3 PDFs and 2 Word documents.Red Flags to Watch For
When reading code, these should make you pause:
Deletion Commands
os.remove(file) # Deletes a fileshutil.rmtree(folder) # Deletes a folder and everything in itfile.unlink() # Another way to deleteBefore running: Ask where deleted files go. Usually nowhere—they’re gone.
Overwriting Files
with open(filename, 'w') as f: # 'w' means WRITE (overwrites!)The 'w' mode overwrites. If the file existed, its contents are replaced.
External Communication
requests.post(url, data) # Sending data somewheresmtplib.send_message() # Sending emailAsk: Where is this sending data? What data exactly?
Infinite Loops
while True: # somethingThis runs forever unless there’s a break statement. Make sure you understand when it stops.
The Verification Conversation
After Claude writes code, have a verification conversation:
You: Before I run this, walk me through exactly what happens to my files.
Claude: (Explains step by step)
You: What could go wrong? What would cause this to fail or behave unexpectedly?
Claude: (Lists edge cases)
You: Can you add a “dry run” mode that shows what WOULD happen without actually doing it?
Claude: (Modifies the script)
This conversation costs nothing and might save you from data loss.
Adding Safety Features
Ask Claude to build in safeguards:
Before running the main logic, can you:1. Print how many files will be affected2. Ask me to confirm before proceeding3. Create a backup of any file before modifying itClaude will add these checks. Now you have a preview before anything happens.
Exercise: Audit This Script
Read this script and identify potential issues:
import os
folder = input("Enter folder path: ")
for file in os.listdir(folder): if "draft" in file.lower(): os.remove(os.path.join(folder, file)) print(f"Deleted: {file}")Questions to answer:
- What files get deleted?
- Is there any confirmation before deletion?
- What happens if you mistype the folder path?
- What if a file called “draftsman_report_final.pdf” exists?
Issues:
- Deletes any file with “draft” anywhere in the name (including “draftsman”)
- No confirmation—immediately deletes
- If the path is wrong, it might crash or delete from an unexpected location
- That file would be deleted (it contains “draft”)
How to fix: Ask Claude to add confirmation, show which files match before deleting, and be more specific about what “draft” means (like filenames starting with “DRAFT_”).
What You’ve Learned
- Code has a predictable structure: setup, configuration, logic, output
- Look for action words to understand what code does
- Watch for deletion, overwriting, and external communication
- Ask Claude to explain code before running it
- Add safety features like dry runs and confirmations
Next Lesson
Now you can read code and ask questions about it. But what happens when the code doesn’t work? The next lesson covers debugging—finding and fixing problems without needing to understand every line.