Cache Invalidation and Naming Things: Phil Karlton stated they are the hardest in Computer Science. Do you agree? What challenges have you faced in mastering these aspects?
Follow the CodeNewbie Org and #codenewbie for more discussions and online camaraderie!

For further actions, you may consider blocking this person and/or reporting abuse
Top comments (3)
I love naming things. I think I'd do that full time job, even provide the reasoning where needed. If you want to be good at writing (in particular at naming), one advice would be to do a lot of reading (in this case, reading other people's code). In terms of literature, "Clean code" is a good and sufficient start. There's a chapter dedicated on naming, as far as I can remember.
I think concurrency is the hardest in Computer Science, because of the nature of the problems related to that, but indeed, when you mix in caching.. then you're set up for dreadful production bugs really difficult to reproduce and investigate.
Both of those things can be hard but I'm not sure I agree with singling them out as the hardest (also neither are really Computer Science topics but I digress).
For naming things, I think it helps to be willing sometimes to just surrender and give something a stupidly long name. Brevity is good but a brief name is useless if it's unclear what it means. Long names, while they can be annoying to look at, are not difficult to reference these days since IDEs can autocomplete them.
For caching, I think it can help to be a bit coarse. I.e. if something about a user changes, invalidate all cached data related to that user, even the ones you don't think would be affected by the change. Usually the unnecessary re-fetching caused by doing that won't make or break you, and can make your software more robust.
Vector Databases IYKYK