You can get an idea of best practices by reading blogs and books and stackexchange. There's quite some information out there on how to structure to prevent problems.
That said, practical experience isn't the same as theoretical knowledge. And developing software that's too big to keep in your head all by yourself is rather different from personal projects.
I think that the ways to get this experience are either to join a big team, or to make your project big and old enough that you don't have an overview anymore. It's not easy to get alone. But then, it's also less necessary, which is what makes personal projects much more productive than large enterprise systems.