Friday, October 22, 2004

Hyperreality in LiveJournal

Baudrillard used the term hyperrealism to mean a world where reality is represented as more perfect than reality (crudely speaking). I've been watching the 'latest posts' section on LiveJournal and, when I read them, things always sound more interesting than they probably really are. This could be for any number of reasons; the mundanity of every day life is edited out, there can be a tendency to mildy exaggerate for comedy value etc . I don't mean to make a judgement here, there isn't anything wrong with these things, an LJ blog detailing the daily grind would be dull dull dull.

Umberto Eco says (writing about Disney Land) 'Once the ‘total fake’ is admitted, to be enjoyed it must be seen as totally real'. Well I suspect LJ readers quite enjoy the ride.

Maybe the LJ community is an example of hyperreality . Like a visit to Disneyland, we all suspend our disbelief and 'go along with the ride' to get maximum pleasure from the experience.

Thursday, October 07, 2004

Customisation and products

I used to work for a low volume high value product house (in fact I have worked for two of those). Low volume high value software are always being modified. Small companies are selling these products to large organisations. These big organisations always want special changes, sometimes because they really need it, and sometimes because it establishes a power relationship. Modification requests can sometimes be an assertion of a power relationship, it makes a point.

As a result, successful niche products often have meta data driven architectures. Attributes can be added, forms can be re-designed and business logic added. I've always enjoyed writing these types of architecture, they are hard to get right and it is often challenging to make them perform.

Compare this with bespoke or high volume systems where it's about getting a fixed solution out there at minimal cost. Since maintenance and enhancement budgets for bespoke systems often comes out of seperate cost codes, the argument for building a flexible system is impossible to make. This despite the fact that the only constant in todays world is change.

What the IT world needs is a fast, efficient meta-data driven architecture for business apps. Whilst there are a few around, most either run like slugs or are too restrictive. However, I've seen plenty of business apps now, and surely delivering an architecture that supports the creation of these is achievable. There was a book written by Pete Eeles (and someone else) called something like Business Objects, it was written in the mid-90s and proposed a model that influenced SS when it wrote a COM based architecture. However, it (the 'business objects' model) just never seemed to provide the right degree of customisation. Customers want to build systems out of big lego bricks, but they don't want them to look like they were built from big lego bricks. *That* is the challenge.

If you know of any good meta data driven architectures that are efficient, scalable, reliable and unrestrictive then make a comment.

Tuesday, October 05, 2004

Play

I've been reading some book that describes the history of scientific discovery (books aim being to debunk scientific method) and comparing the scientific method with the actuality of the creation of ideas and construction of application or experimentation. What seems pretty clear is that this process is akin to play, i.e. the idea and construction grow in an intertwined fashion.

Lots of people are very keen on interpreted languages, particularly those like Ruby, Smalltalk, Tcl etc. The reason for this maybe that it allows the developer to play and maybe play is very effective and efficient. The problem comes with creating a safe play environment on large systems. Maybe if someone cracks that problem I'll get a more rewarding environment in which to build stuff.

Oh, and we'd get to use playdough to produce systems.

Monday, October 04, 2004

Boundaries

People like to draw boundaries. A boundary enables the description of elements that lie within and without the boundary. Drawing boundaries also has other effects:

  1. Boundaries can frame thoughts and hence lead to consideration of the inner or the outer without considering the whole. (are you with us or against us?)

  2. Boundaries allow you to characterise the nature of the boundary, i.e. permeable, semi-permeable, flexible, fixed, etc.


Brian Maricks recent exposition on testing metaphors includes a boundary, that between the Agile team and the rest of the world. He uses the following image

and says:
They - programmers, testers, business experts - are in the business of protecting and nurturing the growing work until it's ready to face the world.

I thinks the choice of boundary is interesting, Brian's choice is large, solid, horned defenders of the growing work. This team looks independent, defends its young and I imagine it would survive outside of its current host organisation. That doesn't sound like the software projects I'm familiar with. In my experience (which includes software consultancy/service companies and niche product houses), projects tend to not have an existence outside their host organisation. Occasionally teams move to a new host, but it is uncommon. I don't think Brian intends for the team to be independant from its surroundings, but I can see how people may interpret it in this way. This is the problem with drawing boundaries and not discussing the nature of the boundary.

Maybe the testing metaphor (which is really a team metaphor) needs to acknowledge the interconnectedness of the team with the host organisation. I think the metaphor needs to conflate team identity, interconnectedness and symbiosis (though it has to be admitted, some projects are parasites that kill the host). Maybe neurons work as a metaphor, they have a strong centre, they are connected via fine tendrils into the host, communications down particular links reinforces communication paths and they work to form a whole that is greater than the sum of the parts. Initially attracted to that idea, I don't see it as very successful. Brian's desire seems to be to bring independance, critical thought and error seeking behavior inside rather than outside the team is laudable, and isn't addressed. However, the dinosaur ring metaphor chosen is akin to protecting the child against all comers, seeking to nurture it but not allowing it outside until it is grown. Is this really the right way? Shouldn't the child be encouraged into the open early, supported but not closeted, exposed to new people and ideas and encouraged to explore? Social networks are a better metaphor for software teams. There can be a place for independence, critical thought, error seeking and cohesiveness within social networks. Social networks also capture the lumpy nature of teams and cohesion, within large teams there are clumps of high cohesion and within those clumps there are other clumps, it's fractal in nature (to some extent anyway).

Maybe the dinosaur ring is born from the statement that independance and - to some extent - error-seeking are not a natural fit for Agile projects, which thrive on close teamwork and trust. This statement is based on an assumption, that independance and, to some extent, error seeking, restrict close teamwork and trust. I think this assumption is incorrect. Team members can be part of a gelled team and yet have independance of thought and desire to find and fix defects. One of the developers I respect is extremely independant of thought, focuses in on defects with a laser accuracy, but can be seen pulling in the same direction as the other team members. If I had an agile team, there would be a place for this person, I don't want 'yes men', group polarisation and group think. Despite the pro group-think article, most teams that attempt it will fail. The effect on both the teams judgement and the host will be too detrimental.

So, I'd like to see a better metaphor, but agree entirely with the article when it talks about testing and Is there an alternate metaphor that we can build upon? One that works with trust and close teamwork, rather than independently of them? Can we minimize the need for the independent and critical judge?. I see trust, close teamwork and independance and critical thought working well in teams already, we don't need to abandon those things, just nurture them at the same time as we nurture the product.

Rationalism

I like to consider myself rational, but I don't think that is always the case. I like to think I exhibit the attributes of someone born under the star sign scorpio, and not under virgo. I do things that I consider will result in some 'good', but sometimes cannot articulate what good means. Many many times in my career there have been design discussions where someone will say 'why should we do it like this' and I have only been able to say something unexpressive like 'because it is more elegant'. I'm always struggling to articulate the tacit knowledge I've built up.

This means I like to be in an environment where I'm allowed to communicate irrational things, where I don't have to follow scientific method all the time. On the other hand I've just prescribed the opposite in a meeting I've been reshaping. Before reshaping there was discussion, ideas, but nothing done. Afterwards, ideas cannot be raised in the meeting without the originator producing a brief written case for the idea ahead of time. Now we have some discussion, ideas, and things are getting done. It's not the scientific method I admire, it's the desire to have informed debate and action. In this case a rational approach worked, but it can never be the be all and end all.