Too often I run into people who are way too concerned about velocity in software development and do a lot of math jugglery to make a plan look great to them and their bosses. The task breakdown in software development projects are empirical, it is not that scientific enough to drill it down to plain numbers and apply optimisation techniques on it or swap people like machines between tasks.

But many managers break down the tasks as if there is no communication or sync up required between people and if at all there is some communication, then people have to communicate over formal structures and contracts. If you trace these back to what it is, you get waterfall process with rigid contracts and control structures.

Teams are built with people; people get bored, fall sick, need vacations and skills vary between individuals. Planning needs to take into account task rotations, interactions between teams, contingencies, people skills, training & staffing issues, context and above all requirements that can change entirely or scope that increases a lot after deep understanding.

The result of managers treating work division in software like labour work results in unrealistic expectations which produces an output that is always on fire and setting self fulfilling prophecies that software teams don’t deliver hence need to be micromanaged.

Software development is a dynamic system with a ton of moving and evolving parts, in a dynamic system the whole is much more than the sum of the parts. A plant as a whole is much more than when seen as leaves, stems, branches, seeds, flowers, trunk and root.

I was very surprised to note that in paper based offices there was nothing like erase a mistake or throw out the original, it was always an append over the previous ones. Be it land records, mark sheets or accounts. The end state was always calculated and consolidated than written, erased and rewritten.

Why do you need an eraser when you can always create a new version?

This is very different in the software world, it is always wipe out old values and put the latest unless there are transactions which have to be recorded each time they happened. In real world everything happens by events yet in software we were always saving end states until recent times where having a common shared state became a huge problem when the systems started scaling and no one can have a claim to be the source of truth.

The problem with saving the projections is that we have to constantly erase and rewrite the projected truth, it was inconvenient in paper based ones so people stuck to append only. Since software makes erasing and writing easy, projections were always created during events instead of storing the events.

Why this becomes a problem? The problem is when there are lots of actors and they have to share the truth between them. Not everyone is interested in the entire projection and transporting that data also becomes painful. The solution is to keep events/transactions as it is and let each of the actors compute their projections when they want.

This is how we work in the real world, the events keep happening whether we observe or not, we try to make sense of it only when we are interested in it to do something with the events; else it just gets journaled somewhere unless someone wants to go through them. I am glad that more and more technology solutions are taking a cue from the biological and social world which had taken 100s and 1000s of years to evolve, instead of discarding them as old way of doing things.

I often encounter people who deal only with false promises and a lot of people fall for it and yet take it easy as if it is normal.

Consider the following scenario.

There are two tailors who have setup shops side by side, during the festive season you go to store ‘A’ and request to tailor your suit in a week which is made of very expensive cloth. The tailor informs that due to the workload you will not be able to get the suit in a week but in about 10 days which is cutting too close to the day of the festival. In the past this tailor has delivered with good quality on promised dates but this is too close for you to take a call.

So you visit store ‘B’ where they also have a similar workload and backlog but promise to deliver to you within 5 days. They cost a little bit less and you are happy with the deal. 5 days later you turn up to collect your suit and you are in for a shock that the cloth has not yet been put in the queue for cutting and stitching. After losing your cool and talking to various people who play bad and good cop finally you are promised to get the delivery in another 5 days. 

5 days later, you have to be ready for the event in the evening so you drop by the tailor to collect your suit. You notice that the tailor is still stitching in a hurried manner and makes you wait for a few hours before giving it to you. On getting the suit you notice that it has a lot of glitches like double seams, improper creasing, misaligned pocket flaps etc. Only a few of them gets somehow masked and you end up late for the event in a spoiled suit. 

After the event you take it to Store ‘A’ and they tell you that they can fix it but it will take 10 more days and cost the same as a new suit as there are extensive repairs to save the expensive cloth. You reluctantly agree and at the end of 10 days you are surprised with on time delivery and the quality of the suit. You leave the place with a regret that you did not place the order with Store ‘A’. 

The scenario is similar at all levels even where the deals run into millions. The lure of a sweet price is so much that no one takes a look at the feasibility. Only in some cases the person making the deal is the same person getting the bad quality; but most of the cases the person making the deal gets good benefits for the sweet deals and the brunt is borne by someone else often many steps down the ladder. This leaves no room for direct observation and hence the feedback loop is never closed; the sweet deals and bitter quality output keeps going on rounds. 

One of my friends tweeted this recently

The bitterness of poor quality lingers much longer after the sweetness of a cheap deal has disappeared. 

Image courtesy: rawpixel on Unsplash