GCC is considered more difficult to modify or debug than other programs of similar size. This paper will investigate the reasons for this difficulty, from the point of view of a maintenance programmer: someone producing a small patch to fix a bug or implement a feature, without causing new problems for unrelated use. Because the development tree’s head is expected to be functional at all times, such incremental changes are normal—even regular contributors are in the maintenance programmer’s shoes.