The Tyranny Of An Inefficient Skynet

Skynet for DummiesIf you haven't watched at least one of the Terminator movies, I'd like to welcome you to the planet.

The basis for the Terminator movies is that this system, Skynet. In the movies, Skynet is built on the best hardware and software we humans can pile together (rumor has it the Pyramids were one of the initial attempts). The supersystem we created then proceeds to get rid of the problems - not even bothering with Asimov's laws - and a movie series was begun.

It's not a new story. It's a Frankenstein with asexual self-replication. Golems Gone Wild. Heinlein even played with it a bit in 'The Moon Is a Harsh Mistress'.

A predictable Skynet, though, is hardly a concern. Following brutal logic that lacks humanity (or maybe the wrong parts of it?), we can see how a super-intelligence would think that humans are problems that need to find... resolution.

An inefficient Skynet, on the other hand, would be horrid. Imagine, if you would, a system built in a hodge podge sort of way. It would 'break' now and then, creating unpredictable behaviors. Network congestion in this case would be nothing to sneeze at - the system might override itself when doing something predictable. It could just randomly kill people and then act innocent the rest of the time, completely unaware that it had - because, of course, it lacks logging ability. Or it might suddenly decide every human on the planet needs emails about erectile dysfunction and Russian wives.

It might take over your internet enabled device and control how brown your toast is, or get into a patient database at a hospital and decide to switch people's medications.

It might get bogged down while trying to figure out how to brew a proper cup of tea. (we miss you, DNA)

No, I'll take the rational Skynet any time.

Please, follow sensible software engineering practices.

Using What You Have

Up Above It...At the beach this morning, there was a grey haired, bearded man of advanced years taking pictures of the sunrise. He was contrasted with the twenty-something young woman doing the same.

She had a full on setup - a good tripod (not the cheap ones you get that aren't that stable) with what looked to be a Nikon DSLR. She was over there fiddling with her equipment, getting things just right before she took her shots.

The older man was using the hand railing for stability and taking shots with a point and shoot.

They were probably achieving similar results.

The younger had the latest tools, the best her money could buy and was finagling herself to better pictures with considerably more effort than the older. The older was using what was around him to his advantage, using it to achieve a similar effect with significantly less error.

It's a great thing to consider in the world of technology, particularly in software engineering. The selling point of technology is that it's supposed to make life easier, and software engineering products are supposed to inherit from that. It's supposed to be easy to use, and in the grand scheme of things, people want it to be inexpensive (though they will pay for what they want, which explains Apple products - for better and worse).

Using what is available to achieve the same result seems ideal in most software engineering scenarios - thus, object oriented programming has lasted so long. Throwing more money at things can simply make things more expensive and time consuming to maintain. It does seem to take experience to know the difference.

Killing the Yoda

Yoda vs. Hulk (164/365)In technology, there are neverending aspirations to be better - and one thing in common with technology is Yoda. Well known he is to the technology community.

There's a Buddhist koan that I've derived from for this post. It states that if you find the Buddha, you should kill him (Linji). It's not a literal saying, it's about people being on their own path and aspiring to be more.

It's a good thought. You can read more about killing the Buddha here. The same thought adapted is to kill the Yoda.

The idea here is that any predominant technology, best practice, software architecture, software process... even education related to any of that (or anything else) is a stepping stone.

How does this apply to software? Let's say that you write the best possible application for real time widget updates. It's your Yoda. Someone else with either a lot of time or a lot of money is going to kill that Yoda unless you kill it yourself and replace it with another Yoda. In fact, that's what Software Development Plans are partially for- defining the End of Life for a project, and every project should have one. Otherwise, Yoda++ will take your Yoda down.

That process you think is perfect? It won't always be.

That architecture you think is perfect?

Those 'best practices'?

Yoda's your pal now. Be ready to take him out.

(Throw Jar Jar Binx under the bus while you're at it).