While making my game (link to a somewhat unfinished or finished game, depending on when you read this) I've learned some things about complexity and simplicity. I want to make the game big while keeping it small, it should amaze, perplex and entertain the user while at same time have a small core of technology to make it bugfree and possible to understand (and by that possible to develop further). These two goals work against each other, and that's both hard and interesting.
Wanna kill complexity? Remove things. Redesign the whole idea from scratch and make it consist of fewer things. If the only goal is simplicity, just make it simple, it's that easy. At least if you have full control over what you create, otherwise you'll always be limited by someone else's idea of complexity and simplicity.
Can't do that because the idea is already as simple as it can get, you can't remove things because the whole idea is built on being maximalistic and multifaceted? Add order. Maybe it turns out it wasn't that complex but only looked like it was. Order things in the right way and many things can look and feel, and also BE, fewer things. A bunch of random files in a folder can go from an unexplainable mess to an ordered list, from 1000 random things to an ordered list of 5 different kinds of things, with just some sorting and cleaning up. You didn't change the core idea but still turned complexity into simplicity and the number of things from many to few.
Can't do any of that, because the thing just HAS to be complex and impossible to understand? But you still want it to look simple because that would make things easier? Then abstract it away, hide it behind a name and just look at the name instead of at the complex mess it represents. The problem is you will forget what's under the abstraction, which will make it harder to know how to change it if it turns out to be bad. You'll have to live with this fact and assume, and maybe trick yourself, that it's actually good.
Or you could just make it complex. Let it lie there as a complex mess for everyone to be seen. It will be as ugly or beautiful as it is. Every method for simplifying something complex will remove some complexity, and if complexity is your endgoal, maybe just don't touch it.
As you see, there's no definitive way to deal with a project's complexity. In my case, the best way to structure my project seems to be some kind of structured non-structure, or a big mess of differently structured parts pieced together. The same structure everywhere would help some parts but make other parts worse, and on the other hand too many different structures may make the whole project hard to understand. Structure removes mess but it also adds structure, which is an additional thing, and enough additional things in the end becomes a big mess... Do you start to get what's hard with aiming for both complexity and simplicity at the same time now? There's no definitive method to do it, and there's also kind of no definitive goal.
If you're doing a small fun project, just use the user-friendly tools out there and have some worryless fun. But if you want to make something both complex and simple and also plan on making it even complexer and simpler in the future, follow this site because I will probably learn more about this.