http://www.tmtm.com/insanity/2002/11/09.html#a386
Complexity, I would assert, is the biggest factor involved in anything having to do with the software field. It is explosive, far reaching, and massive in its scope.
-- Robert L Glass, Communications of the ACM, November 2002
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
-- Unknown
So how do you remove complexity?
Re:What do you really want?
jplindstrom on 2003-01-16T23:08:11
Great answer, it got me thinking.
"You remove complexity by redefining the problem"
This I like. A lot.
"Geniuses remove it"
I guess one way of removing complexity is to just swipe it under the rug--data hiding and modular design. By definition you hide complexity and provide a simpler way of looking at things.
Re:What do you really want?
brian_d_foy on 2003-01-17T00:18:21
Sweeping it under the rug is the pragmatist approach---that's just dealing with it. Abstraction means the complexity is still there even though it is hidden.
My DBI example may have been ungood, but then again, you can completely remove the database server from the problem---not just in abstraction but also in reality. You can use DBI with flat files (just like we do in Stonehenge's DBI course where we write a Zork text adventure game starting with flat files and DBI, then at the end convert it to mysql without changing any of the code (other than the DSN)).
I wish that I could come up with a better example, or one not based in technology.
What's that thing that Captain Kirk did in Star Trek II?:)
See previous journal entry. (was that deliberate?)So how do you remove complexity?
/s
Re:a bigger rug
jplindstrom on 2003-01-17T15:32:49
Not really deliberate, no:)
It's an interesting angle, but I think writing the same thing in Perl is rather a more efficient way of managing the same amount of complexity.
But the custom-vs-standard-protocol issue can be an example of implementation complexity being removed by slightly redefining the problem (as mentioned above).
In another project, I was to write a server providing log reports. The initial (bad) idea, which I managed to veto, was to call this from an ASP application using some kind of custom COM control which we would have to write in addition to the ASP application itself. But since we ended up using HTTP we never had to write the COM component--it was already built by someone else and we could buy it instead of build it.
No integration problems, no development time, no debugging, no maintenance. Overall, less complexity for us to handle. Of course someone have to deal with the complexity (the component vendor), but if it's not on our radar anymore it's effectively gone.