No idea why they turned you down then. :-)

As for whether to join someone else's startup or start your own - I'd say do whichever will answer more questions about your future life (in answering them, it'll raise more). If you feel you absolutely must start a company to be fulfilled, go do it. That's how I felt, though I waited until I was out of college and had a couple years of work experience under my belt. I started it, it failed miserably, and it was still one of the best decisions I made in my life.

In my case, I worked for someone else's startup in my gap year, just because the opportunity presented itself. My math teacher was starting a company; his company had a wholly owned subsidiary that was doing a teen-content .com; it was being staffed exclusively by teenagers (many of whom were my friends from high school); did I want to join? Of course I did. You will probably learn more technical skills working for someone else than you will on your own; there's a vast body of knowledge in everyday software engineering that's largely passed from engineer-to-engineer, and you miss out on a lot of it if you only learn from the Internet. OTOH, you will probably learn more about yourself and what you want if you start your own company.

It's hard for me to say precisely what I learned in my gap year, because most knowledge takes the form of skills, not facts, and you can't reduce skills to words. I do think it was one of the most educational experiences, perhaps the most educational, that I'd had up to that point in my life. A quick list, based on what I remember 8 years later:

I learned Perl scripting (actually, I sorta knew it before, but I learned it better.) I learned how there's always a core group of people that actually get things done while the rest of the office takes long lunches and bitches about how the core group is usurping their authority. I learned how to exaggerate your PR budget so companies pay attention to you. I learned how to feed newspapers a hook so that they do a story on you ("all teenage dot-com" actually got us a lot of free publicity), and I learned that all this PR doesn't matter if your product sucks. I learned that what you think of as "intelligent" content usually just seems pretentious to other people. I learned that even if you start with users, they'll leave if you take away the reason they came - and that reason is not always obvious to you as the designer of the site. I learned that teenagers can be just as vicious at office politics as adults. Actually, this last one is a really broad lesson. Next time you think "That guy is evil; I could do his job so much better", think about what you would actually do if you were placed in his job and had to operate under his constraints. Chances are, you'd be just as incompetent and evil as he is.

Anyway, I'm only 3 months into my gap year...

I learned about version control and IDEs. I learned Java Swing. I learned about maintaining other people's code, and that it's basically a waste of time to fix their formatting (other than mixed tabs/spaces, which should always be converted to spaces. ;-)) I learned about OOP and how to split up responsibilities between classes. Unfortunately I didn't learn about avoiding cyclic dependencies, but at least I was primed so I could understand why this was a problem when I learned it in college. I learned that your first attempt at a program usually turns out badly, even if you have 30 years of experience under your belt, and so you should always be revising and refactoring your code. I learned that companies will often shift their business plan entirely when they are a week away from beta. I learned that this is not always a good idea.

I learned that cool projects often go to the guy who happens to be in the office at the time someone dreams them up (sorry, Trevor). I learned how to design UIs myself and get them working. I learned that you should always, always try to code things up incrementally, working in small chunks, though I had to relearn this about 5 times more before it really sank in. I "learned" C++ and why manual memory management sucks. While I should've been debugging those segfaults, I learned that thousands of fangirls will go wild for Draco Malfoy in leather pants (this turned out to be very important for my career later).

I learned InstallShield, and why just about every desktop software package leaves behind a ton of junk when you uninstall it. I learned that manually testing installation executables on a half dozen VirtualPC boxes kinda sucks. I tried to learn WinRunner but it never sunk in. I did learn design patterns while I was avoiding WinRunner though.

I learned that companies that stay "2 weeks away from beta" for more than 2 months have a tendency to stay that way indefinitely. (Though not always: I've heard that offline GMail was "2 weeks away from launch" for a year, and they did eventually get it out.) I learned that code quality matters a lot, and that if you write sucky code in the name of just getting it done, you will pay for it later, possibly forever. I learned that you need to know what you're building in order to build it, but I took the wrong lesson from that: I learned that you should always have specs that try to think of every eventuality, when I should've learned that you should always have prototypes and working code that tries to explore every eventuality. I learned that companies should always keep track of their cash very carefully, and they should know when a $6M bridge loan is coming due, and that VCs behave basically like sharks when they smell blood in the water. I learned that certain company founders will also do pretty crazy things with the remnants of their company, like run off to China with its IP when the VC sues them.

All in all, I'd say it was highly educational. :-)