Jesteśmy organizacją składającą się z około 200 programistów, którzy pracują nieprzerwanie nad jednym produktem (używając kontroli wersji Git), która ma zostać wydana w określonym terminie.
Ze względu na ogromną liczbę programistów staramy się tworzyć zespoły „międzyfunkcjonalne” z około 10 programistami w każdym zespole, co daje około 20 zespołów programistycznych w organizacji.
Ponieważ chcielibyśmy utrzymywać stale „wysoki standard” (co oznacza, że gdy deweloper robi pull, produkt powinien przynajmniej być kompilowalny itp.) Produktu w głównym repozytorium, chcielibyśmy użyć pewnego rodzaju bramek jakości.
Nie jestem pewien, jak sformułować pytanie, ale zastanawiam się, czy mógłbym uzyskać porady na temat metodologii programowania dla tak dużej grupy programistów pracujących nad jednym produktem.
Naszym zdaniem jednym końcem spektrum jest umożliwienie każdemu deweloperowi bezpośredniego przypisania się do głównego repozytorium, jednak obawiamy się, że z powodu dużej liczby programistów / zatwierdzeń, że „główne repozytorium” może być ciągle w fazie zepsucia, z powodu nie możemy mieć wymagającej „bramki jakości” dla każdego zatwierdzenia.
Drugi koniec spektrum może przypominać (sądzimy, że robi to Linus Torvalds / Linux) strukturę drzewa lub piramidy, w której „główne repozytorium” ma tylko trzy źródła ściągania, te trzy mają garść zaufanych źródeł pobierania itp. Uważamy jednak, że przy takiej strukturze zmiany wymagają długiego łańcucha, aby wejść do „głównego repozytorium”. Dodatkowo, jeśli wystąpi konflikt scalenia, problem wyląduje na innym deweloperze niż na „pierwotnym deweloperze”.
Biorąc pod uwagę wszystkie te podstawowe informacje i opinie, w jaki sposób możemy nauczyć się i przeczytać zalecane metodologie programowania dla tak wielu programistów? Jak duże organizacje (Microsoft, Facebook, Ubuntu itp.) Kształtują swój rozwój?