Many developers in real projects don't have the opportunity to to work with good code, most of the time you have to work on projects started by others, with a language that is not the one you prefer, with a framework you probably dislike etc, having the language and tools help you figuring how a thing works and how can I fix a bug without having to understand the whole project, creating new unit tests from scratch is very important,
let me give you an example that happened to me, so I work on a SPA app , JS, angular, jQuery (project started by others, I had no choice in frameworks or languages) , I want to fix and improve things to make the users have a better experience(I don't do it for the pleasure or writing code). So I want to change a text that appears on an element, so I get the element ID, it's class, search the code, I find the element but I could not find where the element text was changed. It took me hours (honestly) to find it, dev used the feature in js where you can dinamicaly access object properties and did something like object["select_"+type+"_box"] you could use same feature to call functions obj("function"+"Name").apply... My point is that with languages that let devs do dinamic shit like this you are never 100% sure that your refactor will work, I can't be 100% sure if it is safe to remove this function that appears unused, or to remove this css rule that also appears unused, I prefer 1000 times more an environment that I can be 100% sure that I can remove or rename code. (I know about reflection and similar in static languages but normal projects do not use that)
I am wondering if you never worked with this kind of code bases and this experience is not familiar to you, also if someone will say that I shyould find a job that works with cool language or framework X , I don't , I care about the result of my work, I take pleasure when I fix some hard bug or when a nice feature or improvement lands and our users are happy.