Small pieces (yaks) (very) loosely joined

My concept of the value and power of the internet rests largely on the idea that it is basically many small pieces loosely joined. That idea embraces the use of small, single-purpose widgets that can stand alone, which makes it easy to build and test the widgets. Then it combines them by being joined, but they are loosely joined– there are not lots of dependencies on other included pieces.

The joining makes the overall result very robust and powerful. The small pieces make it very flexible and easy to manage.

That works for the internet itself, and works very well.

But we seem to have major difficulty making the same model work for other systems. I used to think it was just me and my own limited skills at programming and system design. (The “pieces+joined” is almost the antithesis of “system design” but that’s another story….)

And then I came across this gem on today’s O’Reilly’s “Four Short Links.”  Jeffries’ experience struck me as my life on a pretty much daily basis.

So why does the internet work but when Jeffries– or poor slobs like me– try to work with the same model, we end up neck deep in yaks?  I don’t have a ready answer for that but one possibility that immediately comes to mind is the use of standards.  The internet, and it’s child the web, work because there are clearly articulated and enforced standards that you have to follow, else your application won’t work.

But the likes of Google App Engine and python (substitute your favorite environment tools here), don’t follow the same clear articulation of standards.  Depending on what gib repository you use or what options you use when installing python and it’s many libraries or your own development structure, using someone else’s sample code may or may not work right.  You are just as likely to end up with a room full of yaks as a working tool.

Just an early morning thought dump…