Obecnie nasza firma opracowuje aplikacje składające się głównie z serwerów Ruby on Rails i kilku różnych klientów REST, od systemów kiosków w Javie po urządzenia wbudowane w C / C ++ (oprócz interfejsów dla standardowych przeglądarek internetowych). Musimy rozszerzyć nasz zespół, a ponieważ nie udało nam się znaleźć dobrych starszych programistów, postanowiliśmy włożyć trochę wysiłku w szkolenie młodszych programistów, którzy będą się rozwijać razem z firmą.
Już daliśmy im kilka książek Ruby i Rails i poprosiliśmy ich o zbudowanie programów dla zabawek, ale teraz zdaję sobie sprawę, jak stroma jest krzywa uczenia się dla obecnego stanu programowania internetowego.
Kiedy zacząłem programować 15 lat temu, korzystałem tylko z Delphi i Source Safe i od samego początku mogłem produkować użyteczne oprogramowanie. Oba były prostymi narzędziami i łatwo było zagłębić się w wewnętrzne funkcjonowanie środowiska. Powoli zacząłem używać frameworków innych firm, przeszedłem na CVS, SVN i wreszcie Git, nauczyłem się elementów tworzących dzisiejszą sieć, takich jak HTTP, JavaScript, CSS, REST itp. Dziś nawet po latach doświadczeń nie wiem tyle samo o tym, jak Ruby on Rails działa wewnątrz, jak w przeszłości o Delphi, i dla mnie było to ważne, aby móc połączyć podstawowe bloki edukacyjne z narzędziami, których używałem.
Wydaje mi się, że zatrudniani przeze mnie programiści zajmą dużo czasu integracja z zespołem i stworzenie czegoś użytecznego, ponieważ jest tak wiele rzeczy do nauczenia się korzystania z jednego frameworka (Rails): Ruby, HTML, CSS, JavaScript, REST, przypadki testowe, dostęp do bazy danych (z SQL wbudowanym magicznie w ramach!), MVC, trzy różne menedżery pakietów (odpowiednie dla Ubuntu, gem i bundler dla Ruby), ssh, git, Apache i Phusion Passenger do wdrażania itp.
Czuję się zagubiony, odkąd po raz pierwszy muszę kontaktować się bezpośrednio z młodszymi programistami. Jaki jest najlepszy sposób szkolenia młodszych programistów w zakresie dzisiejszych najlepszych praktyk w zakresie tworzenia stron internetowych, gdy jest tak wiele możliwości?
źródło
Odpowiedzi:
Wielu ludziom nie spodoba się ten pomysł, ale zalecam to, gdzie tylko mogę: bez względu na język programowania i środowisko, jeśli nie mają żadnego doświadczenia i jeśli istnieją zadania konserwacyjne, które pochodzą z rzeczywistych zgłoszeń błędów klientów twoich, postaraj się upewnić, że są przydzieleni do tego rodzaju zadań przynajmniej na 30-40% (+) czasu. „Oto raport o błędach, obejrzyj go, rozwiąż. Jeśli nie wiesz, o co chodzi, skontaktuj się z doświadczonymi kolegami, google, cokolwiek”. Prawdziwa praca nad prawdziwymi problemami, niezabawki, przynajmniej: nie tylko zabawki. Oczywiście upewnij się również, że ktoś z dużym doświadczeniem zapoznał się z tym, co robił, zanim zostanie wydany i wysłany do klienta. Upewnij się, że nowy kolega otrzymuje uczciwe opinie od współpracowników i klientów. Wybieraj te zadania ostrożnie, aby ich nie przeciążać, ale pamiętaj, że pewnego dnia chcesz, aby wykonywali swoją pracę niezależnie.
Naprawianie błędów polega na nauce pracy, która pozwala im pracować nad kodem, który faktycznie został wykonany i ma pewne znaczenie (w przeciwnym razie nie byłoby raportów o błędach) i pokaże im w wielu przykładach, jak tego nie robić.
Nacisk zostanie automatycznie położony na punkty bólu. Zaczną uczyć się tych szczegółów, które faktycznie powodują problemy. Od samego początku spoczywa na nich również prawdziwa odpowiedzialność, która (choć konserwacja jako taka nie jest naprawdę atrakcyjna), może być raczej motywująca, jeśli zrobi to w sposób zadowalający klienta / użytkownika końcowego. Przeanalizowanie tego, co zrobili, zostanie potraktowane poważniej przez twoich seniorów, ponieważ znają one wpływ, jeśli coś pójdzie nie tak, i w ten sposób uprości to integrację w zespole, ponieważ sprawi, że będą się ze sobą automatycznie rozmawiać.
Nie chodzi o to, aby od początku produkować je (jak mogłoby to wyglądać). Chodzi o to, aby upewnić się, że wiedzą, że od pierwszego momentu powinni zrobić coś wartościowego, i skupić się na tym, co najważniejsze, bez konieczności tworzenia listy.
Mam od czasu do czasu kilka lat doświadczenia w pracy z osobami przychodzącymi bezpośrednio ze studiów do nowej pracy programistycznej, a najgorsze wyniki, jakie widziałem, to zwykle kiedy ktoś bez przynajmniej doświadczenia w utrzymaniu był proszony o tworzenie nowych aplikacji . Upewnij się tylko, że zawsze mają kogoś, kogo mogą poprosić o wsparcie, jeśli czują się zagubieni.
źródło
Załóżmy przede wszystkim, że zatrudniłeś młodszych programistów, którzy są naprawdę kompetentni. To niekoniecznie jest bezpieczne założenie, zwłaszcza że starsi programiści przeprowadzający wywiad z „kimś mniej doświadczonym ode mnie” prawdopodobnie przeoczą podstawową niekompetencję.
Ale zakładając, że są kompetentni, pierwszym krokiem jest wysłanie ich na zajęcia. Tygodniowe zajęcia będą kosztować od 2000 do 3000 USD (USA). Daje im to jednak praktyczne doświadczenie z instruktorem, który (miejmy nadzieję) rozumie materiał, oraz plan lekcji mający na celu przyspieszenie go. Wysłanie kogoś z książką i dyrektywą, by „nauczyć się tego”, nie będzie tak cenne i prawdopodobnie będzie kosztować więcej (koszt klasy jest mniej więcej równy jednemu zmarnowanemu tygodniowi programisty).
Po uzyskaniu podstawowej wiedzy, pracuj z nimi. Usiądź przy sąsiednim biurku i poświęć przynajmniej połowę swojego czasu, aby upewnić się, że rozumieją twoją firmę i twój sposób robienia rzeczy. Tak, przynajmniej obniży to twoją produktywność, przynajmniej na początku, ale w dłuższej perspektywie zwiększy produktywność Twojego zespołu. A jeśli znów pomyślisz o kosztach, jeśli młodsza osoba marnuje miesiąc robiąc coś złego, to prawdopodobnie równa się to pół miesiąca twojej pensji.
źródło
Aplikacje zabawkowe, o które prosisz, powinny implementować podstawowe funkcje CRUD, a każdy programista powinien napisać własny kod. Ale możesz omówić aplikację w recenzjach kodu i zaoferować wskazówki. Będą musieli najpierw zrozumieć ogólną architekturę aplikacji MVC, jeśli możliwe jest jakiekolwiek uzasadnione oczekiwanie wydajności.
Od tego momentu każdy programista powinien mieć możliwość samodzielnego przekreślenia powiązanych tematów, takich jak Javascript, CSS, DAL, generatory szablonów, routing i tak dalej. Możesz udzielić im wskazówek na temat tematów do nauki (może to być oparte na najpilniejszych potrzebach Twojej firmy), mentorować je i monitorować ich postępy. Przenieś programistów pojedynczo do prostych projektów, które wytwarzają funkcjonalność, która przeniesie Twój rzeczywisty wysiłek programistyczny do przodu, w momencie, gdy wykażą się niezbędnymi umiejętnościami.
Możesz sparować doświadczonych programistów z uczniem jako swego rodzaju program mentorski. Powinny być dostępne wytyczne dla młodszych programistów, aby wiedzieli, kiedy mogą przerwać swojego mentora i na jak długo. Ich mentor może nadzorować ich pracę, gdy zaczną pisać prawdziwy kod.
Będziesz miał lepszy czas, jeśli znajdziesz młodych ludzi, którzy są bardzo inteligentni, ciekawi intelektualnie i potrafią się rozpalić. Widziałem, jak ten proces działa; takie było podejście mojego wcześniejszego pracodawcy, ponieważ nie chciał płacić wielkich dolarów za ekspertów, chociaż było to raczej coś w rodzaju „zlewu lub pływania” (nie było formalnego programu szkoleń jako takiego). Największym wyzwaniem było dla nich, by pozostali wystarczająco długo, by odzyskać swoją inwestycję; gdzieś indziej zawsze było coś lepszego.
źródło