Is Uncle Bob wrong about TDD?
typeinference.com
typeinference.com
The straw man: "to tell everyone else all these static type checks are useless."
The actual (from Uncle Bob's article):
"Now I don’t want you to think that I’m opposed to statically typed languages. I’m not. There are definite advantages to both dynamic and static languages; and I happily use both kinds"
"useless" vs. "definite advantages"
Reading helps.
Oh, and obligatory reference to The Refactoring Browser[1] for the common fallacy repeated in the linked article that static typing is necessary for refactoring:
"We originally thought that the lack of static type-checking would make it hard to build a refactoring browser for Smalltalk. Lack of type information is a disadvantage, but the advantages of Smalltalk made it a lot easier to make a refactoring browser for Smalltalk than it would have have been for C++ or Java."
The first automated refactoring tool was created in a language without static type information, and it certainly was and maybe still is the gold standard for such tools.
Knowing your history also helps.
Stuff like:
> Whose job is it to manage the nulls. The language? Or the programmer?
is essentially like asking "Who's job is to provide instructions for the CPU" or "Who's job is to decide about how to allocate registers during software execution".
The responsibility of a programmer (or rather software engineer) is to provide as good as possible solution to a problem. It's definitely not required to do every piece of that solution manually. If there's a way to efficiently offload any job to a computer it should be used. It can be debatable if a given way is convenient, provides good enough results etc. but "who's job is it to (...)" is just silly argument.
People with the attitude like "when men where men and took care of their own NULLs manually" are just backward minded, and ignore the fact that NULL is a nasty hack, and even its creator regrets it.
I have to question just how much you've read from Uncle Bob to begin with, because he's by no means the NULL fan you're making him out to be. He's a proponent of immutable/functional languages like clojure for crying out loud.
Stop propping up strawmen and spreading fud about authors if you don't actually take the time to understand their perspectives.
Quality assurance is a process consisting of several parts, among them compilers with powerful type systems, static and dynamic verifiers, coding standards and code reviews, model-based code generation and yes, multiple types of testing. How can all that be replaced with TDD?
Anyone working on anything that has to be high quality would know it's ridiculous.
I'd advice against disregarding somebody's technical skills because of their foreign language skills.
But not everybody follows your provincial customs or is a native speaker of your language.