Jak szkolić praktykantów

Na forum od czasu do czasu pojawiają się ogłoszenia z ofertą praktyk/staży lub pozycji młodszych programistów.

Jak zajmujecie się takimi świerzynkami? Dostaje samodzielny projekt do nauki, wprowadza poprawki dla IE6, czy może od razu rzucacie go na głęboką wodę? Czy jedna doświadczona osoba zostaje mentorem, czy może też coś innego?

U nas w firmie realizowaliśmy miesięczne szkolenia dla studentów. Na początku dużo Rubiego ze szczególnym uwzględnieniem bloków, przykładowe zadania: napisać samodzielnie assert_raise, napisać samemu injecta, napisać crawlera z użyciem mechanize, nokogiri i FasterCSV. Bardzo pomocne są też Ruby Koans. Druga część to Railsy, jako główna baza wiedzy były Rails Guides, i rozwijanie sklepu internetowego. Każdy w miare możliwości robił krótkie featury w różnych miejscach, by poznać jak najwięcej możliwości Rails oraz pod koniec zespoły (były 2) wymieniły się projektami, aby popracować na cudzym kodzie. Dodatkowo git i tdd/bdd.

Z perspektywy kogoś kto był na stażu uważam, że dopisywanie testów do już istniejącej aplikacji jest bardzo dobre. Dużo nauki samego rubiego, zapoznanie z projektem + lepsze pokrycie kodu testami :slight_smile: same plusy

Jeżeli myślicie o późniejszym zatrudnieniu gościa to oszczędzcie mu roboty, za którą żaden z was nie chce się zabrać;) Jeżeli ma się czegoś nauczyć (a taka jest przecież idea) to niech to zrobi na jakimś życiowym problemie w ‘prawdziwym’ projekcie. U mnie w firmie każdy praktykant ma przydzielonego tzw. buddy (w tym roku ja mam to ‘szczęscie’), który wprowadza go do projektu od strony technicznej - od ustawienie środowiska przez pokazanie jak to wszystko działa i co trzeba zrobić żeby skończyć pierwsze user story. Projekt mamy całkiem spory (+100 ekranów, +100 tabelek, +1M linii kodu). Wiadomo, na początku (wiele tygodni) pytanie za pytaniem, prowadzenie za rączkę, głupie błędy, złe praktyki - trzeba sie na to psychicznie przygotować, ale jak się gość wyrobi to będzie z niego później pożytek;) Wiem to po sobie, wiem po praktykancie z zeszłego roku i mam nadzieję, że w tym będzie tak samo:) Jednym słowem - głęboka woda i się gość wyrobi:)

Sorry za offtop. 1 milion linii kodu?! Same pliki *.rb czy wszystko co jest w projekcie łącznie z erb,haml,css,js?

U nas w Implix przerabialiśmy dwa razy zatrudnienie świeżych programistów, którzy Rubiego nie znali lub znali tylko trochę. Na początek książki, screencasty, zapoznanie się z istniejącym projektem. Potem proste zadania np. “zrób coś tam, coś tam, tak by coś i coś. Potrzebne informacje masz w tej książce w tym miejscu. Jakby co to mnie zawołaj”.

Sorry za offtop. 1 milion linii kodu?! Same pliki *.rb czy wszystko co jest w projekcie łącznie z erb,haml,css,js?[/quote]
To akurat nie ruby tylko java, ale punktu widzenia tego wątku nie ma to raczej znaczenia;) Aktualnie pracuje nad nim jedenaście osób, praktykant będzie dwunasty i będzie tak samo pracował jak reszta zespołu, ale wiadomo, z taryfą ulgową na początku (łatwiejsze zadania i bez żadnego poganiania) dopóki się nie rozkręci;) Piszesz, że do was praktykanci przychodzą bez znajomości rubiego. My wybieramy jednak kogoś kto javę ma już opanowaną na jakimś poziomie. Inaczej by to zwyczajnie nie wyszło. Osobiście uważam, że takie rails guides czy inne tutoriale to można sobie w domu przeglądnąć i poćwiczyć, a na praktykach nauczyć się pracy w zespole, z prawdziwym kodem, z prawdziwymi testami itd.

