[PL] Moja droga od 0 do 1 - Narzędzia (do nauki Javy) [1]

in #polish7 years ago (edited)

tool-2820946_640.jpg

Nie wiesz o co chodzi? Zapraszam do zapoznania się z pierwszym wpisem

Przeczytałem jakiś czas temu książkę Junior Developer autora bloga JavaDevMatt.pl. Znalazłem w niej kilka ciekawych spostrzeżeń dotyczących rozpoczęcia mojej wędrówki programistycznej. Niestety Mateusz zwrócił uwagę na pewien błąd, czy też niewłaściwe przekonanie nowych adeptów tej sztuki, którego sam do niedawna byłem ofiarą... Chodzi tu mianowicie o przesiadywanie w jaskini, czy też mówiąc wprost, zbieranie kursów wideo, książek i zakładek w przeglądarce internetowej z nadzieją, że kiedyś same trafią do naszej głowy. Z programowaniem jest jednak tak, jak z wieloma innymi umiejętnościami, aby je nabyć, trzeba po prostu wystarczająco długo ćwiczyć. Mój chrzestny, zapalony gitarzysta, powtarza: żeby grać na gitarze, trzeba grać na gitarze.

Aaaaaaale... Wydaje mi się, że sam wyswobodziłem się już z okowów zbieractwa i udało mi się skupić jedynie na kilku pozycjach, które systematycznie przyswajam. A, że przy wszystkich wpisach o programowaniu w internecie muszą pojawić się komentarze w stylu: a z czego się uczyłeś?, polecisz jakieś kursy?, znasz dobre materiały na temat xyz?, postanowiłem, że jak przystało na doświadczonego jaskiniowca, stworzę jeden wpis, w którym zawrę to, z czego sam się uczę oraz oprogramowanie, z którego korzystam. Myślę, że nie muszę nikogo w tym momencie uświadamiać, że ta lista jest:

  • subiektywna - zawiera jedynie rzeczy, które na ten moment mojej przygody z programowaniem (początek początków) wydają mi się wartościowe,

  • niepełna - nie da się zawrzeć wszystkich materiałów, z których się korzysta... w takim wypadku miałaby setki podpunktów lub sprowadziłaby się do jednego, szeroko pojętego hasła - Internet,

  • otwarta - nic tu nie jest na stałe. Może kurs, który przerabiam okaże się w końcu do bani? Może oprogramowanie będzie zawierało bug uniemożliwiający wykonanie jakiegoś zadania? Praca z komputerem powinna zmuszać (w moim przekonaniu) do ciągłego rozwoju i nietrzymania się sztywno niczego, ponieważ to co dziś okazuje się dobre, jutro może już być przestarzałe, a my sami będziemy sobie zamykali drzwi do doskonalenia warsztatu.

No i chyba najważniejsza kwestia. Poniższe pozycje odnoszą się wyłącznie do mojej nauki Javy. By zdobyć upragnioną przeze mnie pozycję Junior Developera potrzeba znacznie więcej (właściwie, to będzie temat kolejnego wpisu), a co za tym idzie trzeba używać innych materiałów oraz nierzadko innego oprogramowania.

OPROGRAMOWANIE

Sprawa wielce indywidualna. Cytując klasyka: Jeden lubi jak mu cyganie grają, a inny jak mu buty śmierdzą. Ile osób, tyle opinii na temat danego programu, czy systemu operacyjnego. Ja stawiam sprawę prosto, ma robić to co chcę, wtedy kiedy chcę. Jeśli spełnia ten warunek, to się dogadamy.

System operacyjny

Utnijmy tę kwestę na początku - nie stać mnie na sprzęt Apple, więc macOS nie brałem nawet pod uwagę. Jasne, można się bawić w Hackintoshe, ale czy warto tracić czas i nerwy na jego konfigurację? Gdybym był młodszy, może chciałoby mi się próbować, ale dziś najzwyczajniej w świecie nie widzę w tym sensu.

Windows? Szanuję jak najbardziej. Do programowania w Jave nadaje się bez problemu, jednak mam kilka zastrzeżeń. Przede wszystkim czas kompilacji - zdecydowanie dłuższy niż na linuksie. Do tego dochodzi jeszcze niewielka niedogodność związana z instalacją i aktualizacją programów. Nie mamy pełnej kontroli nad tym co się dzieje. No i konsola. Powershell rozwija się, a w Windows 10 można już nawet odpalić "Podsystem Windows dla systemu Linux", ale to wciąż nie to samo.

