I just wanted to post a viewpoint seemingly a bit unpopular in the interest of beginners starting on what I consider to be a wrong assumption. Some people focus mainly upon their applications and care little for the underlying operating system and this message is not for them. For those who like to focus a little more on fundamentals and foundations before they think about what's on top, this is for them.
Considering the popularity of the many variations of Ubuntu (frankly I don't see the big deal), the concern for packaging systems, and the common abhorrence for compiling, patching etc. I'd just like to offer a few points that I think make the most of the strengths of Linux that are impossible in any but Open Source operating systems.
It used to be that even upgrading an app or especially major components like Xwindows could, through auto install of dependencies hopelessly break a system and thankfully that level of problem is at an end, making rpm's and debs handy, quick and no longer wickedly dangerous, so I am not in any way employing any kind of scare tactics to point out the advantages of learning to "roll your own". It's just that so much is said about compiling from source as if it were the Big Bad Wolf I think it is worthwhile to point out that one does not have to be an obsessive geek or computer science major to realize the value of building from source.
Of course one big advantage right from jump street is that, whether the kernel or just some little app, building from source means that not only can you often get newer versions first (before someone manages to build a reliable package for your distro) but you can build it optimized for your CPU and overall system.
With the exception of the kernel most apps only require three commands to build a completely customized app - "configure", "make", and "make install". For the last one I prefer the sweet program "checkinstall" because it makes packages whether slackpacks, rpms, or debs. This makes it easy to share among other similar systems or friends but mostly for uninstalling. It just isn't difficult in most cases even for rank beginners and there are numerous rewards.
One major reward is getting to see what options are available in what outside services are available so you can leave out that which you don't have or need, and the opposite make sure you have support for what you have, will have or would like to have.
During the configure and make stages, where the compile process analyzes your system to see what is out there (or not) and at what version level to see if all will operate correctly or at maximum efficiency, even error messages can be very enlightening about what your system may lack. Don't get me wrong, there are a few times when it can be frustrating to sort out what is blocking a proper build, but you get to learn a great deal about your system and ultimately avoid "spaghetti code" where things just sort of fit instead of being clean, smooth and seamless and custom made for your desires and your machine.
Once you've "popped your cherry" and compiled an app, it gives you confidence to take on the building of a custom kernel and you're on your way to truly owning your system and getting the most out of your hardware and your OpSys. It then will do exactly what you want, no more no less (no background automatics complicating understanding and/or troubleshooting) and that is a really worthwhile goal. I can't tell you how many times I find myself grinning and thnking "Damn! I love Linux" when it allows me to do exactly what I want instead of confusing everything and causing that angry pulling of hair that comes fairly often with other operating systems, Mac included, despite how good it is generally.
Anyway, I just want to encourage people to try stuff even if it means setting aside a special partition to install your experimental distro, the one just for fun of messing with it without worry of messing it up. Besides the many gains that can be realized, it's just really fun and only possible at such a deep level with Linux or BSD. Who knows?, you may find yourself writing scripts (really easy) or even learning a little perl or C to really get creative. There's a whole world in there!