Uważam się za pośredniego programistę Python i zaoferowano mi możliwość bycia trenerem dla początkujących klas programowania w języku Python.
Zastanawiałem się, czy to naprawdę poszerzy mój repertuar programistyczny. Czy ktoś miał doświadczenie oświecenia po tym, jak skutecznie przeszkolił grupę ludzi?
Czy zależy to również od tych ludzi - czy są programistami, czy studentami noob? (W moim przypadku są to pośredni programiści .NET i Java)
Czego mogę się po nich spodziewać?
Jednym z moich lęków jest - co jeśli zadławiłbym się, gdy jeden z nich zadał splątane pytanie. Czy to normalne?
Odpowiedzi:
Z mojego doświadczenia nauczanie programowania uczyniło mnie lepszym. Zmusiło mnie to do lepszego zrozumienia pojęć, które wcześniej akceptowałem lub przyjmowałem za pewnik. Kiedy musiałem wyartykułować pomysły, które były dla mnie stare, ale nowe dla studentów, na wiele różnych sposobów (ponieważ nie wszyscy uczą się w ten sam sposób z tych samych przykładów), ostatecznie doprowadziło to do głębszego zrozumienia dla mnie materiału.
I tak, czasami studenci zadają pytania, na które nie znasz odpowiedzi. W porządku, możesz powiedzieć im, że nie wiesz, wymyślić możliwe wyjaśnienia i obiecać, że przyjrzą się temu przed następną klasą.
źródło
W starym badaniu przeprowadzonym przez University of Texas dokonano następujących ustaleń.
Ludzie zachowują:
10 procent tego, co czytają
20 procent tego, co słyszą
30 procent tego, co widzą
50 procent tego, co widzą i słyszą
70 procent tego, co robią
90 procent tego, czego uczą
Zgodnie z tą logiką najlepszym sposobem na nauczenie się czegoś i zachowanie tego, czego się nauczyłeś, jest dołożenie wszelkich starań, aby uczyć tego kogoś innego.
Mimo że w szkole przeszedłem przez Comp Sci 101, podjąłem pracę korepetytora w C ++ i tak naprawdę nie uczyłem się C ++, dopóki nie byłem zmuszony uczyć go walczących uczniów. To było jak orgia żarówek, które gasły mi w głowie, kiedy pomagałem absolwentom CS w ich zadaniach.
źródło
Sam nie systematycznie uczyłem programowania, tylko próbowałem wyjaśnić jakieś pojęcie lub problem mniej więcej osobom postronnym. To zawsze było ciekawe doświadczenie i za każdym razem czegoś się nauczyłem.
Rzeczywiście, Jan Comenius zauważył już kilkaset lat temu, że najlepszym sposobem naprawdę głębokiego zrozumienia czegoś jest wyjaśnienie tego innym .
Więc idź na to - będzie to dla ciebie cenne, wzbogacające doświadczenie. Na pewno dostaniesz trudne lub zaskakujące pytania - to w porządku. Nie próbuj udawać, że wiesz wszystko - po prostu bądź szczery i powiedz im coś w stylu „Nie wiem, ale skontaktuję się z Tobą z odpowiedzią”. Będą cię bardziej szanować za uczciwość.
źródło
Oprócz tego, co wspominają inne odpowiedzi, nie zapominaj, że podczas nauczania możesz także uczyć się od swoich uczniów, jeśli masz na to otwarty umysł.
W komentarzu wspomniałeś, że Twoja „znajomość Java / .NET jest bliska zeru”. To idealna okazja do nauki od twoich uczniów. Nauczanie nie jest procesem jednokierunkowym.
Jeśli nie znasz odpowiedzi na pytanie, nie próbuj ukrywać tego faktu. Największą niedogodnością, jaką nauczyciel może wyrządzić uczniowi, jest udawanie, że wie coś, czego nie wie. W najlepszym razie tracisz ich zaufanie, gdy stwierdzą, że nie wiesz, o czym mówisz, w gorszym - wprowadzasz ich w błąd i przekazujesz fałszywe informacje, które są gorsze niż brak informacji.
źródło
Tak, głębiej zrozumiesz. Podjąłem podobne doświadczenia, jak inne odpowiedzi, które tu otrzymałeś.
Zdobyłem dodatkowe doświadczenie: przyspieszyłem analizy błędów. Uczysz ludzi, więc popełniają błędy, o których nigdy nie pomyślałeś. Kiedy im pomagasz, masz oko na problematyczny kod (przynajmniej tak zrobiłem).
Myślę, że to normalne. A moi uczeni nie mieli problemu, kiedy byłem szczery (i udzieliłem odpowiedzi później). Przeciwnie - zobaczyli, że nikt nie musi wiedzieć wszystkiego. Najważniejsze jest wiedzieć, jak uzyskać informacje. Jedną z moich najlepszych lekcji było to, że nie znałem odpowiedzi i razem szukaliśmy odpowiedzi w podręczniku. Potem umieli czytać podręczniki.
źródło
Prowadziłem zajęcia techniczne na poziomie uczelni (ale nie na temat tworzenia oprogramowania). Oto moje zdanie:
Czy to sprawi, że będziesz lepszym programistą?
Nie 1: 1. Nie zdobędziesz takiego samego doświadczenia jak pisanie programów - ale to wcale nie jest złe (czytaj dalej).
Czy poszerzyłby Twój repertuar programistyczny?
Absolutnie. Będziesz miał nowe wyzwania i będziesz musiał (ponownie) nauczyć się pewnych rzeczy, których nigdy nie wiedziałeś lub o których zapomniałeś przez lata. Niektóre z nich będą przydatne w przyszłości. Przedstawia wiele nowych wyzwań i koncepcji. Będziesz musiał podejść do zagadnień technicznych z nowej perspektywy i możesz się wiele nauczyć, biorąc tę perspektywę i rozwiązując te problemy. Jeśli potrafisz skutecznie nauczyć kogoś, czego potrzebuje, aby zrozumieć problemy techniczne, często poprawi to twoją znajomość tematów i rozszerzy domeny wiedzy. Jak wspomniałeś, znają już inny język, niektórzy twierdzą, że jednym z najlepszych sposobów poprawy jest nauka nowych języków.
Czy to zależy również od tych ludzi?
Praca z profesjonalistami z pobliskiej domeny radykalnie zmienia strukturę. Wiedzą już, jak komunikować się z komputerami, pisać programy. Szybko się uczą składni i logiki. Zadają trudne pytania w pierwszym tygodniu.
Czego mogę się po nich spodziewać?
Spodziewałbym się, że przyniosą największe korzyści, jeśli będziesz w stanie powiązać treść kursu z językami, które już znają: „Tak, przedmiot jest podobny do Java pod tymi względami , ale z tych powodów różni się ”. Spodziewałbym się, że tempo, w którym się nauczą, będzie dość szybkie, tak że powinieneś poświęcić sporo czasu na przygotowanie się do zajęć (znowu dużo do nauczenia się, ale tematy zainteresowałyby większość programistów).
Co jeśli zadławię się, gdy zostanie mi zadane splątane pytanie. Czy to normalne?
Cóż, są tak samo doświadczeni jak ty, ale w innej dziedzinie (choć spokrewnione). wyjaśnienia mogą być trudne i nie można oczekiwać, że będziesz wiedzieć wszystko lub mieć ten sam obszar wiedzy specjalistycznej, co wszystkie (łącznie). Umiejętność powiedzenia „nie wiem” jest dobrą cechą nauczyciela. Jeśli są również doświadczeni, często możesz przyjść z odpowiedzią w krótkiej dyskusji („Och, rozwiązujemy ten problem za pomocą tej techniki ”). Jeśli to się nie powiedzie, powinieneś znaleźć odpowiedź do następnej sesji (dla ciebie i dla nich).
źródło
Kiedy możesz skutecznie uczyć innych czegoś, czy to programowania, czy nie, to naprawdę to rozumiesz. Umiejętność uczenia innych czegoś zdecydowanie zdecydowanie poprawia umiejętności. Uczniowie zadadzą ci pytania, które Cię zaskoczą i sprawią, że zaczniesz inaczej myśleć na ten temat. Nauczysz się prezentować materiał na więcej niż jeden sposób, co pozwoli ci lepiej zrozumieć ten temat.
Umiejętność nauczania innych zawsze była moim lakmusowym sprawdzianem, czy naprawdę coś rozumiem.
źródło
Powiedziałbym, że to zdecydowanie robi różnicę. Z własnego doświadczenia bronię tego z następujących powodów:
Podczas czytania czasami umysł staje się wystarczająco leniwy, aby zignorować szczegóły lub zacząć zakładać różne rzeczy zamiast dokładnego przeczytania, aby zrozumieć daną górę. To jest szczególny powód niepełnego zdobywania wiedzy podczas czytania siebie.
W przypadku nauczania wszystko razem jest inną historią. W tym miejscu nie można podać założeń, ale faktów, dlatego do celów nauczania dokonuje się dokładnej lektury. Nauczyciele uważają również, że jego obowiązkiem jest zapewnienie pełnej i poprawnej wiedzy, co ponownie skłania do dalszej korekty.
źródło
Absolutnie tak. Nauczanie daje platformę do pogłębiania wiedzy o materiale, a także do ulepszenia warstwy prezentacji.
Dodatkowo pomaga budować więzi z innymi programistami, co później może przełożyć się na efektywne relacje zespołu programistów.
źródło
Oprócz tego, co wymienili wszyscy inni („Musisz dobrze znać materiał” itp.), Jeśli piszesz materiały na kurs, dobrą praktyką jest pisanie dokumentacji, ponieważ dokumenty - czy to notatki kursu, czy dokumenty techniczne - są pisane przekazywać wiedzę, nawet w przemyśle.
Ale kiedy pracujesz w branży, dokumentacja jest często przeznaczona dla kogoś, kogo nie spotkałeś i nie spotkasz, więc łatwo wpaść w pułapkę dokumentowania tego, co zrobiłeś, a nie tego, co interesariusz / czytelnik powinien wiedzieć.
Kiedy piszesz dla uczniów w klasie, łatwiej jest ćwiczyć i rozwijać sposób myślenia o przydatnej dokumentacji, ponieważ jesteś w pobliżu interesariusza / czytelnika. Do diabła, jeśli naprawdę masz szczęście, uczeń wyciągnie rękę w górę i powie ci, że twoje notatki są do kitu, a potem nauczyłeś się czegoś, co możesz poprawić.
źródło
Tak. Często stwierdziłem, że tak naprawdę nie rozumiałem czegoś tak dobrze, dopóki nie spróbowałem wytłumaczyć tego komuś innemu, zwłaszcza komuś bez wszystkich założeń i modnych słów, które buduje praktyka przez lata, zarówno w pierwszej osobie (jako nauczyciel lub mentor), a nawet odpowiadanie na pytania online (takie jak tutaj na Stack Overflow!).
Ponadto uczniowie mogą wnieść do problemu inny wgląd lub (dziwne?) Metodologię, poszerzając przestrzeń rozwiązań.
Nauczyciel, aby był przydatny, może nie mieć odpowiedzi na końcu języka, ale może powiedzieć „nie wiem”, zbadać ją lub sprawdzić, a także pomóc uczniom znaleźć odpowiedź szybciej i z większym prawdopodobieństwem niż studenci mogą sami.
źródło
Kiedy będziesz zmuszony wyjaśnić coś na podstawie pierwszych zasad, na pewno zmusi cię to do lepszego zrozumienia. Często używam tego pomysłu, szukając błędów w kodzie, wciągam kogoś i próbuję wyjaśnić mu, jak działa kod. Zwykle znajduję błąd w ciągu kilku minut. Ten sam pomysł.
źródło
Powiedziałbym, że nie. Bycie nauczycielem nie czyni cię lepszym - uczenie się czyni cię lepszym. Jeśli musisz nauczyć się być nauczycielem, staniesz się lepszy. Nauczanie pomaga tylko zachować to, co wiesz, ale w świecie IT wszystko zmienia się codziennie. Z tego powodu nie możesz polegać tylko na nauczaniu, musisz zdjąć ... dupę ... z kanapy i uczyć się.
Spotkałem profesorów IT, którzy byli nieświadomi, jeśli chodzi o ich rzeczywistą dziedzinę. Mieli certyfikaty, kursy, papiery na ścianie, dużo „show”. Pewnie, że mogą porozmawiać, ale jeśli KIEDYKOLWIEK nie dotrzymasz wyznaczonego harmonogramu kursu, będą trzepotać, jąkać się i zawodzić. Nie mogli znieść presji zmieniających się rzeczy. Nie zmieniały się z czasem, uczyły tego, co wiedzieli, co było przestarzałe.
Odwróćmy to jeszcze raz, miałem kilku profesorów, którzy byli niesamowici. Byli to programiści, starsi programiści, wiodący programiści, dyrektorzy rozwoju aplikacji, potem zostali programistami. Znali scenariusze ze świata rzeczywistego, wiedzieli, że 99% treści zawartych w podręcznikach nie przygotowuje ludzi do prawdziwej pracy, więc zmienili ją i utrzymali.
12 lat temu mój nauczyciel informatyki w klasie 11/12 dał mi ofertę. Gdybym przez cały rok szkolny był w stanie przełamać jego zabezpieczenia / zapory ogniowe itp. W szkole, dałby mi A + (100%) na kursie, niezależnie od mojej pracy. Cholera, pomogłem mu zaplanować kurs, pracując jako jr. programista wtedy. Ta oferta, którą mi dał, uczyniła go (wtedy) ekspertem od bezpieczeństwa Windows NT. Dostałem 100%, musiałem ukraść jego UN / PW, a następnie go zablokować ... to był jedyny sposób na koniec ... Ale nie trzeba dodawać, że stał się lepszy jako nauczyciel i informatyk z powodu nauczania - pracował ze swoją klasą - nie według własnego planu.
Więc gdzie narysujesz linię? Narysuj to na postawie nauczyciela. Jeśli nauczyciel jest gotów się uczyć, będzie mu lepiej. Jeśli ten nauczyciel po prostu jeździ na fali, otrzymuje wynagrodzenie i nie obchodzi go to - pogorszy się.
źródło
Konieczność rozwiązania wielu „dlaczego mój kod nie działa?” problemy podczas nauczania sesji ćwiczeń we wstępnym kursie programowania sprawiły, że znacznie lepiej rozumiałem kod w locie i symulowałem go w mojej głowie.
źródło
Na podstawie własnego doświadczenia jako nauczyciela. Powiedziałbym NIE .
Ponieważ, podczas gdy lepiej rozumiesz podstawy, ucząc dzieci i / lub nowicjuszy, nie wprowadzasz żadnych ulepszeń związanych z twoim zawodem.
Dlaczego to się dzieje ? - ponieważ programowanie rozwija się szybciej niż ludzie mogą się uczyć. Pojawiają się nowe języki i frameworki, nowe narzędzia, nowe koncepcje, nowy sprzęt. A profesjonalny programista MUSI znać swoją domenę. W przeciwnym razie nikt go nie będzie potrzebował.
Może chcesz powiedzieć - „ale może uczyć podstawowych algorytmów”, - i mówię do siebie - „ale powinno studiował je na uniwersytecie”.
Innym tematem jest rytm pracy. „Nauczyciele” są powolni, nie są przyzwyczajeni do szybkiego rozwiązywania rzeczywistych problemów w świecie rzeczywistym.
I wreszcie - nauczanie daje. Gdy chcesz uczyć - nie możesz się powstrzymać;) to tylko wezwanie od wewnątrz, nieustępliwa chęć dzielenia się wiedzą, zmniejszenia głupoty wokół ciebie, a ostatecznie uczynienia świata lepszym miejscem;)
źródło
TAK!
Louis E. Frenzel napisał o tym dokładnie kilka lat temu:
źródło
Nie bezpośrednio powiązane, ale ...
Widzę, że tak się dzieje przez cały czas w oddziale harcerskim mojego wnuka. Starsi harcerze myślą, że coś „wiedzą”, dopóki nie nauczą tego swoich juniorów. Nie sądzę, aby dynamika zmieniała się wiele bez względu na to, ile mamy lat i ile doświadczyliśmy.
źródło
Wiele odpowiedzi na to pytanie wskazuje, że nauczanie czegoś oznacza, że musisz się go najpierw nauczyć, a więc musisz stać się lepszy, aby móc uczyć. Powiedziałbym, że jest to prawie słuszne.
Jeśli jesteś odpowiedzialny za opracowywanie materiałów szkoleniowych , a następnie trzeba będzie zdobyć gruntowną wiedzę na temat przedmiotu. Uczenie się materiału na tym poziomie sprawi, że będziesz lepszy, zakładając, że musisz nauczyć się czegoś, czego jeszcze nie znasz.
Z drugiej strony, jeśli jesteś tylko marionetką czytającą materiały szkoleniowe przygotowane przez kogoś innego, prawdopodobnie możesz uciec bez znajomości lub zrozumienia tematu. Dotyczy to zwłaszcza kursów wprowadzających. Jeśli jesteś doświadczonym programistą prowadzącym zajęcia dla początkujących, czy naprawdę musisz się czegoś nauczyć?
źródło
Nie tylko nauczanie zwiększa twoją wiedzę i umiejętności programistyczne, ale także przydatne jest pisanie artykułów i samouczków dotyczących programowania. Jeśli potrafisz wyjaśnić temat innym w zrozumiały sposób, oznacza to, że znasz go i rozumiesz.
źródło
Myślę, że to zależy od tego, jak dobrze osobiście zdecydujesz się przygotować. Nie lubię robić z siebie głupka, więc kiedy uczę, przygotowuję się, piszę o wiele bardziej szczegółowo w swoich notatkach niż to, co zwykle wychowuję na zajęciach. W ten sposób czuję się bezpieczny, że poradzę sobie z większością pytań. Za każdym razem, gdy przygotowywałam się do zajęć, znajdowałam drobiazgi, o których do tej pory zapomniałam lub przeoczyłam. Projektowanie ćwiczeń może być szczególnie trudne.
Przygotowanie osób, które już są programistami, to cały dodatkowy wysiłek. Możesz spodziewać się, że niektórzy ludzie w klasie, którzy nienawidzą tego, że proszeni są o naukę Python vice ich ukochanego C # (lub cokolwiek innego). Będą kwestionować wszystko, co powiesz. Możesz mieć innych, którzy mają już wiedzę i będą zadawać zaawansowane pytania pierwszego dnia. W pierwszym przypadku upewnij się, że kontynuujesz temat i NIE zajmuj się różnicami między językami, chyba że klasa nie zachowuje się wrogo. Po prostu wróć do materiału, który zamierzasz pokryć. W drugim przypadku można odnieść się do wszystkich zaawansowanych pytań na później w klasie (dając ci czas na znalezienie odpowiedzi, jeśli jej nie znasz). To powinno dać ci pewność siebie. Zawsze przygotowuję trudniejsze ćwiczenia dla osób, które biorą udział w zajęciach, ponieważ muszą, ale już znają temat. Coś w rodzaju niezależnych badań dla łatwo znudzonych. (I są zaskoczeni, gdy wyciągam dla nich te zaawansowane ćwiczenia tematyczne, podczas gdy wszyscy mają trudności z ćwiczeniem, które wykonali w pięć minut!)
Jednak większość programistów lubi się uczyć i chętnie zacznie robić coś pożytecznego. Prawdopodobnie możesz utrzymać podstawy na minimalnym poziomie, tego rodzaju zajęcia nudzą się ćwiczeniami typu Hello World. Spraw, aby rzeczy były bardziej praktyczne i przydatne w biznesie. Możesz zaplanować objęcie większą ilością materiału doświadczeniem niż niedoświadczeni programiści, więc więcej przygotuj. Jeśli potrafisz dostosować ćwiczenia do rodzaju pracy, którą wykonają, jest to jeszcze lepsze.
Studenci mają niezwykłą umiejętność interpretacji wypowiedzi w unikalny sposób. Ich błędy mogą być rzeczami, których nigdy nie przyszło ci do głowy. Pomaganie im w naprawianiu błędów i wyjaśnianie, dlaczego są błędami, pomoże ci w recenzowaniu kodu!
źródło