I was playing the game Jenga with my nephew last weekend. It made me think about the foundations and basics. First little bit about the game. The game consists of distinct wooden pieces, rectangular in shape. Three pieces form a layer. Each layer has the wooden pieces put together horizontally or vertically. But if the previous layer is placed with horizontal wooden pieces, the current layer is placed with wooden pieces put together vertically. The below figure would be more explanative than my previous statements.
Once stacked up like a mini tower, the game begins. Each and every member has to pull out a wooden piece from the bottom layers of the stack without making the entire building fall. The piece that has been pulled out has to be kept again on the top of the stack. Each person takes a chance in rotation and pulls out a wooden piece without bringing down the entire stack. This keeps going on until when a member pulls out a piece and the stack falls down. That person is out of the game and the next round of game starts with the remaining members. Though it was just me and my nephew playing the game, we had fun time together in pulling out the pieces and creating a tall structure that just stands on few pieces of wood in crisscross fashion. Again the below image is what something similar we ended up with.
Our play didn’t end there. The game triggered some thoughts to me on the importance of having a strong foundation.
- It is important to identify the key wooden piece that has to be definitely there in the base to support the entire tower as the weight starts to build up over the top. I did some variations in terms of constructing the structure itself, for example a star shaped tower, a pyramid, a triangle tower and so on. But what were common with all these types were those key pieces that were to remain intact at the base to support the structure.
Lesson: Identify the key components in your application; determine how important they are in making sure the application does not break down. You have to make sure that you identify all possible scenarios that could break that component and thereby break the system. And then you should find solutions that will address those scenarios.
- The stronger the base was, the less shaky the structure was and it was easy to pull out the wooden pieces without much care. When the foundation pieces were barely there to support the structure, it was difficult to pull out a piece from any part of the structure and required a great effort, time and concentration to pull it out.
Lesson: With a stronger base in place, it is easy to manage the components that use those base components. It becomes easier to manage and restructure the components surrounding the base easily.
- In the beginning stages of the game, some of the wooden pieces were not attached to the structure at all and came out so easily as though it was lying around away from the structure.
Lesson: Identify that each and every piece of the system that you have put together is necessary. Watch out for those pieces that really do not add any value to the system and could be handled by any other piece easily. This could be resultant of consciously overdoing the reusability concept and trying to develop too much loosely coupled system.
- The final point that came to my mind was there was a limit to bear the weight however strong the foundation is. As we kept pulling out pieces and started putting it on top, at one point there was a loss of balance and the base could not support that imbalance and the tower fell off at that point.
Lesson: Any system will have a scope within which it could sustain being alive. As we keep upgrading and enhancing the system, there might be a possibility that more and more components are piled up on one single layer and that could mean some heavy load on the base. You might have tried to address the business need over the period of time and constantly kept adding more to the system. And if this was not done keeping in mind the design and its scope your system could break at some point of time. Every system has a lifetime and as business needs change, so do the design and technology needs. Keeping it in mind and maintaining a strong base would help in a longer system life.