Podobnie jak pplcanfly, od jakiegoś czasu bierzemy do siebie ludzi, którzy mają za sobą tutoriale. Niedawno zorganizowaliśmy na politechnice, przy współpracy z jednym z kół naukowych, szkolenie z railsów, po którym daliśmy zadanie do zrobienia i chętni, którzy je wykonają, zgłaszają się do nas na praktyki.
Każdemu praktykantowi przydzielony jest ‘mentor’, który pomaga mu wdrożyć się w projekt, przydziela zadania, tłumaczy w skrócie jak należy je wykonać i na co zwrócić szczególną uwagę, a potem sprawdza commity i mówi, co należałoby poprawić.
Praktykanci pracują nad normalnymi projektami, zaczynają od prostych zadań, często jakichś opcjonalnych funckji, na które najzwyczajniej nie ma czasu, bo ciągle pojawiają się pilniejsze rzeczy.
Zgadzam się też ze Staszkiem - pisanie testów jest niezłą metodą, choć osobiście preferuję dodawanie nowych funkcji + pisanie testów do nich.

U mnie w firmie kazali napisać mi CRMa, mogłem w PHP, ale stwierdziłem, że trzeba trochę iść do przodu, więc siadłem do RORa, wydrukowałem oficjala Rails Agile 4 i zrobiłem klika przykładowych bzdurek, oglądałem screencasty, które są na mega wysokim poziomie. No i kawałek po kawałku zrobiłem ten projekt w niecały miesiąc, wiadomo ciągłe pytania na forum, walka z błędami, raz na 2 dni coś się wysypywało.

Najgorsze jest to, że u nas się pisze w Javie i PHP, jak mam problem to nie mam nawet z kim tego przedyskutować. Przypuszczam, że w kodzie mam masakre z powodu złych praktyk - ale projekt działa stabilnie już od jakiegoś czasu.

Wygląda na to, że dać komuś projekt, który ma zrobić od podstaw to dobra metoda, tak mi się wydaje.

@qrooel jak to nie jest jakiś zamknięty projekt to wrzuć kod gdzieś np na github i poproś o opinię na forum gdzie co poprawić, zrobić lepiej. Inaczej jak mówisz, nie pójdziesz do przodu.

Ja prowadząc jedno miesięczne szkolenie dla osób, które mało znaly ruby ale rokowały dobrze jako ogólnie ogarnięte osoby i konkretni programiści wyszedłem z założenia, że czytać można samemu. Szkolenie trwało miesiąc. Rano był wykład na jakiś temat, który oparty był o kupione lub dostępne bezpłatnie filmy. Komentarz do filmu rozszerzony o własne doświadczenia + kilka zadań na przetestowanie danej techniki o rosnącym stopniu trudności (czasem naprawdę ciężko było wymyślić ale zdecydowanie warto było). Pozostały czas poświęcony na dorabianie ficzerów i testów do wyimaginowanej aplikacji w której grałem rolę klienta często zmieniającego wymagania oraz osoby robiącej co jakiś czas code review tudzież udzielającej wskazówek odnośnie architektury itp. Po 8h w pracy spędzonych nad tym do domu było zadane obejrzenie iluś tam odcinków railscasts oraz przeczytania kolejnych rozdziałów książek lub wpisów na blogu.

Na cały miesiąc przeniosłem się do pokoju praktykantów i byłem do ich dyspozycji jeśli chodzi o pytania (zarówno techniczne jak i biznesowe jako do klienta ich aplikacji). Z ich opinii po szkoleniu wnioskuję, że było one udane a i my jako firma nie żałowaliśmy raczej jego przeprowadzenia.

To Ja może napiszę o swoich doświadczeniach z perspektywy osoby która Ruby’ego uczy się sama.

Przedewszystkim, jeżeli przechodzi się z PHP’a to należy zaaplikować dużą dawkę samego czystego Ruby’ego. Od podstaw. Żadnych Rails’ów.
Dopiero jak się wchłonie podstawy Ruby’ego, bloki, hashe, brak konieczności średników (mam kolegę, który zwyczajnie nie może się do tego przyzwyczaić) itp. itd. to wtedy można przejść do Rails’ów zaczynając od http://guides.rubyonrails.org/.

Oprócz tego, jeżeli osoba taka chce się uczyć, to albo zasponsorować, albo zasugerować zakup odpowiednich książek.
Dla mnie jako osoby wywodzącej się z PHP’a przyjemnie się czytało http://www.amazon.com/Eloquent-Ruby-Addison-Wesley-Professional/dp/0321584104/ref=sr_1_7?ie=UTF8&qid=1308554981&sr=8-7 oraz http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/ref=ntt_at_ep_dpt_1

Dalej, podpatrywanie doświadczonych kolegów i praktyka, praktyka, praktyka…