13 kwietnia 2010

"Witam, jak Pan zaczynał naukę Javy?" - że też wciąż się pojawia?!

Właśnie dostałem do mojej skrzynki pocztowej:

Witam, jak Pan zaczynał naukę Javy? Może Pan polecić jakieś książki lub dobre materiały do nauki w internecie (najlepiej po polsku) ?

Na szczególną uwagę zasługuje "najlepiej po polsku". Może mi to ktoś wytłumaczyć? Tyle się słyszy tez, że programowanie wymusza znajomość angielskiego, ale niewielu wskazuje, jak zaradzić początkującym. Mi coraz trudniej zrozumieć tego typu pytania i nie jest to, jak sądzę, wynikiem nonszalancji do rzeczy podstawowych (o, co to, to nie! Zresztą ostatnie posty z tym na czele "Reszta jest niczym więcej jak...złożeniem" - przemyśleń rozwojowych ciąg dalszy (na bazie szkolenia ZB300 o IBM WebSphere ILOG JRules V7.0) powinny być dobrym potwierdzeniem), ale raczej...zresztą sami przeczytajcie, co odpowiedziałem:

To było wieki temu i książek nie było. Nawet Internet był w powijakach, więc niewiele trzeba było się uczyć, aby być dobrym :-) I tak z czasem po trochu przyszło mi poznać dużo. Teraz jest zdecydowanie trudniej, bo dużo trzeba przyjąć na raz i trudno to przełkąć. Zacząłbym od lektury Java Tutorial [1], albo polskiego przewodnika po Javie, którego celem jest SCJP [2]. Po nich będziesz wiedział, gdzie dalej szukać.

Pytaj, kiedy coś niejasne, a najlepiej na grupach typu pl.comp.lang.java albo forum Warszawa JUG - http://warszawa.jug.pl. Ja już pewnie na poziom Javy i jej nauki nie zejdę - zbyt wiele ciekawszych rzeczy wyżej na stosie technologicznym Javy.

[1] http://java.sun.com/docs/books/tutorial/
[2] http://getscjp.pl/

Jacek


A jaka jest Wasza odpowiedź na tak postawione pytanie? Chętnie stworzyłbym jedną właściwą i rozsyłał na żądanie, albo lepiej stworzył stronę na Wiki, którą każdy mógłby edytować pro publico bono (ech, jak ja lubię ten zwrot :)). Wszelkie pomysły na dalsze obsłużenie tematu mile widziane.

Przy okazji, ilu z Was potrzebuje polskich przewodników po języku i technologiach Java, i nie uważa zagranicznych publikacji jako wystarczających? Chyba nie zawęziłem pytania tak, aby JA mógł odpowiedzieć wyłącznie nadawca - sprawca tego wpisu?! Może ankieta?

p.s. Oczywiście namiary na ten wpis wysłałem również pytającemu. Niech wie, co się czyta w naszym światku :P

