Ostatnio znalazłem się w trudnym miejscu. Pracuję nad grą z programistą od prawie 8 miesięcy. Oboje zaczęliśmy jako początkujący programista około sierpnia ubiegłego roku, jest studentem CS na drugim roku, jestem z zawodu technikiem wsparcia IT i jestem samoukiem z mnóstwem książek i subskrypcji online.
Problem, który ciągle widzę, polega na tym, że kiedy piszemy fragment kodu, często będzie on trochę zhakowany razem, będzie miał wiele wad, a jeśli jest to zupełnie nowa koncepcja dla jednego z nas, pełna naiwnych rozwiązań. To jest w porządku, uczymy się, spodziewam się, że oba nasze kody zostaną trochę zhakowane podczas pierwszego uruchomienia lub drugiego przejścia. Problem pojawia się, gdy chodzi o faktyczne naprawianie i refaktoryzowanie tych zhakowanych razem zachowań.
Mój partner będzie się trzymał jego świeżo ułożonego zachowania, rażąco odmawiając zauważenia błędu w momencie, gdy zacznie działać. Twierdząc, że jest niemal perfekcyjny, z fragmentu struktury, którego nie mogę nawet użyć, nawet jeśli zawiera on komentarze i odpowiednio nazwane metody i pola. Bez względu na to, jak bardzo się staram, po prostu nie mogę sprawić, by zobaczył rażąco oczywiste wady, które zapobiegną dalszym zmianom lub rozszerzeniu zachowania bez całkowitego ich zerwania, a wszystko, co jest tak ściśle z nimi związane, może równie dobrze należeć do tej samej klasy. Zhakowane rozwiązania są stale zhakowane, źle przemyślane projekty pozostają takie, jakie były, gdy zostały opracowane i przetestowane po raz pierwszy.
Poświęcam tyle samo czasu na opiekę nad nowym kodem, co sam, pisząc go, ale tracę co robić. Mój partner zgubił go dziś wieczorem i wyjaśnił, że bez względu na wszystko, bez względu na test porównawczy, bez względu na powszechną praktykę, bez względu na niepodważalny dowód, jego kod pozostanie taki, jak po raz pierwszy. Nawet jeśli napisano całe książki o tym, dlaczego chcesz uniknąć robienia czegoś, odmówi uznania ich ważności, twierdząc, że to tylko czyjaś opinia.
Jestem bardzo zainteresowany naszym projektem, jednak nie jestem pewien, czy mogę kontynuować współpracę z moim partnerem. Wydaje mi się, że mam trzy opcje do wyboru.
- Przestań dbać o funkcjonowanie bazy kodu po kompilacji i po prostu poradzić sobie z próbą utrzymania i przeanalizowania zachowania, które ledwo utyka. Mając nadzieję, że gdy wszystko zacznie się poważnie psuć, zobaczy to i spróbuje zrobić coś więcej niż tylko położyć bandaż nad zasadniczo wadliwym projektem.
- Kontynuuj niekończące się dyskusje na temat problemów, które zostały odkryte dziesięć lat temu przez inne, znacznie bardziej zdolne osoby.
- Przestań programować w tym projekcie, porzucając prawie 10 000 wierszy mojego kodu i niezliczone godziny pracy nad projektem i sam znajdź nowy projekt.
Jakie podejście mogę podjąć, aby ustalić, czy warto kontynuować ten projekt z tą osobą? Lub jakie czynniki powinny wpłynąć na moją decyzję? Napisaliśmy dużo kodu i nie chcę tego rezygnować, chyba że jest to konieczne.