From E.M. Forster’s Aspects of the Novel:
Another distinguished critic has agreed with Gide — that old lady in the anecdote who was accused by her nieces of being illogical. For some time she could not be brought to understand what logic was, and when she grasped its true nature she was not so much angry as contemptuous. ‘Logic! Good gracious! What rubbish!’ she exclaimed. ‘How can I tell what I think till I see what I say?’ Her nieces, educated young women, thought she was passée; she was really more up to date than they were.
And Giles Bowkett’s Let the System Design Itself
And it literally happens like that. If you’re building design-first, you’re saying, “The system will do XYZ - I’ll put that here.” But just because you know it’ll do XYZ, you don’t necessarily know how or where, and deciding ahead of time imposes an arbitrary and unnecessary structure on your code. So then you have a file called XyzFile, which is supposed to do XYZ, and then you have other code elsewhere in the system which actually does XYZ, and it’s in some other file, because the design you imagined will always be different from the design which emerges. It’s like coding in Java. There’s the structure of your actual program, and the structure that Java requires you to accommodate. That second structure is just unnecessary mental overhead, and the bigger your system gets, the more wasteful that overhead is. You’ll have a structure that emerges naturally, whether you want to or not. It’s as inevitable as gravity. You might as well just let the macro follow the micro, like it’s supposed to, and get the good design which emerges naturally as a byproduct of that process.
Forster uses the anecdote to point out how the meaning of the work emerges from the act of writing, much in the same way that Bowkett illustrates how good design, if good design exists at all, naturally emerges from the act of writing the code.
And perhaps in this connection exists a new mantra for agile programming: how can we know the software’s design until we see how it’s coded?

1 comment so far ↓
[…] ← E.M. Forster and Agile Programming […]
Leave a Comment