Jak najlepiej wykorzystać edukację informatyczną

Większość współczesnych programistów kształciła się na uniwersytetach. Z biegiem czasu to się zmieni, ale obecnie jest tak, że dobrzy pracownicy w firmach IT nadal pochodzą z uczelni. W tym poście Stanislav Protasov, dyrektor ds. relacji uniwersyteckich firmy Acronis, opowiada o swojej wizji cech szkolenia uniwersyteckiego dla przyszłych programistów. Nauczyciele, uczniowie i osoby ich zatrudniające mogą nawet znaleźć przydatne wskazówki pod obniżką.

Jak najlepiej wykorzystać edukację informatyczną

Od 10 lat wykładam matematykę, algorytmy, języki programowania i uczenie maszynowe na różnych uczelniach. Dziś oprócz stanowiska w Acronis jestem także zastępcą kierownika katedry informatyki teoretycznej i stosowanej w MIPT. Z mojego doświadczenia pracy na dobrych rosyjskich (i nie tylko) uniwersytetach poczyniłem pewne obserwacje dotyczące przygotowania studentów na kierunkach informatycznych.

Zasada 30 sekund już nie działa

Jestem pewien, że spotkałeś się z zasadą 30 sekund, która mówi, że programista powinien zrozumieć cel funkcji po szybkim spojrzeniu na jej kod. Został wynaleziony dawno temu i od tego czasu pojawiło się wiele systemów operacyjnych, języków, sprzętu i algorytmów. Piszę kod od 12 lat, ale stosunkowo niedawno zobaczyłem kod źródłowy jednego produktu, który na pierwszy rzut oka wydał mi się magicznym zaklęciem. Dziś, jeśli nie jesteś zanurzony w tematyce, zasada 30 sekund przestaje działać. W przeciwnym razie nie tylko 30, ale także 300 sekund nie wystarczy, aby dowiedzieć się, co jest co.

Na przykład, jeśli chcesz napisać sterowniki, będziesz musiał zagłębić się w ten obszar i przeczytać tysiące linii określonego kodu. Dzięki takiemu podejściu do studiowania przedmiotu u specjalisty rozwija się „poczucie przepływu”. Jak w rapie, gdzie wyczucie dobrego rymu i odpowiedniego rytmu pojawia się bez szczególnego racjonalizacji. Podobnie dobrze wyszkolony programista może z łatwością rozpoznać nieefektywny lub po prostu zły kod bez wchodzenia w szczegółowe badania, gdzie nastąpiło naruszenie stylu lub zastosowano nieoptymalne podejście (ale to uczucie może być bardzo trudne do wyjaśnienia).

Specjalizacja i rosnąca złożoność powodują, że wykształcenie licencjackie nie daje już możliwości dogłębnego studiowania wszystkich dziedzin. Ale właśnie na tym poziomie edukacji trzeba nabrać perspektywy. Później, na studiach lub w pracy, będziesz musiał poświęcić trochę czasu na zanurzenie się w problematyce i specyfice przedmiotu, ucząc się slangu, języków programowania i kodu współpracowników, czytając artykuły i książki. Wydaje mi się, że tylko w ten sposób, przy pomocy uczelni, „podpompować poprzeczkę” dla przyszłych Specjaliści w kształcie litery T.

Jakiego języka programowania najlepiej uczyć na studiach?

Jak najlepiej wykorzystać edukację informatyczną
Ku mojej radości nauczyciele akademiccy przestali już szukać poprawnej odpowiedzi na pytanie: „W jakim języku najlepiej programować?” Debata na temat tego, co jest lepsze – C# czy Java, Delphi czy C++ – praktycznie zniknęła. Pojawienie się wielu nowych języków programowania i nagromadzenie doświadczenia pedagogicznego doprowadziło do ugruntowanego zrozumienia w środowisku akademickim: każdy język ma swoją niszę.

