Monday, August 31, 2009

Linear Vs Parallel

Suppose we have to select two complementary food items for a party and there are two different people who are going to do it.
We have given them instructions that the first person must select a drink and the second person a starter.

Should we let both the people do their tasks parallely or should they do it one after another.

Let's look at the problems which can be caused if the activities are done parallely

Parallel Activities

Issues of each item
Each of the individual items itself could have some issues associated with it.
So if the first person selected Wine, he might have selected Wine which is Corked, Oxidized, Maderized or Refermented.
Hence there could be an inherent bug in each of the food products itself which might not get spotted till the party started and then we see all the guests politely refusing when we open the wine bottles. Same could be for the other item we selected.

Issues of complementing
The different food items selected might not complement each other. So one person might have selected white wine and the other might have selected poppadums. I for one would not want to eat them together.
Since either of them does not know what the other person is selecting there is a low probability that the items will complement

Issues of missed opportunity of complementing
Let us assume that they magically are able to select complementary food items, say wine and cheese, we run into the third level of issues.
They might complement each other no doubt but we could have done better.
Wikipedia tells me that Gouda is more of a fit with Riesling, Beaujolais, Merlot and Zinfandel while Brie goes better with Chardonnay, Pinot Noir, Sparkling wine and Ice Wine.
So while I have been able to pair Wine and Cheese and my guests will be happy, some of the more discerning ones would have loved that the wine and cheese have a deeper relationship. So rather than an issue the third level is more an opportunity which we missed out to please our guests

Now let's look at the same two tasks if they are done linearly

Linear Activities

Issues of each item
As above the first person could have selected a wine which is Corked, Oxidized, Maderized or Refermented.
However when we start the selection for the starter, since the wine will be taken into consideration, it is possible that the issue might get spotted.
The Wine is available right through the process of selecting the starter so there is some probability that somebody might spot that the Wine is bad. So the second activity acts as a QA for the first activity. Visualise this in a project where coding is done after all the screens have been already designed. If there is an error in the screen say a spelling mistake, the coder might notice it even though he has nothing to do with it.

Issues of complementing
Since the Wine is available to the second person there is a greater possibility that he will select a more complementing starter like cheese.
Again there is no guarantee, but the probability of the items fitting is significantly enhanced
So if the screens for a Module are already designed chances are higher that the coder will better fit the code to the screens.

Issues of missed opportunity of complementing
The linear approach gives us the chance to create a better fit. So now that we already know the wine which has been selected, we can read up Wikipedia and select the cheese which goes best with it.
So if the screens are ready, the coder might realise that there is a better way of coding the screens than he was planning to because the screens are available to him. For example he might see that every screen displays the current User's Name which might encourage him to store it in the session, rather than pass it through the query string because the frequency is too high. Similarly if it is only visible on the home page he might not store it at all.
So based on the GUI the code could be optimised accordingly.

Increase in Calendar Time
The classic problem pointed out with linear models is that it takes more time. So if we were selecting both the items together we would have taken say two hours. Now we will end up taking four hours. Note that the effort has not increased. We will still take four hours, two hours of each person. Its the calendar time which has increased from two to four hours.
While this looks like a problem, in a project this is really not an issue because there are always other activities available to be done. So if these same two people had to choose food for twenty different parties then this would not be a problem since while one person is complementing food for one party the other could be choosing food for another party.

This is the major reason why I have seen Project managers schedule things parallely. The percieved increase in them leads them to believe that they are better off doing things parallely. However they end up introducing the three different problems which are mentioned above which actually ends up increasing the calendar effort also as all the bugs in the system have to be solved. Add to that the people related issues with one team blaming the other for the issues and you have your hands full.

So until you have a very small project where you do not have more than one module it is always better to work linearly than parallely.

3 comments:

Hope1975 said...

Bang on target Vikas!!

Kedar Deodhar ( Keds ) said...

I really liked this article. In my experience as well, To get things done parallely, you need to have lot of clarity about what needs to be done and what is to be done for exceptions. It is but a fine line when to use linear process and when to do it parallely.

Karn said...

Very interesting analogy... and very relevant for the Project mgmt/operations world.

Another point that I think worth considering - what if both of them worked in tandem, not parallely, but together. Parallel task assumes independent workflow rather than this what is worth pondering at least to me is whether we can create a methodology where interdependence is enhanced. What do you think?