Principle 2 is really bad and shouldn't be used. You should NOT use maps for all your data structures, this will totally kill your performance. Sure, for small data sets you wont see a recognizable difference, but if you have a lot of data performance will be very poor. So this leads to software beeing not scaleable at all. There are of course valid cases where you need maps. But don't just represent all of your data with generic data structures.