Nie mam innego wyboru, jak pracować samemu i nie mogę znaleźć odpowiedniego rozwiązania, które pozwoliłoby mi przejrzeć moją pracę, sprawdzić zdrowie psychiczne, poprosić kogoś o burzę mózgów, omówić najlepsze praktyki i tak dalej.
Pomyślałem, że otrzymam odpowiedź z artykułu Jeffa Atwooda: W Programowaniu „One Is The Loneliest Number” , najlepszy, jaki mogłem znaleźć na ten temat, ale okazało się, że to tylko powtórzenie mojego pytania.
Wiem, że witryny Stack Exchange takie jak ta i Code Review to oczywista potencjalna odpowiedź, ale jak wielu by to doceniło, DALEKO od ideału:
Chociaż nie mogę wymienić wszystkich pułapek, często sformułowanie pytania i ułożenie go w samodzielny problem często wymaga tak dużo pracy, że zanim wystarczająco go przygotowałeś, odpowiedziałeś na własne pytanie więcej inaczej, niż zajęłoby to inaczej. Ponadto ukrywanie szczegółów w celu zadania dobrze zdefiniowanego pytania eliminuje możliwość zauważenia przez kogoś problemów, o których nie pomyślałeś. Ponadto, chociaż nie mogę do końca tego dotknąć, responsywności swobodnej rozmowy nie da się porównać z żadną formą dyskusji tekstowej w Internecie, o której mogę pomyśleć. I na koniec, nie chcę publikować całego mojego projektu, aby świat mógł przyjrzeć się reszcie wieczności, z oczywistych powodów.
Czy są jakieś odpowiedzi inne niż płacenie konsultantowi za sprawdzenie mojego kodu?
Odpowiedzi:
Byłem w twoich butach i nie sądzę, że istnieje łatwe rozwiązanie. Płacenie konsultantowi za przegląd kodu nie jest dobrym sposobem na wydawanie pieniędzy. Jeśli twoim problemem jest to, że czujesz się samotny i nie masz z kim porozmawiać o programowaniu, nie mogę ci pomóc, ale jeśli naprawdę zależy Ci na poprawie jakości kodu, najlepiej go ustawić odłóż na bok i wróć do niego za około tydzień. Jeśli kod jest naprawdę zły, będzie to oczywiste, ponieważ nie będziesz w stanie go zrozumieć i możesz zacząć go refaktoryzować, aby miał sens. Po kilku iteracjach tego procesu zaczniesz zauważać wzorce kodu, które ułatwiają zrozumienie kodu i poprawi jego jakość.
źródło
Nie.
Moja rada to dołączyć do lokalnej grupy programistów \ użytkowników i porozmawiać o swoich pomysłach z innymi. Porozmawiaj o swoim projekcie. Zapytaj innych, jak podeszli do niektórych problemów.
Jeśli sprawdzą Twój projekt, nawet bez patrzenia na Twój kod, powinno to wystarczyć.
źródło
Istnieją techniki samokontroli, takie jak rozwój oparty na testach, który może pomóc w uzyskaniu informacji zwrotnej. Kiedy staje się to trudne, wiesz, że twoja architektura prawdopodobnie jest nie do zniesienia.
Problem rozwiązany. Nie potrzebujesz zewnętrznej informacji zwrotnej na temat każdego wiersza kodu w celu poprawy, wystarczy dobre próbkowanie przy kluczowych rozwidleniach na drodze i staranne samodzielne sprawdzanie w punktach pomiędzy.
Musisz przestać myśleć, że możesz utrzymać ten sam poziom jakości pracując samemu w tym samym czasie, co ktoś pracujący w zespole. Jest powód, dla którego ludzie pracują w zespołach. Dobra wiadomość jest taka, że nie masz konfliktów dotyczących decyzji projektowych. Zła wiadomość jest taka, że nie masz konfliktów dotyczących decyzji projektowych. Mamy nadzieję, że dodatkowy czas poświęcony na utrzymanie jakości jest w pewnym stopniu równoważony przez zalety pracy w pojedynkę.
źródło
Poleciłbym jak najwięcej kontaktów sieciowych na konferencjach i lokalnych grupach użytkowników. Znam wielu programistów, którzy przez cały czas strzelają w oczyszczone fragmenty kodu pocztą e-mail lub im, tylko po to, aby zachować ostrość i wspólnie przejrzeć algorytmy. Nie, nie jest to rozmowa twarzą w twarz, i tak, czasami jest to problem z odkażaniem kodu, ale od czasu do czasu przegląd 20 kodów komunikatora może być bardzo przydatny, szczególnie gdy desperacko potrzebujesz drugiej pary oczu.
źródło
Jestem w podobnej sytuacji i polegam w dużej mierze na przepełnieniu stosu, jeśli chodzi o uzyskiwanie informacji zwrotnych na trudne pytania. Z racji tego, że muszę napisać opis problemu, stwierdzam, że odpowiedź często staje się oczywista. Jeśli chodzi o najlepsze praktyki, jestem programistą .Net i korzystam z ReSharper, który zaproponuje dobre praktyki alternatywne do kodu, który piszę (co czasami po prostu ignoruję - może to być trochę pedantyczne). Innym przydatnym narzędziem jest FxCop, który przeprowadzi statyczną analizę kodu i uwypukli wszelkie problemy, które nie pasują do jego zestawu reguł.
W przeciwnym razie to ty będziesz czytać i być na bieżąco z aktualnymi praktykami. Lubię poranną rosę Alvina Ashcraft'a za linki do nowości i ulepszeń w świecie .Net.
źródło
Sugerowałbym próbę utworzenia (lub znalezienia) małej grupy użytkowników. Udostępnij swój kod i zachęć wszystkich do działania, aby działał - pół godziny lub dłużej dziennie.
źródło
Konstruktywne informacje zwrotne z mojego doświadczenia są takie, że w pierwszych latach rozwoju programista byłby bardzo ważny, choć nie obowiązkowy, aby doświadczony programista sprawdził Twój kod, aby stworzyć podstawy. Po zdobyciu doświadczenia możesz zastosować podejście sugerowane przez @ davidk01, tj. Okresowo przeglądać własny kod, aby poprawić jego jakość.
źródło
Nie znam szczegółów twojej sytuacji, ale tam, gdzie teraz jestem, jest wielu głodnych doświadczonych studentów, którzy z radością pracują jako stażyści i czegoś się uczą.
Może się wydawać, że zajęcie się nimi i nauczenie ich tego i tamtego, ale wszyscy byliśmy tam, kiedy zaczynaliśmy i myślę, że nadszedł czas, aby spłacić.
Nie są ekspertami i czasami mogą cię wprowadzić w błąd, ale zwykle kwestionują wszystko i są pełne pomysłów i świetnie nadają się do dyskusji, w której musisz bronić każdego szczegółu kodu.
źródło
To samo dotyczy> 75% zadawanych przeze mnie pytań.
Nie jest to jednak argument za tym, aby nie zawracać sobie tym głowy. Jest to skutecznie debugowanie gumowej kaczki. Znajdujesz odpowiedzi na pytania, które Twoim zdaniem mogą się pojawić w odpowiedzi na twoje pytanie; co oznacza, że myślisz o problemie z punktu widzenia różnych osób; co oznacza, że myślisz o problemie ze wszystkich możliwych kierunków; co jest najlepszym sposobem na znalezienie wady.
W najlepszym wypadku ostatecznie udowodniłeś, że wyraźnie nie możesz wymyślić tutaj odpowiedzi. W „najgorszym” kończy się odpowiedź na własne pytanie. Zwróć uwagę na cytaty, ponieważ wcale nie jest tak źle. Być może było to trochę nieefektywne czasowo, ale powolne rozwiązywanie problemu jest lepsze niż szybkie decydowanie się na rozwiązanie problemu . W końcu szybciej uzyskasz rozwiązanie problemu.
Przykładem:
Kiedy byłem początkującym programistą, wiele razy zajmowałem się stroną błędów platformy ASP.Net . Potrzebowałem Google, aby dowiedzieć się, co jest nie tak. może minąć kilka godzin, zanim otrzymam właściwe rozwiązanie. Zasadniczo popełniłem każdy błąd w książce, a następnie musiałem poradzić sobie z konsekwencjami konieczności debugowania problemów.
Teraz, gdy pojawia się błąd, już znam „zwykłych podejrzanych”, co może być przyczyną problemu. Moja lista mentalna „zwykłych podejrzanych” skutecznie opiera się na problemach, z którymi najczęściej miałem problemy podczas mojej kariery. Bez wcześniejszej nieefektywnej pracy godzinnej w Googlingu nigdy nie zrobiłbym tej listy mentalnej . Ale teraz, kiedy mam tę listę mentalną, znacznie szybciej rozwiązuję problemy.
Trochę się tu nie zgadzam. Masz rację, że komunikacja internetowa jest mniej responsywna, ale (moim zdaniem) się mylisz, że jest to dla ciebie złe.
Jako samotny programista będziesz polegać na debugowaniu gumowej kaczki. Kluczowym składnikiem działania RDD jest oczekiwanie na pytania, które może mieć dla Ciebie gumowa kaczka. Oczywiście nie możesz polegać na tym, co faktycznie mówi gumowa kaczka.
Kiedy masz do czynienia z powolnymi systemami przesyłania wiadomości (wysyłanie wiadomości na StackOverflow lub komunikowanie się poprzez pisanie listów), z natury rzeczy zachęcasz się do upewnienia się, że otrzymałeś to poprawnie za pierwszym razem. Ponieważ konieczność poprawienia błędu będzie procesem powolnym i uciążliwym.
Dla porównania weź pod uwagę, że systemy szybkiego przesyłania wiadomości (konwersacja, komunikatory) możesz natychmiast coś poprawić. Zdolność do szybkiego poprawienia czegoś sprawia, że ludzie są mniej motywowani do upewnienia się, że jest to poprawne.
Cztery przypadki w punkcie:
Podstawową ideą jest to, że trudny system wymiany zachęca ludzi do dokonywania poprawnych i sprawdzonych faktów wymian . Surowość kary (= trudny proces korekty) uczy, aby nie popełniać błędów.
Kiedy tworzysz MCVE , nie powinieneś go po prostu tworzyć i publikować w pytaniu. Najpierw powinieneś zrobić to sam , abyś mógł wyizolować problem. A potem, gdy myślisz, że problemu nie można już zmniejszyć, a nadal nie widzisz przyczyny; to masz ważne pytanie dotyczące StackOverflow.
Przykładem:
Zawsze mam drugi program Visual Studio z prostą aplikacją konsolową o nazwie Sandbox. Ilekroć napotykam problem techniczny, kopiuję niepoprawny kod do piaskownicy i zaczynam się nim bawić.
W 90% przypadków znajduję przyczynę problemu, ponieważ piaskownica pomogła mi spojrzeć na niepoprawny kod, nie rozpraszając go otaczającym kontekstem (lub, na przykład, niepewnością co do wartości, które pochodzą z różnych części kodu.
W pozostałych 10% przypadków mam minimalny kod do odtworzenia problemu, który stanowi doskonały przykładowy fragment do opublikowania na StackOverflow.
Kiedy już masz swój MCVE, nie powinieneś mieć dużo na drodze do osobistych (lub firmowych) informacji. Jeśli tak, ponieważ kod jest minimalny, łatwo jest zmienić nazwę rzeczy na bardziej podstawowy przykład foo / bar / baz.
źródło