My advice is: start small and work your way up. So when learning the ins and outs don't try to learn concepts from a huge design since you'll loose the tree in the forest. This is my approach to design as well, I prefer to design small pieces with nice standard interfaces, then assemble them into something larger. This approach scales for team based design approaches since you can have an 'architect' engineer overseaing the project while individuals implementing bits and pieces of the final objective.
We can probably give more advice if we knew what kind of project you have in mind (embedded, DSP, high speed switching, etc...)