Programista bez studiów część 3.
Jakbym się uczył progamowania, wiedząc to co wiem teraz.
Ho-ah! Przede wszystkim: skupiłbym sie na jednej technologii i koncepcjach programowania ogólnie. Moim głównym językiem jest Java, więc na niej będę budował posta.
Na początku o kursach i literaturze stricte dotyczącej języka. Jako, że zanim ogarniałem Jave miałem już jakieś pojęcie o programowaniu, ale nie sądzę, by to jakieś miało jakiś megawpływ na odbiór następujących pozycji: JavaStart oraz Thinkin in Java. Na pewno z obu bym pominął o projektowaniu okienek Spotkałem się (i wy też się spotkacie) z opiniami, że Myślenie w Javie może być trudne w odbiorze ze względu na dość specyficzny styl autora. I to jest prawdą. Dlatego z pomocą przychodzi JavaStart, które jest za darmo, znacznie bardziej przystępne, skondensowane i wogle. Najlepiej w miarę możliwości róbcie obie rzeczy symultanicznie ( ͡º ͜ʖ͡º)
Rzecz jasna nie czytajcie tylko. Przepisujecie przykłady, rozbudowujcie je, wymyślajcie własne rzeczy - nikt się nie nauczył niczego pożytecznego patrząc na tekst. Bawcie się językiem (jak ktoś lubi to tym w jamie też może sobie pomagać), próbujcie nowych rzeczy, szukajcie rozwiązań... Rozwiązań? Ale 90% kontentu w Internecie jest po angielsku. Jak mam szukać rozwiązań?
Kolejna sprawa: jeżeli nie umiesz angielskiego, to go szlifuj. Koniecznie. Bez niego jesteś na starcie skreślony w IT. I nie żartuje. Na każdej rozmowie kwalifikacyjnej miałem chociaż minimalne sprawdzenie skilla. Ja angielskiego nauczyłem się czytając angielskie teksty piosenek i obok mając polskie tłumaczenie (thanks, tekstowo!), a potem przeszedłem do filmów i seriali wyłącznie z oryginalną ścieżką dźwiękową i angielskimi napisami. I tak oto jestem na poziomie B2/C1. Jakbym przykładał większą uwagę do słownictwa w szkole to pewnie byłbym pewnym C1.
Dalej... Pisanie kodu w Notatniku? Co kurna?! Ile ja sie nawkurniałem na to, ile naprzeklinałem, ile szukałem brakującego średnika. Aaaaaaargh! Możecie Hello Worlda tak klepnąć i skompilować z konsoli, ale już coś większego polecam w porządnym IDE. Osobiście zaczynałem od w pełni darmowego Eclipse, jednak gdy tylko zacząłem pracować komercyjnie poznałem Intellij IDEA. I to też wam polecam. Darmowa wersja Community w pełni wystarcza na start - dostarcza pełną przyjemność z użytkowania, jednak nie obsługuje frameworków webowych. Do tego jeszcze wam daleko, uwierzcie. Jednak jeżeli ktoś chce inwestować, to za raptem 1200zł macie dożywotnią licencje i gwarant rocznych aktualizacji. Ale po pierwszej wypłacie w branży zainwestujcie Nie pożałujecie.
Ze środowiskiem się oswójcie, poszukajcie ściagi ze skrótami klawaturowymi, wydrukujcie, postawcie przy ekranie, nie bójcie sie z nich korzystać. Każde narzędzie jest tam aby wam pomóc. A w szczególności debugger.
Dobra, wiem co to Java, znam składnie i pisze nawet jakieś swoje programy.
Ale jak je piszesz? Dobrze? Czy znasz zasady DRY, KISS, SOLID? Czy w pełni stosujesz zasady programowania obiektowego? Nazywasz zmienne, metody i klasy po angielsku? Piszesz samowyjaśniający się kod (minimum komentarzy, nazwy powinny wyjaśniać jak najwięcej w jak najkrótszy sposób). Przed państwem istna biblia, koran, święta księga programistów, Czysty kod od Wujka Boba. Must read dla każdego developera, po jej przeczytaniu ujrzycie wiele spraw o których wcześniej nie mieliście pojęcia (chyba, że naprawdę programowanie was pochłonie i przejrzycie pół Internetu na jego temat). Jest też wersja wideo, ale ja wolę książkę, bo przynajmniej w każdej chwili mogę wrócić do wybranego fragmentu.
Wzorce projektowe? Słyszeliście o czymś takim? Nie będę tłumaczył, Wikipedia robi to dobrze. Dobrze jest je poznać. Tak naprawdę dopóki sami ich nie "odkryjecie" w kodzie, to ich nie utrwalicie. Ale żeby je zacząć zauważać, trzeba wiedzieć o ich istnieniu. I tutaj z pomocą przychodzi Głowa Pierwsza: Wzorce Projektowe. Książka, jak i cała seria książek, jest napisana lekkim piórem, świetnie się czyta, dużo obrazków (ułatwiają odbiór).
Jeżeli ci się jeszcze nie zdarzyło, że po zmianie kawałka kodu chciałbyś jednak wrócić do wersji sprzed 20 minut, to wkrótce możesz się znaleźć w takiej sytuacji. I wtedy nie chcesz mieć kopii zapasowej. Ale zamiast robić backupów, warto zainteresować się systemami kontroli wersji, a w szczególności GITem. SVN ssie pauke. Ogarnij podstawowe komendy do pobierania projektów, wrzucania do repozytorium, rozgałęziania (branchingu) i zapisu lokalnych zmian. Tyle styka na początku.
I tak naprawdę po ogarnięciu powyższych rzeczy jesteś gotów do pracy programisty. Reszte nauczycie sie na produkcji
Programisty czy klepacza kodu?
No właśnie. Programista nie będzie wiecznie klepał formatek, robił tych samych rzeczy, kopiował gotowce ze stacka. Czasami zdarzy mu się, że musi wymyślić coś nowego, przyspieszyć działanie programu, pomyśleć nad efektywnym rozwiązaniem problemu.
Ćwiczcie na SPOJu. Jest to platforma online z zadaniami algorytmicznymi, gdzie macie podany zestaw danych oraz słowny opis oczekiwanego rezultatu. I teraz przenieście go na kod A jak będzie szybko się wykonywał to już w ogóle bajka! Z innych podobnych platform jest Project Euler, Rosetta Code i pewnie milion innych.
Również trochę teorii styknie, jeżeli już nie chcecie iść na te studia Tutaj przychodzi CzterechProgramistów z ich listą najlepszych książek na ten temat. Wszystkie poziomy zaawansowania, od siebie polecam Niklausa Wirtha i jego Algorytmy + Struktury Danych = Programy.
Tak dużo?!
A to dopiero wierzchołek góry lodowej. Wypada poznać techniki rozwoju oprogramowania, testowanie kodu (bo kto lubi bugi i fuckupy wychodzące u klienta na żywym produkcie?), metodyki zwinne, automatyzacja budowy projektu. Jakiś język skryptowy (w przypadku platformy JVM może to być np. Groovy czy w innym wypadku Python), bazy danych, jakieś podstawy obsługi Linuksa po stronie serwera, a w końcu i web: podstawy budowy stron WWW po stronie klienta (HTML, CSS, JS), sesja, ciasteczka, architektura HTTP, serwisy RESTowe, SOAP, sesja, frameworki webowe (oh, te bydlaki). Dużo by wymieniać.
Praca programisty to nieustanny rozwój, ciężka praca, bolące plecy, oczy oraz garb. Ale jest zdecydowanie satysfakcjonująca (jeśli lubisz to co robisz) oraz fajnie wypełnia kieszenie co miesiąc
Pewnie wielu z was nie będzie chciało pisać kodu do emerytury, dlatego już koncząc wspomnę o kompetencjach miękkich czy też interpersonalnych.
Pytajcie, komentujcie, sugerujcie jeszcze jakieś tematy, bo dobrze mi sie zbiera repy
- 10
10 komentarzy
Rekomendowane komentarze
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się