3 ms·
Programming is hard because it involves a trade-off. Programming isn't really about solving a problem, it's about limiting options until the only ones left are
by drblast 16y ago
Programming is hard because it involves a trade-off. Programming isn't really about solving a problem, it's about limiting options until the only ones left are what people want.
I spent a few months about a year ago re-writing a massive cobbled-together database to track training, testing, and readiness for a large number of people. It had to conform to a number of requirements, like one sub-group of people's grades were averaged, but people could belong to multiple sub-groups and sometimes overlapped.
A monthly report had to be generated from all of this data. The format of the report was set in stone, and was not designed with automation in mind.
I avoided hard-coding many things as much as possible, but eventually I found that the more flexible I made the program, the more difficult it was to use. At one point you almost had to be a programmer to tell my program what kind of output you wanted.
Ah ha! So there are problems, it seems, that are fundamentally complex; there is no right answer, you can either have a flexible, complex program that accounts for every possible scenario, or a hard-coded program that is simple to use but will break the minute something changes.
The same principle applies to computer languages, spreadsheets, databases, anything. They are "easier" because they remove options from you and make assumptions that you won't miss those options. The moment those assumptions are wrong, you need a programmer.
- tene 16y agoThe name I've always seen given to this is the waterbed theory of complexity. There's a certain amount of necessary complexity in a problem, and pushing it down in one place just increases the complexity necessary somewhere else. The only way to reduce the necessary complexity involved is to solve a simpler problem instead. Note that this does not exclude the possibility of unnecessary complexity, which is also possible. http://en.wikipedia.org/wiki/Waterbed_theory http://en.wikipedia.org/wiki/Waterbed_theory