Division of labor and teamwork for programmers

Whoever is the “lead” should break the project into logical systems and assign them appropriately. Try to avoid having more than one programmer working on a particular system - this means fewer conflicts when checking code into your source control solution, among other things.

There are a million books written on the subject - just google for something like “software development for small teams” and you’ll find plenty of advice.