Shorter decision cycles

So in the last Barcamp Singapore, there was a guy who talked about the (bleak) future of robotics in our lives. (I read somewhere there’s a bot that washes and massages your hair). He made a point that robots make building stuff faster and easier, for example, a 30-storey building in China could be built in days.

Because building stuff becomes faster and easier, decision making skills become more important.

An audience member commented the opposite, that because building stuff becomes faster and easier, decision making skills are less important (because you can always start over).

As with most complex issues, both answers are correct, under certain conditions.

In the long run, decision making skills are more important because the consequences of those decisions compound over time. If you never learn from your past decision mistakes, then compounding will eventually break you. You can start over, but you’ll never improve the quality of the sum total of your decision consequences.

In the short term, decisions might not be as important, since you can always start over. You either didn’t lose much money or much time.

However, consider the situation where there are 2 billionaires. Both decide to build multiplexes. Half-way through, the 2nd billionaire found out a mistake and decides to abort the project. Then he starts a new one (maybe build somewhere else).

Sure, the 2nd billionaire might be just days behind the 1st billionaire. That might not mean much.

But these are billionaires we’re talking about. If the 1st billionaire is astute, he would have already gained enough of an advantage that the 2nd billionaire would never catch up.

In the hands of the capable, even making just one more good decision is crucial.

Unpredictable next moves

I’ve been playing Dungeons & Dragons for a while now, and starting to get the hang of it. This group of friends are, shall we say, very tactics-focused. If you’re a D&D player, you should know what I mean. D&D is a tabletop role playing game, and we just happen to focus on the “tabletop” and “game” part. Nothing wrong with that, and it’s still fun.

Now, these friends are very tactics-focused (I think I said that…), and being the new kid on the block, I want to decide on my moves fast, so that gameplay moves on smoothly for the whole group. The moment my turn ends, I think of what I want to do when my turn comes again.

At first, it was easy. There were few enemies. We were a small group at first (4 players including me and the DM). We were playing low level characters, so we had few powers to select from.

Then we decided to play the higher levels (paragon tier, if you happen to know D&D). And a couple of other players wanted to join. The game was starting to get complex, with a lot of paperwork going on. More players, more powers to choose from, more deadly monsters (the DM had to delegate initiative tracking to another player because he was too busy tracking monster hit points and powers).

There were these power cards that I had, together with the character sheet. Basically, they contained the essential information that power has, such as how to determine hits, damage, and any special effects. At the higher levels, I was holding maybe 30 cards.

This became a problem, because of analysis paralysis. “What do I do now?” was a difficult question to answer. One of my friends gave an amusing solution. He said he’d shuffle the cards in his hands, and then a “I will use this one!”, and randomly picked a card out of the stack.

As we played together, I got used to the tactics used by them. We had teamwork. Yay. Which still didn’t completely solve the problem “What do I do now?” when it’s my turn. I would pick, based on the positions of the enemies and my allies, a power to use that was most advantageous. Which changed, the moment an enemy moved out of my reach, or an ally moved into my planned spot of devastation, or an enemy came after me and practically killed me.

Whatever plans I had was only static when it’s my turn. Which might make all that pre-planning useless. There was this game session where I saw a bunch of monsters grouped together (3, which was a lot, considering the sparsity of monsters in most encounters), and I planned a deadly spell to unleash on the lot of them.

I waited for my turn, keeping track of what my allies were doing, and what the monsters were doing (particularly those 3). And when it was just before my turn, a friend before me teleported right smack into the area I was going to blast. I had to make a quick decision, and ran through my stack of cards to see what else I could do.

He made his attack and was done with his turn. Fortunately, I found something that hurt 2 monsters, thus leaving him unhurt (as well as the lucky third monster). It wasn’t the best choice, but I’d rather not set him ablaze.

With all the available choices and moves of the enemies and allies, it’s hard to foresee how the battle was going, and how I was going to respond. Everything was fairly unpredictable.

The worst thing was, I played the only character with special effects, such as blinding, dazing or moving the enemies. The others had marginal similar effects, but they were mainly the damage dealers. I could best contribute by making the battles harder for the enemies, and easier for my friends. So I was searching for a combination of ok damage, and debilitating effects on my cards. It’s hard.

