Re:The Better You Program, The Worse You Communicate
by Dove on Tuesday June 09, 2009 @12:33AM
(#648527)
Great communication is first and foremost about clear thought, as is great programming.
True, a final piece of code shouldn't repeat an idea. Then again, neither should a final essay. Repetition is for ideas half-formed and ill-explained. And in programming as in conversation or writing, an idea is repeated, refactored, reformed until its perfect expression is found--and then all the junk is removed. The final product in both cases should be an idea well-expressed and clear as crystal--so inevitable and straightforward that its essance requires neither repetition nor explanation to spur understanding, and its correctness seems self-evident.
Mediocre code compiles. Great code, you can't imagine that it wouldn't, or that there could possibly be bugs.
Great programmers are not particularly over-literal, either. Great code, great software design practices, can be absolutely stuffed with clarifying metaphor. Everywhere there are trees and packages and publishers and factories and decorations and tags. In a design context, even strictly mathematical terms like 'vector' and 'map' can be loaded with poetic meaning.
Mediocre programmers might choose excessively literal names for objects like 'AggregateCollection'. But it is the poet who chooses to name it something like 'SpaghettiTree' or 'BitVectorVector' with quiet philosophical humor that makes his point so blindingly clear.
True, a final piece of code shouldn't repeat an idea. Then again, neither should a final essay. Repetition is for ideas half-formed and ill-explained. And in programming as in conversation or writing, an idea is repeated, refactored, reformed until its perfect expression is found--and then all the junk is removed. The final product in both cases should be an idea well-expressed and clear as crystal--so inevitable and straightforward that its essance requires neither repetition nor explanation to spur understanding, and its correctness seems self-evident.
Mediocre code compiles. Great code, you can't imagine that it wouldn't, or that there could possibly be bugs.
Great programmers are not particularly over-literal, either. Great code, great software design practices, can be absolutely stuffed with clarifying metaphor. Everywhere there are trees and packages and publishers and factories and decorations and tags. In a design context, even strictly mathematical terms like 'vector' and 'map' can be loaded with poetic meaning.
Mediocre programmers might choose excessively literal names for objects like 'AggregateCollection'. But it is the poet who chooses to name it something like 'SpaghettiTree' or 'BitVectorVector' with quiet philosophical humor that makes his point so blindingly clear.