No i został mi Linuks. Jestem w tej komfortowej sytuacji, że z przerwami używam go już od kilkunastu lat. I przyznaję, nie był to zawsze związek bezproblemowy. Powiem więcej, nieraz zdarzało się, że musiałem dość mocno się hamować, by komputera nie wyrzucić za okno, oblać benzyną, podpalić, przejechać walcem, spakować do rakiety i wysłać w przestrzeń kosmiczną... Na szczęście przetrwaliśmy tę próbę - i ja - i sprzęt. Co tak naprawdę stanowi o sile linuksa? Łatwość instalacji oprogramowania, potężna konsola i szybkość wykonywania działań na plikach. Nie można też zapomnieć o nieograniczonej praktycznie niczym możliwości konfiguracji systemu. Minusy? Najwięcej problemów sprawia początkowe "dostrojenie" instalacji do posiadanego sprzętu. Czasem nieodpowiednio działa jakiś sterownik, lub trzeba poświęcić trochę czasu, by poczytać o rozwiązaniu naszego problemu.

Pozostała jeszcze kwestia dystrybucji. Myślę, że w tej materii również miałbym sporo do powiedzenia, więc zamiast tu się rozpisywać i zanudzać co niektórych czytelników, zrobię kiedyś porządny i pełny wpis na ten temat. Na chwilę obecną powiem tyle - postawiłem na Ubuntu. Dlaczego? Bo koniec końców sprawia mi najmniej problemów lub są mi one już na tyle dobrze znane, że nie muszę się wysilać, by je opanować. Poza tym baza użytkowników jest tak duża, że bez długiego szperania znajdziemy odpowiedzi na męczące nas kwestie. Absolutnie nie uważam się też za speca w dziedzinie linuksów (albo dopadł mnie efekt Kuregera-Dunninga), jednak do codziennej pracy wydaje się mi on najlepszym rozwiązaniem.

Zintegrowane środowisko programistyczne (IDE)

Z moich obserwacji wynika, że tutaj niepodzielnie królują programy: Eclipse i Intellij IDEA oraz rzadziej wymieniany NetBeans. Są też masochiści, którzy wszystko robią za pomocą edytorów tekstu pokroju VIMa, ale śmiem wątpić, czy posiadają oni jeszcze jakieś ludzkie cechy, czy są już tylko maszynami w ciele człowieka sterowanymi przez zaawansowaną sztuczną inteligencję. Nie wiem, nie chcę wiedzieć - boję się ich.

Do nauki wybrałem Intellij IDEA, ze względu na zdecydowane pierwsze miejsce wśród polecanych przez innych użytkowników IDE do programowania w Javie. Nie dziwię się, wersja community, z której obecnie korzystam jest okrojoną wersją płatnego rozwiązania firmy. Jeżeli developerzy wykładają swoje pieniądze, zamiast korzystać z darmowych rozwiązań, musi posiadać ficzery przyciągające do zakupu. I posiada. Podpowiedzi, uzupełnianie składni, mnóstwo usprawnień, które są naprawdę przydatne i sprawiają, że pisanie programu staje się szybkie do granic możliwości. Świetne narzędzie i tyle.

LITERATURA

Książek i podręczników do nauki programowania w dowolnym języku możemy znaleźć multum. Od istnych biblii, po pozycje przypominające swoją formą komiksy. Wybór jest zatrważający. Nietrudno popełnić błąd, kupić coś, co z merytorycznego punktu widzenia będzie absolutnie nieprzydatne. Niektórzy mówią wręcz, by odpuścić sobie wszelkie pozycje książkowe i skupić jedynie na przyswajaniu oficjalnych dokumentacji. Nie do końca się zgadzam. Dla osób takich jak ja, bez solidnych podstaw programistycznych, książka wyjaśniająca wszystko w przystępnej formie może okazać się nieoceniona. W momencie, gdy decydowałem się na zakup włączył mi się oczywiście tryb jaskiniowca i zastanawiałem się na wieloma pozycjami, które bym zakupił, a później pewnie przeleżałyby nieprzeczytane przez długie lata. Wygrał zdrowy rozsądek, któremu pomogło kilka komentarzy w internecie.

Java Podstawy - Cay S. Horstmann

Java

Po chwilowych poszukiwaniach zdecydowałem się na tę pozycję ze względu na dobre opinie czytelników. Konkretny kolos, który w teorii nie jest przeznaczony dla całkowicie początkujących programistów. Nie jest jednak aż tak źle! Większość zagadnień i tak wytłumaczona jest jak dla laika, a kwestie, których nie rozumiem mogę zawsze uzupełnić z wielu dostępnych w internecie pozycji. O to przecież chodzi, bym nauczył się samodzielnie znajdować rozwiązania problemów, a nie oczekiwał wszystkiego podanego na tacy. Nie staram się też czytać jej od deski do deski, to nie jest powieść kryminalna, gdzie każdy szczegół powinniśmy zapamiętać. Będę szczery, większość przeczytanych kwestii wypada mi z głowy, ale to chyba nic złego. Za drugim, czy trzecim razem, gdy się na nie natykam, wiem już o co chodzi i z czym co się je.