Problem nauczania przy użyciu tego czy innego języka programowania przestał być priorytetem. Nie ma znaczenia, w jakim języku prowadzony jest kurs. Najważniejsze jest wystarczająca wyrazistość języka. Książka "Sztuka programowania wieloprocesorowego” jest dobrą ilustracją tej obserwacji. W tym już klasycznym wydaniu wszystkie przykłady są zaprezentowane w Javie – języku bez wskaźników, ale z Garbage Collectorem. Mało kto zaprzeczyłby, że Java jest daleka od optymalnego wyboru do pisania wysokowydajnego kodu równoległego. Ale język był odpowiedni do wyjaśnienia pojęć przedstawionych w książce. Inny przykład - klasyczny kurs uczenia maszynowego Andrew Nna, wykładał w Matlabie w środowisku Octave. Dziś mógłbyś wybrać inny język programowania, ale jakie to naprawdę robi różnicę, jeśli pomysły i podejścia są ważne?

Bardziej praktyczne i bliższe rzeczywistości

Jednocześnie w ostatnich latach na uniwersytetach pojawiło się znacznie więcej praktyków. O ile wcześniej programy rosyjskich uniwersytetów były aktywnie krytykowane za oderwanie od rzeczywistości, dziś nie można tego samego powiedzieć o edukacji informatycznej. 10 lat temu na uczelniach nie było prawie żadnych nauczycieli z prawdziwym doświadczeniem branżowym. Obecnie coraz częściej zajęcia na wydziale specjalizacyjnym prowadzą nie etatowi nauczyciele informatyki, ale praktycy informatyki, którzy w czasie wolnym od swojej głównej pracy prowadzą jedynie 1-2 przedmioty. Takie podejście jest uzasadnione z punktu widzenia wysokiej jakości szkolenia personelu, aktualizacji kursów i oczywiście poszukiwania potencjalnych pracowników w firmie. Chyba nie zdradzę tajemnicy, mówiąc, że wspieramy wydział podstawowy w MIPT i budujemy relacje z innymi uczelniami, m.in. po to, aby przygotować studentów do rozpoczęcia kariery w Acronis.

Matematyk czy programista?

Jak najlepiej wykorzystać edukację informatyczną
Święte wojny, które wcześniej toczyły się wokół języków programowania, obecnie zmierzają w kierunku filozoficznym. Teraz tak zwani „programiści” i „matematycy” kłócą się ze sobą. W zasadzie szkoły te można by podzielić na dwa programy edukacyjne, ale branża nadal słabo radzi sobie z oddzielaniem takich subtelności, a od uniwersytetu do uniwersytetu mamy podobne kształcenie z nieco innym ukierunkowaniem. Oznacza to, że zarówno student, jak i firma, w której będzie nadal pracował, będą musieli uzupełnić puzzle wiedzy o brakujące elementy.

Pojawienie się na uniwersytetach praktyków piszących kod przemysłowy w różnych językach zapewnia studentom lepsze umiejętności rozwojowe. Dobrze zaznajomieni z implementacjami standardowych bibliotek, frameworków i technik programowania, praktykujący programiści zaszczepiają w studentach chęć pisania dobrego kodu, aby zrobić to szybko i sprawnie.

Ta przydatna umiejętność czasami jednak prowadzi do pojawienia się tych, którzy lubią wymyślać koło na nowo. Studenci programowania myślą w ten sposób: „Czy powinienem napisać kolejne 200 linii dobrego kodu, który rozwiąże problem bezpośrednio?”

Nauczyciele posiadający klasyczne wykształcenie matematyczne (np. Wydział Matematyki lub Matematyki Stosowanej) często pracują w środowisku pseudonaukowym lub zajmują się modelowaniem i analizą danych. „Matematycy” inaczej postrzegają problemy z zakresu informatyki. Operują przede wszystkim nie kodem, ale algorytmami, twierdzeniami i modelami formalnymi. Ważną zaletą podejścia matematycznego jest jasne, podstawowe zrozumienie tego, co można, a czego nie można rozwiązać. I jak to rozwiązać.

W związku z tym nauczyciele matematyki mówią o programowaniu ze szczególnym naciskiem na teorię. Studenci wywodzący się z „matematyków” często wymyślają rozwiązania przemyślane i teoretycznie lepsze, ale zazwyczaj nieoptymalne z językowego punktu widzenia i często po prostu niechlujnie napisane. Taki uczeń wierzy, że jego głównym celem jest w zasadzie wykazanie umiejętności rozwiązywania takich problemów. Ale wdrożenie może być kiepskie.

