"When designing and implementing a system of any size, it is better to consider the following principles: (1) Time and Change. How long the code will be in production and how often it will be changed over time. This is the first thing to think about when starting any project" -- Oleksandr Romanov shares a few great observations from the book "Software Engineering at Google: Lessons Learned from Programming Over Time" -- which made me add the book to my reading list. Maybe it would be interesting timing for you to consider.