Rob Williams is a probabilistic Lean coder of Java and Objective-C. Rob is a DZone MVB and is not an employee of DZone and has posted 170 posts at DZone. You can read more from them at their website. View Full User Profile

Walled Garden vs. Morton's Fork

04.21.2010
| 3497 views |
  • submit to reddit
Yet another stupid newsletter chunk of blather blew by today saying something like ‘until Android or something else takes hold, you are just building apps in Steve Jobs‘ world.‘ Now, generally, I hate to be the first one in the room to say ‘maybe you should run your mouth about something you‘ve done before,‘ but we don‘t need to imagine whether any of these professional commentators have ever developed an app before. I‘m sure most of them have done their share of tinkering. Do I bring that up to say that for this reason, any opinion they might have is invalid? No. Just to point out that the ostensible subject is not so much situated in the author‘s blind spot, as being just incidental to the real subject: someone‘s telling you what to do. [The fastest way to get a human being to hate you.]

Now, back to the ignorance part. What is Steve Jobs telling me to do exactly? What to write? How to create a true value exchange? No. Are there standards on what you can do in the ui? Sure. Do standards dictate every aspect and element? Of course not. Anyone who has ever done any of this knows how absurd such a bogey man is, conceptually. What is the opposite of being told what to do? Being ‘free to choose‘ as Milton Friedman used to say. The holiday bomb Nine (horrendous looking remake of Fellini‘s brilliant 8 1/2) had a scene where Dame Judy is saying to the cartoonishly dissipated Guido ‘being a director is greatly overrated, we all know that, what‘s so hard about directing? you just have to say yes or no. ‘Should we have more extras?‘ ‘Yes‘ ‘Does this look better in Red?‘ ‘No.‘ Yes, no, that‘s it, that‘s directing, what else do you do?‘

But does having choice really equal freedom? Define freedom. Historians tend to define freedom as a form of emancipation. Babies (and Frank Sinatra) define freedom as ‘my way‘ (btw, the Sid Vicious version redeems all of punk for me). It‘s not unlike the idea of making things data driven. A feeling of great power fills you up when you first think ‘I can make it so that the app comes up and reads in properties that configure every element of its behavior.‘ Shortly thereafter, most sane people realize, the configuration of a million data points represents a greater complexity with less flexibility that has no means of managing its sprawl than just using the expressive power of the language to capture what you need.

To me, freedom is freedom from things. Chief among those when engineering is having to worry about stupid stuff working or not. We have completely lost our way in this regard (favorite topic here). Eclipse is 6 years old and the only maven plugins are buggy messes. The vast majority of people who use eclipse for web development jump back and forth between it and the command line. AspectJ, a great idea, tremendous potential, years later, a buggy mess. No doubt one of the reasons for this is that the platform is not a collection of a bunch of choices that were made and then stabilized into one working whole. The platform is a huge jumble of diffuse, nebulous ‘components‘ where there are countless choices at each node and progress is at once speedy and glacial. By foregoing that final step of saying ‘ok, we have decided on these things, now let‘s make them work,‘ we have that being done by every group who wanders in. As I‘ve argued before, Rails was largely a reactionary revolt against choice. Unfortunately, it took another clichéd, immature tack: have the great leader (DHH) make the choices for us (cf. Freud on the differences between Christianity and the Cult of Mithras [the other dominant group in the Med at the time]). Apple gets accused of the same thing, cult of Steve, but none of us thinks for a minute that Steve is making the choices on how Core Data is going to do binding or whether serialization uses reflection.

Everyone has heard of a Hobson's Choice: that was a British guy who got sick of everyone wanting only the couple best horses at his stable, so decided, whatever horse is in the end stall when you come is the one you get, or you get none. I had never heard of a Morton's Fork. That's when someone is given a choice, but between two sucky options. Game Theory goes into these types of problems at great length. Perhaps the most elemental essence of game theory is the idea that all choices have payoffs, but most of them lead to stasis because of the tendency toward stalemate (equilibria in Nash‘s terminology). That is what I see almost everywhere I hear people in IT trumpeting the greatness of choice.

Finally, let‘s face the fact: a lot of the sense of progress that engineers have is in moving up the tool chain, which, if you think about it for a minute, is pretty pathetic. Surely everyone who has gotten to where they are using Maven all over the place feels like a more evolved ape than when they were pounding out their wares with Ant, but really, isn't that a sad state of affairs? I will be happy as Xcode delivers more features, but I would like to think that the pride of progress will be in honing my own wares, not mounting escapes from one hopeless hostage crisis after another.

References
Published at DZone with permission of Rob Williams, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Cloves Almeida replied on Wed, 2010/04/21 - 5:11pm

Choice matters, because the alternative is unacceptable. Too much choices indeed hurts productivity, and that's why every now and then something becomes a de facto standard, or the industry choose a standard. If it weren't for choices, we'd all be stuck in the gory days of IE6 development. Hell, if it weren't for choices, we'd all be using direct current, what Thomas Edison (the Steve Jobs of the 1880s) said was "good".

People from the "Cult of Jobs" (or some time ago, from the "Cult of Redmond") are good generalize from anedoctes. "See, m2eclipse sucks; this whole concept of open development environment sucks. Xcode (or VS) is THE WAY."

And if you're bitter about Ant and Maven, integrated build for web projects is an ancient feature of Eclipse. I don't think it supports the iPhone, which might be a no-go for the follower of the Cult of Jobs.

Funny to see that Xcode apparently does not support any sort of dependency management (why, if our masters in Cuppertino will provide us with everything we need?) or bug-tracking integration (our problems is only OURS to see). Oh, and apparently Xcode has some trouble with complex features like svn+ssh access (http://bit.ly/bj43n0)

Truth be told, I don't like Ant or Maven either, that's why I'm starting to use Gradle (www.gradle.org)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.