2008-08-26 742 views
11

Mój szef wynajął nowego programistę prosto z CompSci na projekt z dużą ilością technicznego długu. Moim zadaniem będzie sprawić, by ten koleś był szybki i dokonał przyzwoitego wkładu jak najszybciej. Wszelkie sugestie, jak najlepiej to zrobić? Jakiekolwiek doświadczenia z pierwszej ręki, jak precyzyjnie tego nie robić?Jak przyspieszyć prace nad istniejącym projektem?

Moim instynktem jest zrobić kilka recenzji kodu na kod napisany przez dewelopera, który zastępuje, parę programowania na nowym kodzie, piszę, lub pracując z nim na piśmie testów jednostkowych dla kodu, który ma dziedziczyć.

Odpowiedz

11

Pierwszego dnia usiądź z nim i pomóż mu skonfigurować środowisko programistyczne. Jeśli jest świeżo po studiach, może nie być zaznajomionym z IDE, używając Kontroli Wersji, jakichkolwiek frameworków, z których korzystasz, itp.

W drugim dniu niech wygłupia się z wszystkim, co uważasz za warte nauki. Na przykład mówisz, że chcesz, żeby wykonał testowanie jednostek, jeśli tego nie zrobi, użyj dnia 2, aby pozwolić mu na przyspieszenie.

W dniu trzecim umieścić tego chłopca do pracy. Ucz się przez działanie. Zdecydowanie zrób przegląd kodu każdej rzeczy, którą napisze przez co najmniej kilka pierwszych tygodni i zabierz ją stamtąd.

3

Kiedy rozpocząłem swoją pierwszą pracę, zostałem rzucony w ogień przy pomocy mniejszych zadań. Obejmowało to tworzenie mniejszych kontrolek, które były pomocnicze dla projektu, ale które nadal wymagały użycia niektórych bardziej zaawansowanych technik, które były używane z resztą zespołu (dostęp ORM i tak dalej). Dostałem również kilka zadań związanych z czyszczeniem baz danych, dzięki czemu dobrze zrozumiałem, jak wszystkie dane, z którymi projekt miał do czynienia, zostały określone w bazie danych.

Odradzam, aby nie robił nic poza czytaniem dokumentów lub obszernym przeglądem kodu. Będzie się nudzić i pewnie nie zapomni tego, co robi przez dwa tygodnie. Pamiętaj, że złożył podanie o pracę, ponieważ chciał napisać kod. Zbyt wiele prac konserwacyjnych go odepchnie.

0

Tutaj można zapoznać się z pierwszą ręką. Nie wysyłaj ich sam, aby przeczytać dokumentację. Może to być bardzo przytłaczające zadanie, zwłaszcza jeśli projekt jest na bardzo dużą skalę.

Lepiej byłoby, gdyby rzeczywiście wskoczył do kodu i zaczął z nim pracować.

1

Daj mu zadanie, które uaktualnia istniejący kod. Zadanie nie powinno być strasznie trudne, ale powinno wymagać znajomości kodu. Bądź dostępny na pytania, ale nie mów dzierżawcy, jak to zrobić. Po zakodowaniu poprawki, usiądź z programistą i przejdź do rozwiązania.

Dobrze jest pozwolić programistom na pewną swobodę w pisaniu kodu, który wykonuje zadanie. Prawdopodobnie wprowadzi to do systemu nowe metody, które pomogą ci stać się lepszym programistą.

Tylko pamiętaj, aby pomóc nowemu facetowi poznać niektóre standardy kodowania dla Twojej firmy. Zawsze jest to trudny do nauczenia.

1

W mojej obecnej pracy, moim pierwszym zadaniem było zaktualizowanie narzędzi używanych do budowania i wdrażania naszych aplikacji internetowych. Okazało się, że jest to świetny pomysł z kilku powodów:

  • Istniejące narzędzia stały się przestarzałe i potrzebowały nowych funkcji.
  • Dowiedziałem się, jak zorganizowano różne projekty i bazy kodów.
  • Dało mi to możliwość dostosowania się do stylów i praktyk kodowania firmy.

