Detta är inte ett löst problem. Olika organisationer applicerar olika arbetsmetodologier och programmeringsprinciper för att minska konflikter mellan grenar av kodbasen. Olika tekniker har olika för- och nackdelar rent objektivt, men det är också ett väldigt subjektivt val. Tycker du är inne på rätt spår med interfaces dock -- det är väldigt vanligt med stora kodbaser att man skriver specifikationer för gränssnitten mellan objekt/processer/moduler först, och implementerar dem i form av publika funktioner och datatyper, interface, abstrakta klasser, etc. Man brukar tidigt besluta om ett minimalt publikt gränssnitt som en klass eller modul måste ha, och som andra kan förlita sig på finns och inte förändras, sedan kan man modifiera privata funktioner och annat hejvilt inom modulen.
EDIT: Du bör dock inte programmera defensivt för det osannolika fallet att ditt hobbyprojekt kommer komma att arbetas på av en stor mängd programmerare. Skriv inte interfaces som bara implementeras av en enda klass "bara för säkerhets skull" etc.