Jak wygląda u was rozpoczynanie i początkowa faza projektu. Ja osobiście złapałem się na tym, że w w katalogu z projektem mam:
Projekt_1
Projekt_2
…
…
Projekt_12
i
Projekt nad którym aktualnie pracuję. Oczywiście nie mam pewności czy jutro nie zrobię mv Projekt Projekt_13.
Za każdym razem jak stwierdzam, że można zrobić coś lepiej, wolę rozpocząć projekt od nowa. Chyba że jest już dość daleko posunięty.
Jest to oczywista strata czasu. Moje podejście wynika chyba ze zbyt daleko posuniętego perfekcjonizmu. Chcę aby zawsze wszytsko było zrobionena 100%. Jak sobie z tym poradzić? Pisać dalej i poprawiać?
Czy może udać się z tym problemem do psychologa?
Pozdro
Kompletnie nie rozumiem problemu… Raz od wielkiego dzwonu zdarzy mi się tak namieszać, żeby zrobić “git reset --hard HEAD”, ale zastanawiam się jak dziwne zmiany musisz robić, żeby nie dało się wrócić? Podaj przykład tego, co ostatnio sprawiało, że generowałeś projekt od początku. Może po prostu za słabo znasz strukturę aplikacji rails i gdy nagenerujesz sobie modeli, initializerów itp. to później wydaje Ci się, że masz namieszane w aplikacji, a gdyby się nad tym zastanowić to zazwyczaj tylko kilka stworzyonych lub nadpisanych plików.
Zresztą generatory mają też swoje destruktory, “rails destroy model foo” spróbuje cofnąć wszystkie zmiany, które robiłeś tworząc model.
Może spróbuj zacisnąć zęby i jednak powalczyć z tym, bo moim zdaniem to bardzo zła technika, która uczy Cię mechanicznych czynności, a nie daje żadnej wiedzy o procesach, które zachodzą, gdy dodajesz kolejne rzeczy do aplikacji. Trudniej będzie Ci też refaktoryzować kod większych aplikacji.
Psycholog to dobra opcja ;). Albo zaniedbujesz projekt w trakcie tworzenia, przez co łatwiej go zarzucić i rozpocząć od nowa, albo robisz coś innego bardzo źle. Piszesz testy? Używasz Gita? Refaktoryzujesz kod na bieżąco?
Czasem to nie jest zły pomysł, przepisanie projektu zajmie tylko ułamek czasu oryginalnie poświęconego na jego stworzenie, ale metodyki agile, stosowanie wzorców i dobrych praktyk, powinny zminimalizować taką potrzebę. Nabierz dobrych nawyków i będzie lepiej.
Pierwsza sprawa: poszukaj kompromisu między perfekcjonizmem i pragmatyzmem. Każdy projekt będzie miał jakieś brzydsze czy przestarzałe części. Jeżeli patrzysz na projekt sprzed roku i nie widzisz z nim żadnych problemów, to albo się przestałeś rozwijać albo już więcej się nauczyć nie możesz (przy czym dla większości śmiertelników będzie to ta pierwsza opcja). Często zdarzy się, że zobaczysz nową fajną metodę rozwiązania problemu, jakiś nowy plugin, nową trendy technologię. Tylko to nie powinno oznaczać, że musisz od zaraz wszystko przepisać.
Jeżeli robisz te projekty dla samej nauki, to być może jest to ok, ale jeżeli ma być z tego jakiś praktyczny pożytek, to trzeba czasami odstawić na bok perfekcjonizm.
Co do samego pytania: refaktoryzacja! Prawie każdy projekt da się naprawić stosując różnego rodzaju zabiegi refaktoryzacyjne, najlepiej w tych miejscach, które są najczęściej zmieniane i najbardziej krytyczne. Rewrite powinien być ostatecznością i z reguły oznacza bardzo dużo problemów (w Twoim przypadku może nie jest to takie straszne, bo z tego co rozumiem to nie wypuszczasz tych projektów, ale jak już coś odpalisz, to nie ma tak łatwo ).
problem z katalogami rozwiązuje git (lub jakikolwiek inny system kontroli wersji).
Problem z rozpoczynaniem projektów od nowa bierze się z dwóch rzeczy: jesteś kiepski (lub poświęcasz na to za mało czasu) z projektowania aplikacji. Strać 2 dni (albo i więcej, jeśli trzeba) – rozplanuj sobie aplikacje, przemyśl jak mają wyglądać modele, relacje.
Przy nietrywialnych rzeczach polecam takie podejście: napisz sobie jakiś kawałek kodu, pobaw się pod konsolą, aż do momentu, gdy stwierdzisz, że ta implementacja jest dobra. Następnie napisz do tego testy… i wywal kod. Jeśli trzeba, poczekać parę dni, aż zapomnisz, jak napisałeś ten kod, następnie napisz go od nowa.
Aha, i jeszcze jedno: w trakcie pisania aplikacji i tak stwierdzisz, że stare elementy aplikacji są napisane źle – ale to dlatego programiści znają pojęcie refaktoryzacji, aby te problemy rozwiązywać. Przydadzą się również testy wtedy
//Edit:
yay, ile odpowiedzi w międzyczasie napłodziliście
git, git, git! uratował mnie od trzeciego pisania aplikacji od nowa na pracę inżynierską
a tak poza tym to szczegółowe modelowanie na tablicy/kartce papieru/ścianie/podłodze/czymkolwiek tak długo, dopóki nie zamodelujesz przynajmniej tych najbardziej krytycznych modułów swojej aplikacji (czyli powinno to być około 90% z całości ) i lepiej nie nastawiać się, że zrobisz to dobrze w jeden dzień roboczy (+/- 8h) tylko znaacznie dłużej