My first company started because yc decided to fund us. The external validation gave us an excuse to leave grad school. I had 3 co-founders. One was a childhood friend I had worked with for several years. The other 2 were classmates. In uni, whenever we had team projects I made a real effort to work with the guys I had seen repeatedly shipping great work. Over those years, there were probably only 5 people I met who were of co-founder quality.
I founded my second company with a stranger. We met because we had launching projects in the education technology space. We found each other’s work before we found each other, which proved that we both cared about the space, and that we could both ship. The shared interests and personal projects provided an easy way to begin collaborating before making it official.
My third (and current) company, which I’ll announce soon, arose more organically. I wasn’t ready to commit to another startup full-time, so I spent some time on contract work. For the first few months, I used the many surplus hours getting to know London a bit better and working on hobby hacking. A few months down the road, I realised I was ignoring my contract work to squeeze every extra hour out of one particular hobby project, and that I wanted to focus on it full time. Infinite runway via flexible contracts is a beautiful way to let an idea take root.
My 3 startups have appeared in different ways, and I think all are valid. The second (putting out good work in the space you care about) feels like the most repeatable way to find co-founders once you’re out of uni.