During software evolution, programmers add new functionalities and release new versions of software. This complicated work involves not only program development but also learning new knowledge. This paper explores an analogy between incremental program development and constructivist learning, and presents a case study that investigates this analogy. Four types of cognitive processes have been identified. They parallel analogous software engineering activities