3 ms·
The purpose of software is to teach a machine perform tasks, even when many of those tasks are to show an interface so that a human can perform a task. Design i
by niftich 8y ago
The purpose of software is to teach a machine perform tasks, even when many of those tasks are to show an interface so that a human can perform a task. Design is nontrivial, but computers are powerful, so we can layer on abstractions to ease the understandability and modularity of the code.
This is a creative process that's part engineering, part art: some people choose to take proven components and techniques and apply them in predictable ways, while some choose to experiment with new techniques, and some up with novel solutions. But any tradeoff has a cost, and future maintainers may not appreciate a solution whose meaty details aren't obvious.
While the creation of software may be a part-creative process, its maintenance is purely pragmatic: fixes to unforeseen problems need to be delivered quickly above all else, and enhancements along all extension points need to be possible, not just along axes the original authors intended. It's not hard to see that elegant code might be under immense pressure from more pragmatic modifications, any one of which can endanger its status in the eye of a beholder. This is likely why this article's author sees 'ugly' code survive: presumably, small changes are sufficient to make beautiful code ugly, while already-ugly code faces no such aesthetic pressure.