Chcę porozmawiać z Wami o tym, dlaczego częściej naprawiamy hydraulikę, niż piszemy o niej prace dyplomowe, o różnych podejściach do nauki programowania oraz o tym, jak próbujemy zastosować jedno z nich w naszym nowym produkcie Hyperskill.
Jeśli nie lubisz długich wstępów, przejdź od razu do akapitu o programowaniu. Ale tak będzie mniej zabawnie.
Liryczne dygresje
Załóżmy, że mamy pewną pannę Maszę. Dziś Masza zamierzała umyć sobie owoce i spokojnie obejrzeć film, ale oto nieszczęście: niespodziewanie odkryła, że zlew w kuchni jest zapchany. Co z tym zrobić - na razie nie wiadomo. Można odłożyć ten problem na czas nieokreślony, ale czas wolny jest teraz, więc Masza postanawia zająć się problemem od razu. Zdrowy rozsądek podpowiada dwie opcje: a) wezwanie hydraulika b) samodzielne poradzanie sobie. Panna wybiera drugą opcję i zabiera się za studiowanie instrukcji na YouTube. Zgodnie z radą użytkownika Vasya_the_plumber, Masza zagląda pod zlew i widzi tam wijącą się plastikową rurę z kilkoma częściami. Dziewczyna ostrożnie odkręca jeden element u podstawy zlewu, ale nic nie znajduje. Kawałek rury poniżej okazuje się całkowicie zapchany nieznaną substancją, a nawet znaleforka na stole nie radzi sobie z zatorami. Eksperci z internetu dają niepokojące prognozy: część trzeba będzie wymienić. Na mapie Masza znajduje najbliższy sklep, zabiera ze sobą feralny kawałek rury i kupuje taki sam, ale nowy. Na radę sprzedawcy, Masza zabiera też nowe sitko, na wszelki wypadek. Quest ukończony: zlew znowu działa jak należy, a jego główna bohaterka, w międzyczasie, dowiedziała się następującego:
- Rury pod zlewem można samodzielnie odkręcić i przykręcić;
- Najbliższy sklep hydrauliczny znajduje się półtora kilometra od mieszkania Maszy.
Prawdopodobnie Masza nawet nie zauważyła, ile nowego się nauczyła, ponieważ martwiła się własnym komfortem w przyszłości, a przy okazji o filmie i umytym jabłku. Następnym razem, gdy pojawi się podobny problem, dziewczyna rozwiąże go znacznie szybciej. W rzeczywistości Masza nie tylko przywracała świat do normalnego stanu; ona się uczyła indukcyjnie, czyli na podstawie przypadków, oraz praktycznie, czyli robiąc rzeczy, a nie studiując je szczegółowo i z wyprzedzeniem.
Wszystko mogło potoczyć się inaczej. Załóżmy, że Masha siedzi wieczorem w fotelu i nagle zdaje sobie sprawę, że moralnie i fizycznie nie jest gotowa na zator w zlewie. Szybko zapisuje się do akademii hydraulików, studiując rodzaje zlewów, rur i możliwych połączeń, klasyfikację problemów hydraulicznych oraz możliwe opcje ich usunięcia. Masha nie śpi w nocy, zapamiętując terminy i nazwy. Może nawet pisze pracę doktorską z teoretycznej hydrauliki, w której rozważa o gumowych uszczelkach. W końcu, otrzymując certyfikat, Masha z dumą ocenia kuchnię, mając pełne przekonanie, że teraz nawet najmniejszy problem z zlewem zostanie rozwiązany przy jednym skinieniu palca. W takim scenariuszu dziewczyna uczyła się dedukcyjnie, przechodząc od ogólnego do szczegółowego, i orientowała się raczej na teorii..
Które z podejść będzie lepsze? W przypadku zlewu i zatoru — pierwsze, i oto dlaczego:
- Jeśli ważne jest tylko działające zlew, to wystarczy znać tylko to, co dotyczy właśnie tej sfery. Kiedy Masha zrozumie, że brakuje jej wiedzy, na pewno znajdzie sposób, aby dowiedzieć się więcej.
- Encyklopedyczna wiedza może się nie włączyć w realnej sytuacji, ponieważ nawyk nie został wykształcony. Aby nauczyć się sekwencji działań, ma sens nie przeczytać o nich, a wykonać.
Zostawmy już w spokoju biedną Mashę i przejdźmy do procesu uczenia się jako takiego.
Programowanie: uczyć się czy robić?
Przywykliśmy myśleć, że aby rozwinąć się i stać się ekspertem w nieznanej dziedzinie, przede wszystkim trzeba rozpocząć studia lub przynajmniej zapisać się na kursy. Pilnie słuchamy tego, co mówią, wykonujemy zadania. Kiedy jednak w ręku znajduje się wymarzone dyplom lub certyfikat, natychmiast czujemy się zagubieni, ponieważ tak naprawdę nie zrozumieliśmy, po co tyle informacji i jak dokładnie je zastosować. Nie stanowi to problemu, jeśli dalsze plany obejmują pisanie prac naukowych i uczestniczenie w konferencjach. W przeciwnym razie warto dążyć do umiejętności, czyli robić i znowu robić konkretne rzeczy, próbować i popełniać błędy, aby na długo zapamiętać, jak lepiej nie postępować.
Jedną z dziedzin, w których „wprawna ręka” lub „oko diamentowe” idą w parze z szeroką perspektywą, jest programowanie. Rozmawiając z doświadczonymi programistami, usłyszysz wspaniałe historie, w których osoba od najmłodszych lat zajmowała się matematyką/fizyką/nauką, a następnie się znudziła i przeszła do back-endu. Znajdą się również programiści bez wyższego wykształcenia! W programiście przede wszystkim ceni się nie certyfikat, nie dyplom, a ilość i jakość napisanych programów, skryptów i stron internetowych.
„Ale poczekaj!”, zaprotestujesz, „Brzmi to pięknie — weź i rób! Nie mogę po prostu napisać sobie programu, jeśli wcześniej nie programowałem(am)! Ważne jest dla mnie, żeby zrozumieć, gdzie pisać, jak w ogóle rozmawiać w języku programowania z kompilatorem. To nie jest tak proste, jak znalezienie numeru telefonu hydraulika w Google.”
Jest w tym gorzka prawda. Jeden nieznany aspekt ciągnie za sobą drugi, ten z kolei — trzeci, i wkrótce ten proces zamienia się w pokaz magika, który wciąż wyciąga powiązane chusteczki i nie może ich wydobyć z cylindra. Proces, szczerze mówiąc, jest nieprzyjemny; przy piątej „chusteczce” już wydaje się, że głębokość niewiedzy zbliża się do Rowu Mariańskiego. Alternatywą dla tego są te same wykłady o 10 typach zmiennych, 3 typach pętli i 150 potencjalnie przydatnych bibliotek. To smutne.
Hyperskill: budowaliśmy, budowaliśmy i w końcu zbudowaliśmy.
Długo myśleliśmy nad tym problemem. O tym, jak długo myśleliśmy, dobitnie świadczy data ostatniego posta na naszym blogu. Po wszystkich sporach i próbach wdrożenia nowego podejścia na Stepik, powstał... inny serwis. Możliwe, że już o nim słyszałeś jako o części JetBrains Academy. Nazwaliśmy go Hyperskill, wprowadziliśmy do niego uczenie oparte na projektach, powiązaliśmy z bazą wiedzy o Javie i zyskaliśmy wsparcie zespołu EduTools. A teraz szczegóły.
Konkretne cele. Oferujemy „menu” projektów, tj. programów, które możesz z naszą pomocą napisać. Wśród nich znajdują się kółko-krzyżyk, osobisty asystent, blockchain, wyszukiwarka itp. Projekty składają się z 5-6 etapów; wynikiem każdego etapu jest gotowy program. „Po co więc pozostałe etapy, jeśli na pierwszym już wszystko wyszło?” Dziękuję za pytanie. Z każdym krokiem program staje się bardziej funkcjonalny lub szybszy. Na początku kod zajmuje 10 linii, na koniec może nie mieścić się nawet w 500.
Trochę teorii. Nie sposób usiąść i, nie znając ani słowa o programowaniu, napisać nawet Hello World. Dlatego na każdym etapie projektu zobaczysz, jakie teoretyczne podstawy musisz opanować i, co najważniejsze, skąd je wziąć. Podstawy są również dostępne na Hyperskill w sekcji „Mapa wiedzy” (Knowledge Map). Jeśli na pierwszym etapie projektu uczniowie nie muszą czytać danych z pliku, mogą nie umieć tego zrobić później. Nauczą się tego sami, dla ogólnego rozwoju, lub będzie to potrzebne na następnym etapie.
Mapa wiedzy. Widoczna jest na niej, które tematy już opanowałeś i jak są ze sobą powiązane. Otwórz dowolny interesujący temat. Możesz go przejrzeć, ale zalecamy wykonanie także kilku zadań, aby upewnić się, że informacje dobrze się zakorzeniły. Na początku platforma wyrzuci ci testy, a po nich - kilka zadań programistycznych. Jeśli kod się kompiluje i przechodzi testy, porównaj go z przykładowym rozwiązaniem (reference solution), czasami to pomaga odkryć bardziej optymalny sposób realizacji. Lub upewnić się, że twoje rozwiązanie już jest świetne.
Nic zbędnego. Czekamy zarówno na „zielonych” użytkowników, jak i doświadczonych programistów. Jeśli już pisałeś programy, nie martw się, nie zmusimy cię znów liczyć 2+2 ani odwracać linijki. Aby od razu trafić na odpowiedni poziom, podczas rejestracji określ, z czym już się zapoznałeś, i wybierz trudniejszy projekt. Nie bój się przecenić swoich umiejętności: jeśli zajdzie potrzeba, zawsze możesz wrócić do zapomnianego tematu w mapie wiedzy.
Narzędzia. To świetne - pisać małe fragmenty kodu w specjalnym oknie na stronie, ale prawdziwe programowanie zaczyna się od pracy w środowisku deweloperskim (Integrated Development EŚrodowisko). Doświadczeni programiści wiedzą nie tylko, jak pisać kod, ale również, jak konstruować interfejs graficzny, zbierać różne pliki w projekcie, korzystać z dodatkowych narzędzi do programowania, a część tych procesów bierze na siebie IDE. Dlaczego nie nauczyć się tych umiejętności, podczas gdy opanowujesz programowanie? Tutaj z pomocą przychodzi JetBrains i specjalna wersja IntelliJ IDEA Community Educational z wbudowanym wtyczką EduTools. W takim IDE można przechodzić kursy, sprawdzać rozwiązane zadania i podglądać wskazówki dotyczące projektu, jeśli coś zapomniałeś. Nie martw się, jeśli po raz pierwszy słyszysz słowo „wtyczka” lub „IDE”: wyjaśnimy, co to jest i jak ją zainstalować na komputerze lub laptopie bez większych trudności. Zajmij się teorią, a następnie przejdź do IDE i ukończ kolejny etap projektu właśnie tam.
Termin Ich nie ma! Kim jesteśmy, aby stukać w głowę i wskazywać, w jakim tempie powinieneś pisać program. Kiedy lubisz pisać kod i chcesz go dokończyć, kończysz go dzisiaj lub jutro. Zajmuj się programowaniem z przyjemnością.
Błędy. Wszyscy je popełniają, popełnij je i ty na jednym z etapów projektu, a wtedy ten etap nie przejdzie automatycznych testów. Cóż, będziesz musiał samodzielnie zrozumieć, co poszło nie tak. Moglibyśmy powiedzieć, gdzie jest błąd, ale czy to nauczy cię pisać kod uważnie? Czytaj wskazówki od IDEA lub teoretyczny temat o błędach, a gdy program w końcu zadziała, prawdopodobnie będziesz czuć zastrzyk dopaminy.
Wizualny rezultat. Więc ukończyłeś swój pierwszy projekt, co dalej? Ciesz się owocami swojej pracy! Zagraj z przyjaciółmi w kółko-krzyżyk, przy okazji pochwal się osiągnięciami. Prześlij projekt na GitHub, aby pokazać przyszłemu pracodawcy, napisz opis samodzielnie, wskaź w nim wiedzę, którą zastosowałeś. 4-5 trudnych projektów, a oto, skromne portfolio dla początkującego programisty gotowe.
Możliwość rozwoju. Załóżmy, że przeglądasz Hyperskill i nie widzisz tam jakiejś ważnej tematyki lub przydatnego projektu. Daj nam znać! Jeśli twoje tło jest szersze i bogatsze niż mapa wiedzy, napisz do nas w formularzu. Nasz zespół podzieli się z Tobą własnymi wskazówkami i trikami, więc chętnie pomożemy Ci przekształcić Twoją wiedzę w przydatne treści zrozumiałe dla użytkowników w różnym wieku i na różnych poziomach. Może nawet zapłacimy, ale to jeszcze niepewne.
Witamy: Wpadnij, zobacz, spróbuj, zasugeruj, chwal i krytykuj. My również uczymy się, jak uczyć Ciebie.
Źródło: habr.com
