Poprzednie części:

W dyskusji pod wczorajszym postem padło bardzo ważne pytanie:

Ile razy wiedza potrzebna do udzielenia poprawnej odpowiedzi na pytania z tego wpisu przydała się w pracy?

Mnie osobiście wiedza co do zasady działania poszczególnych typów kolekcji, różnicy pomiędzy stosem a stertą czy też umiejętne korzystanie z notacji dużego O, zaczęło przydawać się dopiero po kilku latach. Wtedy, gdy napisanie kodu przestało być jedynym zadaniem, a przyszło mi omawiać i uzasadniać wybór tej, a nie innej implementacji. Pytania te, poza sprawdzeniem wiedzy mają też za zadanie, sprawdzenie znajomości języka programowania.

Czy mówi pan po…

Jeżeli spojrzymy na ogłoszenia o pracę, to zauważymy, iż niezależnie od języka pewne technologie i biblioteki zachowują się jak trolejbusy. Pojawiają się stadami. Na moim Javowym podwórku będzie to Spring i Hibernate, Java EE i Hibernate, zazwyczaj wymieszane z jednym z serwerów aplikacyjnych i jakimś JSFem czy innym PrimeFaces. Podobną parę tworzy HTML5 i CSS3, które zazwyczaj są doprawione JavaScriptem. Oczywiście trzeba tu zadać pytanie:

Co oznacza, że znam dany język?

Nie ma dobrej odpowiedzi na to pytanie. Dla każdego dobra znajomość oznacza coś innego. Co więcej, różnice w rozumieniu terminu „dobra znajomość języka” pogłębiają się, gdy porównamy odpowiedzi osób zajmujących się różnymi językami. Z tego powodu nie będę dziś zamieszczał wyliczanki znanej z poprzednich wpisów musisz-powinieneś-zaskoczysz. Nie ma to sensu. Nie chcę też zostawiać Cię czytelniku z zupełnej próżni. Dlatego też poniżej, bardzo subiektywna, lista rzeczy, które są wymagane od osób podejmujących pierwszą pracę jako programiści.

Składnia

Dobra znajomość języka u osoby początkującej to przede wszystkim znajomość składni. Gruntowna połączona ze zrozumieniem różnić w działaniu elementów np. do-while, a while, if-else, a switch. Przykład pobieżnej znajomości z wczoraj z forum 4programmers. Czasami na rozmowach pojawiają się „dziwne” konstrukcje w rodzaju iteratora w pętli for. Pamiętaj, że elementem składni są też byty występujące w języku, na przykład adnotacje czy makra w charakterze komentarzy.

Biblioteka standardowa

Praktycznie każdy język dostarcza pewną ilość elementów (klas, funkcji, struktur), które tworzą bibliotekę standardową. Część z nich to implementacja podstawowych struktura danych, algorytmów czy protokołów. Inne to narzędzia, a jeszcze inne „bebechy”. Nie trzeba na pamięć znać ich wszystkich, ale moim zdaniem trzeba wiedzieć, co jest w ramach biblioteki standardowej.

Najpopularniejsze biblioteki

Podobnie jak w przypadku biblioteki standardowej. Jednak, przede wszystkim jak idziesz na rozmowę, gdzie ogłoszenie zawierało informację o np. iReports to poczytaj o tej bibliotece. Spróbuj przejść tutorial i przeczytać wprowadzenie. Nowicjusza męczy się ze znajomości bibliotek, by sprawdzić ile pracy, trzeba będzie mu poświęcić. Jednak brak jakiejkolwiek wiedzy będzie problemem. Przy obecnym bogactwie źródeł poznanie najpopularniejszych rozwiązań w danym języku nie jest problemem. Gdzie ich szukać? Sprawdź czy w twoim kraju działa np. grupa użytkowników danej technologii. Jeżeli działa, to może ma swój kanał na Youtube. Tam na pewno znajdziesz coś ciekawego.

BHP

W każdym języku są pewne zasady, które można nazwać BHP języka. Warto je poznać. Zazwyczaj na etapie nauki popełnimy te wszystkie błędy, które są opisane tymi zasadami. Przykładowo, znowu forum 4p, zasięg zmiennych i zasada deklaracji w miejscu użycia. Zasady te są gdzieś pomiędzy składnią, a wzorcami projektowymi. Nic nie stresuje na rozmowie jak popełnienie prostego błędu składniowego.

Podsumowanie

Każdy język ma swoją filozofię. Gdy zaczynamy naukę danego języka, warto poświęcić chwilę na poszukanie informacji o tym, co przyświecało twórcom danego języka. Zazwyczaj pierwszy język, który poznajemy i podejmujemy pracę jako programista, nie będzie „tym jedynym”. Dopiero po poznaniu kilku języków nabierzemy pewnej wprawy w ocenie własnych umiejętności i wiedzy. Dlatego tak ważne jest, by przed podejściem do rozmowy kwalifikacyjnej, samodzielnie napisać trochę kodu.