Tuesday, January 6, 2009

Marxist Engineering

Kiril writes well about creating tech assets for business. So well, that I think his point generalizes even farther he thinks.

Coding is inherently about abstraction - building big things with lots of complexity hidden underneath layer and layer of metaphor. More advanced languages provide a coder with better tools to create these abstractions, these metaphors. In this context, "better" means many things, most important among them being domain, strength, and transparency (TODO: link, or expound).

As the languages we use become more powerful, our ability to create metaphors which span vast domains increases, also. Consider jQuery - this small JavaScript library is probably the most misunderstood and underrated piece of software currently written. It takes an ugly, pain-in-the-ass DOM API, with all of its browser incompatibilities, non-standard event models, all that stuff, and wraps it up into the form:

$(subject).verb(object)
.verb(adjective)...

That brought a tear to my eye the first time I saw it. Still does. JavaScript could always do this, but the JS DOM API wasn't written this way. Why not? Because it was written by people (or maybe for people) who were used to weaker metaphors (I'll spare you the getElementByFoo example).

This is an important point - languages can change relatively quickly, it's the programmers' habits which are the bottleneck to tech progress. It's the corporate "senior enterprise Java certified developers" so devoted to the technology and patterns they once invested all of their time into who are the bottleneck. It's the IDE's that are targeted for them to use, ditto for the source code version control, and the Microsoft SQL servers their bosses pay exuberant money for.

But the future is democratic. The future is in what Kiril calls "reusable code assets", open to the proliteriat for free use, and infinite reuse. Languages are already there, and it's only a matter of time before coders catch up. With them catch up the IDE's will, as will source repositories. The future is in sharing, searching, and mixing smaller and smaller "code assets". The limit is probably small enough to surprise even the most idealistic of us.

No comments:

Post a Comment