Programming teams may be organised in numerous ways, but the egoless programming team and chief programmer team are two common structures typically used.[1] The main determinants when choosing the programming team structure typically include: difficulty, size, duration, modularity, reliability, time, and sociability.[2]