Jak włączyć programistów debiutantów do swojego projektu?

9

Rozważamy nauczenie niektórych pracowników, którzy mają zerowe lub ogólne doświadczenie w programowaniu na poziomie hobbystów, aby zdjęli ze mnie obciążenie.

Używamy języka Python / Django, który zawiera najbardziej przyjazną dokumentację i jest łatwy do nauczenia.

Obecnie jestem jednoosobowym działem IT w mojej firmie i nie mam wystarczająco dużo godzin, aby opracować wszystko, czego potrzebuje firma. Nie jesteśmy firmą programistyczną, ale pomaga mieć własny IT do automatyzacji zadań, rozwijania funkcji obsługi klienta, analizowania danych itp.

Jak powoli integrujesz nowicjuszy pracujących nad bazą kodu? Powiedz, że masz stażystę - co oni robią? Zupełnie niechętnie pozwalam im projektować lub rozwijać kod podstawowy, ponieważ będziemy zajmować się ich błędami / dziwnymi wzorami projektowymi przez lata. Jako główny programista będę tym, który będzie musiał obejść swój kod.

Myślałem, że debiutanci modyfikują tylko istniejący kod, nigdy nie budując podstawowych funkcji. Po skompilowaniu samej funkcji mogę im odciążyć pracę za pomocą prostych zadań .

Chcielibyśmy, aby nasi pracownicy uczyli się / znajdowali wartość w firmie i ogólnie rzecz biorąc, ludzie mają „awansować w górę”.

Czy standardową praktyką jest nauczanie ludzi z programowaniem na poziomie ogólnym / hobbystycznym? W jaki sposób „awansowanie w górę” w firmie programistycznej działa dla młodszych programistów? Kiedy zaczynają pracować nad kodem podstawowym?

Staram się zdecydować, czy spowoduje to więcej szkód niż pomocy i czy istnieje sposób, w jaki możemy skorzystać z ich pomocy bez potencjalnego ryzyka podstawowego kodu witryny (środowisk izolowanych?).

Yuji Tomita
źródło
3
„Programowanie na poziomie ogólnym / hobbystycznym” bardzo różni się od „programistów na poziomie młodszym”. To pierwsze brzmi jak ktoś, kto bawi się skryptami powłoki / partii w weekendy, aby ulepszyć swój system. To drugie brzmi jak ktoś, kto właśnie ukończył studia CS. Obsługa tych dwóch typów byłaby bardzo różna. Tylko mówię ...
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Dziękujemy! Nie znam terminologii. Hobbysta, którego miałem na myśli, sam nauczył kilku języków programowania, zbudował program lub dwa, stronę internetową. Poziom młodszy Myślałem, że jestem kimś, kto ma wystarczającą wiedzę programistyczną, aby zostać zatrudnionym w firmie programistycznej, ale teraz przychodzi mi do głowy, że te dwa mogą być dość podobne (w moich definicjach)?
Yuji Tomita,
3
Młodzi faceci z formalnym wykształceniem CS i bez doświadczenia - są naiwni, ale często utalentowani, szybko uczą się nowych rzeczy i dostosowują się do swoich praktyk pracy. „Weterynarze hobby” są znacznie bardziej niebezpieczni, ponieważ często są niewolnikami swoich nawyków, dlatego mogą niechętnie wprowadzać zmiany i mieć problemy z dopasowaniem się do ekosystemu. Niemniej jednak - tylko dając im wolność, możesz zobaczyć ich głupotę lub spryt. Jeśli powierzysz im prymitywne, przyziemne zadania, ani one nie nauczą się niczego o pracy, ani się o nich nie dowiesz.
c69,
@ c69 Dzięki! Moje pytanie brzmi: jak wprowadzić nowicjusza w naszą bazę kodów? Celem nie jest ich zaszufladkowanie i wykonywanie wyłącznie przyziemnych zadań. Po prostu niebezpiecznie jest dać komuś dostęp do naszej bazy kodu i zmusić go do zbudowania pierwszego projektu django / programowania w ramach naszego systemu (czy to właśnie masz na myśli? Niech spróbują?). PS: Należnie zauważono o weterynarzach
Yuji Tomita,

Odpowiedzi:

5

Jeśli powierzysz nowicjusza do nieefektywnej roli, on / ona nigdy nie nauczy się niczego istotnego, a na pewno nie będą dla ciebie zbyt strasznie przydatne.

