Writing Good Code: the Present, Future, and Past