The primary difference between sucessful large applications and academic exercises is typically that the former are designed against a set of requirements. If you simply start with a vague idea in your head and start writing code, you are unlikley to get far.
So programming ability is probably not the issue here; what you really need to get you further is software engineering skills; i.e. the ability to capture and specifiy project requirements, and then to design a software architecture and detailed design to meet those requirements - this is the road map that will keep you on the right track throughout development. That is not to say the the requirements and design need be complete before you start to code (the waterfall method), incremental developmennt is a more flexible approach; but you should have some sort of framework and idea of how the application elements will interact and communicate.
Furthermore, a requirements specification and design is more-or-less essential if the project development is to be implemented by more than a single developer (another common feature of large projects).
Another feature of sucessful large scale applications is a strong motivation to complete. What would motivate you to do that I cannot say but in my case I am paid for it, I seldom write software for mere fun any more, but getting paid to do what you might otherwise do for free in any case is a great way to make a living.