{"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":"asking-a-human","title":"Asking a human, and getting an answer","url":"https://addaly.com/learn/building-apps-with-ai/asking-a-human","position":36,"of":87,"minutes":8,"answer":"A question with the goal, the steps, the exact error text, the expected result and what you already tried gets answered; building the minimal reproduction solves the problem about half the time before you ask.","keyIdea":"A question with the goal, the steps, the exact error text, the expected result and what you already tried gets answered; building the minimal reproduction solves the problem about half the time before you ask."},"body":{"format":"markdown","text":"## There is a point where a person is faster\n\nAI tools are excellent at problems that resemble many other problems. They are weak on the specific: a quirk of one hosting provider, a library's undocumented behaviour, an error message that appears in exactly four places on the internet.\n\nWhen you have tried twice, restarted the session once, and searched the exact error text with no luck, the next move is a human. Getting a useful answer is a skill, and it is mostly about how you ask.\n\n## The shape of a question that gets answered\n\nFive parts, in this order:\n\n1. **What you are trying to do**, in one sentence.\n2. **What you did**, precisely enough to be repeated.\n3. **What happened**, with the exact error, pasted as text.\n4. **What you expected.**\n5. **What you have already tried**, so nobody repeats it.\n\nPeople who answer questions for free are triaging. A question with those five parts gets read; a question saying \"my app doesn't work, can anyone help\" does not, and this is not unkindness, it is arithmetic.\n\n## Include the version numbers\n\nHalf of all wrong answers online are correct answers for a different version. Say which you are on:\n\n```bash\nnode --version\nnpm ls next react   # or whatever the relevant packages are\n```\n\nAlso say your operating system and your host, because a surprising number of problems are specific to one combination.\n\n## The minimal reproduction\n\nThe strongest thing you can bring is the smallest version of the problem: a project with nothing in it except what is needed to make the failure happen.\n\nBuilding one takes twenty minutes and does something unexpected: it frequently solves the problem. Removing pieces to find the smallest failing case is bisection applied to code rather than to history, and about half the time the failure disappears at some step and you have just found the cause yourself.\n\nStackBlitz and CodeSandbox host runnable reproductions for free, and a link to one gets an answer where a wall of pasted code does not.\n\n## Paste text, not screenshots\n\nA screenshot of an error cannot be searched, cannot be copied into a terminal, and cannot be read by anybody using a screen reader. Paste the text between triple backticks. Reserve screenshots for things that are visual, like a layout problem.\n\n## Where to ask\n\n**Stack Overflow** for a specific technical question with a definite answer. Strict about format, and the strictness is why the answers are good.\n\n**The project's own GitHub Discussions or issues.** Search first: your problem is often already there with a workaround. For a genuine bug in a library, this is the right place and a good report is a real contribution.\n\n**Discord and Slack communities**, which most frameworks run. Better for \"am I thinking about this wrongly\" than for a precise error. Note that answers scroll away and are not searchable later, which makes them worse for the next person with your problem.\n\n**Reddit** (r/webdev, r/learnprogramming and similar) for direction and judgement calls rather than debugging.\n\n**Local groups.** Meetups and college communities. Twenty minutes beside somebody who has done this before is worth more than a week of forums, and this is the most underused option on the list.\n\n## Be honest about how the code was written\n\n\"This was generated by an AI tool and I do not fully understand it\" is a useful sentence, not an embarrassing one. It tells people not to assume you meant something clever, and it changes the answers you get for the better.\n\nSome communities are dismissive about AI-generated code. Most are not, particularly when you show that you have read it and tried to narrow the problem. What people object to is being handed 600 unread lines with no attempt at diagnosis, and that objection is reasonable, because it asks them to do the reading you skipped.\n\n## Close the loop\n\nWhen you solve it, post the solution. It costs a minute and the next person searching that error finds your answer instead of an unanswered thread.\n\nThis is how the material every model was trained on came to exist. Somebody wrote down what went wrong and what fixed it. Adding to that is the cheapest contribution available to anybody in this course."},"check":{"question":"Why does building a minimal reproduction often solve the problem before anyone else sees it?","options":[{"text":"Starting a project from scratch installs newer, working versions of the dependencies.","correct":false,"tempting":"Attributes the effect to fresh installs, which would make the reproduction fail to reproduce for a reason unrelated to your code."},{"text":"Removing pieces until the failure disappears identifies the piece responsible.","correct":true},{"text":"Smaller projects are easier for a model to reason about when you paste them back.","correct":false,"tempting":"Describes a downstream benefit; the solving happens during the reduction, before anything is pasted anywhere."},{"text":"Writing the code again by hand catches typos from the original.","correct":false,"tempting":"Assumes retyping rather than deleting, and typos are rarely what survives into a reproducible failure."}]},"prev":{"slug":"restarting-the-conversation","title":"Knowing when to restart the conversation","url":"https://addaly.com/learn/building-apps-with-ai/restarting-the-conversation"},"next":{"slug":"git-when-you-have-never-used-it","title":"Save points: git when you have never used it","url":"https://addaly.com/learn/building-apps-with-ai/git-when-you-have-never-used-it"},"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) 'Asking a human, and getting an answer', in Building Apps with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/building-apps-with-ai/asking-a-human (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":"Asking a human, and getting an answer","courseTitle":"Building Apps with AI","module":{"index":4,"slug":"when-it-breaks","title":"When it breaks, and getting back"},"answer":null,"keyIdea":"A question with the goal, the steps, the exact error text, the expected result and what you already tried gets answered; building the minimal reproduction solves the problem about half the time before you ask.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"there-is-a-point-where-a-person-is-faster","runs":[{"text":"There is a point where a person is faster"}]},{"t":"p","runs":[{"text":"AI tools are excellent at problems that resemble many other problems. They are weak on the specific: a quirk of one hosting provider, a library’s undocumented behaviour, an error message that appears in exactly four places on the internet."}]},{"t":"p","runs":[{"text":"When you have tried twice, restarted the session once, and searched the exact error text with no luck, the next move is a human. Getting a useful answer is a skill, and it is mostly about how you ask."}]},{"t":"h2","id":"the-shape-of-a-question-that-gets-answered","runs":[{"text":"The shape of a question that gets answered"}]},{"t":"p","runs":[{"text":"Five parts, in this order:"}]},{"t":"ol","start":1,"items":[[{"text":"What you are trying to do","b":true},{"text":", in one sentence."}],[{"text":"What you did","b":true},{"text":", precisely enough to be repeated."}],[{"text":"What happened","b":true},{"text":", with the exact error, pasted as text."}],[{"text":"What you expected.","b":true}],[{"text":"What you have already tried","b":true},{"text":", so nobody repeats it."}]]},{"t":"p","runs":[{"text":"People who answer questions for free are triaging. A question with those five parts gets read; a question saying “my app doesn’t work, can anyone help” does not, and this is not unkindness, it is arithmetic."}]},{"t":"h2","id":"include-the-version-numbers","runs":[{"text":"Include the version numbers"}]},{"t":"p","runs":[{"text":"Half of all wrong answers online are correct answers for a different version. Say which you are on:"}]},{"t":"code","lang":"bash","label":"Bash","text":"node --version\nnpm ls next react   # or whatever the relevant packages are"},{"t":"p","runs":[{"text":"Also say your operating system and your host, because a surprising number of problems are specific to one combination."}]},{"t":"h2","id":"the-minimal-reproduction","runs":[{"text":"The minimal reproduction"}]},{"t":"p","runs":[{"text":"The strongest thing you can bring is the smallest version of the problem: a project with nothing in it except what is needed to make the failure happen."}]},{"t":"p","runs":[{"text":"Building one takes twenty minutes and does something unexpected: it frequently solves the problem. Removing pieces to find the smallest failing case is bisection applied to code rather than to history, and about half the time the failure disappears at some step and you have just found the cause yourself."}]},{"t":"p","runs":[{"text":"StackBlitz and CodeSandbox host runnable reproductions for free, and a link to one gets an answer where a wall of pasted code does not."}]},{"t":"h2","id":"paste-text-not-screenshots","runs":[{"text":"Paste text, not screenshots"}]},{"t":"p","runs":[{"text":"A screenshot of an error cannot be searched, cannot be copied into a terminal, and cannot be read by anybody using a screen reader. Paste the text between triple backticks. Reserve screenshots for things that are visual, like a layout problem."}]},{"t":"h2","id":"where-to-ask","runs":[{"text":"Where to ask"}]},{"t":"p","runs":[{"text":"Stack Overflow","b":true},{"text":" for a specific technical question with a definite answer. Strict about format, and the strictness is why the answers are good."}]},{"t":"p","runs":[{"text":"The project’s own GitHub Discussions or issues.","b":true},{"text":" Search first: your problem is often already there with a workaround. For a genuine bug in a library, this is the right place and a good report is a real contribution."}]},{"t":"p","runs":[{"text":"Discord and Slack communities","b":true},{"text":", which most frameworks run. Better for “am I thinking about this wrongly” than for a precise error. Note that answers scroll away and are not searchable later, which makes them worse for the next person with your problem."}]},{"t":"p","runs":[{"text":"Reddit","b":true},{"text":" (r/webdev, r/learnprogramming and similar) for direction and judgement calls rather than debugging."}]},{"t":"p","runs":[{"text":"Local groups.","b":true},{"text":" Meetups and college communities. Twenty minutes beside somebody who has done this before is worth more than a week of forums, and this is the most underused option on the list."}]},{"t":"h2","id":"be-honest-about-how-the-code-was-written","runs":[{"text":"Be honest about how the code was written"}]},{"t":"p","runs":[{"text":"“This was generated by an AI tool and I do not fully understand it” is a useful sentence, not an embarrassing one. It tells people not to assume you meant something clever, and it changes the answers you get for the better."}]},{"t":"p","runs":[{"text":"Some communities are dismissive about AI-generated code. Most are not, particularly when you show that you have read it and tried to narrow the problem. What people object to is being handed 600 unread lines with no attempt at diagnosis, and that objection is reasonable, because it asks them to do the reading you skipped."}]},{"t":"h2","id":"close-the-loop","runs":[{"text":"Close the loop"}]},{"t":"p","runs":[{"text":"When you solve it, post the solution. It costs a minute and the next person searching that error finds your answer instead of an unanswered thread."}]},{"t":"p","runs":[{"text":"This is how the material every model was trained on came to exist. Somebody wrote down what went wrong and what fixed it. Adding to that is the cheapest contribution available to anybody in this course."}]}],"check":{"question":[{"text":"Why does building a minimal reproduction often solve the problem before anyone else sees it?"}],"options":[{"text":[{"text":"Starting a project from scratch installs newer, working versions of the dependencies."}],"correct":false,"tempting":[{"text":"Attributes the effect to fresh installs, which would make the reproduction fail to reproduce for a reason unrelated to your code."}]},{"text":[{"text":"Removing pieces until the failure disappears identifies the piece responsible."}],"correct":true,"tempting":null},{"text":[{"text":"Smaller projects are easier for a model to reason about when you paste them back."}],"correct":false,"tempting":[{"text":"Describes a downstream benefit; the solving happens during the reduction, before anything is pasted anywhere."}]},{"text":[{"text":"Writing the code again by hand catches typos from the original."}],"correct":false,"tempting":[{"text":"Assumes retyping rather than deleting, and typos are rarely what survives into a reproducible failure."}]}],"order":[2,0,1,3],"why":null},"prev":{"slug":"restarting-the-conversation","title":"Knowing when to restart the conversation","minutes":8},"next":{"slug":"git-when-you-have-never-used-it","title":"Save points: git when you have never used it","minutes":9}}}