Sytuacja
Od kilku miesięcy pracuję z nowym zespołem w nowej firmie. Firma oferuje pewne usługi internetowe, a zadaniem zespołu jest rozwijanie i utrzymywanie tych usług.
Problem nr 1: zespół nie jest zespołem, to zbiór jednostek. Nie współpracują ze sobą. Każdy pracuje nad własnym fragmentem kodu tak, jak lubi, z własnymi konwencjami i metodologiami. Najbliższą współpracą, jaką do tej pory widziałem, jest: „Skończyłem wdrażanie tej funkcji, teraz możesz zacząć coś na niej budować”.
Problem nr 2: Nie ma modułowości. Cóż, w rzeczywistości praca każdego programisty znajduje się w swoim własnym repozytorium, ale te repozytoria są bardzo heterogeniczne i mieszają różne rzeczy (często odkrywając na nowo koło i powielając kod).
Problem nr 3: Praktyki rozwojowe są naprawdę stare. Znają słowo „zwinność”, ale nie rozumieją stojącej za nim koncepcji (prawdopodobnie dlatego, że nigdy tego nie próbowali). Nie ma recenzji kodu, nie ma testów, oprogramowanie jest naprawdę trudne do skonfigurowania i dostosowania. Ogólny proces rozwoju jest powolny i nieefektywny.
Istnieje wiele innych błędów, ale są one prawdopodobnie konsekwencją trzech wymienionych powyżej problemów. Krótko mówiąc, podstawa kodu to bałagan
Jak sobie z tym poradzić?
Pracując tutaj szybko zauważyłem te problemy i na początku postanowiłem kierować się inspiracją: Pracowałem nad moim pierwszym projektem z pewnymi zwinnymi praktykami programistycznymi i opinie były dobre.
Jednak teraz jestem w sytuacji, w której chciałbym poruszyć kod / praktyki innych ludzi i mogę ” kieruj się inspiracją, ponieważ potrzebuję ich współpracy.
Starałem się, aby zrozumieli, że są zespołem, który buduje produkt, a nie osobami pracującymi nad własnymi projektami. Jednak nie mogli zrozumieć, o co mi chodzi i po prostu mnie zignorowali.
Teraz myślę o zmianie swojego podejścia: chcę wyraźnie stwierdzić, że popełniają błędy, analizując każdy błąd, jego przyczyny i proponując rozwiązania. Chcę zacząć od niskiego poziomu (np. „Ten fragment kodu jest powolny / zły / nieefektywny”), a następnie powoli przejść do wyższego poziomu (np. Iteracje a wodospad). Ale obawiam się, że pomyślą, że ich atakuję, co nie jest prawdą.
Czy to właściwe podejście? Jak mam postępować?
EDYCJA 1: Z twoich odpowiedzi wynika, że jest to niewłaściwe podejście. Począwszy od dzisiaj, będę dalej dawać przykład i wyraźnie wskazywać korzyści, jakie przynoszą moje metody. (Do tej pory ciągle prosiłem o opinie, ale tak naprawdę nigdy nie zadawałem jednoznacznych pytań typu „hej, czy podoba ci się fakt, że napisałem testy akceptacyjne? Czy sądzisz, że poprawią one ogólną jakość projektu?”) zobacz, czy zadziała!
EDYCJA 2: Jak powiedziałem, zacząłem dawać przykład i rozmawiać z kolegami z zespołu i menedżerami. Wynik? Zostałem mianowany „głównym recenzentem”, tj. Moją rolą jest teraz aktywny udział we wszystkich dyskusjach technicznych, przedstawianie sugestii dotyczących architektury i ustalanie nowego podejścia do procesu rozwoju.