Software development is usually done in an anti-social way. You chunk up a release or backlog or whatever into features, each dev takes a feature and goes off and writes some code. Later there is some collaboration in testing, code reviews, troubleshooting, etc.
But that is a TERRIBLE way to do it. The wrong code gets written way too often. Designs are bad because people aren't contributing along the way. Requirements get missed because the developer makes an assumption that s/he didn't know was an assumption. The more eyes on the code at all times the better. Devs should be constantly communicating with testers and people who understand the business case (product owners). One way to do that is pair programming. It sounds like a waste of time, but it is actually faster. Silly mistakes get caught right away. Debugging goes faster. Another way to do that is to chunk the work into very small pieces and constantly communicate to integrate your tiny piece with the other devs' tiny pieces. This leads to clean interfaces and modular code.
The Cowboy Superhero model of software development only makes sense if you are the only one developing a project. And remember in that case, your code dies when you get hit by a bus (or kill your wife and go to prison).