That said, just tonight I was able to see what value a cofounder can have in a simple programming project for a class. I had an idea for a project, and he already had some ideas for how we could go about doing it (various machine vision algorithms). We then bounced various ideas off each other, came up with a good interface, argued a little bit about some small details, and came up with a good, shared-effort approach to tackle the problem at hand.
Having a "cofounder" in this case already has proven to have a few worthwhile benefits:
1. Shared knowledge leads to less time necessary in research
2. Ability to think out loud to someone besides yourself or a pet
3. Having to work with someone forces you to come up with decent interfaces for the pieces of code, leading to more modular, maintainable code than if you just jumped in single-handedly.
4. The work is shared (duh :-)
5. If I don't feel like working on the code the day before our planned meeting, that's too bad. I'm still going to have to do it or look like an ass the next day.
Maybe point number 5 is the biggest one. Inevitably, there will be stupid little stuff which is part of the project that you just don't want to do. Having someone to face at the end of the day may just be that little bit of extra motivation you need.
Of course, it's still possible to do much of this stuff on your own. Being able to leverage open source libraries helps with 1 and 4, so if you can handle 2 3 and 5 on your own, then you can probably do it without a cofounder.