Professionally, I have been a PC/Mac Tech, subcontractor for onsite technology specialist, network technician, network admin, help desk, and glorified technology mover. The mover part is the physical part of my job(s). Whenever we have to deploy or move technology the IT department gets to move it. Hauling servers, laser printers, desktops, etc. Doesn't seem too bad, but when you deploy say 3,000 desktops and have 8 people doing it, it can get tiring.
On a personal level I started off as a gamer back in windows 3.11 playing the original warcraft right before windows 95 came out. I wanted to play my friends online via direct modem connection. So, I learned all the AT commands for the modem and it just went from there. I then got an IT job while I was in college (at age 18) and ended up just staying in the IT field permanently.
Most people get confused on what they want and what they are talking about. It seems like everyone wants all these features, when in my experience simplicity really is best. Would you rather have something be simple and easy to and quick to use, or would you rather hunt around in that application for 15 minutes trying to find that hidden feature?
In technology there is always a million ways to accomplish the same thing, but in troubleshooting problems with technology if you don't keep things simple it may take you a long time to figure out how to fix things. Which is why it is important to keep things simple. For example, if something at my work breaks or crashes I can generally tell exactly what the problem is usually with in 30 minutes of discovering the problem. That is because we keep things simple.
Books and the internet are great places to learn, but ultimately experience is best. I learn the most from actually using the product, and also, ironically you learn more from failure. The more times you fail the more you have to try to accomplish something so it gets engraved in your brain. When you figure things out first try, you easily forget how you accomplish it. For example about 1.5 years ago I set up a dual booting lab of iMacs. Booting both OS X and WinXP Pro. Myself and a co-worker set up a netboot server that had automated shell scripts to split the client HD into two partitions, load OS X on the primary and load Win XP on the secondary. It worked first time no problems (which is rare to have no problems), with the exception of something we forgot to update in the image. We pushed out that update remotely later on. So, when I had to set up the netboot install sets again I totally forgot how to do it, because I only had to do it once. I had to figure out again how to do it, and this time I wrote it down.