Własne portfolio, to ważny element, jeżeli ubiegamy się o stanowisko Junior Java Developer’a. Portfolio pozwala nam również zgromadzić w jednym miejscu zdobytą wiedzę tak, aby można było później do niej wrócić.
Wstęp
Dla osób, które będą nas rekrutować, własne portfolio, to sygnał, że znamy język Java nie tylko od strony teoretycznej, ale również praktycznej. Umieszczenie kodu języka Java (zwanego kodem źródłowym) w portfolio nie polega na “wgraniu plików na dysku w chmurze”, ale wymaga dodatkowej wiedzy wykraczającej poza sam język Java.
Jak zbudować portfolio
Jak zbudować dobre portfolio? Dlaczego portfolio z “Hello World!”, to stanowczo za mało? Firmy otrzymują bardzo wiele CV od osób, które ubiegają się o stanowisko Junior Java Developer’a, w tych CV umieszczane są linki do portfolio (repozytorium git, więcej o tym w dalszej części) z kodem źródłowym. Jeżeli mamy w portfolio tylko jeden projekt tzw. CRUD w Spring Framework, to powielamy tylko schemat, który występuje u osób kończących Bootcamp’y – więcej informacji w artykule Pułapki szablonu CRUD we własnym portfolio i rzeczywistym projekcie.
W takim razie, co zrobić? Wyróżnić się jakimś ciekawym projektem? Czy po prostu umieścić wiele projektów, np. z podstawami języka Java?
Co umieścić w portfolio?
Dobre portfolio, moim zdaniem powinno zawierać zarówno jeden “większy” projekt z wykorzystaniem Spring Framework jak również “mniejsze” projekty prezentujące np. właściwości języka Java. Większy projekt w Spring Framework, to niekoniecznie wspomniany wcześniej CRUD – o projekcie z CRUD więcej w artykule Pierwsza klasa jako serwis CRUD – kod Java, IntelliJ, krok po kroku. Jeżeli już robimy CRUD’a, to ważne, aby miał on dobrą dokumentację w pliku README.md oraz sam kod zawierał testy jednostkowe, np. w JUnit i był zgodny z SOLID i DRY.
Plik README.md czytają rekruterzy HR’owi, nietechniczni
Tu należy umieścić opis projektu, informacje o wykorzystanych technologiach, sposób instalacji oraz uruchomienia projektu. Dodatkowo można dołączyć zrzuty ekranu z działającej aplikacji.
Repozytorium git przeglądają rekruterzy techniczni
Po “wyglądzie” repozytorium git można stwierdzić czy dana osoba zna i poprawnie używa narzędzia git. Najważniejsze, to tworzenie branch’y oraz Pull Request, nawet dla siebie samego. Warto rozłożyć w czasie np.: kilku tygodni commit’y w git.
Gdzie umieścić portfolio?
Najpopularniejsze miejsca do wspóldzielenia i udostępniania kodu źródłowego:
“To platforma i usługa oparta na chmurze służąca do tworzenia oprogramowania i kontroli wersji.” – źródło Wikipedia.
“To usługa hostingowa repozytorium kodu źródłowego oparta na Git.” – źródło Wikipedia.
Na GitHub i Bitbucket znajdują się również projekty open-source, z których będziemy korzystać jako programiści języka Java, np. popularny Spring Framework ma swój kod na GitHub‘ie. Znajdziemy tam również kody źródłowe pochodzące z wielu kursów, tutoriali i innych programistów, nie tylko dla języka Java. Podstawową funkcją na GitHub i Bitbucket są repozytoria z kodem źródłowym. Opis wszystkich dostępnych funkcji wychodzi poza zakres tego artykułu.
Czego nie robić
Nie wysyłamy naszej pracy w postaci archiwum, które zawiera pliki z kodem źródłowym, lub co gorsza pojedynczych plików z klasami Java – kod należy umieścić w zdalnym repozytorium kodu źródłowego. Odstępstwem od tego jest sytuacja, gdy umieszczenie kodu źródłowego w zdalnym repozytorium kodu źródłowego łamie zasady poufności, np. otrzymaliśmy zadanie rekrutacyjne od firmy X, które opiera się na wewnętrznych danych tej firmy. W każdym innym przypadku należy nasz kod umieścić w zdalnym repozytorium kodu źródłowego. Udostępnienie kodu języka Java nie polega na umieszczeniu kodu źródłowego na dysku w chmurze.
Nie umieszczamy w repozytorium git elementów, które są dynamicznie generowane np. skompilowane klasy – pliki z rozszerzeniem .class – języka Java. Biblioteki, które są automatycznie pobierane i dołączane przez narzędzie taki, jak np. Maven, gradle. Mam nadzieję, że nie muszę przypominać, że nie umieszczamy loginów i haseł w repozytorium git – najlepiej używać mechanizmu kluczy publicznych/prywatnych i/lub certyfikatów.
Czym są git oraz GitHub?
Git jest rozproszonym systemem kontroli wersji, np. plików z klasami języka Java. “Wymiana plików” kodu źródłowego odbywa się wyłącznie za pomocą systemów kontroli wersji, takich jak git. Repozytorium git zawiera pliki, najczęściej umieszczone w katalogach, które składają się na projekt, każdy plik w repozytorium git zawiera historię zmian, którą można porównać do historii zmian w pliku Word.
Ja, osobiście GitHub i podobne narzędzia nazywam graficzną nakładką na repozytorium git, która umożliwia wspóldzielenie kodu źródłowego oraz przegląd – code review – tego kodu.
Definicja GitHub z Wikipedii: “hostingowy serwis internetowy przeznaczony do projektów programistycznych wykorzystujących system kontroli wersji Git.” Zarówno GitHub jak i Bitbucket udostępniają repozytoria git’a oraz własne dodatkowe funkcje, które nie są dostępne dla narzędzia git. Przykłade takiej funkcji jest Pull Request lub Merge Request.
Co “mówi wygląd” repozytorium git?
Bardzo ważne dla osoby weryfikującej nasze portfolio, jest, aby projekt zawierał sporą ilość opisanych zmian w git (git commit -m “moja zmiana”). Równie ważna jest sama informacja (commit message) zawierająca skrócony opis zmian, które wprowadziliśmy w kodzie i umieszczamy jako commit. Jest to ważne, bo na tej podstawie można ocenić ile czasu zajęło tworzenie projektu i czy czasem nie został on dodany w całości w postaci jednej zmiany, co jest podejrzane. Najważniejsze, to robienie branch’y oraz Pull Request, nawet dla siebie samego.
Podsumowanie
Niestety dla osób, które zaczynają swoją przygodę z językiem Java git jest poważnym problemem. Natomiast dla osób rekrutujących na stanowisko Junior Java Developer’a portfolio w repozytorium git jest informacją, że dana osoba wie jak współdzielić kod źródłowy w zespole programistów.