1) Divide up that goal into pieces.
2) Take those initial pieces and divide that up.
3) Take one of the bits from 2, and create a lame, incomplete version of it
4) Keep polishing that bit until it's great
The key steps are 3 and 4! It's hard to build even a small production ready component of something, even a very small subpart. However, pretty much anyone can build a lame, insecure, wonky version of that subpart.An example is the movement syncing system in my MMO. First I went through an "Asteroids in HTML5" tutorial. Then I got hold of a "Chat in Websockets" tutorial. Then I hooked them up in the lamest way imaginable, then kept on iterating.
The very hardest part is 4, of course. In order to do that part, you have to know what it is you don't know. A good Comp Sci education gets you a good ways there. (Warning: If your profs and TAs keep telling you "you don't need to know [X]" because libraries/etc take care of that for you, you need to figure out if they're only saying that because they don't know themselves. If on the other hand, they give you some background information about when you do need to know [X] then that's valuable information.)