Having started programming as a teenager, I really appreciate the refactoring features of modern IDEs. Still I try to organize my code so that it can be easily modified. Design for change for life. I am currently working on my PhD thesis on automated termination checking. I work with Haskell and appreciate it for purity and its type system. But I hate a lot of Haskell code out there for being overwhelmingly abstract, needlessly unreadable and undocumented.
I give practical courses of in software engineering focusing on team work and design for BSc students. These courses use Java, the language I'm most familiar with. I worked as a professional Java developer for almost ten years.