CONCEPT
Separation of Concerns (Dijkstra)
Dijkstra's 1974 principle — widely misunderstood as an organizational technique for code — that is in fact an epistemological discipline: the programmer addresses one concern at a time, in isolation, because the human skull cannot hold more.
The separation of concerns is the most widely adopted and most widely misunderstood of Dijkstra's principles. What the profession heard was an organizational tip — put database code here, interface code there, business rules in
between. What Dijkstra meant was a discipline of attention: the programmer, facing a problem of real complexity, addresses one concern at a time and does not permit herself to think about other concerns simultaneously. Correctness is addressed separately from efficiency. Interface is addressed separately from implementation. Each concern, isolated, becomes small
enough to be held in the human mind, analyzed completely, and verified with confidence. The composition of separately verified concerns yields a system that is — in Dijkstra's precise phrase —
intellectually manageable. The separation is not where the code lives. It is what the programmer is thinking about at any given moment, and crucially, what she is not.