Tak, wydaje mi się, że było trochę rozczarowujące, że od razu nie pracowałem nad prawdziwymi produktami, ale myślę, że to była zdecydowanie właściwa droga.

Jestem pewien, że każda firma ma narzędzie lub projekt o niskim priorytecie, na które nikt nie ma czasu. Przekaż ten projekt nowemu facetowi, daj mu szansę napisania nowego kodu, a następnie zobacz, jak wszystko działa. W najgorszym przypadku projekt jest awarią, ale nie udało się uszkodzić kodu produkcyjnego.

1

Peer mentoring to bardzo dobry sposób na przyspieszenie wzrostu liczby nowych pracowników, zapoznaj się z website i associated book, aby uzyskać więcej informacji. Technika została opracowana w firmie Microsoft (jak sądzę) i została przyjęta przez wiele innych firm.

Obecnie czytam książkę, która zawiera wiele ciekawych pomysłów, z których wiele ma na celu pomóc w zastanowieniu się, w jaki sposób ty i twój uczeń (nowy wynajem) wolisz się komunikować i pomóc Ci ustawić ... Lekki i prosty proces, aby to zrobić.

Edytuj: Nie jestem związany z autorem książki, po prostu lubię jego pomysł i został mi przedstawiony przez mojego obecnego pracodawcę.

2

Odradzam takie rzeczy, jak czytanie dokumentacji (chyba że masz dobry krótki dokument dający rzetelny przegląd projektu systemu), recenzje kodu lub mój ulubiony - "zapoznawanie się z podstawą kodu".

Wszystkie te rzeczy są naprawdę trudne do utrzymania, gdy jesteś nowicjuszem w projekcie. Recenzje kodu nie są przydatne bez wcześniejszej znajomości systemu.

Idealnie, dałbym mu bardzo małe, zlokalizowane zadanie, które może sam popracować i zadawać pytania w razie potrzeby. To sprawia, że ​​zaczyna on od procesów rozwojowych, kontroli kodu źródłowego itp. Podczas wykonywania rzeczywistego kodu.

Jest jeszcze lepiej, jeśli znasz już rozwiązanie zadania, dzięki czemu znasz już odpowiedzi na wszelkie pytania, które on może zadać i szybko odpowiedzieć.

Pisanie testów jednostkowych kodu, który odziedziczy, to także świetny pomysł - będzie mógł napisać kod i zapoznać się z tym, jak to wszystko ma działać.

2

Poprawki błędów.

To zdecydowanie najlepszy sposób na poznanie kodu. Tak, to jest do bani, ale to świetny sposób na naukę.

+0

Niezupełnie. Poprawki błędów nie pomagają uzyskać podgląd wszystkich ruchomych elementów. Często może to być ćwiczenie ekstremalnie frustrujące, gdy idziesz na pościg za dzikimi gęśmi, próbując znaleźć systemy i podsystemy, które coś robią. Myślę, że jest to najgorszy sposób na przyspieszenie programisty. – PlexQ

0

Jedną z najbardziej pomocnych rzeczy do zrobienia jest przejście przez program, który ma zamiar utrzymać i wyjaśnić, jak działa system. Upewnij się, że wyjaśnienie procesu biznesowego jest jedną z najważniejszych rzeczy omówionych w pierwszym dniu. Bez względu na to, jak działa kod (lub nie działa), musisz zrozumieć, co ma on osiągnąć.

0

Wiele z nich dotyczy uczenia się procesów w organizacji. Nie tylko uczy się, jak działa kod.

W zeszłym roku zatrudniliśmy dwóch początkujących.Zadbaliśmy o to, abyśmy mieli do wykonania prawdziwe zadania, które dały im dostęp do kontroli wersji, bazy danych błędów, wiki i tak dalej, dali im tyle nadzoru i pomocy, ile chcieli, a potem trochę więcej, sprawdzili, co oni i przez dwa tygodnie byliśmy z nich bardzo zadowoleni i powierzyliśmy im wykonanie tej pracy. Z biegiem czasu przyczyniły się one do naszych istniejących procesów i poprawiły je.