Dzieci, które w szkole lub w pierwszych latach wychowywały się na programistów, przywożą ze sobą „bardzo piękny rower”, który jednak zwykle nie działa zbyt efektywnie asymptotycznie. Wręcz przeciwnie, nie stawiają sobie zadania głębokiego teoretyzowania i sięgania do podręczników w poszukiwaniu optymalnych rozwiązań, preferując piękny kod.

Na różnych uczelniach podczas rozmów ze studentami zazwyczaj sprawdzam, jaka „szkoła” leży u podstaw jego edukacji. I prawie nigdy nie spotkałem się z idealną równowagą w edukacji podstawowej. Jako dziecko w moim mieście można było przygotowywać się do olimpiad matematycznych, ale nie było klubów programistycznych. Teraz w klubach dzieci uczą się programowania w „modnym” Go i Pythonie. Dlatego nawet na poziomie rekrutacji na uniwersytety istnieją różnice w podejściu. Uważam, że ważne jest, aby obie umiejętności utrzymać na studiach, w przeciwnym razie do pracy w firmie przyjdzie albo specjalista z niewystarczającą bazą teoretyczną, albo osoba, która się nie nauczyła i nie chce pisać dobrego kodu.

Jak „podkręcić poprzeczkę” na przyszłość Specjaliści w kształcie litery T?

Jak najlepiej wykorzystać edukację informatyczną
Wiadomo, że w takich warunkach uczeń po prostu wybiera to, co mu się najbardziej podoba. Nauczyciel po prostu przekazuje punkt widzenia, który jest mu bliższy. Ale każdy na tym skorzysta, jeśli kod będzie pięknie napisany, a z punktu widzenia algorytmów wszystko będzie jasne, rozsądne i skuteczne.

  • Horyzonty IT. Absolwent studiów licencjackich na kierunku Informatyka to gotowy specjalista z rozwiniętym spojrzeniem technicznym, który prawdopodobnie wybrał swój profil. Ale w młodszej klasie nie wiemy, co będzie robił. Może zająć się nauką lub analityką, albo odwrotnie, może codziennie pisać ogromną ilość kodu. Dlatego należy pokazać uczniowi wszystkie aspekty pracy w branży IT i zapoznać się ze wszystkimi narzędziami. Idealnie byłoby, gdyby nauczyciele zajęć teoretycznych wykazali związek z praktyką (i odwrotnie).
  • Punkt wzrostu. W interesie samego ucznia leży, aby nie popadać w skrajności. Zrozumienie, czy jesteś „matematykiem”, czy „programistą”, nie jest trudne. Wystarczy posłuchać pierwszego impulsu przy rozwiązywaniu problemu: co chcesz zrobić - zajrzeć do podręcznika w poszukiwaniu optymalnego podejścia lub napisać kilka funkcji, które na pewno przydadzą się później? Na tej podstawie możesz zbudować dalszą, uzupełniającą ścieżkę swojej nauki.
  • Alternatywne źródła wiedzy. Zdarza się, że program jest dobrze wyważony, ale „Programowania systemów” i „Algorytmów” uczą zupełnie inne osoby, a niektórzy uczniowie są bliżej pierwszego nauczyciela, a inni – drugiego. Ale nawet jeśli nie lubisz profesora, nie jest to powód, aby zaniedbywać niektóre przedmioty na rzecz innych. Sami licencjaci są zainteresowani odnalezieniem chęci do pracy ze źródłami wiedzy i w żadnym wypadku nie ufają radykalnym opiniom w stylu „matematyka jest królową nauk, najważniejsza jest znajomość algorytmów” czy „dobry kod rekompensuje wszystko inne”.

