Good talk. Watching refactoring is fun.
I feel like most of what he talks about is common knowledge now. But then again, I stumble upon code written by experienced developers that is just like the one he started with: unclear responsibilities, poor encapsulation, etc. What is even worse is: I sometimes catch myself writing code like that :)
What we do requires continuous attention to detail. We sometimes get tired or lose focus. And that may result in poor quality code. However, that’s only one reason to end up with such code. I think the other (and more common) reason is accumulating functionality. Einar Høst’s talk about technical debt touches upon that aspect. You start with a beautiful model. But then if
statements start raining on it. If we are not diligent, we end up with a mess.