An interview with Martin Fowler
"You simply can't deliver changing requirements and evolutionary architecture without understandable, malleable code. So refactoring is one of the core set of Agile techniques, together with self-testing code and continuous integration."
"The general technique of refactoring is completely applicable across functional languages."
"...to be a truly good programmer, you should be a generalist."
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.