All this is a long winded way of saying, if you’re designing a user interface, make it as unambiguous as possible. The user do not want choice. You, do not want unpredictable next moves from the user. Unless you planned it, of course.

Be flexible like bamboo

This is another lesson I learned from a comic book (man, that artist had deep meaningful ideas!). I actually wrote about the hero from that comic book in another article. Yes, it’s amazing what I can learn from comics and adapt them to programming. *smile*

Retreat at Bamboo Grove

Swinging his staff just short of his sparring partner’s head, Chen Min breathed a sigh of triumph. He had just picked up the skills in wielding the staff, his callused hands the result of training with the wooden stick. There’s the exhilaration of winning and being better than his other fellow students. And he hadn’t trained with them for very long.

Chen Min’s master sensed a growing arrogance, and asked another student to spar with Chen Min. That student was tall, large, and looked menacing enough without a staff as a weapon. The fight was short. Despite Chen Min’s agility, he was forced into defeat by the sheer strength and power of his opponent.

The master, watching Chen Min’s fallen expression, sent him to meditate in the Bamboo Grove.

Asian bamboo forest by Robert Churchill at iStockphoto
image by Robert Churchill

And that’s how Chen Min came to be on the porch of a small building surrounded by bamboo. A small pond was in front of the building. Soft breezes whispered across the water, creating small ripples and waves. Tree leaves rustled. Bamboo shoots swayed. Birds sang. And it’s been like that for 3 days.

Chen Min’s been meditating on why the master sent him here. And why he lost that fight. Just when he’s getting frustrated, the sky darkened. Clouds closed ranks, and the wind picked up speed. Lightning flashed and the first sheet of rain fell.

Chen Min was getting to his feet to retreat back into the building when he thought of his master. He was sent there to learn something. And he’s not giving up because of some drizzle. He’s still moderately sheltered from the storm, so he sat resolutely on the porch.

The winds howled and the rain pelted everything. Chen Min was startled by the ferocity of the storm, and was beginning to question his decision when there was a crash. He turned towards the direction of the crash and saw that a tree was felled. By the wind.

He was preparing to scramble back into the safety of the building when his eyes focused on the bamboo around the fallen tree. The bamboo bent under the strength of the wind. And bent. And bent. The wind abated for a while and the bamboo sprang back into place. The wind resumed blowing with renewed energy. And the bamboo continued to bend in the wind’s direction.

Chen Min realised that even though the tree was sturdier than bamboo, going head-on with the wind ultimately decided its fate. The bamboo on the other hand, gave way to the wind, and survived the wind’s onslaught.

The torrent of rain weakened. The wind lost heart. And the clouds opened up to let the sun in. Soon, the pond was still again, with an occasional ripple travelling across the surface. The storm had disappeared.

Chen Min stood up and stretched. He breathed in the fresh clear air and felt excited again. He felt this was the lesson, and he was ready to go back to his master again.

Handling ambiguity and unknown

Some people think putting off a decision makes them look weak and indecisive. That’s nonsense. Making a decision without enough consideration is worse than not making a decision. And if you’re the philosophical type, deciding to wait and think through is also a decision.

For simple and familiar programming tasks, you can certainly decide what to do and how to proceed immediately. For more complex tasks, it’s ok to give yourself time to think and plan. Give yourself permission to think and plan. You don’t have to react immediately.

Be flexible like the bamboo (not too much though). Give way to the task and requirements first, letting them wash over you, while you decide how best to tackle them. Once you get over the shock of what you need to do, spring back into balance and unleash your solution.

It comes down to how much you can handle ambiguity and the unknown. How long can you stand not knowing what to do? When you’re struggling to come up with answers, your brain starts throwing ideas at you. The first one might be good or it might not. Some might be useless. Some ideas have possibilities for further investigation.

Once you gather enough ideas, the fog of ambiguity lifts. You feel better able to tackle the tasks and requirements. This feeling of clarity is stronger than the feeling you get from reactionary solutions. Because you’ve thought through the situation and came up with a solution (possibly several), despite the fact that you knew very little about the problem at hand from the start.