Wzięliśmy stażystę w tym roku i daliśmy mu znacznie więcej nadzoru, w tym uważnie przeglądając jego pierwszy fragment kodu, i aż do momentu, kiedy było dobrze. Trzy miesiące nadal potrzebuje pomocy od czasu do czasu, ale wie, kiedy go zapytać, i stał się użytecznym członkiem zespołu.

Jeśli zdecydowałeś się na ich zatrudnienie, już podjąłeś decyzję, aby zaufać im. Daj im mentora (może być tobą), poddaj je stopniowo swoim systemom i bazie kodów i zacznij pracę.

1

Pair Programowanie

Zgadzam się z wielu tutejszych odpowiedzi, zwłaszcza uczenie się przez działanie. Mam eksperymentował z wieloma różnymi sposobami, pozwalając nowego niemowlęcia:

  • Pracuj poboczny projekt, aby uzyskać komfortowe z otoczeniem
  • Tinker i niech postać rzeczy powoli z biegiem czasu, z ciągłym kod opinie
  • na zmianę programowania parami z różnych członków zespołu, podczas gdy faktycznie pracuje nad projektem

myślę o tym w taki sposób, gdzie gdybym był nowy wypożyczeniu do jakiejś firmy budowlanej i miała za zadanie budowanie ściany w istniejący dom, ale go nie było tam przez ostatnie 6 miesięcy budowy tego domu wzrasta ryzyko związane z tym, że robię to poprawnie. Jeśli jednak pierwszego dnia (i dni później) sparowali mnie z kimś, kto wiedział, czego się spodziewać, czułbym się bardziej komfortowo i jestem pewien, że firma czułaby się bardziej komfortowo wiedząc, że uczę się od kogoś, kto miał zrobiłem to przed ... i zrobiłem to dobrze.

Z różnych rzeczy, które nie zostały wypróbowane, było tak samo skuteczne jak Programowanie parowe. Wydaje się, że nie ma żadnych substytutów pomagania komuś w poznawaniu systemu/narzędzi/języka/projektu/etc. To naprawdę nie ma znaczenia, nad czym pracują ... czy to nowe funkcje, naprawianie błędów, projekty poboczne, systemy kompilacji, itp. Istnieje ogromna różnica między kimś, kto faktycznie mówi o tym, jak to działa w porównaniu do , pokazując w jaki sposób.

2

Niedawno byłem nowy najem w tej sytuacji ... chociaż miałem wcześniejszy "prawdziwy świat".

Mój szef i jej zastępcy zawsze mówili "baw się z systemem" lub "czytaj dokumentację". Znalazłem to naprawdę denerwujące. Zrobiłem swoje własne zadania, a mianowicie ustalenie pułapek, o których wiedziałem, że zostaną trafione, a następnie wykonanie prostego, ale kluczowego działania w systemie i przejście od kołyski do grobu.

Tak jak to zrobiłem, narysowałem pseudoprojektowe diagramy tego, kto wzywał kogoś, z czym - w zasadzie to, że to inżynieria wsteczna. Potem kazałbym jednemu z pozostałych deweloperów usiąść ze mną i poprawić mnie, podczas gdy ja mu oddałem to, w co wierzyłem, że odpowiedzialność każdej klasy jest i co robi.

Poza tym, jeśli nie masz żadnej mięsistej pracy dla nowego faceta/gal, spróbowałbym wymyślić krótkoterminowe projekty, które nie są trywialnie pracowitą pracą, ale których doświadczenie pomoże dla niego jest prawdziwa praca.

Oczywiście, jeśli są dostępne prace krótkoterminowe, ale znaczące, zacznij od tego. Najważniejsze jest zapewnienie dobrze zdefiniowanych zadań z określonym celem. W przeciwnym razie, jeśli będą tacy jak ja, wymyślą własne zadania i cele, aby zapobiec nudy.