A collection of things I probably could've learned without making the mistake first.
Keeping it working when someone changes one button's HTML is.
It cares about your queries.
Ship it. Then improve it. Nobody cares about your elegant abstractions if the thing doesn't work.
You're probably building the wrong system.
Because eventually you'll be the person trying to figure out what past-you was thinking.
That's fine. The expensive mistake is spending three weeks polishing something you haven't validated.
Authentication. Rate limits. Retries. Error states. Edge cases. The happy path is usually the easy part.
If it only works on localhost, you haven't finished building it.
Sometimes the problem is your code. Sometimes it's your architecture. Sometimes you just need to read the error message again.
You can read about a technology for days. Then you actually build something with it and suddenly discover 14 things the documentation didn't prepare you for.
The difference between a toy and a product is what happens when things go wrong. And things always go wrong.
Any developer can add complexity. It takes a certain kind of developer to keep things simple when the problem is complicated.
They're about making sure someone else can understand what you built. Because six months from now, that someone else is you.