Jak mogę ocenić, czy projekt jest szczególnie złożony, czy powolnie go podejmuję?


16

Robię niewielkie postępy w dużym projekcie. Źródło jest ogromne, wiele warstw obiektów, kod makaronu, wykresy podwójnego diamentu wielokrotnego dziedziczenia, na wpół wypalone cechy zamrożone, gdy oryginalny pisarz odszedł, i nikt nie wie, dlaczego wiele jego elementów zostało zaprojektowanych tak, jak były.

Podejrzewam, że każdy kompetentny programista miałby problem z ustaleniem tego wszystkiego na tyle dobrze, aby naprawić błędy, dokończyć niedopieczone rzeczy i dodać nowe funkcje. Podejrzewam jednak, że idę wolniej niż typowy programista.

Jak mam ocenić, czy źródło jest wyjątkowo złe i robię to tak dobrze, jak ktokolwiek inny, w porównaniu do źródła typowego dla takiego projektu i jestem po prostu powolny lub nieumiejętny?


11
Zrozumienie kodu innych osób jest aktem empatii. Zapomnij o tym, jak szybko idziesz, a także zapomnij o tym, jak bandą głupich m ********** są ludzie, którzy napisali kod. Odkrywanie tego jest ćwiczeniem elastyczności. Załóżmy, że źródło jest wyjątkowo złe i że masz nadmiar umiejętności, wróć do pracy i przestań grzebać na tych głupich forach. Dotyczy to również mnie ... Mam kod do zakłopotania.
— Dan Rosenstark,

2
Szczególnie zapomnij o „co za banda ...”, gdy wspomnianą osobą (osobami) jest szef, brat szefa, szef szefa lub bratanek szefa itd.!
— DarenW,

2
Ach, brakujące „dlaczego”. Pamiętaj, aby umieścić je, gdy je rozgryziesz.

@DarenW - to kod spaghetti, a nie kod makaronu: D (Przepraszam, musiałem).
— Jas

1
@Jas google dla kodu makaronu ... jest więcej rodzajów makaronów niż tylko spaghetti ;-)
— Jürgen A. Erhard

Odpowiedzi:


6

Jedynym sposobem na rozstrzygnięcie tego pytania jest pozyskanie znacznie większej liczby programistów, którzy zajmą się tym samym problemem i zobaczą, czy mają się lepiej.

Jest to oczywiście rzadko praktyczne, zadanie spoczywa na twoim dobrym ja i pod warunkiem, że robisz co w jego mocy, badając, gdzie twoja wiedza zawodzi. Rozbijanie go na części, gdzie złożoność cię leczy, i informowanie o postępach każdego, kogo to obchodzi. Wtedy nie martwiłbym się i nie przestawał.


16

Po pierwsze, nie spędzałbym zbyt wiele czasu obawiając się, że możesz być „sprytny lub nieumiejętny”. Niektóre projekty są trudne do zrozumienia, a duże projekty często wymagają trochę czasu, aby przyśpieszyć. Myślenie, że jesteś „głupi” lub nie sprostasz zadaniu, nie pomoże ci w żaden sposób.

Wygląda na to, że potrzebujesz pomocy z kodem, więc rozważ swoje zasoby. Czy masz dostęp do oryginalnych programistów? Jeśli są dostępne, mogą być dobrym źródłem informacji. Jaka dokumentacja jest dostępna? Jeśli brakuje dokumentacji, wyjmij notatnik i zacznij tworzyć własną dokumentację osobistą.

Wielki pomysł polega na tym, że powinieneś oczekiwać, że ten proces zajmie trochę czasu, a im mniej czasu poświęcisz sobie na psychiczne bicie siebie, tym więcej energii będziesz musiał przeanalizować kod i go rozgryźć. Powodzenia!


5
+1 Może minąć nawet 6 miesięcy, zanim naprawdę poznasz niektóre złożone systemy na tyle, aby być w nich biegłym. Nawet jeśli podstawa kodu jest „dobra”, różni programiści i zespoły mają różne style, a wyprostowanie się czasami wymaga czasu.
— Ryan Hayes,

3
@Ryan, a 6 miesięcy później sam stajesz się częścią problemu :)
— Benjol,

@Benjol Tak, byłem tam.
— Ryan Hayes,

