Parallelisation is “code speak” for doing things at the same time. When programming an algorithm it is crucial to assess which tasks can be done at the same time and which have to be tackled sequentially. Stacking tasks in an efficient manner is a form of art for programmers. The same is true in everyday life. Find out what different parallelisation regimes exist and how your approach to them differs in this edition of the “Learning from Algorithms”.

Let’s start with an algorithmic example. Our task is to **sum up 100 numbers**. This takes 99 actions (1st action: sum first and second number, 2nd action: add the third to the sum from action 1… and so on). If each action takes 1 second, then this takes 99 seconds. If you have two computers working for you at the same time you can give each of them 50 numbers to add up (49 actions each), but they do them at the same time (taking 49 seconds in parallel). Finally, you add the two sums together (1 more action taking 1 second), and you have completed the same summation task. Crucially, the result and the number of actions stayed the same, but the time it took to compute the result reduced from 99 seconds to 50 seconds! If you have more computers available you could decrease this even further.

In real life you can** share work between different** people or set up different strands of work for yourself to parallelise tasks. To describe the differences in parallelisation we need to look at the time spent on a task, defined as the number of people doing the task * the time that has passed since the start. For example, if three people do chores for one hour, the time spent on the task would be 3×1=3 hours. In comparison to this there is the “1 person time”, indicating how long it would take for one person alone to do the task.

*Time spent = number of people * time passed on the clock*

*1 person time… how long it would take one person to do it*

We now look at different daily activities and assess whether they can or cannot be successfully parallelised. This knowledge can then help us in scheduling and sharing workload.

**Awful to parallelise: Preparing a ready meal***Time spent >> 1 person time*

There are tasks that do not get sped up when more people participate. For example, it takes exactly the same amount of time to microwave a ready meal, no matter how many people stare at the spinning plate. Similarly, listening to a podcast or attending a meeting cannot be parallelised at all. If you choose to do those activities together, then because it’s more enjoyable!

**Bad to parallelise: Grocery shopping***Time spent > 1 person time*

Some tasks are only partially parallelisable. For example, to do a grocery shop alone, it takes 50 minutes. This includes a 10 minute walk to the store, 30 minutes of shopping, and a 10 minute walk back. For two people, only the in-store part can be parallelised. So maybe instead of 30 minutes it now only takes 15 minutes of running around the store (i.e. “you get the fruits and veg while I get the bread and dairy”). In total, two people walk there for 10 minutes, shop for 15 minutes, and walk back again for 10 minutes. This has taken a total 35 minutes, as opposed to the 50 minutes before. However, since two people were involved, 2×35=70 minutes were spent on shopping. If you decide to go shopping together, then because it is more fun than alone – not because you are saving time.

**Good to parallelise: Cleaning***Time spent = 1 person time*

There are tasks that lend themselves very well for parallelisation. Cleaning the flat alone takes me 90 minutes. However, if there were three people cleaning at the same time, everything can be parallelised. One person changes the bed sheets, the second does the kitchen surfaces, and the third is stuck with the bathroom. With a little coordination (e.g. vacuuming before mopping the floor) you can achieve perfect parallelisation where the time spent altogether is equal to the time one person would have spent.

**Amazing to parallelise: Flat pack furniture***Time spent < 1 person time*

In algorithms, the best we can do in parallelisation is reaching “time spent = 1 person time”. However, in real life we can even improve on that! We can actually “save” time by doing things together! A great example is the assembly of large flat pack furniture. If you are on your own, you will have difficulty holding pieces together while you try to screw them tight and it might take you a total of three hours to finish. If there are two of you you can whizz through the instructions in no time and it might only take you one hour in total because each step is sped up. Here, you have only spent two hours on the task, which is less than what one person would take on their own!

It is really the latter category of parallelisation where humans shine. It is because of our **collaborative efforts** that we can outperform algorithms. When we are doing things together, we can truly “save” time! Other examples in this category include advice, coaching, and teaching (spend a few minutes to explain something that speeds up the whole process massively).

Whether you line up work for yourself or coordinate with others, consider which tasks can be done in parallel, and which do not change in duration, no matter how many people do it. Identify opportunities to parallelise effectively and search for tasks where the time spent is less than what one person would take on their own. These allow you to capitalise immediately on human interaction and improve your scheduling.

## Leave a Reply