22 komentarze:

  1. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  2. Najlepiej wzruszyć rękoma i powiedzieć, że czyta się tylko anglojęczyczne opracowania.

    Jeśli chodzi o moje początki to...

    Mnie to naszło w nocy, podczas snu, pojawiła się wielka świetlista postać z dymiącym kubkiem w ręku i rzekła:

    "Darku, Darku, zaprawdę powiadam Ci, Javy naukę rozpocznij, albowiem przyszłość w tym języku jest."


    Jeśli chodzi o literaturę to czytam wyłącznie anglojęzyczną (za wyjątkiem blogów), powodów jest kilka:
    - szybciej można dostać
    - brak problemów z przekładem specyficznego żargonu
    - taniej (jak wychodzi polska edycja, na amazonie za grosze można kupic angielską)

    OdpowiedzUsuń
  3. Ja miałem dylemat na początku studiów i wbrew powszechnej modzie na .NET zdecydowałem się na Javę.

    Zaczynałem od lektury "Thinking in Java" B. Eckela i nadal uważam to za najlepszą lekturę, chociaż nie najłatwiejszą. Potem już wiadomo czego szukać... ;)

    OdpowiedzUsuń
  4. Dla początkujących mogę z czystym sumieniem polecić serie Head First dostępną również po polsku. Jednak nauka Javy dla niektórych związana będzie również z nauką języka angielskiego - na dalszym etapie rozwoju bez angielskojęzycznych publikacji się nie obędzie. Ale to dwie pieczenie na jednym ogniu ;)

    OdpowiedzUsuń
  5. Najlepiej coś odrazu robic, wspomagac sie tutorialami. Czytajac pierw od dechy do dechy thinking in java mozna sie szybko znudzic/zniechecic.

    OdpowiedzUsuń
  6. Ja zaczynałem od Thinking In Java (bodajże 3 edycji), którą kupiłem z wydawnictwa Helion.
    Do J2EE wprowadziło mnie Vademecuum Profesjonalisty czyli Sun Tutorial do J2EE tyle, że przetłumaczony.

    Choć ogólnie to Google dawało mi kolejne wskazówki (i nawet ma polski interfejs).

    OdpowiedzUsuń
  7. Zapodaj mu adres do mojego bloga i juz jest w domu.

    Zas co do "najlepiej po polsku" to z gory mozna zalozyc, ze taka osoba jest po prostu bardzo mloda i raczej doswiadczenia z programowaniem to nie ma za wielkiego. W tym momencie w ogole podchodzenie do Javy jest moim zdaniem pewnym nieporozumieniem. Ale to moje zdanie.

    OdpowiedzUsuń
  8. Ja bym złośliwie odpowiedział Google (można również bing-nąć :))

    Jeśli umie japoński będzie czytał po japońsku, umie rosyjski też coś znajdzie, niemiecki nie ma problemu.

    Łatwiej szybciej niż pisanie pytań na grupe, gdzie na java.comp.x.y zostanie wyśmiany z takim pytaniem a google jest cierpliwy

    - Polska: http://www.google.pl/search?q=nauka+java
    - Angielski: http://www.google.pl/search?q=java+learning

    Tutaj moja znajomoś słowa nauka się zakończyła

    Pozdr
    Pedro

    OdpowiedzUsuń
  9. Jest sporo wpisów na ten temat na polskich blogach, między innymi
    u Mariusza Lipińskiego
    u mnie
    no i cały blog Chlebika, który czytam dość często, bo przypomina trochę mnie samego na początkach programowania, gdy wszystko było skomplikowane i nigdy nie chciało działać jak powinno za pierwszym razem :)
    A odnośnie czytania po polsku albo po angielsku, to niestety najbardziej aktualne książki są tylko w języku Szekspira, choć dla początkującego spokojnie można znaleźć wystarczającą ilość pozycji w języku polskim. Choć bez znajomości angielskiego przynajmniej na dobrym rozumieniu tekstu czytanego do nauki jakiejkolwiek dziedziny związanej z informatyką w ogóle bym się nie brał.

    OdpowiedzUsuń
  10. Pierwsza rada dla początkujących: pytać, zadawać tego typu pytania jak największej liczbie osób - zwiększa to prawdopodobieństwo trafienia na kogoś o niezerowym poziomie empatii (w IT ciężko o takie osobniki, ale się zdarzają).

    Ostatnio bardzo modny kompetencji Braci Dreyfus daje nam jasną odpowiedź dlaczego pytania są formułowane tak a nie inaczej: gdy jesteś totalnie zielony potrzebujesz konkretnych kroków. Słownictwo w branżowe w obcym języku może być blokadą. Przypomnijcie sobie jak było z wami kiedyś, dawno temu... heloł:P

    Java jako technologia przemysłowa przytłacza ilością odmian i wariacji więc osoba pytająca może oczekiwać wskazania jej najlepszych ścieżek - co jest ważne a co można na razie pominąć (setki frameworków i specyfickaji - wyobraźcie sobie jak się w tym połapać na samym początku). Warto zapytać taką osobę jaki ma cel - albo uświadomić jakie te cele mogą w ogóle być.

    SCJP i tego typu sado-maso zostawił bym na później, po kilku latach, albo najlepiej zbojkotował;)

    Wszystko zależy też od kontekstu, czyli aktualnych doświadczeń pacjenta.
    Dla totalnych początkujących dobra jest książka Head First Java. Sam uczyłem się z "Java dla programistów C++" i była to dobra pozycja dla kogoś z bazą C++.
    Może się okazać, że przed składnią języka trzeba nadrobić zaległości koncepcyjne typu Object Oriented (w wersji true a nie ze studiów;)

    Swego czasu popularny był Eckel, ale to imho słabo napisana książka.

    Do tego dochodzą niedziałające narzędzia i pluginy. Mało jest nieautystycznych materiałów łopatologicznie wyjaśniających gdzie po kolei kliknąć, np takich : http://technology-for-human.blogspot.com
    Tak, gdzie po kolei kliknąć - pamiętajcie o poziomie Novice w skali Dreyfus.

    OdpowiedzUsuń
  11. Ja polecam Core Java, Cay S. Horstmann, Gary Cornell, 2 tomy, swietna pozycja.

    OdpowiedzUsuń
  12. Najpierw trzeba poczytac o podstawach jezyka. Po zapoznaniu sie z nimi najlepiej tworzyc jakies aplikacje i wspomagac sie ksiazkami/tutorialami.

    OdpowiedzUsuń
  13. Jakie aplikacje polecacie dla treningu na początku nauki?Coś nie za trudnego a rozwijającego.

    OdpowiedzUsuń
  14. @Paweł a jakie jest Twoje dotychczasowe doświadczenie z programowaniem?

    OdpowiedzUsuń
  15. Doświadczenie mam niewielkie, poznałem podstawy składni,klasy, dziedziczenie..

    OdpowiedzUsuń
  16. Masz rację, że obecnie jest dość sporo do przełknięcia. Wydaje mi się, że można by zacząć od ogólnego przeglądu przez język (przydało by się coś w stylu Symfonia Java..., Grębosz to jednak umie pisać!). Myślę, że Thinking in Java jest dobrym punktem wyjścia.

    Jeśli kolega zaczyna na studiach, to proponuję mu wszystkie laborki pisać języku Java - obędzie się ze środowiskiem.

    Moim zdaniem potrzeba min. 2 lata często RÓŻNEGO rodzaju projektach, aby stać się dobrym programistą. Niestety coraz częściej jest tak, że jak programista trafia do działu "mobile" to już w nim zostaje przy jednym projekcie.

    Dlatego proponuję zacząć w małej firmie. Naklepać się trzeba, ale dzieje się sporo różnych rzeczy.

    Studentom radzę rozpoczęcie pracy (nawet darmowej) najpóźniej na 4. roku. I na koniec wydaje mi się, że jako programista w jednej firmie (ew. w jednym dziale) przez 2 lata to maksimum. Później warto coś zmienić dla urozmaicenia doświadczenia,

    pozdr,
    mb

    OdpowiedzUsuń
  17. Tak naprawdę wszystko zależy od tego, co się chce osiągnąć (np. szybciej dostać pracę) i ile czasu się ma na naukę. Bez szczegółowych informacji na ten temat, trudniej coś zaproponować.

    Niestety (lub wręcz przeciwnie - na szczęście!), korzystanie z materiałów po angielsku jest obowiązkowe - zwłaszcza, jeśli chce się być w późniejszym czasie na bieżąco.

    Dla totalnie początkującego, najlepszą moim zdaniem drogą jest Head First Java, później kursy Java EE Programming I i II ze strony JavaPassion.com - bardzo dobre, obszerne tutoriale ze slajdami i częścią praktyczną wraz z zadaniami domowymi. Pozwolą poznać najważniejsze technologie w świecie Javy.

    Co dalej? Przeglądać oferty pracy i zwracać uwagę, jakie technologie są najczęściej wymagane i używane ;-) Na pewno nauka Spring (koniecznie z książki Spring Recipes) czy Hibernate nie zaszkodzi.

    Pozdrowienia,
    Sebastian

    OdpowiedzUsuń
  18. @Sławomir Sobótka
    "SCJP i tego typu sado-maso zostawił bym na później, po kilku latach, albo najlepiej zbojkotował;)"

    Zgadzam się absolutnie. Książka do SCJP nie jest taka zła, ale powinni to czytać ludzie którzy dobrze kojarzą, że jeśli zobaczą w pracy przedstawione tam przykłady, to powinni natychmiast zmienić robotę.

    Ja bym sugerował nie wchodzić w frameworki (można się ich nauczyć w pracy, nigdy nie wiesz z jakiego będzie korzystał pracodawca, może z wyjątkiem Springa). Zamiast tego należy nauczyć się dobrze programować, co imho oznacza dla początkujących następującą kolejność literatury:

    0. jeśli nie ma się totalnie żadnej wiedzy na temat języka, to jakiś tutorial nakierunkowany konkretnie na naszą wiedzę, który da nam minimalne podstawy o języku (np. dla C#'owców http://www.25hoursaday.com/CsharpVsJava.html)

    1. Effective Java "Joshua Bloch" - opowie nam o praktycznym sposobie wykorzystania wiedzy z punktu 0

    2. "Clean Code" Roberta C. Martina - opowie nam o praktycznym sposobie wykorzystania wiedzy z punktu 1 (to każdy programista obiektowy powinien przeczytać: technology agnostic)

    3. "Test Driven Development: By Example" Kenta Becka - opowie w szczegółach o TDD, o którym w "Clean Code" jest mało (też technology agnostic)

    Tak przygotowane człowieka zatrudniam od ręki. Będzie miał x2 przewagę nad ludźmi znającymi Spring'a, Hibernate'a, GWT, ale nie potrafiącymi pisać czytelnego kodu.

    PS: wszystkie książki są dostępne w naszym języku.

    OdpowiedzUsuń
  19. @Paweł
    Zaczynałem od przeglądarki zdjęć w Swingu i byłem zadowolony. Dopisałem potem modyfikację jasności, balans kolorów, wykrywanie kontur i jakieś inne bajery. Szybko widać efekty więc jest motywacja.

    OdpowiedzUsuń
  20. Nie wróżę kariery w zawodzie komuś, kto mają dostęp do netu zadaje pytanie z czego nauczyć się Javy.

    Rozumiem, że można szukać materiałów nt. konkretnego frameworka, serwera, biblioteki, ale Javy w ogóle?

    Co kiedy ktoś początkujący pyta się czy zabierać się za EJB czy Springa. Albo JSF vs Struts vs Spring MVC. Bo coś czytał i trafił na takie słowa kluczowe. Ale Java w ogóle?

    OdpowiedzUsuń
  21. Hmmm... Ponieważ ja osobiście programowania uczyłem się z cyklu "Nie tylko dla przedszkolaków" z nieodżałowanego Bajtka (a także z jakiegoś z czarownikiem w tytule, bodajże o języku C albo Action!), a potem były po drodze różne języki zanim dotarłem do Javy, to o tym z czego się uczyć Javy nie odpowiem, bo zupełnie inaczej się podchodzi do nauki pierwszego języka (albo pierwszego z jakiejś grupy - proceduralnego, obiektowego itp.) niż kolejnego mając już jako taką biegłość i znajomość "w ogólności" teorii za danym językiem stojących.
    Odnieść się natomiast chciałem co do tego "najlepiej po polsku". Cóż, różne ludzie mają talenta, niektórzy się ludzkich języków uczą szybciej/wydajniej, innym idzie bardziej po grudzie. Osobiście należę, czego nie ukrywam, do tej drugiej grupy, i jak potrzebuję źródła wiedzy, to zdecydowanie preferuję polskojęzyczne (o ile oczywiście są dostępne). Po prostu "narzut" tłumaczenia z obcego na ludzki utrudnia mi koncentrację na zagadnieniu i szybciej męczy, w porównaniu do tej samej treści w języku polskim. Kwestia wygody i przyjemności z nauki, a nie tego, że nie jest się w stanie w ogóle zrozumieć tekstów obcojęzycznych.
    Także, co chyba zrozumiałe ;), uważam, że dyskwalifikowanie w naszym zawodzie kogoś tylko dlatego, że nie jest hiper-duper biegły w angielskim, jest nie do końca rozważne. Wszak do bycia dobrym programistem/projektantem/testerem/kimkolwiekinnym potrzebne są też inne, nie mniej ważne uzdolnienia.

    OdpowiedzUsuń
  22. Witam, przyłączę się do dyskusji, gdyż jestem na bieżąco z poznawaniem Javy. Od ponad pół roku, każdą wolną chwilę spędzam na przyswajaniu wiedzy. I oto moja ścieżka od zera do dziś.

    1.Zacząłem od Eckela (po polsku) i choć łatwo nie było wiele podstaw z niej wyciągnąłem.

    2.SCJP Sierra, Bates (już po angielsku) i tu potwierdzę, że lieratura programowania po angielsku jest nieporównywalnie bardziej owocna, niż w rodzimym języku. Czemu SCJP? To był mój wybór. Wiele czytałem o celowości tego certyfikatu. Ja wybrałem go jako pomocny w mojej mam nadzieję długiej ścieżce poznawania wszystkiego co z Javą związane. Powyższa książka do niego przygotowująca, jak i blog Mariusza Lipińskiego, pozwalały mi okiełznać czasem niezrozumiałe z Eckela niuanse podstaw programowania. Być może kiedyś uznam, że certyfikat ten nie był najlepszym rozwiązaniem i na nic mi się nie przydał, ale na dzień dzisiejszy, przygotowania do niego otworzyły mi oczy na wiele aspektów OOP w Javie.

    3. Przeszukiwanie internetu, poprzez który odnalazłem blogi - perełki, skąd nic tylko chłonąć wiedzę.

    4. Poprzez poszukiwania internetu znalazłem informację o konferencji 4Developers, na którą jako żółtodziub się udałem. A tam znów podłapanie nowych tematów, jak choćby wzorce projektowe (moja obecna lektura) z wykładu Sławomira Sobótki, a także Spring (lektura następna w kolejce). Choć połowa rzeczy poruszana na wykładach była dla mnie nowością, to chyba właśnie to jest istotą takich konferencji, by dowiadywać się nowych rzeczy, zapisywać, szukać, dociekać. Konferencje są dla wszystkich.

    5. Każdą, ale to każdą możliwą do napisania rzecz wykonuję w Javie. Zajmuje to trochę więcej czasu niż rozwiązania standardowe do dziś, ale wiedza i jakieś doświadczenie z tego wyciągnięte są bezcenne.

    6. Prasa. Ja osobiście wybrałem SDJ (przyznam, że trochę bez porównania z innymi pozycjami), aczkolwiek na dzień dzisiejszy znajduję w niej wiele cennych informacji, rozwiązań, artykułów nie tylko dotyczących Javy, ale i całego procesu programowania.

    Reasumując. Z mojej pozycji żółtodzioba twierdzę, że jesteśmy otoczeni wiedzą w wielu postaciach, wystarczy tylko umieć po nią sięgnąć.

    Pozdrawiam

    OdpowiedzUsuń