FWIW, kiedy byłem na tej łodzi (kilka razy!), Uważam, że bardziej pomocne jest robienie częstych przerw niż po prostu siedzenie i męczenie się nad kodem. Kiedy robisz sobie przerwę, wstań i fizycznie odejdź od komputera. Rozciągnij się, wyjrzyj przez okno, pomyśl o tym, na co właśnie spojrzałeś, a następnie wróć i spójrz trochę więcej. YMMV, ale kiedy to zrobiłem, zrobiłem znacznie lepszy postęp. Powodzenia!
— TMN,

+1 za tworzenie własnej dokumentacji osobistej. Kiedy wykonuję tę pracę, znajduję wiele notatek (w kodzie lub na papierze) i rysuję wiele diagramów (co zwykle oznacza dla mnie tylko coś w tym czasie). Dodatkowym plusem tego wszystkiego jest wzmocnienie koncepcji we własnym umyśle.
— Andy Hunt

6

Widziałeś kiedyś krzywą uczenia się. Curce do nauki

Teoria mówi, że początkowo potrzeba czasu, aby się wzmocnić. Sztuczka polega na szybkim przejściu punktu przejścia. Jeśli regularnie utkniesz, poproś o pomoc swojego przełożonego lub przynajmniej informuj go o problemach, z którymi się spotkałeś. Dopóki nie masz problemów z harmonogramem, nie ma problemów.


2

Przekrój go, po kawałku na raz

Twoja sytuacja jest bardzo powszechna, „opanowanie się” wymaga czasu, jak już wspomnieli inni.

Uważam, że jeśli poradzisz sobie z tym „pojedynczo” , bez względu na to, jak skomplikowany jest projekt, sam go rozwiążesz. Musisz być po prostu logiczny.

Na początek powiedz przycisk, przekop kod źródłowy , umieść punkty przerwania, zobacz, co się dzieje. Są dwie rzeczy, które musisz spełnić:

  • Ogólny przegląd.
  • Drobiazgowe szczegóły, które realizują powyższą pożądaną funkcjonalność.
  • kiedy zrozumiesz jego fragmenty, ponownie go uwzględnij.

„Jeden kawałek na raz” może działać w innych projektach, ale ma tak wiele klas wywodzących się z innych, klas przyjaciół, wskaźników do wewnętrznych wnętrz, jest kilka części, które można zrozumieć niezależnie.
— DarenW,

Jestem pewien, że to złożony labirynt (coś, co „z czasem” urosło). Jeśli jednak zaczynasz od jednej funkcji, czy mówisz mi, że nie jesteś w stanie jej prześledzić od końca do końca?
— Darknight,

Śledzenie przepływu danych lub sekwencji zdarzeń, gdy na przykład użytkownik kliknie przycisk, okazało się niemożliwe.
— DarenW,

1

Co powiesz na inne spojrzenie: Co musisz wiedzieć o tym kodzie i czy potrafisz to zmierzyć? Na przykład, jeśli próbujesz naprawić błąd, który może wymagać innego rodzaju nurkowania niż podczas próby migracji kodu z jednego języka do drugiego, np. Przejście z VBScript na C #. Jeśli próbujesz usunąć wszystkie wymagania z obecnego kodu, może to chwilę potrwać, ale podejrzewam, że większość ludzi miałaby tego rodzaju problem.


Podoba mi się ten komentarz. Trzeba mieć konkretny cel i pracować, aby zrealizować ten (i tylko ten) cel. W przeciwnym razie zgubisz się w nim - bardzo podobnie do mapy.
— NoChance,

1

Ucząc się czegoś nowego, wielu studentów myśli: „Cholera, to jest dla mnie trudne. Zastanawiam się, czy jestem głupia. ”
Zanim pójdziesz dalej, upewnij się, że nie jesteś głupi i że niektóre rzeczy są trudne. …

Pan Aaron Hillegass z inteligentnymi słowami.

Nie jesteś głupi, nie jesteś powolny i nie jesteś nieumiejętny. Jestem na tej samej łodzi, przyjąłem nową rolę, a istniejąca baza kodu jest niewiarygodnie duża i wykazuje oznaki wielokrotnego nadmiernego rozwijania, zajęło mi tygodnie, aby dojść do punktu, w którym czuję, że nawet dostaję blisko pełnej prędkości. Wyobraź sobie, że projekt jest jak nauka nowego języka, nie dzieje się to z dnia na dzień, ale wymaga cierpliwości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.