Portfolio programisty
W branży IT jest tak, iż starając się o pierwszą prace nie wystarczy napisanie CV lub listu motywacyjnego, żeby dostać się na rozmowę rekrutacyjną. Może kiedyś jeszcze wystarczyło. Dzisiaj przez to, iż na rynku jest bardzo dużo osób, które starają się o swoją pierwszą pracę trzeba się jakoś wyróżnić na tle konkurencji. A najlepszym sposobem do tego jest portfolio programisty. Pokażesz w ten sposób, iż jesteś warty uwagi i to właśnie Ciebie powinni zaprosić na rozmowę. Dodatkowo pokażesz, iż umiejętności, które wypisałeś w CV nie są tylko wiedzą teoretyczna, ale również poparte wiedzą praktyczną, a dodatkowo pokazanie, iż dane narzędzie potrafi się odpowiednio wykorzystać.
Pewnie nie będziesz jedyną osobą, która wpadnie na pomysł stworzenia swojego portfolio programisty. Dlatego tutaj najważniejsze jest odpowiedzenie na pytanie: Jak stworzyć dobre portfolio programisty?
W tym artykule przedstawia Ci kilka ważnych informacji w kontekście portfolia programisty m.in. Co nam daję (oprócz wzbogacenia CV) czy ile ich powinno być. Dodatkowo przedstawię Ci parę wskazówek i narzędzie, które znacznie poprawią jakość Twojego portfolio m.in. Jak powinien wyglądać plik README, stworzenie przejrzystej dokumentacji API projektu i wystawienie aplikacji do Internetu,
Dlaczego tak ważne jest tworzenie własnych projektów?
Jeśli jesteś osobą początkującą to najlepszym sposobem na poszerzenie i utrwalenie zdobytej wiedzy jest stworzenie projektu od zera: wymyślenie projektu, zaprojektowanie architektury, implementacja i odpowiednie zaprezentowanie. Zobaczysz jak wiedza teoretyczna różni się od tej realizowanej na prawdziwym projekcie. przez cały czas tworząc projekt będzie Ci pewnie brakować umiejętności, żeby niektóre funkcjonalności zaimplementować i będziesz musiał szukać rozwiązania w Google. Ale to nic złego, a wręcz to dobrze, bo wiesz, iż projekt jest wymagający i nie wziąłeś sobie zbyt łatwego projektu (stawianie sobie wyzwań jest bardzo ważne). Pracując jako programista nie zawsze wszystko będziesz wiedział i będziesz musiał szukać gdzieś rozwiązania. To pozwala się kształcić i poszerzać wachlarz umiejętności. Z każdym projektem będzie coraz łatwiej poszczególne rzeczy robić i dlatego też tak ważne jest robienie ich jak najwięcej i zdobywanie coraz to nowych doświadczeń.
Udostępnianie kodu źródłowego w zdalnym repozytorium
Jak skończymy już jakiś nasz prywatny projekt i uważamy, iż naprawdę się postaraliśmy nad nim to warto pomyśleć, żeby go gdzieś udostępnić. W tym celu powstało zdalne repozytorium, na którym można umieszczać swoje projekty np. Github, Bitbucket czy GitLab.
A dlaczego to jest tak ważne? W sumie to z dwóch powodów. Pierwszy taki bardziej personalny. Tworząc projekt możemy sobie zapisać go w sieci i mieć do niego zdalny dostęp w każdej chwili. Dzięki czemu możemy mieć taką historię naszych projektów. Pozwoli to nam w przyszłości porównywać sobie kod w poszczególnych projektach i sprawdzić czy kod, który dzisiaj napisaliśmy jest lepszy od tego co kiedyś robiliśmy. Natomiast drugi powód dotyczy szukania pracy. jeżeli jesteś osobą początkującą i nie masz żadnego doświadczenia komercyjnego to musisz jakoś pokazać osobą, które będą przeglądać Twoje CV, iż faktycznie znasz technologię, które wypisałeś i potrafisz je wykorzystać w praktyce.
Plik README
W przypadku drugiego powodu, o którym wspomniałem powyżej warto osobą, które będą sprawdzać Twoje projekty, ułatwić trochę pracę (ale również pozwoli to zwiększyć Ci szansę, iż dostaniesz się na rozmowę kwalifikacyjną). Dlatego warto w każdym projekcie dodać plik README, który jest swego rodzaju takim jednostronnym dokumentem opisującym projekt. Powinno w nim się znaleźć m.in.
- Opis aplikacji – taki ogólny, wystarczy parę zdań.
- Jak uruchomić projekt – należy opisać jak można uruchomić ten projekt (bez korzystania z IDE), gdy ktoś będzie chciał go sobie lokalnie pobrać.
- Wypisane użyte technologię i biblioteki w aplikacji – takie najważniejsze.
- Widok interfejsu (jeśli jest frontend) – dzięki temu osoba wchodząca na Twój projekt może na gwałtownie zobaczyć sobie jak wygląda jej interfejs graficzny.
- Przypadki użycia (ang. Use cases) – jeżeli masz jakieś interesujące przypadki użycia (czyli jak aplikacji powinna się zachować w danym przypadku) to warto wypisać je w punktach.
- Dodatkowe linki – jeżeli masz jakieś linki, które są przydane w kontekście projektu to warto je umieścić np. link do aplikacji wystawionej na Heroku lub dokumentacje API.
Uwaga! Najlepiej napisać je w języku angielskim
Ile muszę zrobić projektów do swojego portfolio programisty?
Jednym z częstych pytań jakie pojawia się podczas tworzenia swojego portfolio programisty jest pytanie ile tych projektów trzeba zrobić?
No właśnie, ile?
Jeśli ja chciałbym w tej chwili rekrutować do swojej pierwszej pracy to stworzyłbym pewnie na start minimum 2 projekty. Oczywiście mowa o dwóch takich dobrze przemyślanych projektach, a nie takich co się zrobiło przy okazji.
Jeden taki prosty projekt, ale nie do końca . Użyłbym go do zwiększenia liczby projektów w swoim repozytorium, tak żeby pokazać rekrutowi, iż stworzyło się więcej niż jeden projekt podczas nauki. Zadbałbym w nim o najważniejsze elementy z Javy i przygotował jakiś prosty interfejs. Może choćby wykorzystałbym w nim parę wzorców projektowych, żeby pokazać, iż je znam i umiem wykorzystać w praktyce.
Drugi natomiast byłby taki kozak. Zebrałbym w nim wszystkie umiejętności i technologię jakie znam, tak żeby zademonstrować jak dużo umiem. Oczywiście w granicach rozsądku. Efekt finalny powinien być taki, iż jest ładna, działająca aplikacja (pamiętajmy, żeby też nie przedobrzyć np. umieszczając jakieś funkcjonalności, które nie mają najmniejszego sensu w naszej aplikacji. Co z tego, iż się to umie jak psuje efekt końcowy Można wtedy pomyśleć o kolejnym projekcie i tam to umieścić). Na koniec też dodam, iż dobrze jakby sam projekt nie był czymś oklepanym tylko czymś co będzie wstanie się wyróżnić.
Oczywiście jest to moja subiektywna opinie i opisuje tutaj takie minimum konieczne, które jest według mnie potrzebne przy budowaniu portfolio. Pamiętaj, iż im więcej umieścisz projektów w swoim repozytorium tym lepiej. ALE! Też pamiętaj, iż muszą to być wartościowe projekty, mocno przemyślane, a nie takie banalne, napisane na podstawie jakiegoś tutoriala. Rynek IT jest ciężki dla nowych osób, które chcą do niego wejść. Dlatego należy bardzo dobrze zadbać o swoje portfolio programisty.
Budowanie portfolio programisty (Na podstawie checklisty)
Tworząc prywatne projekty powinniśmy je podzielić na 2 grupy: na takie, którymi chcemy się w przyszłości chwalić i takie, który mają służyć nam tylko do nauki programowania. Budowane przez nas portfolio, które chcemy pokazać przyszłym osobą, które będą je przeglądać, musi się wyróżniać na tle konkurencji, więc projekty muszą być naprawdę konkretnie przemyślane i dobrze zrobione. Dlatego te traktowane czysto do nauki lepiej im nie pokazywać.
Zanim napiszesz pierwszą linijkę kod pamiętaj, żeby dobrze przemyśleć swój projekt. Pomyśl czy projekt, który wymyśliłeś jest tym, który pozwoli Ci się wyróżnić na tle konkurencji.
Na koniec tego punktu chciałem Ci przedstawić 2 przykładowe checklisty, które mogą Ci się przydać podczas tworzenia prywatnych projektów. Będziesz mógł dzięki nim sprawdzić czy chociaż cześć ważnych rzeczy uwzględniłeś (lub uwzględnisz) w swoim projekcie. Oczywiście jest to taka podstawowa lista rzeczy jakie powinien mieć dany projekt. A im więcej ich dodasz tym lepiej powinien się prezentować.
Checklista: Prosty projekt
- Wymyślenie projektu.
- Dodanie projektu na platformę GitHub.
- Zaprojektowanie architektury aplikacji.
- Komunikacja z bazą danych z użyciem JDBC.
- Wykorzystanie lambdy i strumieni.
- Wykorzystanie mechanizmu dziedziczenia.
- Zachowanie zasad SOLID.
- Wykorzystanie wielowątkowości.
- Wykorzystanie co najmniej jednego wzorce projektowego.
- Napisanie testów jednostkowych i integracyjnych.
- Prezentacja aplikacji np. konsola lub JavaFX.
- Przygotowanie pliku README (Opis, uruchomienie, wykorzystane technologie i biblioteki, zdjęcia, use case).
Checklista: Złożony projekt
- Wymyślenie projektu.
- Dodanie projektu na platformę GitHub.
- Zaprojektowanie architektury aplikacji.
- Użycie JPA/Hibernate, Spring Data.
- Wykorzystanie lambdy i strumieni.
- Wystawienie usługi REST i/lub SOAP.
- Użycie metod HTTP: GET, POST, PUT, PATCH, DELETE.
- Mapowanie obiektów DTO <-> Entity.
- Komunikacja z zewnętrznym api np. Github Api.
- Zachowanie zasad SOLID.
- Wykorzystanie co najmniej jednego wzorce projektowego.
- Obsługa błędów z wykorzystaniem @ControllerAdvice i @ExceptionHandler.
- Napisanie testów jednostkowych i integracyjnych.
- Napisanie mocka do zewnętrznego Api dla testów i użycie go.
- Wykorzystanie Docker i Docker Compose do budowania aplikacji.
- Dokumentacja API projektu z użyciem narzędzia Swagger.
- Przygotowanie pliku README (Opis, uruchomienie, wykorzystane technologie i biblioteki, zdjęcia, use case).
- Dodanie zabezpieczenia do API z wykorzystaniem JWT (JSON Web Token).
- Stworzenie architektury z wykorzystaniem mikroserwisów (opcjonalne).
- Prezentacja aplikacji na stronie internetowej z wykorzystaniem architektury klient-serwer (opcjonalne).
Stworzenie dokumentacji API projektu
Jednym z dobrych sposobów, aby wzbogacić swój projekt, jest przygotowanie dla niego dokumentacji API, tak żeby osoba, która chce zobaczyć jak działa projekt, miała możliwość szybkiego zobaczenia jakie akcje można na nim wykonać. Poniżej Ci przedstawiam 2 interesujące narzędzia, które mogą Ci w tym pomóc.
Swagger
Swagger jest to zestaw narzędzi, który pozwala programistą na tworzenie, projektowanie, dokumentowanie i korzystanie z usług REST API.
Możemy wyróżnić 2 najczęściej używane narzędzia:
Swagger Editor – jest to narzędzie, które pozwala nam na pisanie dokumentacji API bezpośrednio z poziomu przeglądarki. Wystarczy wejść na tę stronę. Dokumentacje piszemy w języku YAML. Z lewej strony mamy plik yml, a z prawej podgląd dokumentacji.
Swagger UI – tak jak tamto narzędzie była manualne tak to jest zautomatyzowane. Wystarczy odpowiednio skonfigurować tę bibliotekę w swoim projekcie i dokumentacja sama będzie się generować i automatycznie aktualizować (Nie ważne czy dodamy lub usuniemy jakiś endpoint, Swagger sam zaktualizuje dokumentację po zbudowania projektu).
Jak będą chętni to mogę ze Swaggera przygotować osobny wpis lub filmik na YouTube. Dajcie znać czy chcecie
Postman
Czym jest narzędzie Postman, pisałem już w tym wpisie. Jednym z fajnych narzędzi jakie nam udostępnienia, jest możliwość stworzenia kolekcji endpointów wraz z przykładowym użyciem i odpowiedziami, a następnie wyeksportowanie jej do pliku lub wygenerowanie linka do niej. Pozwoli to nam na stworzenie ładnej dokumentacji API wraz z przykładami jak je obsługiwać. Dodatkowo jak ktoś będzie chciał pracować nad projektem to taka dokumentacja, którą możemy sobie zaczytać do Postmana będzie naprawdę pomocna.
HEROKU – Prosty i darmowy sposób na wystawienie aplikacji do Internetu
Heroku jest to taka platforma chmurowa, której jedna z usług pozwala nam na wdrażanie własnych aplikacji do Internetu. Samo korzystanie z platformy jest darmowe. Oczywiście istnieje również płatna wersja tej platformy, ale dla celów prywatnych to co oferowane jest w darmowej wersji powinno w zupełności wystarczyć.
Samo wrzucenie projektu jest bardzo proste. A najłatwiejszym sposobem na wrzucenie projektu, jest jego połączenie z Githubem. Wystarczy 10 kroków i mamy naszą aplikację w Internecie:
- Rejestrujemy się na platformie Heroku.
- Tworzymy nową aplikację.
- Otwieramy nowo utworzoną aplikację.
- Przechodzimy do zakładki „Deploy”.
- Tam mamy do wyboru „Deployment method” i wybieramy GitHub.
- Autoryzujemy konto.
- Wybieramy interesujące nas repozytorium (z konkretną gałęzią).
- Zaznaczamy, iż chcemy mieć automatyczne wdrażanie w zakładce „Automatic deploys”.
- Na koniec klikamy na samym dole „Deploy” w zakładce „Manual Deploy”.
- I mamy działające CI/CD, gdzie jak wrzucimy jakieś zmiany na wybraną gałąź to projekt się automatycznie przebuduje.
Mała uwaga. Ten przykład zakłada, iż nie masz w projekcie bazy danych. jeżeli chcesz ją podpiąć do projektu to należy wykonać dodatkowe kroki. Z poziomu Heroku można stworzyć bazę danych. W prawym górnym rogu jest menu (te 9 kropek) i tam z listy rozwijanej jest opcja „Data”. Po kliknięciu w nie wyświetli się strona, na której jedną z możliwości jest utworzenie bazy danych PostgreSQL. Po utworzeniu, na koniec zostaje tylko to zintegrować z Twoją aplikacją
Oczywiście jest to jeden ze sposobów wdrożenia aplikacji na Heroku. jeżeli chciałbyś poznać bardziej szczegółowo tę platformę to daj znać.
Podsumowanie
W tym wpisie opisałem Ci kilka rad jak stworzyć dobre portfolio programisty. Liczę, iż choć w małym stopniu te rady pomogą wzbogacić Twoje portfolio programisty i tym pomogą Ci z dostaniem się na rozmowę rekrutacyjną.
Poruszyłem w tym wpisie parę ciekawych narzędzi (Swagger, Postman, Heroku). jeżeli chcecie żebym przygotował bardziej szczegółowy wpis lub filmik na YouTube ma któryś z tych rzeczy to dajcie znać.