DirectX generally isn't for the faint of heart for sure. I started back in probably DirectX 6 or 7ish with C++ and learned an awful lot but found precisely the same kinds of issues your talking about, writing a ton of code for very little effect ~ poor productivity. I wrote a GUI driven system then a goofy experimental game that allowed me to play with AI and rendering techniques overall.
Then I moved onto .NET which I've since stuck with because the C# language is such an outstanding language (as well as the .NET framework itself). In .NET you can write the same stuff your doing in C++ in a fraction of the time and lines of code ~ increased productivity. If you like C++ that's cool, just realize your gonna be spending more time writing code and less time actually getting things done, unless you go and use some library that leverages DirectX or OpenGL for you. While 3D programming is fun, I generally recommend against getting too deep in the intricacies of it, unless your really interested in rendering algorithms and/or have some need to be working at that low level.
More recently you have the option of XNA which is also free, you may want to check it out as there appears to be a lot of support out there for it with lots of tutorials, books and sample code, plus a lot of things you can play with out of the box and in pre-packaged game foundations if your interested.
Just realize when it comes to 3D, you need to worry about models and textures, so if your not an artist (like me) your going to have to rely on others to help you out with that stuff and unless your using some library that suppot various model files and texture support, your writing that all from scratch. Just be aware of what your getting into.
You may need to sharpen up on your math skills (particularily matrices and vectors) if you want to really know and understand what your doing.
My honest recommendation, coming from experience is only delve into DirectX or OpenGL directly if your truly interested in coding at that lower level, if your seriously interested in making a game or actually doing something useful and productive with some with those technologies, I suggest looking into real game engines instead that leverages DirectX and/or OpenGL. I say this from experience, having cooked up my own little game engine for this project:
http://www.machinations.org/mom/index.php which while fun, consumed a lot more time than it should have and I still have yet to release anything around it haha.
If your just learning, by all means don't let my advice stop you, it can be fun and challenging and aggravating but I've found it to be worth it both in increasing my programming skills, design methodologies and personal accomplishments.
Last year I took a step back you could say and focused on .NET + SDL.NET, which I've found to be pretty enjoyable. One of these days I'll take my own advice and actually look into using an actual game engine (I just have a serious knack and interest in actually developing lower level systems like that, it's a bit of a bane cause I could probably accomplish more if I didn't try to reinvent the wheel hehe).
I hope that helps, or gives ya some pointers and ideas.
(If it's any consolation, I was 'lost' for probably the first year or year and a half of learning DirectX in my spare time, there's a lot to absorb).