The engineer still owns the outcome
Choose useful assistance without handing away understanding, judgment, or accountability.
BY THE END, YOU CAN
- Match a task to a suitable level of AI assistance
- Separate a plausible answer from verified behavior
- Practice a concept without depending on generated solutions
Diagram description: You → Assistant; Assistant → Your review; Your review → Ship; Your review → Reject
Choose a bounded job for the assistant
An AI coding assistant can draft examples, explain unfamiliar code, propose tests, or suggest a small change.
Its output is a candidate you must evaluate. For Relay, ask it to compare two retry policies under a stated workload before asking it to rewrite the worker. Decide who uses the result, what failure would cost, and how you will check it.
Start with read-only explanation when you cannot yet judge a change. You still choose the requirements, review the consequences, and own the decision to release.
Turn assistance into deliberate practice
Use a three-pass routine: predict, investigate, reconstruct.
First trace a small function and write the output you expect. Next ask for one hint or a counterexample, then run the program. Finally close the answer and rebuild the idea with a different input.
In Relay, explain why the delay stops increasing, then implement a different cap from memory. This is a learning exercise designed for this laboratory, not proof that AI prevents skill loss. Beginners should keep practicing Python directly; experienced engineers can rehearse failure analysis and architecture tradeoffs.
def retry_delay(attempt):
if type(attempt) is not int or attempt < 0:
raise ValueError("attempt must be a nonnegative integer")
return 60 if attempt >= 6 else 2 ** attempt
print([retry_delay(n) for n in (0, 3, 6, 20)])
Scale oversight to the consequences
Review a local formatting change differently from a permission check or a database migration.
For a consequential change, identify a knowledgeable reviewer, realistic failure cases, and a recovery plan. A confident explanation is not execution evidence; a passing example is not a complete contract. Be able to explain the important branch conditions and the boundaries the tests do not cover.
If you cannot, narrow the change and learn that seam first. An assistant can help investigate an unknown, but uncertainty should remain visible until evidence resolves it.
COMMON FAILURE MODE
Accepting a solution because the explanation sounds convincing, then discovering you cannot diagnose it when its assumptions stop holding.
TRY IT YOURSELF
Predict the retry_delay outputs before running the snippet. Then close it and implement a cap of 30 seconds. Explain your treatment of negative integers, floats, and True.
Make the call in the laboratory.
The two-question checkpoint, your notes, and your saved progress are in the laboratory. Free, with no account.
Open in the laboratory ↗CONNECT IT TO RELAY
Choose Relay’s idempotent submission change: a repeated key with the same payload should return the same job ID. Record what AI may assist with, what you will decide yourself, and how you will explain the behavior without the assistant.