When working on my assessment I had difficulties shifting the pivot point for the camera. My old method used parent child matrices and no matter which way I arranged it either the pivot point would not shift or it would spiral away. I ended up giving up with the matrix approach and extracted the position from the matrix using some trigonometry to figure out the new position for the camera based on the rotation shifting the matrix to the position then applying the rotation to the camera. All in all it works however it seems like a very round about method.
Other then that I have been thinking about looking into Direct X. I have been using pieces of it in places to do simple tasks like get controller input but never the whole library. I am looking into this to make my own framework and potentially migrate a few projects over.