question: How do multiple programmers work on a game/project together? Do they each work on completely different parts or do they have to communicate on what they've been doing and what needs to be done?
comment: Planning, documenting code, and compartmentalizing tasks. Or, in lots of cases, it's just total chaos.
passages: While many programmers have some say in a game's content, most game producers solicit input from the lead programmer as to the status of a game programming development. The lead is responsible for knowing the status of all facets of the game's programming and for pointing out limitations. The lead programmer may also pass on suggestions from the programmers as to possible features they'd like to implement.
   The lead programmer is ultimately in charge of all programming for the game. It is their job to make sure the various submodules of the game are being implemented properly and to keep track of development from a programming standpoint. A person in this role usually transitions from other aspects of game programming to this role after several years of experience. Despite the title, this person usually has less time for writing code than other programmers on the project as they are required to attend meetings and interface with the client or other leads on the game. However, the lead programmer is still expected to program at least some of the time and is also expected to be knowledgeable in most technical areas of the game. There is often considerable common ground in the role of technical director and lead programmer, such that the jobs are often covered by one person.
   A contemporary video game may include advanced physics, artificial intelligence, 3D graphics, digitised sound, an original musical score, complex strategy and may use several input devices (such as mice, keyboards, gamepads and joysticks) and may be playable against other people via the Internet or over a LAN. Each aspect of the game can consume all of one programmer's time and, in many cases, several programmers. Some programmers may specialize in one area of game programming, but many are familiar with several aspects. The number of programmers needed for each feature depends somewhat on programmers' skills, but mostly are dictated by the type of game being developed.
   For small games, the producer may interact directly with the programming and creative staff. For larger games, the producer will seek the assistance of the lead programmer, art lead, game designer and testing lead. While it is customary for the producer to meet with the entire development staff from time to time, for larger games, they will only meet with the leads on a regular basis to keep updated on the development status. In smaller studios, a producer may fill any slack in the production team by doing the odd job of writing the game manual or producing game assets.
   The pairs are not fixed; programmers switch partners frequently, so that everyone knows what everyone is doing, and everybody remains familiar with the whole system, even the parts outside their skill set. This way, pair programming also can enhance team-wide communication. (This also goes hand-in-hand with the concept of Collective Ownership).
  
  Section::::Fine scale feedback.:Planning game.
  
  The main planning process within extreme programming is called the Planning Game. The game is a meeting that occurs once per iteration, typically once a week. The planning process is divided into two parts:
   Though the programmer's main job is not to develop the game design, the programmers often contribute to the design, as do game artists. The game designer will solicit input from both the producer and the art and programming lead for ideas and strategies for the game design. Often individuals in non-lead positions also contribute, such as copywriters and other programmers and artists.
  
  Programmers often closely follow the game design document. As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.
  
  Section::::Development process.:Production.
   Programmers' work varies widely depending on the type of business for which they are writing programs. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on an aircraft for pilots training in a flight simulator. Simple programs can be written in a few hours, more complex ones may require more than a year of work, while others are never considered 'complete' but rather are continuously improved as long as they stay in use. In most cases, several programmers work together as a team under a senior programmer’s supervision.
   Mainstream production is usually defined as the period of time when the project is fully staffed. Programmers write new source code, artists develop game assets, such as, sprites or 3D models. Sound engineers develop sound effects and composers develop music for the game. Level designers create levels, and writers write dialogue for cutscenes and NPCs. Game designers continue to develop the game's design throughout production.
  
  Section::::Development process.:Production.:Design.
   Section::::Disciplines.:Generalist.
  
  In smaller teams, one or more programmers will often be described as 'Generalists' who will take on the various other roles as needed. Generalists are often engaged in the task of tracking down bugs and determining which subsystem expertise is required to fix them.
  
  Section::::Disciplines.:Lead game programmer.
   Section::::Collaborative project management usage scenarios.:Sectors and industries.
  
  Partners in different sectors bundle their expertise to research and develop materials and manufacturing processes. Coordination of schedules and activities becomes a decisive factor in collaboration, and an efficient method of cross-company interaction across the product development processes is needed.
  
  This applies to all sectors that feature the following:
  
  BULLET::::- Complex products
  
  BULLET::::- Long-term development cycles
  
  BULLET::::- Great pressure to significantly reduce development and project completion times
  
  BULLET::::- Projects with a large number of participants such as suppliers and cooperation partners spread throughout the world
   The desire for adding more depth and assets to games necessitated a division of labor. Initially, art production was relegated to full-time artists. Next game programming became a separate discipline from game design. Now, only some games, such as the puzzle game "Bejeweled", are simple enough to require just one full-time programmer. Despite this division, however, most game developers (artists, programmers and even producers) have some say in the final design of contemporary games.
  
  Section::::Disciplines.
   Similar to parallel teams, these teams are geographically distributed and may operate from different timezones. Project development teams are mainly focused on creating new products, information systems or organizational processes for users and/or customers. These teams exist longer than parallel teams and have the added ability to make decisions rather than just make recommendations. Similar to networked teams, project development teams may also add or remove members of their team at any given time, as needed for their area of expertise.
  
  Section::::Types.:Work, production or functional teams.
   If the collaborating parties have the same PDM and CAD systems the task usually involves the direct access and transfer of data between sites. The PDM system will have data storage at more than one site for the large graphics files, file may be copied between sites, how they are synchronized being controlled by the server(s). For the management server and metadata there are a number of options. There could be a single server that is accessed from all locations or multiple PDM servers that communicate with one another. In both cases the PDM software controls access for groups defining what data they can see and edit.
   Section::::Development.
  
  Video game development and authorship, much like any other form of entertainment, is frequently a cross-disciplinary field. Video game developers, as employees within this industry are commonly referred, primarily include programmers and graphic designers. Over the years this has expanded to include almost every type of skill that one might see prevalent in the creation of any movie or television program, including sound designers, musicians, and other technicians; as well as skills that are specific to video games, such as the game designer. All of these are managed by producers.
   BULLET::::- "Marble Madness" (1984, arcade) — Programmer, designer
  
  BULLET::::- "Shooting Gallery" (1987, Master System) — Programmer, designer
  
  BULLET::::- "Missile Defense 3-D" (1987, Master System) — Programmer, designer
  
  BULLET::::- "Shanghai" (1988, port to Master System) — Programmer
  
  BULLET::::- "California Games" (1989, port to Master System) — Programmer
  
  BULLET::::- "Dick Tracy" (1990, Genesis) — Programmer, designer
  
  BULLET::::- "Kid Chameleon" (1991, Genesis) — Programmer, designer
  
  BULLET::::- "Sonic the Hedgehog 2" (1992, Genesis) — Producer
  
  BULLET::::- "Crash ‘n Burn" (1993, 3DO) — Programmer, designer
  
  BULLET::::- "Total Eclipse" (1994, 3DO) — Programmer, designer
  
  BULLET::::- "Disruptor" (1996, PlayStation) — Executive producer, designer
   A chief programmer team will usually contain three-person teams consisting of a chief programmer, senior level programmer, and a program librarian. Additional programmers and analysts are added to the team when necessary. The weaknesses of this structure include a lack of communication across team members, task cooperation, and complex task completion. The chief programmer team works best for tasks that are simpler and straightforward since the flow of information in the team is limited. Individuals that work in this team structure typically report lower work morale.
  
  Section::::Programming team structures.:Shared workstation teams.
  
  Section::::Programming team structures.:Shared workstation teams.:Pair programming.
   Though all programmers add to the content and experience that a game provides, a gameplay programmer focuses more on a game's strategy, implementation of the game's mechanics and logic, and the "feel" of a game. This is usually not a separate discipline, as what this programmer does usually differs from game to game, and they will inevitably be involved with more specialized areas of the game's development such as graphics or sound.
   Communication in a collaboration setting can be achieved either synchronously or asynchronously, differing in how agents interact with each other. The different communication forms create analogous communication systems and tools depending on the type of communication supported, which serve different purposes in a distributed development setting. Even inside a company, the tasks and responsibilities of different members reflect in their usage in the tools used in the work environment.
  
  Section::::Forms of communication.:Synchronous systems.
   Although the responsibilities are primarily technical, lead programmers also generally serve as an interface between the programmers and management, have ownership of development plans and have supervisorial responsibilities in delegating work and ensuring that software projects come in on time and under budget. Lead programmers also serve as technical advisers to management and provide programming perspective on requirements. Typically a lead programmer will oversee a development team of between two and ten programmers, with three to five often considered the ideal size. Teams larger than ten programmers tend to become unmanageable without additional structure. A lead programmer normally reports to a manager with overall project or section responsibility, such as a director or product unit manager (PUM).
   Section::::Development process.:Testing.
  
  The formal quality assurance testing process, performed by professional game testers, begins well into game development. High-budget titles may begin testing with the first playable alpha, while low-budget and casual games might not enter testing until a release candidate is ready. The programmers' task is to fix errors and bugs as such are discovered by the QA teams.
  
  Section::::Development process.:Nearing completion.
  
  Final tasks include "polishing" the game, such as programmers fixing occasional bugs—from minor to catastrophic—that may arise during the last phases of testing.
   Scripting tools are often created or maintained by sound programmers for use by sound designers. These tools allow designers to associate sounds with characters, actions, objects and events while also assigning music or atmospheric sounds for game environments (levels or areas) and setting environmental variables such as reverberation.
  
  Section::::Disciplines.:Gameplay programmer.
   This programmer may implement strategy tables, tweak input code, or adjust other factors that alter the game. Many of these aspects may be altered by programmers who specialize in these areas, however (for example, strategy tables may be implemented by AI programmers).
  
  Section::::Disciplines.:Scripter.
   Valve has termed this dynamic set-up "procedural narrative". In addition to the AI Director, there is a second Director that controls music. It was created as a way to keep the music interesting throughout the game. The music Director monitors what a player has experienced to create an appropriate mix. The process is client-side and done by a multi-track system. Each player hears their own mix, which is being generated as they play through the game, and dead players watching a teammate hear their teammates' mix.
   Traditional software development has nearly always involved multiple programmers working on separate parts of a computer system for any project of significant scope and scale—a method of division of labour. Clearly, it is unreasonable to imagine that a single programmer could adequately complete all the required work for a complex system working entirely on their own within a viable timescale; and as development projects become more complex, specialised expertise becomes of paramount importance in aspects such as systems analysis, quality assurance, and technical challenges posed by individual components. Initially this tended to be an informal process, but with the rise of commercial software development as a viable industry, a more industrial and systematic approach became necessary.
   Video game programmers have also sometimes comprised the entire design team. This is the case of such noted designers as Sid Meier, John Romero, Chris Sawyer and Will Wright. A notable exception to this policy was Coleco, which from its very start separated the function of design and programming.
  
  As games became more complex and computers and consoles became more powerful, the job of the game designer became separate from the lead programmer. Soon game complexity demanded team members focused on game design. Many early veterans chose the game design path eschewing programming and delegating those tasks to others.
  