Absolutely indisputable. I will feel out a potential client before accepting the work; people tend to forget that an interview is bidirectional.
First of all, if you are going to Upwork you may as well cashier at Safeway, you’ll be paid better. Putting yourself into direct competition with inexperienced Indians is not going to get you a living wage. Walk away. I get paid twice as much teaching ESL in Vietnam than I could get working through Upwork.
Know where I get almost all my clients? Not through agencies. Agencies take a 100% markup now, leading clients to expect superhuman productivity, merely excellent work isn’t enough. I answer technical questions on LinkedIn, in technical forums, I never answer job ads because the best I can get is “we have decided to move forward (spits) with other candidates.” People read my LinkedIn answers and they contact me and ask if I have time to take on new work.
And when I interview with a potential client I ask about design documentation. Even if clients have a requirements document (functional is asking too much of nontechnical people), their design is always repeat always a lot more vague than they realize and I assist them with detailed questioning to refine it. Whether or not they already have written designs (and, no, some hand-waving over Skype is not a design), I extend it or write my own.
If the clients say “I don’t have a spec and I don’t want to pay you to write one,” I say “find somebody else.”
Because I know what will happen otherwise.
I would write exactly what was described and the client will say “THIS ISN’T WHAT I WANTED!! FIX IT WITHOUT PAY!!” This is what you described. “NO IT’S NOT!” Yes it is. “NO IT’S NOT!” And away I walk.
On the other hand: if the client makes the same claim then I can point to the spec, which the client needs to agree to before I write a line of code, and say, “show me how what I have delivered differs from this.” The spec that the client signed off on and which I follow to the letter.
I’ve been a developer since 1988. I remember the days of unbroken concentration, single occupancy offices, one meeting per week. And stock options and signing bonuses. I will. Not. Work. Under any idiotic “methodology” where “teams” are led by people who have never written code and who argue about the “correct” way to do agile and scrum and interrupt me three times a day for recurring meetings. Were I still willing to work onsite (I am not) and the interviewer mentioned pair programming I would walk out without even the most perfunctory courtesy, and anyone with any experience whatsoever who thinks “test driven development” is a viable approach is a goddamn idiot.
No matter. With my record of achievement I can get work without lowering myself to Upwork or “sprint retrospectives” or alcohol-fueled morale sessions, and at 66 I won’t be doing it much longer anyway.