Wiedzę teoretyczną możesz pogłębiać sięgając po literaturę specjalistyczną i kursy online. Swoje umiejętności w językach programowania możesz doskonalić na Courserze, Udacity czy Stepiku, gdzie prezentowanych jest wiele różnych kursów. Ponadto uczniowie często zaczynają oglądać hardcorowe kursy językowe, jeśli czują, że nauczyciel algorytmów dobrze zna matematykę, ale nie potrafi odpowiedzieć na złożone pytania dotyczące implementacji. Nie każdy się ze mną zgodzi, ale w mojej praktyce sprawdziło się to doskonale specjalizacja w C++ od Yandex, w którym sekwencyjnie analizowane są coraz bardziej złożone cechy języka. Ogólnie rzecz biorąc, wybieraj kurs z wysokimi ocenami renomowanych firm lub uniwersytetów.

Umiejętności miękkie

Jak najlepiej wykorzystać edukację informatyczną
Przychodząc z uniwersytetu do pracy w dowolnej firmie, od start-upu po dużą korporację, studenci nawet z najlepszych uniwersytetów są słabo przystosowani do prawdziwego środowiska pracy. Faktem jest, że dziś uniwersytety bardzo „opiekują się” studentami. Nawet po opuszczeniu wielu zajęć, nieprzygotowaniu się do kolokwium i zaliczeń na czas, zaspaniu czy spóźnieniu na egzamin, każdy może zdać i zdać go ponownie – a na koniec i tak otrzymać dyplom.

Jednak dziś istnieją wszelkie warunki, aby przygotować uczniów do dorosłego życia i samodzielnej aktywności zawodowej. Będą musieli nie tylko programować, ale także komunikować się. I tego też trzeba uczyć. Uniwersytety oferują różne formaty rozwijania tych umiejętności, ale niestety często nie poświęca się im wystarczającej uwagi. Mamy jednak wiele możliwości zdobycia umiejętności efektywnej pracy zespołowej.

  • Pisemna komunikacja biznesowa. Niestety większość absolwentów opuszczających uczelnię nie ma pojęcia o etykiecie korespondencyjnej. Specyfika komunikacji w komunikatorach internetowych polega na wymianie wiadomości w dzień i w nocy oraz stosowaniu stylu konwersacyjnego i nieformalnego słownictwa. Natomiast mowę pisemną można byłoby ćwiczyć w trakcie komunikacji studenta z katedrą i uczelnią.

    W praktyce menedżerowie często stają przed koniecznością rozłożenia dużego projektu na mniejsze zadania. Aby to zrobić, musisz jasno opisać każde zadanie i jego komponenty, aby młodsi programiści zrozumieli, czego się od nich wymaga. Źle zdefiniowane zadanie często prowadzi do konieczności jego przerobienia, dlatego doświadczenie w komunikacji pisemnej pomaga absolwentom pracować w rozproszonych zespołach.

  • Pisemna prezentacja wyników Twojej pracy. Aby zaprezentować swoje projekty edukacyjne, maturzyści mogą pisać posty na Habr, artykuły naukowe, a także po prostu raporty. Możliwości jest ku temu wiele – na niektórych uczelniach zajęcia dydaktyczne rozpoczynają się już na drugim roku. Można też zastosować eseje jako formę kontroli – zazwyczaj są one formą bliższą artykułowi dziennikarskiemu. Podejście to zostało już wdrożone w Państwowej Wyższej Szkole Ekonomicznej.

    Jeśli firma stosuje elastyczne podejście do rozwoju, musi prezentować efekty swojej pracy w mniejszych porcjach, ale częściej. Aby to zrobić, ważna jest umiejętność krótkiego przekazania wyników pracy jednego specjalisty lub całego zespołu. Ponadto wiele firm przeprowadza obecnie „przeglądy” - roczne lub półroczne. Pracownicy omawiają wyniki i perspektywy pracy. Pomyślna recenzja to główny powód rozwoju kariery, premii na przykład w Microsoft, Acronis lub Yandex. Tak, potrafisz dobrze programować, ale „siedząc w kącie” nawet fajny specjalista zawsze przegra z kimś, kto wie, jak dobrze zaprezentować swój sukces.

  • Academic Writing. Na szczególną uwagę zasługuje twórczość naukowa. Przydatne jest zapoznanie się studentów z zasadami pisania tekstów naukowych, posługiwania się argumentacją, wyszukiwania informacji w różnych źródłach i formatowania odniesień do tych źródeł. Wskazane jest, aby robić to w języku angielskim, gdyż dobrych tekstów w międzynarodowym środowisku akademickim jest znacznie więcej, a dla różnych dyscyplin istnieją już ustalone szablony prezentacji wyników naukowych. Oczywiście przy przygotowywaniu publikacji w języku rosyjskim potrzebne są również umiejętności pisania akademickiego, ale przykładów dobrych współczesnych artykułów w języku angielskim jest znacznie mniej. Umiejętności te można nabyć poprzez odpowiedni kurs, który obecnie znajduje się w wielu programach edukacyjnych.
  • Prowadzenie spotkań. Większość uczniów nie wie, jak przygotowywać się do spotkań, sporządzać protokoły i przetwarzać dane. Jeśli jednak rozwiniemy tę umiejętność na studiach, na przykład poprzez udział w projektach zespołowych, możemy uniknąć marnowania czasu w miejscu pracy. Wymaga to nadzoru nad pracą projektową uczniów, aby nauczyć ich efektywnego prowadzenia spotkań. W praktyce każdą korporację kosztuje to mnóstwo pieniędzy – w końcu jeśli kilka osób otrzymujących dużą pensję spędza godzinę pracy na wiecu, chcesz, żeby był z tego odpowiedni zwrot.
  • Przemówienie publiczne. Wielu studentów staje przed koniecznością wypowiadania się publicznie dopiero podczas obrony pracy dyplomowej. I nie każdy jest na to gotowy. Widziałem wielu uczniów, którzy:
    • stać tyłem do publiczności,
    • kołysząc się, próbując wprowadzić komisję w trans,
    • łamać długopisy, ołówki i wskaźniki,
    • chodzenie w kółko
    • spójrz na podłogę.

    Jest to normalne, gdy dana osoba występuje po raz pierwszy. Ale pracę z tym stresem trzeba zacząć wcześniej – broniąc swoich zajęć w przyjaznej atmosferze, wśród kolegów z klasy.

    Ponadto standardową praktyką w korporacjach jest dawanie pracownikowi możliwości zaproponowania pomysłu i otrzymania na jego rzecz finansowania, stanowiska lub dedykowanego projektu. Ale jeśli się nad tym zastanowić, jest to ta sama ochrona zajęć, tylko na wyższym poziomie. Dlaczego nie ćwiczyć tak przydatnych umiejętności zawodowych podczas studiów?

