Summary: we should create a college replacement where people focus on exploratory learning instead of money, credentials or vocational training. There would be lots of autonomy and mastery. As a side effect, it would produce startups. It would be a great place for would-be startup founders who don't yet have an idea and/or a cofounder.
The problem: Y Combinator is good if you're ready to be a startup founder, and Lambda school is good if you're ready to be an employee, but what if you're neither? What do you do if you're just out of high school and reasonably ambitious? Maybe you want to be a startup founder, but you don't have an idea or a cofounder yet. Perhaps you could get a job right away, but you want to spend time learning, exploring and making new relationships first.
Of course "college" is the obvious choice here, but college has lots of problems. For me, the largest problems were:
It forced me to spend a lot of time on things that didn't matter. At least the things were hard, so it wasn't a complete waste of time. But it would've been better to do hard things I cared about instead of just hard things.
It wasn't even that great for meeting other programmers. They say college is the best place for meeting potential cofounders, but college mostly got in the way for me.
College tries to provide deep knowledge instead of just what's necessary to get a job, but for programming, it doesn't do a very good job.
I managed to get through college cheaply, but rising costs are a big problem for many students (and don't get me started about the textbook racket). The traditional university system is buckling under its own weight.
When I was deciding whether or not to go to grad school, I read a blog post by someone who said that there are basically three potential reasons for getting higher education. I don't remember what he said, but I think the reasons were credentials, vocational training and exploratory learning. I think that college will be broken up into its component parts. It looks like Lambda school's model is going to take over vocational training. Credentials are becoming less important (at least for programmers) thanks to companies like Lambda school and Triplebyte (and the increasing prevalence of startups, which tend to care less about credentials than large companies). But I'm not aware of a great replacement for exploratory learning.
I'd like to create that replacement at some point. What would it look like? We can frame the problem in terms of intrinsic motivation. I like Dan Pink's explanation which is that intrinsic motivation has three components: autonomy, mastery and purpose. He says autonomy is the ability to choose what you work on, how you work, where you work and who you work with. Mastery means getting better at something (e.g. through deliberate practice) and purpose means making the world a better place.
I think an optimal career can be defined as one that maximizes these three intrinsic motivators. But I have an additional hypothesis: Early on, autonomy should be given the most priority followed closely by mastery. The weight should shift to purpose later. It's somewhat like reinforcement machine learning: there's an exploration phase where you figure out what to do and how to do it, and then there's an exploitation phase where you actually do it.
So this exploratory-learning college replacement should emphasize autonomy (but still include mastery and purpose), and it should set you up to maximize all three over the long run. To that end, it should be hard so that you can grow, and it should help you forge relationships with good people so that you can learn from them and so that you can team up with them.
My biggest unsolved questions are 1) how would this organization best be brought into existence, and 2) how can it be made economically sustainable.
Strategy 1: create a bootstrapped (potentially non-profit) consulting company. Instead of "employees," I'm going to use the term "members." (And while I'm at it, I might as well say "organization" instead of "company").
Members would be encouraged to work either part-time or full-time in spurts (e.g. spend N months on a contract followed by 2N months not working).
A percentage of the contract payment is used to cover the overhead costs of the organization (which ensures that the contracts keep coming in).
The organization would need to be large enough so that contracts are always available. That would give members the freedom to take only 2N months not working instead of 2N months plus an additional M months spent looking for another contract.
The organization would facilitate a low cost of living for its members. The headquarters would be in a cheap area (here in Utah? Pittsburgh?). Members could choose to either work at the headquarters or work remotely (presumably from somewhere else that's also cheap). The organization itself would need to be run efficiently so that only a small slice is taken from members' contracts.
Members would be encouraged to work on personal projects. There would be a highly visible/open way to communicate with other members about projects. In the early stages, you would be able to throw out random ideas as you have them and find other people who are interested in those ideas. As you work on the project, you could continue to communicate about your progress and get feedback, advice and encouragement from other members.
For both contracts and personal projects, teams would be self-organizing. You can go solo if you want or you can team up with people you know (the open communication for personal projects will be a big help for this). For contracts you could opt to let the organization assign you to a team.
Personal projects wouldn't be the only use of non-contract time. Members would be encouraged to read lots of books, perhaps through an internal book recommendation/review system. Or the organization could subsidize physical/audio/e- books. (This alone would beat the pants off of typical "general education").
For more structured/specialized learning, members could form small groups and work through textbooks or online courses together (or do it solo). The organization could curate good courses. These curated courses would be done with a student-mentor model. Instead of a guru/teacher who covers a large class, you have a mentor who covers a small group (perhaps five students). The mentor would be someone like a TA—they have a little more experience than the students (at least in that course) but aren't necessarily experts. The students drive learning and go at their own pace. The mentor is there for support, guidance and feedback, but there are no grades or certificates of completion.
This mentor model could also be applied to contracts: teams would include some experienced members and some "apprentice" members.
Due to the previous points, there would be many opportunities to learn through teaching (an experience that most people are starved of in my opinion).
This organization wouldn't be for just programmers. I don't really know how, but we'd find ways to include people from as many different fields as possible. Teams could be cross-functional.
The organization would include a financial aid system where members can donate money which will be used to help people who don't have the skills to support themselves completely yet.
The organization would be the perfect place to prepare to be a startup founder. You could develop your skills, discover a good idea, meet potential cofounders and deepen your relationships with those people by working with them. You wouldn't necessarily start out planning to do a startup, but you would explore your way into a position where you suddenly realize that your project is ready to become a startup.
There would be an internal seed-funding system for startup founders. Members could band together to provide enough funding to allow the startup founders to work on the project full-time long enough to get VC money. Because this interpersonal network would be so strong, you could invest in people and projects that you're personally familiar with.
The organization itself could invest in startup founders and use the earnings to sustain itself (and thus take a lower percentage of contracts). Because of the interpersonal network and the high-quality preparation given to founders, the organization would be able to invest successfully.
The organization would also facilitate non-startup ventures. It could be a good place for bootstrapped companies, research and open-source development.
This is pretty much implied by earlier points, but there would be no set working hours and you could choose the languages and tools you use (this isn't a job). Since there's so much focus on learning instead of just getting the job done, people would figure out the best ways to do things instead of sticking with what's familiar and popular.
This wouldn't have to be for just recent high school grads. Hopefully it's successful enough that people could have entire careers as members of this organization if they want. That could be a good option for people who want to maximize their own intrinsic motivation but don't care about making much money. It would be great if you could at least support a small family without worrying about rent.
We could go the other way too: include programs for high school and middle school students. At the extreme, you could build out a cheap, private school system.
A big part of getting this going will be getting a critical mass of the right kind of people to join. This is more of a social innovation than a technological innovation. Most of the benefit will come from having a community of people who all support each other in this style of living. For example, reading books. The real benefit isn't that there's a particular reason that you can now start reading a lot, it's more that you're part of a community that reads a lot. It reminds me of this quote from Grit:
[T]here's a hard way to get grit and an easy way. The hard way is to do it by yourself. The easy way is to use conformity—the basic human drive to fit in—because if you're around a lot of people who are gritty, you're going to act grittier.
Strategy 2: Create a startup first and then build this organization as part of it. You could build it into your recruiting system. Perhaps start an internship program, but let interns spend some/most/all of their time working on their own projects. You could gradually expand on the program from there until you include all the points from strategy 1. More radically, instead of hiring programmers directly for your company, you could create this auxiliary organization and then do your dev work by contracting out to them.
This sounds hard, especially in a high-growth startup that's trying to build their own product as quickly as possible. I'm not sure how well the purposes of a startup would align with this organization, so I currently think strategy 1 would be more effective. But maybe it could work this way. Maybe the startup could more easily implement this after it gets big and growth slows down.
What other strategies are there? How can you create this organization in such a way that it will have the highest possible chance of succeeding? What's the best way to make it economically sustainable? What other characteristics should this organization have in order to maximize its impact? Does this have to be just for ambitious people? How can you include many different kinds of people? How can you help people use their autonomy wisely? How can you make sure the organization succeeds even though some people will waste their autonomy?