W pewnym momencie program się rozwija. Funkcje są dodawane, usuwane lub zmieniane przez cały czas. Każda wersja jest niczym innym jak prototypem. Nie marnuję wtedy dużo czasu na pisanie super czystego kodu, ponieważ nigdy nie wiem, jak długo coś trwa. Oczywiście staram się zachować jakość kodu zgodnie z pewnymi standardami, ale czas zawsze stanowi problem.
Potem przychodzi moment, w którym program jest zakończony, a decydenci mówią: „to jest to”. W tej chwili mam działający prototyp, ale kod w środku jest nieco niechlujny ze wszystkich stron podczas fazy programowania. Oczekuje się, że zacznę testowanie / końcowe debugowanie, ale mój żołądek mówi, że powinienem teraz jakoś posprzątać i / lub przepisać rzeczy, aby nadać mu odpowiednią architekturę, która ułatwia konserwację itp.
Gdy rzeczy zostaną przetestowane i zatwierdzone, przepisywanie nie ma sensu. Regularnie stoję tam z działającym „gotowym” prototypem i dostaję błąd podczas testowania i widzę, że jest to wynik niemądrego kodowania, które jest wynikiem całego procesu rozwoju. Jestem w trakcie testowania, a poprawka byłaby przepisana ... to bałagan!
Jestem pewien, że istnieją lepsze / podręcznikowe sposoby. Ale muszę pracować w prawdziwym środowisku pracy, w którym nie wszystko jest podręcznikiem.
Jak więc przenieść mój działający prototyp do wersji z stabilną bazą kodu? Może nie powinienem uważać rozwoju za zakończony, kiedy to zrobię, i faktycznie postrzegam to jako fazę oczyszczania ... Nie wiem, potrzebuję tutaj pomocy.
EDYTOWAĆ
Chcę wyjaśnić kilka rzeczy.
Jestem w 100% po stronie robienia tego tuż przed, a nie później, kod jest czysty i czytelny. Ale muszę też załatwić sprawę i nie mogę marzyć o pięknie kodu, który jest czysty i błyszczący. Muszę znaleźć kompromis.
często nowa funkcja jest naprawdę po prostu czymś, co chcemy wypróbować i przekonać się, czy sensowne jest wdrożenie czegoś takiego. (szczególnie w aplikacjach mobilnych, aby uzyskać rzeczywisty wygląd na rzeczywistym urządzeniu). Jest to więc coś małego, co (imho) nie usprawiedliwia zbyt dużej pracy w pierwszej iteracji „zobaczmy”. Czasami jednak pojawia się pytanie KIEDY mam zapłacić ten tech.debt? O to właśnie chodzi w tym pytaniu.
Jeśli wiem, że połowa funkcji zostanie usunięta dzień później (wystarczająco dużo doświadczenia w naszej firmie), naprawdę trudno mi uwierzyć, że najlepszym sposobem na rozwiązanie mojego problemu jest zainwestowanie dodatkowego czasu, aby napisać wszystko czyste, nawet jeśli większość zostanie upuszczona wkrótce potem. Wydaje mi się, że zaoszczędzę czas, jeśli zrobię jedno wielkie porządki, gdy wszystko będzie solidne, stąd moje pytanie.