Same direction here: let code in, let the system grow, refactor often when you see things going out of hand. Only on personal projects so far tho. Commercially, I think it only works with a team that has extreme ownership and sense of responsibility for quality software.