Kiedy postanowiłam, że z humanistki zostanę programistką, nie miałam dokładnego pojęcia o tym, czym jest programowanie. Z perspektywy czasu to nawet wydaje mi się, że miałam dużo szczęścia w tym, że postawiłam na front-end, w którym się odnalazłam i bardzo mi się podoba. A miałam o nim dość ogólne pojęcie. Dobrze, że JavaScript okazał się być moim przyjacielem (przynajmniej w większości przypadków 😉 ). W dzisiejszym artykule więc chciałam napisać o kilku sprawach, o których chciałabym wiedzieć, zanim zaczęłam programować.
Programowanie to nie jest nadprzyrodzona umiejętność
Wydawało mi się kiedyś, że programowanie to jakaś wiedza tajemna, którą posiąść mogą tylko nieliczni. I to tacy, którzy od dziecka się nią zajmują. A to wcale tak nie jest. To umiejętność, jak każda inna. Jeśli poświęcimy odpowiednią ilość czasu, jesteśmy w stanie się jej nauczyć. Nie twierdzę, że każdy może programować. Ale każdy może spróbować. Uważam, że fajnym zobrazowaniem tego jest przyrównanie programowania na przykład do umiejętności robienia na drutach. Jeśli się nie ma o tym pojęcia, wykonanie skomplikowanego wzoru wydaje się być czarną magią. Jeśli by jednak usiąść nad tym, rozpracować poszczególne ruchy i dużo ćwiczyć – uda nam się zrobić coś na drutach. I choć każdy może wziąć do ręki druty i zacząć się uczyć, jednym to podpasuje, innym nie. Jednym będzie dobrze szło od razu i będą w mig robić coraz bardziej skomplikowane wzory, a inni utkną na najprostszym i trudno im będzie pójść dalej. I właśnie tak samo jest z kodowaniem. Trzeba poświęcić na nie dużo czasu, mieć zapał i chęć do nauki, a także w pewnym sensie je poczuć. Wiadomo, że jak czujemy tzw. flow, to chętniej się za coś bierzemy.
Matematyka i fizyka nie są niezbędne do nauki
Kolejny mit, w który mocno wierzyłam. Wydawało mi się, że programowanie jest nierozerwalne związane z matematyką i fizyką. I że skoro nie miałam tych przedmiotów na studiach, to nie mam co nawet próbować swoich sił w kodowaniu. Nie przeczę, na pewno znajomość przedmiotów ścisłych wiele ułatwia w programowaniu. Natomiast o wiele bardziej liczy się w nim umiejętność logicznego myślenia, sposób podchodzenia do problemów i szukania rozwiązań. Chcę przy tym zaznaczyć, że odnoszę się tutaj do front-endu i do programowania w JavaScripcie. Tutaj nie musze używać matematyki i fizyki. Programowanie stron internetowych to jednak tylko malutka część programowania w ogóle i na pewno są języki i projekty, których specyfika i poziom zaawansowania wymaga dobrej znajomości matematyki i fizyki. Jeśli jednak chcecie spróbować swoich sił w kodowaniu, a nie mieliście z matematyką do czynienia od liceum, nie ma się co przejmować. W takim wypadku – po prostu zacznijcie się uczyć, a sami zobaczycie, że znajomość całek nie jest do tego niezbędna 😉
Materiały do nauki nie są najważniejsze
Pewnie się zastanawiacie, co może być ważniejsze od materiałów do nauki programowania? Otóż – systematyczność i zapał. Mnogość dostępnym kursów, stron, grup i książek, może być przytłaczająca. Ja na początku chciałam zrobić dosłownie każdy kurs z HTML i CSS, na jaki trafiłam. Skończyło się to tak, że zaczęłam 5 różnych kursów, a w każdym z nim udało mi się przerobić jedynie podstawy, ktore oczywiście się wszędzie pokrywały. I wtedy zdecydowałam, że po prostu robię jeden kurs, nieważne który, ale robię go do końca. I to była dobra decyzja, dlatego Was uczulam – ważniejsze od tego, z czego się uczysz, jest to, jak się uczysz. Czyli systematyczność przede wszystkim. Więcej o tym, jak planować naukę pisałam tutaj. A jeśli chcecie poczytać, od czego zacząć, odsyłam do tego wpisu.
Zawsze znajdzie się ktoś, kto powie, że nie jesteś (i nigdy nie będziesz) prawdziwym programistą
Usłyszałam wiele pozytywnych słów na temat mojego przebranżowienia. Niestety, usłyszałam też trochę tych złych. I nauczyłam się, że trzeba po prostu robić swoje i nie przejmować się tym, co myślą inni. Zdarzyło mi się spotkać z opiniami, że nigdy nie będę traktowana tak jak osoby, które skończyły informatykę, że nie mam co liczyć na podobne oferty pracy. Co bardzo ciekawe, większość tego typu opinii wygłaszały osoby, które w ogóle nie zajmowały się programowaniem. Podczas wyzwania Programuj, dziewczyno pisało do mnie wiele dziewczyn, które dziękowały, że pokazuję, że można się przebranżowić i zacząć pracę w innym zawodzie. Wiele z nim pisało, że też o tym myślały, ale znajomi/koledzy/rodzina powiedzieli, że to nie ma sensu, bo to i tak się nie uda. Uważam, że naprawdę wystarczy robić swoje. I próbować. Lepiej zaryzykować porażkę, niż żałować, że nie podjęło się żadnego działania.
Nie trzeba umieć wszystkiego na pamięć
Może Was to zdziwi, ale wyobrażałam sobie, że programista siada i po prostu pisze. Z głowy. Teraz wiem, że to wygląda zupełnie inaczej. Na porządku dziennym jest korzystanie z dokumentacji, Stack Overflow czy rady innych osób w zespole. Oczywiście, sama po sobie widzę, że powtarzalne elementy łatwo się zapamiętuje i nie muszę już sprawdzać składni jakichś podstawowych funkcji, ale nie zmuszam się do zapamiętywania. Zakładam, że jak samo mi coś wejdzie do głowy, to fajnie, ale jak nie, to po prostu sprawdzę dokumentację. Ilość wiadomości, jakie musiałabym przyjąć, jeśli chciałabym się uczyć wszystkiego na pamięć, jest tak wielka, że pewnie nie miałabym potem miejsca na żadne inne informacje 😉 Selekcja przyjmowanej wiedzy jest wiec konieczna.
Twój kod (prawie na pewno) nie zadziała za pierwszym razem
Jestem pefekcjonistką. Lubię jak wszystko działa tak, jak powinno. A programowanie mocno ćwiczy moją umiejętność akceptacji faktu, że nie zawsze jest tak, jak powinno. Nie raz miałam tak, że napisałam kod, wydawało mi się, że zgodnie z wytycznymi czy z dokumentacją, dumna patrzyłam na rezultat – a tutaj klapa. Nie działa. I głowiłam się, co ja takiego zrobiłam? Dlaczego to nie działa? Teraz wiem, że nie ma co się głowić. Trzeba po prostu przejrzeć kod, poszukać błędu, napisać coś inaczej. To się zdarza na porządku dziennym. Prawie na pewno kod nie zadziała od razu. Trzeba analizować, kombinować. Na tym właśnie polega programowanie. Naprawdę bardzo dobrze uczy pokory 😉 I tutaj mamy różnicę, jeśli chodzi o język obcy i język programowania. Bardzo często sama przyrównuję naukę języka obcego do nauki kodowania. Ale nie jest to dokładnie to samo. Jeśli do obcokrajowca powiemy zdaniem z błędem gramatycznym, pewnie i tak nas zrozumie. Program niestety nie. On nie domyśli się, co mieliśmy na myśli. Nie zignoruje literówki czy braku średnika. I wtedy naszym zadaniem jest odszukanie tego, co mu nie pasuje i naprawa. Jak zadziała – super. Ruszamy dalej, piszemy kolejną część, która pewnie znowu nie zadziała od razu. Szukamy więc błędu. Naprawiamy. I tak w kółko.
A czy Wam coś jeszcze przychodzi do głowy? Czy są takie sprawy, o których chcielibyście, albo chciałbyście wiedzieć przed rozpoczęciem nauki programowania? Podzielcie się w komentarzach!
Bardzo fajny wpis, ze wszystkim się zgadzam 🙂 Dodałbym jeszcze coś o tym, żeby zachować pewien umiar i nie siedzieć przy kodzie kilkanaście godzin, bo bardzo szybko można się wypalić – a z tego nic dobrego nie wyjdzie 😉
“Zawsze znajdzie się ktoś, kto powie, że nie jesteś (i nigdy nie będziesz) prawdziwym programistą” – to bardzo dobrze, że tak mówią, tak jak piszesz, w większości przypadków nie są to programiści, albo programiści, których wiedza ogranicza się do zrobienia jednego slidera na jQuery, a po za tym taki tekst to jedynie może być argument, żeby takim ludziom udowodnić, że są w błędzie, więc masz dodatkową motywację 🙂 Trzeba patrzeć pozytywnie nawet na teoretycznie niezbyt przychylne opinie 🙂
A co do matematyki w programowaniu to często faktycznie nie jest ona niezbędna na początku nauki, ale z czasem docenia się zalety algorytmiki czy konwersji liczbowych (np. umiejętność konwertowania na system binarny i rozumienia zasady działania operatorów binarnych). Ale to w późniejszym okresie, najpierw trzeba poznać podstawy, a jeśli to kogoś wciągnie to matma (taka jaka będzie potrzebna) sama przyjdzie 🙂
Super wpis, przede wszystkim za odczarowanie tej czarnej magii – programowania. Do wszystkiego dochodzimy wytrwałością a guglanie pozwala skorzystać z wiedzy innych.
Produktem programowania jest kod, który sam w sobie może być piękny albo niechlujny. Tak też dobry rzemieślnik nie potrzebuje dowartościowywać się przez zniechęcanie i krytykę innych, gdyż jego dzieła świadczą o nim.
Jak napisałaś, do robienia na drutach potrzebne są oprócz drutów i włóczki jeszcze dużo praktyki i wytrwałości. Matematyka z pewnością ujawni się, gdy zechcemy zgłębiać teorię węzłów, ale na początek nie jest niezbędna. Programowanie jest bardzo praktycznym aspektem informatyki, nie potrzebujemy od razu rozumieć całej teorii by programować i mieć z tego radość.
Cóż powiedzieć jeszcze: na początku nauki unikaj porównywania się z innymi, bo szybko można wpaść w pulapke myślenia: bo on szybciej koduje,szybciej myśli, jest lepszy a ja beznadziejna. Cała magia polega tu na tym, że ta ” lepsza” osoba już to wcześniej robiła, natkneła się na rozwiązanie w sieci lub po prostu dłużej przesiadla. Większość rzeczy da się już teraz zrobić w informatyce po prostu przeglądając. Neta.;)
Dziękuję! Tak, zachowanie umiaru to bardzo dobra rada. Czasem można się w coś tak wciągnąć, że przestajemy zwracać uwagę na inne aspekty. A to niebezpieczne 😉
Dokładnie taką na razie kieruję się zasadą co do matematyki, czyli że douczę się odpowiednich zagadnień, jak będę ich potrzebować 🙂 Na razie mam mnóstwo do opanowania z samego JavaScriptu, więc matematyka spokojnie czeka w kolejce. Nie pomyślałam, że nieprzychylne opinie mogą być motywacją, ale faktycznie – jeśli się na to spojrzy z tej strony to jest satysfakcja z pokazania innym, że jednak się udało 🙂
Dokładnie tak! Do tego można zobaczyć, jak fajne jest kodowanie, wcale nie wiążąc z tym swojej przyszłości. Można to na przykład traktować jako ćwiczenie umysłu 🙂
Też się zgodzę! Można łatwo się zdołować patrząc na innych,a to zupełnie nie o to chodzi. Tak jak piszesz, czasem komuś po prostu wyskoczy dobry wynik w google i ma rozwiązanie od razu, a my się męczymy kilka godzin. Warto porównywać się tylko ze sobą np. sprzed miesiąca czy dwóch, żeby widzieć postępy 🙂
Hej!
Świetnie, że napisałaś o tym podcinaniu skrzydeł (i jak sobie z tym radzić), o pokorze i perfekcjonizmie. A porównanie do obcokrajowca – w punkt. 😀
Przede wszystkim programowanie to niesamowite narzędzie, które pozwala w pełni wykorzystać możliwości komputera. Jak ktoś się wcześniej bawił serią Lego Technic to od razu załapie o co chodzi i będzie zachwycony bo tu nigdy nie zabraknie klocków, kół zębatych i silniczków na baterie. W dodatku można dowolnie sterować kędy mają się kręcić, w którą stronę i z jaką prędkością. Jedyne co może przynieść zawód to, że efekt widać tylko na monitorze komputera lub smartfonu, chyba że wejdziesz w elektronikę i robotykę.
Ja zacząłem w 1 klasie podstawówki, a w 4 klasie ruszyłem z tematem na ostro. Skoro wtedy mi się udawało to znaczy, że by zacząć wystarczy wiedza na poziomie 4 klasy podstawówki.
Dzięki za komentarz! Bardzo fajne porównanie do Lego Technic 🙂
Programuję już od paru ładnych lat i matematyka przydała mi się tylko podczas programowania grafiki (kąty, funkcje trygonometryczne, pitagorasy, pola powierzchni itp). Reszta to logika i kombinowanie.
A generalnie programowanie to umiejętność szukania rozwiązań problemów… pisze się te rozwiązania tylko wtedy gdy ich jeszcze nikt nie napisał.