I've been playing around with MonoGame and it's not too bad. Considering Microsoft has stopped developing for XNA, it might be time to look into it.
I've been using a component based approach to building my game from scratch and it's been an excellent development experience. Too often I feel like I'm in the deep end and unsure if I'll sink or swim. So I try, sometimes an idea works, sometimes it fails but it's all fun.
I'd strongly recommend starting at a lower level than MonoGame. OpenGL isn't conceptually difficult (at least through vertex buffer objects) and encourages you to understand the actual process of what you're doing. I find it enlightening and it makes me better able to work in higher-level systems as well.
After the 100 millionth time in my life of staring at a black screen and wondering where my triangle is, I switched to higher level frameworks and never looked back.
When I was 11 years old, I was using GameMaker 3.5 (man I miss GML scripting, its what got me into programming in general) to build games, and get my ideas out. That was fun!
I'm 23 now, and am currently learning how to build games... this time, using C, SDL, and Lua embedded for scripting.
I also happen to have Unity3D installed on my computer, which I use for my actual game project, but I'm doing things the hard way and building my own engine and game on top of it as a learning process.
I've been using a component based approach to building my game from scratch and it's been an excellent development experience. Too often I feel like I'm in the deep end and unsure if I'll sink or swim. So I try, sometimes an idea works, sometimes it fails but it's all fun.
It's all very beginner but I've started to blog what I've learned. http://andrewjamesbowen.wordpress.com/
Source code is available on GitHub too https://github.com/abowen/MonoGameOpenGL