Programming is finding abstractions, and those change as a program, and the understanding of the problem grows. Abstractions then have to change again as the program interacts with other systems, and to accomodate typical patterns of changes in the requirements which can't be predicted beforehand. Abstractions then have to change again to facilitate understanding the entire thing, and to accomodate technical changes, or allow easier bug finding.
I'd say, a real-world program that's beautiful 5 years later is ...something special :)
I'd say, a real-world program that's beautiful 5 years later is ...something special :)