Planning

Question: Why is planning hard?

Is it just Sequential Plans that are hard?

Why do I always mess up my estimates? How come my plans for a month always go wrong?

Hypothesis: Sequential plans are complicated because each step of a plan usually depends on the outcome of the previous steps, which gives you an exponential number of possibilities to handle.

For example, suppose I want to study two topics A and B over the next two weeks. I assume that each topic will take me a week and assign myself A for the first week and B for the second week. But, inevitably, due to more interesting problems or… ahem… YouTube, I don’t complete A within the first week. Now, I can’t stick to my original plan of studying B the second week because I want to do A. Of course, in case both are important for an exam, say, I’ll have to choose which parts to study from each and make finer-grained plans.

The point is that your plan must handle each possibility for each step. Your second-week plan must have one case for when your first-week plan succeeds and one case for when it fails. (Of course, if you just wanted to try A out for a week, then your second week’s plan can be anything you want. But most plans are sequential.) By the time you get to step four, you have to handle success or failure for each of the eight possible outcomes for the first three steps.

Planning is Hard in general

Hypothesis: Plans are hard to make because you have to handle at least two cases for each variable in your plan - success or failure. So, the more the variables, the exponentially larger the number of cases your plan must handle.

That was when Father had told Draco about the Rule of Three, which was that any plot which required more than three different things to happen would never work in real life. Father had further explained that since only a fool would attempt a plot that was as complicated as possible, the real limit was two.

Chapter 24: Machiavellian Intelligence Hypothesis, HPMOR

For example, if you want to throw a surprise birthday party for your friend, somebody has to get the cake, somebody has to keep the birthday boy away for a while, and somebody has to make sure all the guests arrive. If the cake doesn’t arrive, either because the bakery was full up and couldn’t take your order or because there was too much traffic, there’s no party. If the birthday boy isn’t kept away, there’s no surprise. If the guests don’t arrive in time, it’s not really a party.

Note that it’s not a sequential plan. Each part of the plan happens simultaneously, but you still have to handle the different possibilities of failure.

How do our Plans work then?

In reality, you don’t have to handle complex combinations of multiple variables. You may be able to address each variable individually. For example, if one bakery can’t handle your cake order, you can try another one. If your guests are late, you can shift the party by half an hour (and propagate that constraint to the cake-fetcher and the birthday-boy-distractor). If one plan to distract the birthday boy doesn’t work, you can try another one.

Plan to an Interface, not an Implementation

Here’s one way to simplify the birthday plan above. The plan boils down to three separate abstract goals - get a cake, get the guests, and keep the birthday boy away. There are several possible outcomes that would satisfy those goals.

You could get the perfect ice-cream cake in the flavour your friend likes, in the shape of a guitar or bike or whatever, with his name written on it. Or you could get a generic square cake with ordinary frosting. Or a pitiful little cupcake with a lone candle on top. These are all acceptable “cakes” as far as your birthday party plans go.

Similarly, you could get all twenty people in your social circle or just a dozen or maybe just the one guy who didn’t have an exam the next day. These are reasonably acceptable versions of “guests”.

The same goes for keeping the birthday boy away - you could distract him by playing video games at somebody else’s house, drag him along for your regular grocery shopping, or let him give you advice for your relationship problems (real or imagined).

Naturally, different strategies will vary in their results. A ice-cream cake will probably go down better in a surprise party than a cupcake. But the point is that your overall plan wouldn’t have to change. It’s still about the three things - cake, guests, and distraction. You may decide that if you can’t even get the barest possible result (a cupcake, one guest, or fifteen minutes of distraction), you’ll ditch the whole plan. But the abstract plan, as such, works.

What helped simplify the plan above was decoupling the variables in the plan into orthogonal parts. Once you knew that you were getting a cake, of whatever kind, the guy getting the guests didn’t really have to worry about the cake anymore. (Of course, in reality, people will want to eat part of the cake, so you may have to vary the number of guests with the size of the cake. That would require an interface with two variables - the cake and its size)

Hypothesis: The only way to simplify plans is the same as the only way to simplify programs: decouple the parts by having interfaces.

Hypothesis: Once you have an overall abstract plan made out of interfaces, you can vary the concrete parts independently without having to change your plan.

For example, the party plan above used the interface of “cake”. You could get any of the hundreds of cake at your local baker without having to change your overall plan.

If you hadn’t used interfaces, you would have to handle cases in their entirety - “what if I call ten guests and keep the birthday boy away for an hour but get only a cupcake?”; “what if I call three guests but get an ice-cream cake?”

Minimum Viable Plan

We can see how to build complex plans. First, we start out with the simplest things that would satisfy each interface and then slowly raise the quality of each part till we reach an optimum.

In our example above, we would first ensure that we could get a cupcake and one guest and keep the birthday boy away for fifteen minutes. Then, once we’ve proved that that would work, we can try to get a regular square cake. Next (or simultaneously), we can try to wrangle a few more guests, maybe promising some alcohol if they deign to appear. We can also concoct a better distraction to gain even more time.

Hypothesis: So, a plan consists of an abstract plan made out of interfaces and then concrete sub-plans that satisfy each interface.

The above plan had the abstract plan of “cake + guests + distraction” and the concrete sub-plans of regular cake, ten guests, and one hour of distraction.

This suggests that the key problem is in coming up with the abstract core plan. Once we’ve got that, it’s straightforward enough to find concrete ways to satisfy the interfaces.

Complications

Question: What would make you change your abstract core plan?

Suppose your guests decide that they will come only if they get to eat some ice-cream cake. Now, you have to get an ice-cream cake if you want a lot of guests. But what size ice-cream cake should you buy? For that, you need the number of guests. One way to solve that problem is to turn that part of the plan sequential - wait to get RSVPs from all the guests and only then place an order for the cake. This is a different core plan from the previous one.

Basically, that extra requirement broke the decoupling you’d exploited earlier. The cake order is no longer independent of the number of guests. So, the old interface and thus the old plan won’t work.

One at a Time

Figuring out a core plan and then improving the sub-plans individually forces you to implement things one at a time instead of trying to execute your whole to-do list in one go.

That is (I think) what we call paralysis by analysis - where you don’t do anything because you can’t figure out a perfect plan to get everything you want, instead of just accepting some imperfect but effective plan.

For example, I had a long wishlist of things I wanted to do before I went to grad school in August. However, instead of just picking them off one by one, I was waiting for the day when I could get them all somehow. I wasn’t content with the idea of just getting a few of those benefits. They all looked so great that I felt I needed them all. For example, instead of trying to “write essays about all your ideas”, I now have the smaller goal to “write three essays about ideas X, Y, and Z”. That is now far more manageable and in fact more work because now I actually have to do sit my ass to my chair and bang out three essays whereas previously I could get away with idle contemplation about all the great writing I was going to get done someday.

Corollary: If you can’t get even the simple plan going, then it was probably a waste of time having the larger, complex plan.

This way, at least, you’re forced into action and can see which variables are holding you up.

Created: April 7, 2017
Last modified: April 8, 2017
Status: in-progress notes
Tags: notes, planning

comments powered by Disqus