Walled Garden vs. Morton's Fork
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.
(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)