Better + Faster = Cheaper


 

 

Other Big Concepts  

 

Universal Laws:

Almost nothing is actually universal.  Nearly all laws apply only to specific people, specific disciplines or very small systems.  I have been on a search for really universal laws that apply everywhere in the universe. These are not just laws about people; they apply to galaxies, atoms, political systems, electronics and software.

Here is what I have so far.  If you can think of another one, I would be very happy to hear from you.  Email 'tomo' at this domain.

 

I    The universe is infinitely complex

Sometimes we think the world is simple, and that we are just making it seem complex.  Exactly the opposite is true.  It is difficult to find anything outside of mathematics that is simple. We still don't understand gravity.  We can't figure out how to stop simple viruses.  We don't even have a consensus on whether tax cuts are good or bad for the economy.  Physics can accurately predict the path of two billiard balls bouncing off each other, but three or more balls is still unknown.  The universe is a LOT more complicated that we can deal with!

Corollary 1a) Humans make simple models to manage complex systems

Humans have limited mental capacity that prevents us from understanding the universe.  But, we need to deal with things they cannot fully understand, so we make simpler models that they can understand.  Models are a very useful tool for dealing with complexity, and all of modern life depends on it, but...  Don't ever let yourself believe that the models are real.  Every complex system you understand is a model of a more complex system that you imperfectly understand.

Corollary 1b) Compartmentalization reduces complexity

When a system is too big to understand, one of the best ways to manage it is to break it up into smaller pieces that are less complex.  Glenford Myers wrote some great books on how to divide software based on module strength and independence, but he assumed that the hierarchy was the best way to organize things.  The rigidity of the hierarchy made clean design difficult, so later researcher came up with the Object Oriented paradigm that was a much better fit for real world system.   I expect future researcher to come up with even better ways of organizing the small pieces of large systems.

Compartmentalization was often referred to as "information hiding", as if some burglar were going to steal your information.  I assert that this concept is a problem.   The real issue is compartmentalization.  You want to be able to focus you mind on one compartment and be able to hold in memory all the details needed to understand that compartment.  Any unnecessary details you can eliminate frees up some mental space to prevent you from being overload and confused.  The real concept is all about reducing the load on our puny human brains.  I expect to see future innovations in having computers keep track of more of the details, so that we can deal with bigger compartments.

II   All complex systems need feedback to be stable

In biological systems and electrical systems, half of the components are there to balance the other half.  In economic systems half the companies fail to establish the boundaries.  In political systems, half of the time is spent fighting the other party and not making laws.  There aren’t any big systems without significant feedback loops!  


Why do centrally planned economies fail? Insufficient feedback loops.  Our chaotic, greedy system of capitalism lives because of feedback.  Let's say that someone has an idea for a product that nobody wants. In a centrally planned economy, orders go out to build a factory, workers are assigned to it and production begins.  Each month good workers are congratulated for their high production.  The products that nobody wants either pile up somewhere or desperate people find some way to convert them into something they can use. In a capital economy, you would probably not be able to raise capital to build the factory.  If you did, it would quickly be shut down, when there were no sales.  The investors foolish enough to give you money would be punished with the loss of their money and would be smarter next time.


In projects of any complexity, feedback is equally critical.  Programmers need feedback to produce the right thing on the right schedule.  Customers, managers and marketers need feedback to properly set expectations.  Test teams do almost nothing except provide feedback.  If your project is in trouble, you probably do not have enough feedback loops and need to add some more.

Corollary 2a) Faster feedback works faster

If you could do a perfect analysis at the end of a project of every mistake you made, the project would still be over, and it would be to late to correct any of it.  If you could detect every single but in a single test run, after coding was complete, you would still have to go back and redesign everything to correct the bugs.  If you could detect every bug every night, you would never lose more than one day's work and you would make fewer mistakes in the future, as you learned from past mistakes.  If a little red light came on every time you started making a mistake, you would never finish making a mistake, and all your work would be perfect.


There are limits to what mistakes we can detect, and sometimes the effort involved in detecting mistakes is more painful than the mistakes, but the concept still holds.  Faster feedback lets you correct things sooner, and that is really good.


Corollary 2b) Not all feedback is "measurement"

There are people who will tell you that you can not correct what you can not measure.   Elaborate and expensive systems are developed to provide numerical data for analysis.   Numerical data can support wonderful feedback, but not all good feedback is numerical.  

If someone tells you that your pants are on fire, that is very useful feedback, and you can start a correction immediately without further analysis.  You don't have to ask, "How long have my pants been on fire?", "How close do I have to walk next to the campfire before it ignites my pants?", or "What is the correlation between the amount of time I let my pants burn and the damage to my skin?"

Numerical measurement is more useful for processes that repeat frequently without significant changes to the environment.  For example, you can look at many time cards and see that vacations are three times more likely to fall on a Friday.  This could help you more accurately schedule future tasks.   You could analyze bugs found in the field and find areas that need better test coverage.  

 

III   Information Rots

This is a re-expression of  entropy from the second law thermodynamic.  We like to think that we can create order but, actually, we know that order spontaneously breaks down.  Everything from stars, to batteries to people, wear out and stop working.  In human endeavors, one of the most important implications of this law is that the specifications and documents that you write become less and less accurate over time.   They "rot". And as the duration of time increases, the degree of rot increases. 

 Even if a dozen of the smartest people in the world worked for a dozen years to get perfect agreement on the perfect specification of a product, six months into the project a significant portion of the document would be wrong.  Unknowns creep into every plan.  Needs change.   Interdependent systems change.   You can't count on anything to stay the same, so you must always plan to change your plans. 

The success of Agile methodologies is evidence of this rule.  If you do quick increments on a big plan, the rot will be negligible, or at least manageable, over the length of each increment.   On complex projects, the negative effects of the rot outweigh the benefits of the planning.  The effort spent doing the planning is wasted, and the assumption that there is a perfect plan interferes with the teams ability to adapt to change.

 

IV   Systems Resist Change

This is a re-stating of the principal of inertia.  Rolling stones tend to bowl over anything that tries to stop them.  Dysfunctional  organizations resist efforts to become functional.

 This is a law that should not surprise anyone.  The important concept for its application is that the third law makes change inevitable.  A strategy to avoid change is not likely to be successful, whereas a strategy to manage change might be.

Corollary 4a) Change takes energy

Suppose someone studies successful companies and decides that Oracle provides a strategic advantage over other databases.  It is easy for the president of the company to write a memo telling the whole company to switch deom SQL to Oracle, but is it not likely to make the change happen.  The company will need to hire new experts, retrain current staff, buy new licenses, change all their software, upgrade all the customers....  A fast-track plan backed by plenty of cash could take years.  And even then, some customer will refuse to upgrade; some applications will not work without SQL.  Efforts to support both database could take twice as many people and more time.

Corollary 4b) Resistance goes up exponentially with change

 This put an effective limit on the amout of change that is possible, becaue there is not enough energy (which could be time or cash) to pay for the change.  It also explains why constant small changes can happen.  It makes change management a process of using the magnitude of a chanege to calculate the cost and comparing that with the benefit.  

 

 

 



  

Tomo Lennox
13005 34th Ave N. Plymouth MN 55441-2240
612-385-4326

Email 'tomo' at this domain 

My Linked-In Profile