TDD is the only way to create code that is maintainable and extensible. Unless of course, what you are making is utterly simple.
Writing code is a science, not an art. The problem is that humans have spent less than 60 years doing code and we do not have the hang of it completely that is why point 1.
_ is the only way to create code that is maintainable and extensible
That's what they said about COBOL.
And when some wise guys at Cambridge said, hey we've invented a replacement to COBOL called "CPL" everyone said "We don't need yet another programming language!"
(CPL -> BCPL -> C -> C++/ObjectiveC -> Java/C#/Swift/Kotlin/Go/Scala/...)
So, I've added another of my unpopular opinions:
We will always need Yet Another Programming Language
Because as Adrián said, we're pretty new at this, and so we need better tools. We're still in the software stone age.
Thank you for the quotation. I have the same opinion. We don't need too many more programming languages and frameworks.
With the programming languages happen the same that with the mobile phones. The unique reason new ones are needed is to make the old ones obsoletes and try to take control of the market.
Can someone really tell me why was Ruby needed in the moment of its creation? What does it provide that could not be added to existing languages?
The principle of "Do not repeat yourself" that science respect is not not followed most of the time.
Or would somebody build an space ship from that material?
I tend to agree that TDD is a bit excessive, but I strongly believe in a BDD approach which is very common in Domain-Driven Design. Writing the failing test cases that describe how what use cases, policies and rules a system should have is much more likely to be known at the start of a project than if "computeXYCoordinates()" returns false :)
Writing code is a mixture of both!
Computer "programming/coding" is the practical application of such theory. It's also what leans more in the direction of....
Writing code is hardly science, any more than writing fiction is. We are craftsmen and -women, not scientists.
The word Craftsmen has nothing to do with gender it does mean -women aswell.
Craftswomen is not even a word in English.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.