Because too many people still associate coding with Computer Science, and are not taught Software Engineering.
Computer Science is all about the languages and the algorithms: how to make the computer count, how to make it sort, how to normalize data, etc. Software engineering is about the whys of design principles and design patterns. It's about testability, quality, readability, maintainability. It's about development methodologies. Almost anyone can write a sequential list of instructions, but unless they understand modularity, complexity, coupling, cohesion, they will not produce effectively maintainable code. They still think that because they passed a coding class that they're a coder, so they produce a crappy pile of hard-coded inappropriate dependencies, and then build more stuff that depends on the badly designed stuff, and then they wonder why programming sucks.
If we taught every child in the "Intro to Coding" class using Test Driven Development, we'd be teaching them to be the very first consumers of the code they write, and they'd quickly feel the consequences of making their own poor choices. They'd learn to course correct early, instead of struggling like so many of the questioners asking about homework problems on Stack Overflow. Instead of waiting to teach TDD as an advanced graduate level course, we'd have a lot more people who "get it". Or we'd quickly weed out the people who are incapable of ever getting it. Either way, everyone would be better off than we are.