A lot of programmers spend so much time dealing with problems in the "plumbing" (functional) level that they neglect interface, so in effect, using the program is like plugging together wires and hoses in a box full of moving gears and grease. Unix pipes are great for getting stuff done, but a lot of people don't want to deal with things at that level.