Pozwólcie, że dam wam radę, moja pierwsza praca informatyczna poza szkołą była w stosunkowo małej firmie produkcyjnej, w której zamierzałem pracować nad oprogramowaniem, aby pomóc inżynierom sprzedaży w pisaniu ofert dla różnych projektów. Miałem też pomagać facetowi IT, który samodzielnie zarządzał IT dla całej firmy.

Facet był zestresowanym, przepracowanym bałaganem i najgorszym perfekcjonistą w zarządzaniu mikro, w jakim kiedykolwiek pracowałem. Miałem zmniejszyć jego obciążenie pracą, ale spędził prawie tyle samo czasu, co niepokojąco, sprawdzając mnie i moją pracę, jak spędziłem pracę (prawie nigdy nie opuścił biura, chyba pogardzał rodziną). Gdybym popełnił choćby jeden błąd, kompletnie straciłby rozum i zaczął napadać z furią: „Wiedziałem, że nie powinienem ci tego ufać, to było zbyt ważne!” i inne ranty.

Chodzi mi o to, aby NIE być w ten sposób. Nie tylko sprawi, że nowicjusze będą nieszczęśliwi i zniszczą ich morale, ale będziesz palił świecę na obu końcach, martwiąc się o ich pracę.

Daj im szansę wykazania się, ale mają formalne specyfikacje techniczne, recenzje projektu i recenzje kodu. Możesz także przetestować ich produkcję, aby upewnić się, że spełnia wymagania.

Myślę, że będziesz zaskoczony, jak zdolne mogą być niektóre z nich.

wałek klonowy
źródło
1
Należy również powiedzieć, że jeśli powierzysz nowicjusza do roli, w której nie czują się przydatni, wykorzystają zdobyte małe doświadczenie, aby znaleźć lepszą pracę. Nawet nowicjusz powinien być w stanie postępować zgodnie ze wskazówkami, zadania konserwacyjne są w porządku, ale chyba, że ​​zechcesz pomóc im rosnąć, spodziewaj się, że zawsze będziesz mieć nowicjusza.
Ramhound,
Dziękujemy za Twój wkład - to bardzo mile widziane. Musimy gdzieś zacząć, ponieważ rozważamy ludzi, którzy dosłownie nie mają doświadczenia. Wprowadzenie do python 101, tutorial django, skrypty bash, jak używać kontroli wersji itp., Zważę na twoje ostrzeżenie o braku zarządzania mikro. I tak! Wierzę, że nasi ludzie są całkiem zdolni.
Yuji Tomita,
5

Pracowałem w sklepie z oprogramowaniem, w którym kodowaliśmy duży projekt (znaczny czas rozruchu).

Rekruci byli traktowani jak weterynarze. Zostali przydzieleni do lidera technicznego i uruchomili funkcje „na własną rękę”. Styl architektury był podyktowany, ale mogli wymyślić własny czysty projekt. „Dziwne wzorce projektowe” zostały wyeliminowane podczas (codziennych) przeglądów kodów równorzędnych.

Jeden błąd, który widziałem w innym sklepie: załóż, że „rdzeń” jest trudny, a „interfejs użytkownika” jest łatwy. Nowicjusze mieli łatwiejszy czas w rdzeniu i pomieszali kod interfejsu użytkownika.

Powodzenia!

louisgab
źródło
1
Częste recenzje kodu były właśnie tym, co zamierzałem zasugerować. Zajmie Ci to godzinę dziennie i spłaci się piki, gdy nauczysz ich, co jest nie tak, muszą to naprawić, a ich umiejętności się poprawią. Po pewnym czasie nie będziesz musiał spędzać tyle czasu na recenzowaniu kodu, jak przez kilka pierwszych tygodni. Upewnij się także, że wiedzą, jak używać (i używaj) kontroli źródła. Następnie wszelkie błędy można dość łatwo wycofać.
HLGEM
1
@isgab - Efektywny projekt interfejsu użytkownika jest trudny do osiągnięcia nawet przy 30-letnim doświadczeniu. Mam na myśli, że Microsoft i Apple mają różne pomysły na to, jak powinien działać interfejs użytkownika.
Ramhound,
Uwielbiam to, co mówisz o rdzeniu vs. Myślałem, że są plusy i minusy obu (nowicjusz na backend, nowicjusz na frontend). Z jednej strony HTML to często doświadczenie - wiedza o tym, co nie działa. Jest również „bezpieczny”, ponieważ projekty są izolowane. Backend działa dokładnie tak, jak powinien, ale teraz zbudowany kod musi być utrzymany i pracował w przyszłości.
Yuji Tomita,
2

