It's never the tool, but the wielder. Give a process to a good engineer, and he will find a way to get things to work. Give any process to a code monkey, and you are just going to get a lot of shit flinging irregardless of the process of choice.
Then you haven't been in software development for very long or how little ability to discern a good tool from a bad one. Shitty tools are foisted upon software developers all the time in the form of buggy and/or poorly documented frameworks, databases, IDEs, etc.
Been in this business for 20 years, 9 different companies in various industries, doing application and system/embedded development. But whatever. If you want to play my lightsaber is bigger than yours, by all means, knock yourself out, you win.
We are obviously talking about processes in general. But if we want to talk about shitty IDEs, languages and coding-level artifacts, let's do it. Yes, there are shitty IDEs, bad languages and such. They make work difficult, if not painfully insane, but none of that stop good workers from delivering good work (or at least avoid the number of sophomoric WTFs from piling up.)
Back in 1994, I once had the disgrace of having to do support report generating programs on PICK systems, using nothing but ed (not even vi for ${DEITY:-FSM} sake), using a bastardized language that mixed sh-based constructs with SQL-like statements for multi-column databases and PICKBasic.
That last thing, PICK Basic, utter crap that made GW-BASIC look like Haskell. At least GW-BASIC supported named labels for your GOTOs. PICK Basic oth only supported numeric labels. Imagine that if you can. You can have named labels in most assembly languages, but not in PICK Basic. Wrap your head around that if you can.
Anyways, the existing programs were a monstrosity we inherited were a monstrosity. We started fixing that by establishing standards and procedures for creating new programs (or introducing changes in new ones). We established a hierarchy of numeric labels - labels in the 1000-1999 range for initialization, 2000-2999, 3000-3999 for general computation, 4000-4999 for reporting/output and 5000+ for error handling and abnormal termination.
Those are the tools we had for that specific job, and as ugly as they were, we found ways to deal with them, to increase value for our employer while minimizing the number of WTFs that had been piling up for years by incompetent code monkeys.
There is no question in my mind that PICK systems were pure crap because they required us to put significantly more attention to detail to avoid introducing WTFs. Thank God that was just one job I had to do, and that I have never had to deal with that ever since.
And I've experience deja-vu moments like that, in Java, Visual Basic, C/C++, FoxPro, you name it. There is no language or IDE out there that does not have some unbelievable collection of WTFs.
But none of them cause people to unavoidably fuck it up again and again and again. Wielder, not tool.
When we had our choice to pick, we try to pick the best tools we can get.
But more often than not, we do not. And when that happens, what do you do? Do you go on auto-pilot and let the tool WTFquery imbue themselves into WTFs in your own code?
No. Not at all. You use your skills and find ways to make that shit work, to put some structure, some standards, some sane mechanisms and patterns and practices to maintain some quality in your work.
It can be done. Actually, it is done, and it has been done. Wielder, not tool. Always.