Interesting, thanks for sharing. I really like the way you explained what a paradigm shift is. And the point you make in the It’s Not Your Fault section:
On the day you’re implementing the User.numUnreadRooms field, you’ll rack your brain for all the places in your code that will need to update it, and I don’t blame you for overlooking the onDeleteRoom event handler.
On the day you’re implementing the onDeleteRoom event handler, you’ll rack your brain for all the denormalized fields that it might need to update, and I don’t blame you for overlooking the User.numUnreadRooms field.
I don’t blame you, the application developer, for any bug in your denormalization logic. I blame the paradigm of tightly coupling denormalization logic with application code.
I think that it is related to my Don’t Feel Bad About Not Knowing Basic Things post. If the “basic thing” you don’t understand is also something that plenty of other people don’t understand, then maybe it’s because it is unnecessarily complicated. (There are other possibilities too of course.)
Interesting, thanks for sharing. I really like the way you explained what a paradigm shift is. And the point you make in the It’s Not Your Fault section:
I think that it is related to my Don’t Feel Bad About Not Knowing Basic Things post. If the “basic thing” you don’t understand is also something that plenty of other people don’t understand, then maybe it’s because it is unnecessarily complicated. (There are other possibilities too of course.)