Chcesz zacząć od udostępnienia im małych, dyskretnych elementów do wdrożenia. Zdefiniuj obiecane dane wejściowe i oczekiwane dane wyjściowe i pozwól im połączyć kropki. Następnie skorzystaj z przeglądu kodu prowadzonego przez zespół, aby zapewnić jakość, i recenzowania, aby wyszkolić ich w zakresie uczenia się od siebie i uczenia się.

Zakłada się, że masz ogólną architekturę aplikacji, która pozwala na budowanie atomowych jednostek logiki w odsprzężony sposób. Jeśli nie, zmierzasz do świata smutku, ponieważ pracuje w nim wielu programistów - tak byłoby nawet w przypadku starych profesjonalistów.

Nieuchronnie będziesz mieć pewnych ludzi, którzy się tym zajmą, uczą się szybko i powstają. Upewnij się, że nadal karmisz je zadaniami, które są tylko małym krokiem poza ich obecne możliwości. Nic nie kształci kogoś jak zadanie, które zaczyna się niemożliwe. Nieuchronnie będziesz mieć ludzi, którzy próbują i nigdy tak naprawdę tego nie złapią. Tych ludzi należy podziękować za ich wysiłki i z wdziękiem przejść do czegoś innego.

Dan Ray
źródło
1
„Upewnij się, że nadal karmisz je zadaniami, które są tylko niewielkim krokiem poza ich obecne możliwości”. - Jeśli nie zostanie to zrobione, może się okazać, że ci ludzie zabiorą swoją wiedzę do innej firmy. Jeśli nie karmisz, nie trenujesz i nie chodzisz nowicjusza, uciekną one jak Twój pies.
Ramhound,
Inne opcje to: Daj im już (dobrze) implementację funkcji, aby mogli porównać wyniki
Etsitpab Nioliv
1

W jaki sposób Twoja firma może sobie pozwolić na poświęcenie czasu innym pracownikom, ale nie na zatrudnienie kogoś z doświadczeniem programistycznym? Ilość czasu poświęcanego na trening, rozwiązywanie problemów i trzymanie ręki jest kosztowna.

Jedyną rzeczą, jaką kiedykolwiek zrobiłem w tym obszarze, jest nauczenie ludzi korzystania z programu do pisania raportów lub może kodu VBA / Macro dla programu Excel. Zazwyczaj przekazuję zestawy danych do ponownego wykorzystania. Uczenie się języka SQL jest trudnym zadaniem, ale widziałem, że jest to zrobione (płatne, aby mogli przejść szkolenie poza szkołą). Większość z tych osób była analitykami finansowymi, którzy potrafią nauczyć się kodować, ale nie zajęło im to czasu. Próbowanie tego z niektórymi ludźmi podczas operacji jest dalekie.

Upewnij się, że masz odpowiednią osobę, a ona naprawdę chce nauczyć się kodować. Nie będziesz miał czasu nauczyć ich wszystkiego. Będą musieli wiele zrobić samodzielnie.

JeffO
źródło
Wspomniałem, że mówimy o ludziach z zerowym wcześniejszym doświadczeniem (lub bardzo małą ilością), więc nie mówimy o stopniach płac wymaganych do zatrudnienia profesjonalnego programisty.
Yuji Tomita,
Ach, a nasza firma jest trochę jak rodzina: lubimy robić wszystko sami i sprawić, by ludzie awansowali. Byłem głównie ciekawy, jak zorganizować przepływ pracy nowicjusza w mój.
Yuji Tomita,
0

@louisgab miał rację co do recenzji kodu. To też byłby mój pierwszy krok. Jedną z kluczowych rzeczy, która Ci pomoże, jest upewnienie się, że muszą naprawić własne błędy, niezależnie od tego, czy znajdziesz je w przeglądzie kodu, czy później. Wygrali; nawet nie zdają sobie sprawy, że popełniają błędy, chyba że muszą je naprawić. Miej też wyjaśnić, dlaczego zastosowane przez nich rozwiązanie jest błędem i dlaczego to, co proponujesz, jest lepsze. Przez kilka pierwszych tygodni poczujesz się tak, jakbyś miał więcej pracy z powodu posiadania tych innych osób, ale jeśli zrobisz recenzje kodu i wyjaśnisz różne rzeczy i oczekujesz, że się nauczą, za kilka tygodni będą znacznie bardziej pomocni niż gdybyś tylko zrób to wszystko sam. Ale twoje zaangażowanie jest celowe, abyś był na bieżąco, o czym zarząd powinien wiedzieć.

HLGEM
źródło