{"course":{"slug":"building-apps-with-ai","title":"Building Apps with AI","url":"https://addaly.com/learn/building-apps-with-ai","level":"beginner","track":"build"},"lesson":{"slug":"handing-it-to-a-real-developer","title":"Handing it to a real developer","url":"https://addaly.com/learn/building-apps-with-ai/handing-it-to-a-real-developer","position":84,"of":87,"minutes":8,"answer":"A developer joining an AI-built project needs a README that runs, the rules file, the test scripts and the complaint list, and when they say the code should be rewritten.","keyIdea":"A developer joining an AI-built project needs a README that runs, the rules file, the test scripts and the complaint list, and when they say the code should be rewritten, the working app and its users are evidence that deserves a specific reason."},"body":{"format":"markdown","text":"## Why this day comes\n\nThe closing lesson of this course names the point where somebody has to hold an accurate model of the system, and one of the three legitimate answers is to bring in a person who can. This lesson is about making that handover cheap, because a developer's first week on an undocumented AI-built project is spent discovering things you already know.\n\n## What they will ask for in the first hour\n\n**A README that runs.** Not a description; a sequence. Clone, install, copy `.env.example`, which values to get from where, start the database, seed it, run the app, run the checks. Test it by following it yourself on a clean machine, or in a fresh folder. A README that has never been followed is fiction, and the developer discovers that at step three.\n\n**Where the data lives.** The schema file, a sentence per table, the migration folder, which database is production and who has its credentials.\n\n**What is fragile.** The list of things you know are held together with tape: the route that times out on long documents, the page that is slow at a thousand rows, the feature behind a flag because it is not trusted yet. Every project has this list; writing it down saves the developer from rediscovering it and you from watching them.\n\n**The rules file.** It is the most honest description of how the code was made and what standards it was held to. Hand it over as it is.\n\n## What you already have that they will value\n\nMore than you think. The three-account script, the eval set with its twenty inputs, the bundle-and-history scan, the complaint list with what each one turned out to be, the seed script, the backup restore procedure with the date you last ran it. A developer joining a conventional project of this size rarely finds all of those. They are the evidence that the project was built with care, whatever the code looks like.\n\n## Access, without handing over the keys\n\nInvite; do not share. GitHub collaborator on the repository. A team member role on the host, the database provider and the error tracker, each with the minimum the work needs. Their own key at the model provider, with its own spending cap. Never your password, never the root account, and never the production database connection string in a chat message: the data block's arrangement applies to people as it does to agents.\n\nWhen the engagement ends, the invitations are revoked in five minutes and nothing has to be rotated. If a shared password was used, everything has to be.\n\n## Start with a small paid task\n\nBefore a week, a day. A specific, bounded piece of work: fix the slow page, add the missing index, make the flaky test pass. It tells you how they work, how they communicate, and whether they read the README or asked you everything in it. It tells them what they are taking on. A day's fee is the cheapest interview either of you will have.\n\n## What they will say about the code\n\nSome of it will be uncomfortable. Generated code has recognisable habits (duplicated logic, files that are too long, comments that describe rather than explain, the same thing done three ways in three places) and a developer will see all of them in the first hour and may say so plainly. That is fine. The code was written to work, and it works, and now somebody is going to make it good, which is a normal sequence.\n\nThe one recommendation to examine carefully is the rewrite. Sometimes it is right: a data model that cannot carry the next feature, a framework that cannot be deployed where you need it, a security shape that cannot be patched piece by piece. Often it is preference dressed as necessity. The question in this lesson's check is the tool: what specific problem does it solve, what does it cost, and what is lost: the users, the fixes in the complaint list, the months of behaviour that the current version encodes and no specification records. Decide on the answer, and be ready for the answer to be yes.\n\n## The relationship that works\n\nYou know what the app is for, who uses it, and what has gone wrong. They know how it should be built. The projects that go well are the ones where both of those are treated as expertise. Bring the complaint list and the eval set to the first conversation; ask them to bring the list of the three things they would change first and why. That meeting is the handover, and everything else is detail."},"check":{"question":"A developer you have hired for a week reviews the app and recommends rewriting it from scratch in a different framework. Which response is the most useful?","options":[{"text":"Agree, because a professional's judgement about code quality outweighs the fact that the current version happens to work, and generated code is known to accumulate problems that only a fresh start removes.","correct":false,"tempting":"Working software with users is strong evidence; a rewrite discards it and every fix in the complaint list, and needs a stronger reason than preference."},{"text":"Refuse, because the app works and any change to it is a risk you cannot evaluate.","correct":false,"tempting":"Some rewrites are right: a data model that cannot carry the next feature, a security shape that cannot be patched; refusing without asking loses that."},{"text":"Ask the agent to evaluate the developer's recommendation and follow its verdict.","correct":false,"tempting":"The agent will produce a confident opinion with no stake in the outcome; the question is a judgement about cost and risk that needs the person who pays both."},{"text":"Ask which specific problem the rewrite solves that a targeted change would not, what it would cost in weeks, and what would be lost, and decide on that answer.","correct":true}]},"prev":{"slug":"shipping-changes-without-breaking-what-works","title":"Shipping changes without breaking what works","url":"https://addaly.com/learn/building-apps-with-ai/shipping-changes-without-breaking-what-works"},"next":{"slug":"where-you-have-to-learn-to-code","title":"Where you have to learn to code","url":"https://addaly.com/learn/building-apps-with-ai/where-you-have-to-learn-to-code"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Handing it to a real developer', in Building Apps with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/building-apps-with-ai/handing-it-to-a-real-developer (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Handing it to a real developer","courseTitle":"Building Apps with AI","module":{"index":9,"slug":"what-it-costs-and-where-this-stops","title":"What it costs, running it, and where this stops"},"answer":null,"keyIdea":"A developer joining an AI-built project needs a README that runs, the rules file, the test scripts and the complaint list, and when they say the code should be rewritten, the working app and its users are evidence that deserves a specific reason.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"why-this-day-comes","runs":[{"text":"Why this day comes"}]},{"t":"p","runs":[{"text":"The closing lesson of this course names the point where somebody has to hold an accurate model of the system, and one of the three legitimate answers is to bring in a person who can. This lesson is about making that handover cheap, because a developer’s first week on an undocumented AI-built project is spent discovering things you already know."}]},{"t":"h2","id":"what-they-will-ask-for-in-the-first-hour","runs":[{"text":"What they will ask for in the first hour"}]},{"t":"p","runs":[{"text":"A README that runs.","b":true},{"text":" Not a description; a sequence. Clone, install, copy "},{"text":".env.example","code":true},{"text":", which values to get from where, start the database, seed it, run the app, run the checks. Test it by following it yourself on a clean machine, or in a fresh folder. A README that has never been followed is fiction, and the developer discovers that at step three."}]},{"t":"p","runs":[{"text":"Where the data lives.","b":true},{"text":" The schema file, a sentence per table, the migration folder, which database is production and who has its credentials."}]},{"t":"p","runs":[{"text":"What is fragile.","b":true},{"text":" The list of things you know are held together with tape: the route that times out on long documents, the page that is slow at a thousand rows, the feature behind a flag because it is not trusted yet. Every project has this list; writing it down saves the developer from rediscovering it and you from watching them."}]},{"t":"p","runs":[{"text":"The rules file.","b":true},{"text":" It is the most honest description of how the code was made and what standards it was held to. Hand it over as it is."}]},{"t":"h2","id":"what-you-already-have-that-they-will-value","runs":[{"text":"What you already have that they will value"}]},{"t":"p","runs":[{"text":"More than you think. The three-account script, the eval set with its twenty inputs, the bundle-and-history scan, the complaint list with what each one turned out to be, the seed script, the backup restore procedure with the date you last ran it. A developer joining a conventional project of this size rarely finds all of those. They are the evidence that the project was built with care, whatever the code looks like."}]},{"t":"h2","id":"access-without-handing-over-the-keys","runs":[{"text":"Access, without handing over the keys"}]},{"t":"p","runs":[{"text":"Invite; do not share. GitHub collaborator on the repository. A team member role on the host, the database provider and the error tracker, each with the minimum the work needs. Their own key at the model provider, with its own spending cap. Never your password, never the root account, and never the production database connection string in a chat message: the data block’s arrangement applies to people as it does to agents."}]},{"t":"p","runs":[{"text":"When the engagement ends, the invitations are revoked in five minutes and nothing has to be rotated. If a shared password was used, everything has to be."}]},{"t":"h2","id":"start-with-a-small-paid-task","runs":[{"text":"Start with a small paid task"}]},{"t":"p","runs":[{"text":"Before a week, a day. A specific, bounded piece of work: fix the slow page, add the missing index, make the flaky test pass. It tells you how they work, how they communicate, and whether they read the README or asked you everything in it. It tells them what they are taking on. A day’s fee is the cheapest interview either of you will have."}]},{"t":"h2","id":"what-they-will-say-about-the-code","runs":[{"text":"What they will say about the code"}]},{"t":"p","runs":[{"text":"Some of it will be uncomfortable. Generated code has recognisable habits (duplicated logic, files that are too long, comments that describe rather than explain, the same thing done three ways in three places) and a developer will see all of them in the first hour and may say so plainly. That is fine. The code was written to work, and it works, and now somebody is going to make it good, which is a normal sequence."}]},{"t":"p","runs":[{"text":"The one recommendation to examine carefully is the rewrite. Sometimes it is right: a data model that cannot carry the next feature, a framework that cannot be deployed where you need it, a security shape that cannot be patched piece by piece. Often it is preference dressed as necessity. The question in this lesson’s check is the tool: what specific problem does it solve, what does it cost, and what is lost: the users, the fixes in the complaint list, the months of behaviour that the current version encodes and no specification records. Decide on the answer, and be ready for the answer to be yes."}]},{"t":"h2","id":"the-relationship-that-works","runs":[{"text":"The relationship that works"}]},{"t":"p","runs":[{"text":"You know what the app is for, who uses it, and what has gone wrong. They know how it should be built. The projects that go well are the ones where both of those are treated as expertise. Bring the complaint list and the eval set to the first conversation; ask them to bring the list of the three things they would change first and why. That meeting is the handover, and everything else is detail."}]}],"check":{"question":[{"text":"A developer you have hired for a week reviews the app and recommends rewriting it from scratch in a different framework. Which response is the most useful?"}],"options":[{"text":[{"text":"Agree, because a professional’s judgement about code quality outweighs the fact that the current version happens to work, and generated code is known to accumulate problems that only a fresh start removes."}],"correct":false,"tempting":[{"text":"Working software with users is strong evidence; a rewrite discards it and every fix in the complaint list, and needs a stronger reason than preference."}]},{"text":[{"text":"Refuse, because the app works and any change to it is a risk you cannot evaluate."}],"correct":false,"tempting":[{"text":"Some rewrites are right: a data model that cannot carry the next feature, a security shape that cannot be patched; refusing without asking loses that."}]},{"text":[{"text":"Ask the agent to evaluate the developer’s recommendation and follow its verdict."}],"correct":false,"tempting":[{"text":"The agent will produce a confident opinion with no stake in the outcome; the question is a judgement about cost and risk that needs the person who pays both."}]},{"text":[{"text":"Ask which specific problem the rewrite solves that a targeted change would not, what it would cost in weeks, and what would be lost, and decide on that answer."}],"correct":true,"tempting":null}],"order":[2,1,3,0],"why":null},"prev":{"slug":"shipping-changes-without-breaking-what-works","title":"Shipping changes without breaking what works","minutes":8},"next":{"slug":"where-you-have-to-learn-to-code","title":"Where you have to learn to code","minutes":9}}}