Sunday, 18 October 2009

Unified Modelling Language

Now, you probably wouldn’t think of engineers as being experts on relationship management, but there are other occupations which have persistently and consistently fared worse when it comes to managing their relationships. Like celebrities. And celebrities are supposed to be the most sexually attractive and desirable among human beings. So if we can do better than them, I suppose you should listen to us.

Another reason is that engineers are supposed to be masters at simplifying the complex, because if we can’t do this, nobody can. Engineering these days is almost the art of mastering complex systems. And we would say that a couple in a romantic relationship is a complex system.

One theory I’ve been expounding has something to do with software engineering. It’s how, when you are writing software specifications, you need to have descriptions about components. Each component is typically treated like a black box. You specify certain things about interfacing, without caring too much about the nitty gritties of how these things are being implemented. In other words, if you put in an input X, you should be getting an output Y. This should be very clear to the end user. It should work in a very predictable way, and after all human beings should work in a predictable way because at the end of the day, we are all machines, even though we are more complicated than what we think of as a machine.

There is an expectation about how people are going to behave in a certain circumstance, and people should deliver what is expected of them. If things are different, then maybe an environment variable we don’t completely understand is set incorrectly.

Under this software engineering model, we are supposed to understand the user interface correctly. I am not the first person to describe a woman as a very complicated machine whose workings it would a challenge to master. Which knob to turn, which button to push, and when. The point here is that, even if you understand that logic or you don’t, you have to admit that there is a certain logic at work, and the key to the longevity or the viability of that relationship is that you understand that logic as best you can.

At the same time that you are trying to understand this new fangled software component, you have to remember that you yourself are also a software component whose workings are clear to the other party. When circumstances are like this,

What is the consequence of the black box aspect of this? It is important to note that you don’t have to understand completely how that other software component works. Some women are very proud of the fact that nobody is able to understand her inner workings. Well and good, fair enough. Some women really mean that, others say that just so as to maintain some leverage over their man. Whether or not that is true, it doesn’t matter. But you have to understand the specifications. You have to know what is pushing what button, and what kind of behaviour is going to result from that.

Women are a little bit like quantum theory. You can look at all the equations, and you can look at the conclusions that come ouf of them, and you can say, “this is total nonsense. This is illogical, and does not conform to my expectations of what reality is like. Well and good. But you will always have those equations, and you will still be able to predict what is going to happen by applying those equations. Your job is not to understand the equations on a deep level, but merely to predict what is going to happen next so that you can act accordingly. You don’t have to understand your woman. But you need to be able to predict her.

Of course, when you go deeper into UML, you will have plenty of new-fangled engineering concepts that I’m only beginning to grapple with. What is a design pattern, what is a state diagram, what is a class diagram. Plenty of boxes with arrows and circles and what not. There is a logic behind everything. The key is to understand the system and work for it, and make that system work for you.

I see that engineers have an average to good record at making marriages last. Some people think that it is because engineers marry each other, and are so shit ugly that nobody else wants to touch them, I have nothing to say about that. Even if that were true, it still means that our quality of life is better than - say- Britney and Kevin Federline. And that is why engineers are better at romantic relationships than all these crazy celebrities, it is because when we buy a new piece of software, we take the time and effort to study the user specifications properly, and we actually read the operating manual that comes together with it, as opposed to those celebrities who only get into it because a sexy glossy manual looks sexy and glossy enough for them.

In a perfect world, all couples would understand the Unified Modelling Language well enough to apply it to their relationships.

The other thing about relationships that computer science can teach you is the halting problem. The halting problem is simply, given a program and an input, to decide whether the program would run forever or whether it would halt. There's no way of knowing until you try it out. So there's really no way of knowing for sure whether a relationship is going to work until you tried out that relationship in the first place.

No comments: