For kids Christmas has a lot to do with toys. Looking forward to new ways to play. For me an as elder kid who still enjoys to toy around, aka as a software engineer, I want to reflect on the analogy between software components and certain toys.
Well organized software is build from components. Quite often the components have been compared to Lego blocks. Toys for kids aged 0 to 99, to quote their own advertorials. A Lego block is simple and has a clear interface to connect it to other blocks.
Compared to the simplicity of the interface the number of ways to connect blocks together is big. Leading to an endless amount of creatable structures.
(Helicopter story here)
Over the years the line of Lego products has adapted to popular demand. A lot of sets pre-fantasized to a specific movie or game were thrown on the market. These sets contain more and more building blocks which are very different from the original simple blocks.
The blocks have no more possibilities than just to be stacked on top of the rest, with no more interfaces to connect it to anything else.
Lego is not the only construction toy. In my youth Meccano was also very popular. Metal parts put together using nuts and bolts. We built cars, steam engines, cranes and the like.
Meccano suffered the same problem as the later Lego blocks. Basic parts were quite simple, but for building more complex things you needed an ever increasing array of specialized parts.
Mecano was not the only brand offering metal construction kits. I had the luck to have Trix Express, handed down by my father.
Trix was basically different. The Meccano strips have one row of holes. All Trix parts have three in paralel. Organized in such way that the holes make even triangles.
With two nuts you firmly join two strips in an angle of 0, 45 or 90 degrees. And thus you can create almost each complex construction from a very limited number of different parts.
The only limit on whatever you were building was the amount of pocket money or Santa Claus (Sinterklaas)
To finish of with a look into the new year: what do your software components look like, Meccano or Trix ?