English 4 IT - Beata Błaszczyk

English

To pozycja, która zaskoczyła mnie swoją przydatnością. Wydawało mi się, że znam angielski na tyle dobrze, że nie będą mi potrzebne dodatkowe materiały. Myliłem się! Branżowe słownictwo potrafi zaskoczyć, dlatego myślę, że uzbrojenie się w ten tytuł było dobrą decyzją. Ten język to podstawa jeśli chodzi o programowanie, a szkolna wiedza nie wystarczy, żeby rozczytać się w dokumentacji technicznej. Książka niedroga, więc myślę, że zainwestowanie w nią kilku złotych było bardzo dobrą decyzją. Trochę zwrotów sobie przypomniałem, wielu się nauczyłem. Warto mieć ją pod ręką.

POZOSTAŁE

W tej sekcji mogłoby znaleźć się dosłownie wszystko. Wikipedia, gdzie czasem wpisuję sobie zwroty, których nie rozumiem. Nie dlatego, aby uczyć się z niej, ale, żeby w szybki sposób znaleźć definicję i wiedzieć mniej więcej o co chodzi w zdaniu, czy zadaniu, które czytam. Google translate - przetłumaczenie zwrotu z angielskiego, którego nie rozumiem to nie grzech. Grzechem byłoby olać jego znaczenie.

Udemy - Complete Java Masterclass - Tim Buchalka

Kurs online, który jest uznawany za jeden z najlepszych jeśli chodzi o podstawy programowania w Javie. Po ocenach, liczbie użytkowników i komentarzach w sieci można samemu stwierdzić bez problemu, że to prawda. Bardzo mi się podoba podejście prowadzącego. Od początku mamy wrażenie, że facet najzwyczajniej w świecie wie o czy mówi. Kurs jest cały czas aktualizowany (dostosowany również do najnowszej Javy 9), a sam autor ma ciągły kontakt ze społecznością. Dodatkowo korzysta on z Intellij, co pozwala na szybkie wdrożenie się od samego początku w to oprogramowanie i poznanie wielu ciekawych, bardziej ukrytych funkcji. Powiem tak, jeśli ktoś odradza naukę z takich wideo kursów, to albo trafił na te tworzone przez kompletnych laików, albo nigdy sam z żadnego nie korzystał.

Algorytm.org

Stron internetowych, które przydają się podczas nauki jest niezliczona ilość. Jednak algorytm.org to coś dla mnie wyjątkowo pomocnego, by wdrożyć się w samą kwestię algorytmiki. Dodatkowo wiele z przykładów jest również podanych w wersji gotowych rozwiązań w danym języku programowania, co bardzo ułatwia naukę. Pomimo faktu, że sam serwis trąci trochę myszką i ma swoje lata, sama kwestia wiedzy jest ponadczasowa i wciąż bardzo pomocna.

Zeszyt

Co? Jak? Normalnie! Stary, dobry zeszyt! Taki w kratkę. Uczę się programowania, wszystko nowoczesne, świeżutkie, a ja korzystam z tak archaicznego rozwiązania? Dokładnie. Jestem wzrokowcem i najlepiej utrwalam wiedzę patrząc na coś. Fizyczne wpisanie na kartkę pozwala mi skupić się i zapamiętać czego potrzebuję. Oczywiście nie notuję wszystkiego jak w podstawówce, przepisując za dyktującą panią nauczycielką całego podręcznika... Wypisuję sobie tylko najważniejsze zwroty do późniejszego sprawdzenia, czy opisuję co wykonuje dana komenda. Mi to pasuje, może komuś innemu wygodniej będzie zapisywać to do pliku, lub w ogóle pominąć. U mnie to działa, a chyba o to chodzi.

KONIEC?

Ufff... Trochę tego wyszło, a czuję, że mógłbym tak pisać i pisać. Nie zacząłem przecież nawet tematu Stackoverflow czy Github! Trzeba jednak znać umiar, na wszystko przyjdzie czas. Wydaje mi się, że zawarłem w tym tekście kluczowe pozycje. Strach pomyśleć, co będzie się na tej liście znajdować w dłuższej perspektywie, gdy zacznę wdrażać się w inne języki, frameworki i narzędzia. Aż dziw mnie trochę bierze, że jestem na początku ścieżki, a już mam tyle do powiedzenia w tej kwestii... Życzę sobie tylko jednego - wytrwałości!

Sort:  

Dziękuję! Tak to bywa, kiedy strona ląduje w zakładkach i wchodzi się na nią już tylko jednym kliknięciem, nigdy nie zwracając uwagi na adres :)

Congratulations @jamike! You received a personal award!

1 Year on Steemit

Click here to view your Board of Honor

Do not miss the last post from @steemitboard:

Saint Nicholas challenge for good boys and girls

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @jamike! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!