First of all — great article! Sad to hear that you’ve been scammed on Upwork, hope you’ve lost not too much.
Some notes about “fixed price” jobs you suggested as a solution/protection. It’s only true if the job is really small and/or very well documented/described (happens less than never). Otherwise, most of the really good developers can pass by.
If I ask you “how much does a good car cost?” you’ll give the wrong answer whatever you say. The only person who can properly estimate the cost of development is the developer themselves… by tracking their time. Sorry. Otherwise, either you’ll be fooled or them. From my colleagues, I know several examples when the fixed price job was done in hours and paid as for days. But mostly the opposite happens. And even if a developer did “almost the same” as you’ve requested only half a year ago it doesn’t mean it’ll take less or same now. Frameworks/libraries/trends/… everything is changing rapidly.
As well as the client’s demands during the project — oh yeah… all the time! And far not every developer dreams about begging for additional milestone opening/approving everytime this happens…
Check the developers’ reputation, have video calls, ask for code to review, hire someone who can estimate others’ skills to pick the right people if you can’t do it yourself, don’t try to get it all for a penny…
Developers there, on Upwork, are suffering from bad clients more often than vice versa, believe me!