O desenvolvedor de hoje tem que entender que muitas coisas mudaram, antigamente para saber programar era preciso conhecer as regras da linguagem e fazer o que era pedido pelo analista e as vezes discutir se aquilo era para ser feito daquela forma... Não se preocupava se o código estava bem escrito, se tinha como refatorar, se a manutenção daquele código seria fácil depois de dois anos. Então a galera acordou e viu que tinha algo errado com aqueles codificadores, não era aquela forma correta para se desenvolver um software de qualidade que pode ser mantido por anos e anos com uma certa facilidade. Hoje o desenvolvedor, analista, gerente... tem que entender que não basta só ter um bom conhecimento técnico, para conseguir um software de qualidade é preciso um time unido, boas práticas de desenvolvimento, conhecimento técnico é preciso que todo o time entenda que desenvolver é uma arte, o pensamento tem que estar alinhado e focado em um objetivo comum: desenvolver software com qualidade, desenvolver com perfeição mesmo que essa perfeição amanhã seja superada.
Existem muitos desenvolvedores que se gabam, eu sei TDD, uso XP, conheço DDD... a sopa de letrinhas que ele julga saber e usa só aumenta, mas na prática ele não sabe aplicar ou não se lembra de aplicar. É a mesma coisa se uma pessoa estudar todos os fundamentos do futebol, ler tutoriais na internet, livros e nunca jogar uma partida, com certeza essa teoria toda vai ajudar, mais no seu primeiro jogo ele não vai conseguir fazer aqueles lances bonitos que nós gostamos de ver.