The subject of this post has been changing very frequently, so I thought I'd write down my thoughts in order to solidify them again.
The problem, generally
Exponential growth is the heart of capitalism. Capital grows exponentially, but labor (i.e. trading your time for money) gives you only linear returns. So the way to wealth is through accumulating capital, not by laboring. Labor is just a means to get capital.
Historically, "capital" (aka the means of production) is physical, like a factory. Money counts as physical capital because the two can be traded easily. However, there are other kinds of capital, like intellectual capital, also known as knowledge. You can think of relationships as social capital. Unfortunately, money alone can't be traded for knowledge or relationships.
In an economy dominated by physical goods, money is the most important kind of capital. But intangible goods like software and media are continually becoming a larger fraction of the economy. The means of production for intangible goods are knowledge and relationships—money, while still needed, is much less important.
So to maximize economic output, we need to prioritize accumulating knowledge and relationships over money. Unfortunately, society is still optimized for accumulating physical capital. The standard path of "go to college, get a job" is the path of a laborer. This contributes to your employer's accumulation of capital, so they're the ones getting exponential growth. But in the long run, it will be better for everyone if individuals start to experience the exponential growth instead.
To the extent that you are able to become a producer of intangible goods, you should instead maximize your accumulation of knowledge and relationships. Formal education should help with this, but it's not great because it's been optimized for our old economy of physical goods. If you're sufficiently self-motivated, the never-ending stream of projects, homework and exams (i.e. training for being a laborer) just gets in the way. You could learn a lot more by just reading books and working on your own projects—and you can develop great relationships by being part of a community of people who do that.
Also, becoming a self-motivated learner in the first place is really hard. I think that's society's fault though. Starting at a young age, formal education trains you to be extrinsically motivated: goals are decided for you, everything is graded, everything has a deadline. Kids who have opportunities to do lots of self-motivated learning will be much better off later in life as far as I can tell.
In summary: to maximize your output in our increasingly intangible economy, you need to:
The problem is that our society makes it harder instead of easier to do these things.
The problem, specifically
I was fortunate to be introduced to programming early on. In addition, I was homeschooled and had lots of freedom to work on things that interested me. I think this is why I was so frustrated with college. Having a job was a lot better—at least I got paid—but fundamentally it had the same problems. In fact, I don't think our current society has a good place for me:
Grad school: you have more autonomy than undergrads, but I'd still be giving up freedom. At the very least, I'd have to spend my time doing things that qualify as "research," which I'm not interested in.
Another downside of grad school is that you have to get a bachelor's degree first. This is ok for me since I already have one, but it's a problem for those who don't.
Startups: I've wanted to create a successful startup since I started reading Paul Graham's essays in high school, and I do think this will be a great place for me—but not yet. To maximize exponential growth, you need to put all your resources into growth first and then cash out after you hit a certain point. Think Settlers of Catan: you build cities first, then you cash out with development cards.
After you've accumulated enough knowledge and relationships, creating a startup is a great way to cash out. But I need more development time, especially for relationships. I do have some ideas that I think would make good startups, but I think it's better to work on them as side projects instead of jumping into the fast-growth/startup mindset. I think a lot of startups fail simply because they didn't have the chance to grow organically at the beginning.
Open-source: This actually is probably the best cultural fit for me. The whole point of open-source is that it's self-motivated. I am planning to become part of this community more. But long-term, I still have to make money. You can't just do open-source. And as a society, we don't have good institutions for fostering the open-source community. It's a hard economic problem, and you have to be careful not to undermine the intrinsic motivation that drives open-source.
Besides the money problem, it's also not like you can just go join your local open-source institution and suddenly have all the peers and mentors you need. It's a splintered, distributed community, and everyone else in it has to pay the bills too.
The solution, specifically
I'm actually in a pretty good position now. I quit my job in January, and it'll be a while before I have to make money again. So I have plenty of time (all day, every day) to learn things on my own, which will hopefully lead to a nice cash-out down the road.
I am hurting for relationships, though. Even Einstein (who also liked to work alone) had a few confidants who he met with regularly to chat about science. I'm working on cool things, but I have few peers and mentors to bounce ideas off and solicit advice from. Ultimately I also need relationships with people who could turn into cofounders.
But that being said, I do know some people, and I'm working to expand my circle. I'll probably be just fine.
The solution, generally
This is what I'm really interested in. The problems I've just discussed are some of the largest problems that I've experienced in my life, and I think there would be enormous benefit for society if I could solve them for others.
My current plan has three steps. I call it "Jacob's 3-step plan:"
Continue maximizing my own knowledge and relationships.
Create a startup.
Turn that startup into an organization that will help others maximize their knowledge and relationships.
In step 1, I continue winging it until I have a project that's ready for fast growth and I have a good cofounder(s). In the mean time, I'll also try to make money, but not at the expense of developing knowledge and relationships. A few possibilities are:
See if I can turn one or more of my current projects into small-but-profitable products.
Do consulting work. I mean this in the literal sense of the word: offering my expertise for money, not simply laboring as a contractor. As I'm continuing to learn on my own, I may develop sufficient knowledge that I can actually make money from it without laboring.
I could also do consulting in the slightly-less-literal sense. I wouldn't be opposed to actually creating software for other people (instead of just giving them advice) if 1) I know I can do it quickly, 2) I can charge a high, fixed rate (because of my expertise).
For all three of these areas, I'm not quite there, but I could see myself being there in the not-too-distant future. The nice thing is that those three strategies are mutually reinforcing: after I make my own products, I can market the products and myself at the same time, thus bringing in consulting clients, etc.
Honestly, I could probably be happy just doing that for the rest of my life. However, for the sake of ambition and helping other people, I am hoping to move to the next steps.
In step 2, I'll create a startup as mentioned. But I'll create it in a way that will prepare it for step 3. Specifically, I'm planning to give programmers a radical amount of autonomy by treating them more like independant contractors:
Any programmers we "hire" wouldn't be immediately assigned to a team or a project, but instead they'd be put in a pool of programmers who are available for work.
The company would post information about available work, e.g. "here's a feature we want built," "here's a problem we want solved," "here's a list of bugs we want fixed," etc.
Programmers would self-organize into teams and negotiate for available work. Thus pay would be decided on a per-project basis, and the teams would decide how to compensate their individual members. Programmers wouldn't receive salaries from the company.
Finally, employment contracts would be lenient. There would be no non-recruit clauses, so this would be a great place to find a cofounder. Employees would be free to take outside paid work in between projects. And there would certainly be no clauses about the company owning any intellectual property that the employees develop on their own time.
The result is that programmers will be able to choose what they work on, who they work with, how they work (norms will be established within the teams) and how much they work (you can take however much or little time off you want in between projects). This should attract programmers who want a high level of autonomy.
And that's the crux of the strategy: giving programmers so much autonomy might seem to be at odds with the interests of the company; however, I think it'll help us to attract better programmers which will more than make up for it. Like working remotely, it wouldn't work for most companies, but it can work if you make it part of your core strategy.
Additionally, it'll prepare us for step three. After the company is established and highly profitable, we can make the organization even better for people who are trying to maximize their knowledge and relationships. Instead of forcing employees to give us all their time, we can encourage them to make only as much money as they need. Then they can have more time for their own projects.
This would be the perfect environment for startups to grow organically. Y Combinator is good if you're ready to dive in, but what if you don't have an idea or a cofounder yet? You would come work at our company. When you're ready for fast growth, we would give you seed funding. That's how we'll capture the value created by giving our employees so much autonomy: we'll invest in the startups that get created because of it. If they create startups that fit well with our existing products, we could even buy them out early.
In any case, our investments should be successful because the startup founders come from our own internal network, so we'll know them. We'll have a better idea of which startups are good investments, and we'll get to invest in them before other venture capital firms do.
Gradually the organization will shift from making money off our own products towards making money from investing. We might keep products in house, or if the investing is really going well, we could eject the products into their own companies.
Whatever happens, we would be the place to go if you're self-motivated and want opportunities to learn as much as you can with other like-minded people. I think we'd fit in really well between Lambda School and Y Combinator. You go to Lambda School to learn how to program. Then you go to a regular company for a couple years to save up money and pay back Lambda School. Then you come to our company in order to really level up your skills and develop your network. When you're ready, you apply to Y Combinator with a solid founding team and an idea that already has traction.
 Especially since we have institutions that are designed to accomodate people who have knowledge and relationships but not money: we call it venture capital.
 I don't mean just the number of relationships, but also the depth of your relationships.
 This essay is about my overall goals and strategy, so I haven't gone into the nitty-gritty of what I'm actually doing—but right now I'm developing a framework that'll make it easier to create web applications on top of Datomic Cloud Ions, in the spirit of The Web After Tomorrow. And currently my most promising startup idea is to make a music service like Spotify but with a different business model and a better recommendation algorithm.