I think I have 1, 2, 3 no problems after 35+ years of programming -- I still love it, I still learn stuff, and I'm shockingly experienced in a rather large amount of subfields.
The problems is #4. 1,2,3 are 'easy' given time and someone who's dedicated and actually LOVES that job.
#4 requites two (at least). In my 35y career I can count on the fingers of one hands the time where I really, REALLY "clicked" with someone and we both ran away with it. Needless to say, in all the cases, we still are on each other xmas card list, regardless of time/space.
But that's the scary bit, to really, REALLY "collaborate" you need someone who's already pretty much 'there' on the 1,2,3 listed there, and the chance of meeting someone like that is low. I don't say it's 'rare', I say it's 'low' and if you factor other things like personality, lifestyle and so on, it makes it actually 'rare'...
I treasure the people I can collaborate with, because it's magic. It's like, as a musician, when you jam and the band just 'gels' and stuff starts happening, it gives you a little shiver in the spine area that is unique.
But hell, it's rare.