Thursday, December 17, 2009

Delusions of Adequacy

As I sit here sipping my Bruegger's coffee, young adults laughing it up and jostling the chairs behind me, I'm thinking of a small patch job I am nearly finished with on the site. More precisely, how frustrating it was to do the patch.

The kids move on. Things are quieter now. I'm listening to the Imogen Heap channel on Pandora. In another post I referred to the "light rust" on my technical skills. That's just a metaphor. The deeper feeling is that I've always been outside looking in, regardless of my skills. Since technical leadership was never the fundamental cause of that issue, I don't consider it the solution either. In my very first paying job, I didn't even know the programming languages or have any genuine experience working with databases... but I spent a lot of time understanding the requirements and putting in place scripted procedures to ensure that assumptions were verified and the rationales for decisions were documented... and I learned to use source control on everything, including the database schemata. These are things I still see programmers failing to do, even in what they consider "best practice".

Regina Spektor screeches out a tune about blue lips on Pandora. She's the weird one with the cool tune on the Apple commercial. The process we follow has a deep effect on what we can accomplish. Like a lever, a good process can extend the span over which useful work can be performed, and a bad process will naturally act to reduce your effective span. As a 4GL developer, I had a very effective process for producing solid applications that not only did not crash, but addressed the concerns of many different stakeholders. I don't feel like I've had that sense of effectiveness in development using the Joomla code base. I am managing the problems of patching code bases, but not crunching out large chunks of solid code like before.

It isn't a good feeling, like trying to program while wearing mittens. Imogen Heap asks now "Where are we? What the hell is going on?" on Pandora. It is a good question. My code works, but does it fit into a larger scheme of things? Where is the migration path? The latter problem is as much or more a broader problem with modern business model of Web development, fractured as it is by cut-rate competition and the tendency of the business community to respect corruption more than honest assessments. There will be no maturing of the discipline when the discipline itself is just a subterfuge. I suppose that's why I'm ambivalent about the Agile rhetoric: on the one hand, it appeals to my objectivist tendencies; on the other hand, as with any practice it is no better than the practitioners, many of whom seem to be just as rationalizing as the best of the Big Methodology gurus of previous generations.

Maybe it is my scruples again. Even if you get something built effectively, how ethical is it to construct a building that a customer cannot afford to maintain? How ethical is it to build the building without bringing up the real and potential support costs? Many of the software systems built today are like Bucky Fuller's 1960's tensegrity domes: really spiffy to look at, but making additions later on is always a engineering feat with bespoke parts rather than a construction project using commodity materials. Does that small business realize that, should they ever want to extend that nifty Web app you built at the customer's expense, you will hold your own possession of the code and your in-house hosting of the running system as a bargaining chip? Does it make any sense at all for a customer to pay to put the on-going hosting of mission-critical enterprise applications in the hands of a software development company, without which the company itself could fail? To me, that's like an otherwise healthy human putting themselves on life-support machinery.

What is practical? Well, what I'm hearing from all sides is that Ruby On Rails and Mac OSX just work. eXtreme Programming is a working software team practice. Scrum seems to kind-of-sort-of help people in big institutions hedge against some of the pathologies intrinsic to that environment. Providing stateless ("REST") Web Service programming interfaces is a good thing. Yet architecturally, the World Wide Web is such a rats nest of ad-hoc-ery -- even at the so-called "Standards" level -- that people really need to go the extra mile to separate their actual business concerns from the misconceptions and false-premises of the medium.

Don't be deluded; few investments into Web technologies are ever truly adequate. Most of the Web has been engineered for obsolescence.

No comments: