JavaRush /Blog Java /Random-PL /Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym ...

Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym programistą Java

Opublikowano w grupie Random-PL
Prawdopodobnie słyszałeś już nazwisko Cay S. Horstmann. Jest dość znaczącą osobą w świecie Java i autorem wielu książek o naszym ukochanym języku. Należą do nich klasyczny kurs „Core Java” (opublikowany w języku rosyjskim w dwutomowej książce „Java. Professional’s Library” ) oraz seria z krótkim podsumowaniem istoty „Java dla niecierpliwych” (opublikowana w języku rosyjskim „Java SE 8. Kurs wprowadzający” i „Java SE 8. Kurs podstawowy” ). Nosi dumny tytuł „Mistrza Jawy”. A pod tym linkiem można znaleźć jego starą szkolną stronę internetową z ciekawymi informacjami.
Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym programistą Java - 1
Zwracamy uwagę na tłumaczenie artykułu dla zasobu InformIT , w którym Kay przekazuje kilka wskazówek dla początkujących i kontynuujących programistów, jak stać się lepszym w swoim zawodzie. Któregoś dnia Jennifer Bortel, dyrektor redakcyjny InformIT, poprosiła mnie, abym napisał, jak zostać lepszym programistą Java. Zasugerowała, że ​​ja, autorka książki Core Java for the Impatient, mogę coś o tym wiedzieć. „Nie ma nic prostszego, po prostu kup książkę” – pomyślałam w pierwszej chwili. Ale ta odpowiedź nie zadziałała, bo muszę ją zmieścić w 1500 słowach, a do tej pory jest ich tylko 62* ( oczywiście tłumacząc artykuł nie staraliśmy się zachować liczby słów - ok. tłumaczenie ). Niedawno otrzymałem e-mail od znajomego programisty, którego podczas rozmowy kwalifikacyjnej zapytano, dlaczego następujący kod nie jest bezpieczny dla wątków:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
Mój znajomy zdecydował, że kod w tym przykładzie jest bezpieczny dla wątków, a ja się z nim zgodziłem, zauważając, że w drugiej metodzie brakowało jednego słowa kluczowego static, a po jego wstawieniu dostęp był kontrolowany przez wbudowaną blokadę obiektu klasy. Powiedziałem również, że to nie jest dobre pytanie do rozmowy kwalifikacyjnej, ponieważ jeśli potrzebujesz licznika wątków, lepiej użyj AtomicInteger. Ale potem w środku nocy obudziłem się i zastanawiałem się: co by było, gdyby to słowo staticzostało pominięte nie bez powodu? Być może jakiś podstępny ankieter celowo skonstruował ten przykład w taki sposób, aby wprowadzić kandydatów w błąd? Napisałem więc do programisty, który zadał pytanie, i powiedziałem, że prawdopodobnie się wcześniej myliłem: w równoległym wszechświecie zwanym Pytaniami do wywiadu odpowiedź na to pytanie brzmi: „Druga metoda zawiera blokadę obiektu”. Po tej odpowiedzi facet zapytał, czy prowadzę kanał na YouTube, na którym uczę, jak radzić sobie z tego typu problemami podczas rozmowy kwalifikacyjnej. Niestety, nie robię tego. Uczę informatyki i piszę książki, ale moim głównym celem nie jest lepsze „rozwiązywanie problemów podczas rozmów kwalifikacyjnych”, ale uczynienie moich uczniów lepszymi programistami. Dawno, dawno temu Peter Norvig ( amerykański naukowiec zajmujący się sztuczną inteligencją, dyrektor ds. badań Google – ok. tłum. ) napisał na swoim blogu wspaniały artykuł. Twierdził, że książki obiecujące nauczyć Cię języka Java w 24 godziny lub 21 dni są po prostu śmieszne. Trudno się z nim nie zgodzić: potrzeba 10 lat, a może 10 000 godzin, aby stać się ekspertem w dowolnej dziedzinie. Powszechnie wiadomo, że eksperci przetwarzają informacje inaczej niż nowicjusze. W klasycznym eksperymencie doświadczonym i początkującym szachistom pokazywano na kilka sekund szachownicę z określonym ułożeniem pionków, a następnie chowano ją i proszono o ułożenie pionków we właściwym miejscu. Początkujący nie poradzili sobie zbyt dobrze z zadaniem, ale eksperci nie mieli żadnych problemów. Ale tylko pod jednym ważnym warunkiem: układ elementów musi odpowiadać rzeczywistej grze . Jeśli elementy zostały rozmieszczone losowo, eksperci nie byli lepsi w odbudowie planszy niż nowicjusze.
Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym programistą Java - 2
Dlatego odpowiedziałem dokładnie w ten sam sposób na pytanie z listu. Mam doświadczenie w programowaniu, a nie w przeprowadzaniu wywiadów, więc instynktownie dodałem brakujące słowo kluczowe i wyciągnąłem „błędny” wniosek. Chciałbym myśleć, że nadal byłbym zatrudniony, gdybym wyjaśnił, co się stało i dlaczego nigdy nie napisałbym kodu takiego jak w przykładzie bez mojego dodatku. Być może, gdyby taka odpowiedź ich nie satysfakcjonowała, sam nie chciałbym z nimi pracować.
Nie sądzę, że nauka do egzaminów certyfikacyjnych lub rozmów kwalifikacyjnych sprawi, że staniesz się lepszym programistą. Jestem też pewien, że kupowanie dużej liczby książek o programowaniu i potem czytanie ich od deski do deski też nie zadziała (choć ja, jako autor tych właśnie książek, nie chciałbym się do tego przyznać!). Tak naprawdę naprawdę dobrym sposobem na bycie lepszym programistą jest tworzenie jak największej ilości oprogramowania . Od czasu do czasu prowadzę na mojej uczelni kurs wprowadzający do informatyki. To zdecydowanie najtrudniejszy kurs, jakiego kiedykolwiek uczyłem. Jest to jeszcze trudniejsze niż studia podyplomowe. Kiedy zaczynałem pracę jako młody profesor, pilnie prowadziłem wykłady dla studentów, podczas których sumiennie omawiałem zagadnienia programistyczne, takie jak różnica między pętlami fora whilepętlami do. Następnie przydzieliłem uczniom cztery trzytygodniowe projekty. I tego przedmiotu nauczano w ten sposób od zarania dziejów na wszystkich uniwersytetach. Po mojej pierwszej próbie instruktor drugiego semestru skarżył się, że większość moich byłych studentów po pierwszym semestrze programowania nie rozumie nawet prostych pętli. I takie rezultaty również miały miejsce od zarania dziejów. Pamiętacie artykuł „FizzBuzz, czyli dlaczego programiści nie potrafią programować” ? Kiedy uczysz się języka obcego, większość zadań to ćwiczenia i praktyka, a nie teoria. Niezwykle ważne jest „wpychanie” wiedzy do podświadomości. Punkt zwrotny następuje, gdy nie musisz już aktywnie myśleć o każdym cyklu lub (w przypadku języka francuskiego) każdym czasowniku nieregularnym. Jeśli nadszedł ten moment, jesteś gotowy, aby przejść do następnego poziomu. I nie ma w tym pomyśle nic rewolucyjnego.
Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym programistą Java - 3
Kluczem do wszystkiego jest natychmiastowa informacja zwrotna. Niektórzy psychologowie uważają, że moglibyśmy zrobić znacznie więcej, korzystając z nauczania komputerowego i uzyskując natychmiastową informację zwrotną. Na przykład w innym klasycznym eksperymencie początkujący piloci-stażyści przeszli sesję szkoleniową, podczas której musieli wielokrotnie patrzeć na tablicę przyrządów i opisywać ruch samolotu. Jednocześnie otrzymywali natychmiastową informację zwrotną wskazującą, czy wykonali zadanie poprawnie, czy nie. Po dwóch godzinach szkolenia przewyższyli doświadczonych pilotów. Nie oznaczało to oczywiście, że można było ich od razu wysłać na prawdziwy lot, ale nie denerwowały ich już różnorodne i liczne tarcze na desce rozdzielczej. Jeśli więc dopiero zaczynasz uczyć się języka Java, najlepszym pomysłem będzie wykonanie wielu ćwiczeń praktycznych. Istnieje wiele stron internetowych i kursów online, które automatycznie sprawdzają poprawność Twojego kodu. Wybierz taki, który oferuje prawdziwe wyzwania, a nie bełkot. W końcu chcesz, aby Twoja podświadomość była dobra w kodzie, który napiszesz w praktyce. Dlatego właśnie nie przepadam za przykładami programowania wykorzystującymi wymyślone sytuacje, takie jak klasy zwierząt z metodami miauczku i szczekania. Po pewnym czasie opanujesz podstawy programowania. Aby przejść na wyższy poziom, możesz napisać kilka projektów. Kilka lat temu portal InformIT zadał doświadczonym programistom pytanie: „Jak programista najlepiej uczy się nowego języka?” Jeśli podsumujemy ich odpowiedzi, możemy stwierdzić, co następuje: „użyj tego języka w swoim obecnym projekcie”. Pomyśl więc o tym, co zawsze chciałeś wdrożyć – i działaj. Dwadzieścia lat temu, kiedy Java była jeszcze bardzo młoda,mój przyjaciel i kiedyś współautor Gary Cornell zadzwonił do mnie i powiedział: „Kay, napiszemy książkę o Javie”. Odpowiedziałem, że ani on, ani ja tak naprawdę nic nie wiemy o tej Jawie, na co on odpowiedział: „I co z tego? Mamy już umowę na książkę.” Nic do roboty. Musieliśmy się spieszyć, bo ktoś inny zapowiedział rychłe wydanie książki „Naucz się być manekinem Java w 24 godziny” … Chyba jakoś tak to się nazywało ( Kay naśmiewa się z serii książek „For Dummies” - „dla manekinów” słowo „manekin” można przetłumaczyć jako „manekin” – przyp. tłumacza ). Aby nauczyć się nowego języka, zacząłem od projektów – napisałem program, który stworzył interfejs użytkownika do planowania emerytury, a następnie program, który łączył się ze stroną pogodową i wyświetlał raport o pogodzie. Następnie - program symulujący ruch samochodów na autostradzie. W tamtych czasach te programy były po prostu niesamowite!java.awtjava.neti wątki ( threads). Musiałem nauczyć się, jak faktycznie to zrobić, a nie tylko tego, co mówi dokumentacja. W tamtym czasie były to zupełnie inne rzeczy. Właśnie dlatego Core Java [1] odniosła sukces: nie była przeznaczona dla manekinów.
Kay Horstmann i jego 1500 słów o tym, jak zostać lepszym programistą Java - 4
Nauka Javy była wówczas znacznie trudniejsza. Nie mieliśmy witryn takich jak Stack Overflow ( nie mieliśmy też JavaRush – przyp. red. ). W tym miejscu przejdę do sformułowania następujących rad, które pomogą Ci ulepszyć Twoje „umiejętności” programowania. Tak więc, pracując nad własnym projektem, na pewno gdzieś utkniesz. W takim przypadku udaj się na specjalistyczne forum i spróbuj znaleźć odpowiedzi. Uwierz mi, to świetny pomysł . Najpierw zadasz pytania, które zostały już zadane wiele razy. Ale wkrótce zdobędziesz wiedzę, a Twoje pytania staną się bardziej wyjątkowe. To niesamowity sposób na naukę! Oczywiście nie chodzi o to, żeby po prostu skopiować i wkleić fragment kodu i zadać sobie pytanie: „Co mam teraz z tym zrobić?” Musisz dotrzeć do sedna problemu, wyjaśnić, jakie próby rozwiązania problemu już podjąłeś, zanim utknąłeś. Swoją drogą, w większości przypadków, gdy formułuję pytanie na piśmie, sam znajduję odpowiedź i jedyne, co muszę zrobić, to powiedzieć sobie: „W czym tu jest problem, to nie do pomyślenia” jeszcze zanim wysłałem pytanie . Ale nawet jeśli tak się nie stanie... Uwierz mi, przemyślane pytania zwykle przyciągają przemyślane odpowiedzi. Pamiętaj tylko, aby odwdzięczyć się przysługą społeczną, odpowiadając na przemyślane pytania innych osób. Zarówno zadawanie pytań, jak i odpowiadanie na przemyślane pytania sprawiają, że jesteś lepszym programistą. „A co z książkami? - ty pytasz. „Czy naprawdę stały się całkowicie i nieodwołalnie przestarzałe dzięki Google i Stack Overflow ?” Ilekroć poznaję nową technologię, wierzę, że jestem osobą odważną i samodzielnie poradzę sobie ze wszystkimi trudnościami. Ale godzina bezsensownej męki ustępuje godzinie zdrowego rozsądku - i kupuję książkę. Książki techniczne są obecnie oszałamiającą okazją. Jeśli zapłacę 40 dolarów za e-book i szybko dostanę odpowiedź tylko na jedno pytanie, to już zwrócę pieniądze. Nie chcę rozczarowywać innych pisarzy, ale nigdy nie przeczytałem książki technicznej od początku do końca. Zaczynam od miejsca, w którym myślę, że jest zapisany mój problem i jego rozwiązanie, i czytam, aż zrozumiem, jak go rozwiązać. Z tego powodu obecnie próbuję pisać książki, które można czytać w ten sposób. Z takiego podejścia powstał cykl „Dla niecierpliwych”. I w tym miejscu powinienem przerwać – przekroczyłem limit redakcyjny wynoszący 1500 słów. Dodam tylko, że aby stać się lepszym programistą, zacznij od uznania, że ​​istnieje wiele poziomów wiedzy.
  1. Najpierw „wciągnij” do swojej podświadomości podstawowe struktury językowe, czyli zautomatyzuj ich wiedzę, rozwiązując dużą liczbę ćwiczeń.

  2. Rozpocznij pracę nad prawdziwymi projektami, które Cię interesują tak szybko, jak to możliwe.

  3. Następnie dołącz do społeczności, w której możesz zadawać pytania i odpowiadać na nie.

  4. Gdy to zrobisz, będziesz mógł wypowiadać się w rozmowach kwalifikacyjnych, kierując się wiedzą i doświadczeniem. I tak naprawdę nie ma znaczenia, czy rozwiążesz wymyśloną zagadkę.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION