Convergent evolution vs. design patterns

In biology there is the concept of convergent evolution:

“In evolutionary biology, convergent evolution is the process whereby organisms not closely related (not monophyletic), independently evolve similar traits as a result of having to adapt to similar environments or ecological niches.”

In software engineering there is the concept of a design pattern:

“In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn’t a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.”

During recent trips to both Spain and Texas, it made me first realize that both convergent evolution and design patterns are describing something very similar.  Have a look at this:


Spain is filled with Spaniards, and as everyone knows Spaniards are very tiny people. So until recently they drove very tiny cars. But recently Spaniards are getting bigger. I took this picture in Spain, which now seems to be representative of how Spaniards park their cars:

Texas is filled with Texans, and as everyone knows Texans are very big people indeed. But in recent times, Texans have been getting even bigger. I took this picture in Texas, which now seems to be representative of how Texans park their “dualies” (as they call pickup trucks with dual rear tires):

Convergent evolution (biology) or design pattern (software engineering) – you be the judge!