Several comments from co-workers/friends:
Excellent article! My programming projects class was exactly as you described: static.
Nice article, two thoughts:
1. In school they should have two course programming 101 with the set assignment no surprises. Lets just teach them how to write code, which some people never learn.
2.Then when they take programming 102, hit them with a the real world as you suggest. Better yet. Run the project in Agile mode, with a daily standup. The student are the pigs, and have the professor is the “product owner.” Then have the professor start changing things.
And from a friend who teaches poetry at Harvard:
Good heavens! I understand why teachers of beginning programmers might keep the class “static,” but certainly before programmers leave they should have to cope with some of these “moving target” cases, which, as you say, resemble “real life” more than a single set problem that doesn’t change en route. Writing poetry is, in this sense, like writing code; the poem evolves as it goes along, and nothing is more interesting to me than watching the supple responses by the poet as the thing turns out to require being cut by half (one Dickinson example), or having its last stanza be what was originally the third stanza (Yeats), or to require the stern sacrifice of something that has turned out to be sentimental or banal, or the sacrifice of what was originally chosen as the stanza-form. Yeats rightly said that in each such case “It is myself that I remake,” and that’s what your article is asking for, too, a flexible mind always alert to the next recognition.