I want to get involved in GNOME development, however I have one problem, there is such a large amount of code in every package, and so many files and variables that it's really hard to find bugs because you have to spend hours of your time just reading through the code to try to figure out how it actually works, so I was wondering if there is any GNOME documentation which gives a better idea of exactly how a program works internally? Or do I have to do it the hard way? Because I'm not actually too sure how new developers get involved in the project if there is so much code and such little documentation.
So you want to contribute to (upstream) Gnome 3? I am asking, because you're posting at Ask Ubuntu and standard Ubuntu uses some GTK+/Gnome libraries as base but doesn't ship the complete Gnome Desktop environment. Unless you are using Ubuntu Gnome.
But even then, there is a difference between working on the Distribution and working on the Upstream project. Since a distribution always uses a "snapshot" or older version of Gnome, fixing bugs often means getting the patches from upstream or just changing configuration etc.
Anyway, if you want to contribute to Gnome, they actually have some good "getting started" pages: GNOME: Get involved
Look at this for example: GNOME Wiki: Welcome to the Newcomers Guide! Check out "Finding Tasks" etc.
Your first step will be to get the latest version, build and run it successfully, so you can test. Then I'd start with a small, manageable application and check out the issue/bug-tracker.