recently it has seemed to me that the main trick of computer programming is to learning how to break your problem down into a series of subproblems that turn out to be the subject of entire careers and yearly conferences of various computer scientists