In terms of hardware, I've learned everything I know about from my currently 10 year old desktop. Despite its age, it's my current desktop, and due to financial difficulties, I've lacked the money to build a new one, but I've done plenty of research to not only improve this computer, but to also work on computers in the future. I've learned every method of board input from PCI to AGP and PCI Express 2.0 x16. (PCI Express 3.0 isn't big yet, so I leave it out.)
I've learned about various RAM speeds, IDE vs. SATA, and even overclocking, just from my computer. My parents handed me this computer a few years ago, and since then, I've been adding parts and building it from a Pentium IV (3.2GHz, HT-enabled) with only an old ATI card, 1.5GB of RAM (PC3200), and a 120GB hard drive to a semi-powerful machine with 3.5GB of RAM (that's the most I can get with Windows 7 32-bit anyways), 500GB of space, and two video cards (NVIDIA 8400GS on PCI (512MB GDDR2), and ATI Radeon HD 4670 (1GB GDDR3)).
In terms of software, however, don't expect me to solve any programming errors, for hardware is where my expertise lies.