Co mnie ominęło?

Jednym z powodów napisania tego posta był artykuł pt. opublikowane na stronie internetowej Uniwersytetu Państwowego w Tiumeniu. Autor artykułu skupia się jedynie na niedociągnięciach uczniów rosyjskich, dostrzeżonych przez zagranicznych nauczycieli. Praktyka mojego nauczania na różnych uniwersytetach sugeruje, że rosyjska szkoła i szkolnictwo wyższe stanowią dobrą podstawę. Rosyjscy studenci są obeznani z matematyką i algorytmami i łatwiej jest z nimi budować profesjonalną komunikację.

Przeciwnie, w przypadku uczniów zagranicznych oczekiwania wobec nauczyciela języka rosyjskiego mogą czasami być zbyt wysokie. Przykładowo, na poziomie podstawowego nauczania matematyki, indyjscy studenci, których spotkałam, są podobni do rosyjskich. Czasami jednak po ukończeniu studiów licencjackich brakuje im specjalistycznej wiedzy. Dobrzy uczniowie europejscy prawdopodobnie mają słabsze przygotowanie matematyczne na poziomie szkolnym.

A jeśli studiujesz lub pracujesz na uniwersytecie, możesz teraz popracować nad umiejętnościami komunikacyjnymi (własnymi lub swoich studentów), poszerzyć swoją bazę podstawową i poćwiczyć programowanie. W tym celu rosyjski system edukacji zapewnia wszystkie możliwości - wystarczy je odpowiednio wykorzystać.

Będzie mi miło, jeśli w komentarzu do posta udostępnisz linki do kursów i metod pomagających wyrównywać równowagę w edukacji, a także innych sposobów doskonalenia kompetencji miękkich podczas studiów na uczelni.

Źródło: www.habr.com

Dodaj komentarz