Tuesday, October 31, 2006

Pseudo-ML Diagrams

Language conveys meaning
The purpose of an agreed language and set of conventions is to be able to convey meaning effectively between people. In a team of a few members, it is quite quick to form a consensus with very little explanation required. The more people there are on the team, the more effort is required to get everyone to understand the exact same vision, the exact same approach and any details thereof.

Of course, with Agile, the key aim is to generate a placebo effect where everyone believes that they're on message, working hard towards a goal, without any actual progress (except illusory progress) and without anyone managing to stop the regular process change which keeps the Agile consultant in work, and the company so in need of even more process change to correct the previous process changes and the apparent halt in production even though the illusory progress suggests that things have never been so good.

At times like this, a common language would actually be a big problem. If people really understood what was going on, they'd soon realise that nothing was going on except the regular payments into your bank account. So, we need a language which appears to convey meaning and which creates the illusion of a common understanding. This allows the following euphemistic-cliches to be used:
  • The team is pulling in the same direction
  • We're all on the same page
  • We have a shared vision
  • We've identified the goal and we're working towards it
  • We're singing from the same songsheet
  • We're all aligned
  • We have a group conscience
  • We are embalmed with glee
  • We're forming the success pyramid
  • We're all on message
  • We're out of the rough, on the green and sailing down the success-piste
And any others you can think of or make up.

So, how do we express this group delusion in a way which seems technical enough for the technical people to get, but is blunt and simple enough for not technical people to think they understand. The answer is Pseudo-ML.

Peudo-ML

This is a markup language that has its roots in UML in much the same way that cress has its roots in a tissue if you're growing it at primary school. Just as the cress has a short lifespan, so the sense of the Pseudo-ML diagram has a lifespan of the critical understanding time. This is defined as the entire duration of your explanation of the diagram plus the time it takes for you to leave the building. As soon as you've left, the understanding of the diagram and, indeed, any copies of it, will evaporate into an intangible mist, requiring you to come back and explain it all again, with the aid of surprisingly more (or less) complex diagrams, which will, themselves, have the same mystical powers.

Pseudo-ML uses many of the symbols from UML. In particular, there will be boxes, lines and pictures of documents and databases. However, the diagram will simultaneously be a class, state, object and use-case scenario. It will express everything and nothing about the problem, solution and goal of the project. In some cases, it may even express truisms about software engineering, like the fact that things should be tested, or that software should be good.

There are a few flavours of Pseudo-ML, but no two diagrams should be the same and you MUST make up your own notation, lest someone sees a similar diagram from someone else and starts to notice the inconsistencies. Some Pseudo-ML patterns:
  • Marke-tecture - an architecture expressed in such a way that marketing people understand it - this is clearly meaningless
  • Static dynamics - a diagram representing the momentary state of a changing system with the changes drawn all over it and indistinct information about what changes to what, from what, or how
  • Collaborative-elaboration - a high level diagram showing collaborators, covered in low-level detail about something completely unrelated - an equation can really set this off
  • Abstract ephemera - something which expresses a pattern incorrectly, without any substantial purpose and enough information to relate it to the subject in hand
  • Anti-pattern - something which claims to express the current system, why it's wrong and why it needs to be changed, without being accurate, meaningful or in any way useful
The possibilities are endless. Remembe a picture paints a 1000 words, so if you're paid by the word, you should definitely consider drawing more of them.

Monday, October 23, 2006

Bottlenecking

Everyone knows that bottle necks are bad, right? Well, technically, that's wrong, as without bottlenecks, beer would come in cylinders that would be impossible to drink from.

Anyway, the point is that we all know that a bottleneck in a process is something which constricts the process. However, if one is to engender a sense of the appropriate placebo effect, and keep the more perceptive people around you from spotting the necessary bullshit, then it's imperative to find some means of bottlenecking.

Bottlenecking is a defensive move that takes one or both of the following forms:
  • Disablement - you put the person you wish to bottleneck into such a constrained project that their constant failure is guaranteed. This makes them feel like they're trapped in the jaws of something made of glass and full of a liquid that will quickly drown them.
  • Declaration - you point to someone and declare that their method of working is the bottleneck. This will so wrong foot them that all their attempts to explain the efficiency of what they're doing will distract them from the inefficiency of what you're doing. This is akin to scapegoating.

Sweetistics

People like glib phrases like "It'll be alright on the night" or "We are going to be 110% in on this one". However, the problem with just saying stuff is that it doesn't give the bean counters any sense of proportion. Moreover, people trust numbers, even though they don't truly understand them, and even though a number is an abstract entity.

For example, if we said that crossing the street, according to a survey of 1000 people, proved to be 99.9% safe, people would be thrilled. That's brilliant. That's a great statistic, unless you happen to be the parents of the child who got killed in order to make the 0.1% of the group. Those parents would feel like the road probably needed the zebra crossing after all, and that the 999 other people were just lucky. In truth numbers mean little.

However, some statistics are researched and do genuinely reflect something of value. Those statistics are seldom much use to us unless they happen to agree with what we wanted to prove in the first place, whether they're directly relevant to us or not. However, there is a discipline called sweetistics. This is, essentially, putting a numeric quantity on things which we've not researched in order to allow us to form convenient aphorisms, related to those numbers, which look like absolute science BECAUSE they have numbers in them.

Examples:
  • The 80-20 rule - 80% of the something is bigger than the 20% of that same thing which would otherwise cause 80% of another thing to be spent, even though it's not worth it for 20%.
  • Pairing - with double the people doing half the work, then half the people can achieve more than twice as much as they would otherwise have done.
  • Refactoring - the extra effort spent on the redoing of the work, as a constant - C - can avoid the extra effort required at some later stage - S - rising exponetially (which we all know is bad)


Sweetistics always feel nice when you taste them, but like real sweets, they cloud the mind and the effect soon wears off. Use liberally.

Simple Majority

People are, for the most part, very stupid. It's through being stupid that they flock to buy the latest iPod, HD TV and high-fat, low-tasting, poor nutritious products, relentlessly marketed to them. It's through the general desire to be successful that they'll do pretty much whatever looks most fashionable, provided they're given the opportunity to believe that it has some basis in rational thought, even if they themselves, don't quite understand what that basis is.

Better still, those people who think that they truly understand something, will assume that they're being very clever for following it through. If they believe and they think that they're believing in something which is based on logic, rather than blind faith, then they're even blinder to the blindness of their faith than otherwise they would be. Who needs religion when pseudo-science can go that one stage further?

There will always be smarter people in any organisation - the sort of people who raise their hands at the end of a long outpouring of necessary bullshit and say something beginning with "Excuse me...". However, the majority of the people in the organisation will swallow your output hook, line and, sinker. This majority of simpletons, or simple majority is what you need to find when you inveigle your way into the running of the place. They're useful because they're the majority and because they can be turned into an in-group, to which the smarter people neither belong, nor wish to be associated with.

Necessary Bullshit

Bullshit is bad. It smells bad. It tastes bad. It's the unpleasant outpourings of an overfed digestive system. However, just as a farmer uses just the right amount of manure to grow his pleasant crop, so must the Agilistamalismalist feed just the right amount of necessary bullshit to his field in order to grow his reputation. Such bullshit is designed to win the hearts and minds of the simple majority.

Unlike the weighty and pungent bullshit from the bovine world, necessary bullshit is largely devoid of substance. Any graph with no axes will help, as indeed will pseudo-ML diagrams and sweetistics. The aim of the exercise is to provide a rich fecund environment in which your bogus claims, that the desirable is possible through you, can take root and grow.