One thing makes software much harder than the store. Quality is a perception. Ask ten people what a good meal is and you get ten answers, and none of them is wrong. Your picture lives in your head and mine lives in mine, and nobody can test anything against a picture nobody else can see.
So before the software exists, somebody writes the expectation down. That document is called the acceptance criteria, and it is exactly what it sounds like: the written statement of what counts as correct. You put your bank card into a cash machine and you ask for $20. The acceptance criteria says you get $20. Not $21. Not $19.99. Twenty dollars, exactly, every single time, for everybody.
That written list is what turns this into jobs, and the shape it makes is the shape of every software team ever built.
Three different people. One person decides what it should do and writes that down. A second person builds it. And a third person, who did not build it, goes and finds out whether the thing that got built matches the thing that was written.
That third job is not a mystery and it is not glamorous. It is a person at a screen with the written list beside them, going through it line by line. Item one says asking for $20 gives you $20. So they ask for $20 and they look. Item two says asking for more than your balance refuses you. So they try it and they look. Down the whole list, one item at a time, writing down every place the software and the paper disagree, and sending each one back to the person who built it.
Each one of those disagreements is a bug.
And somebody is paying for all of this. Software is not written for fun. Somebody has commissioned it, money has been agreed, and a date has been set. Which is why the written list matters so much: if nothing was written down in advance, then when the thing arrives wrong there is no bug, there is only an argument, and the argument happens after the money is already spent.
Three people: one writes it down, one builds it, one checks it. That is expensive. So why not let the person who built it do the checking and save a salary?
Companies have tried that for as long as software has existed, and it is the single most expensive habit in this business. Hold that question, because the whole back half of this book is the answer to it, and I am going to answer it on myself rather than on somebody else. For now take the short version: the person who built the thing cannot see what is wrong with it, and that is not about their character or their skill. It is about what happens inside anybody's head when they look at their own work.