Konstruktywna krytyka - kod osoby szukającej stażu/pracy

0

Witam, jestem osobą szukającą stażu/pracy jako programista java. Mam za sobą kurs z javy oraz studiuję zaocznie, napisałem kilka swoich projektów lecz do tej pory nie tworzyłem zdalnych repozytoriów. Ale jako że szukam pracy to utworzyłem konto na githubie i wrzucam tam nowe projekty. Problem jednak w tym że nie wiem jak wypada mój kod, dlatego chciałbym aby osoby bardziej doświadczone rzuciły okiem i dały znać co o tym myślą (czy jest ok, co można poprawić, czy powinienem się wstydzić i zostać sprzątaczem). Kodu nie ma dużo, ukończony jest jedynie jeden projekt API. Niemniej będę bardzo wdzięczny za każdą krytykę, ponieważ ze strony pracodawców feedbacku brak, a na studiach nie miałem javy.

https://github.com/MateuszJuh

0

edytowany, już działa

2

Nie wiem czy sobie jaja robisz ale popatrz na pierwsze lepsze repo osoby po bootcampie: https://github.com/zuzia219

A teraz powiedz mi dlaczego miałby pracodawca zatrudnić ciebie, a nie osobe po kursie?

Przykro mi to powiedzieć, ale nie pokazałeś żadnych umiejętności w swoim "projekcie". Nawet nie ma się do czego przyczepić bo ... nic tam nie masz.
Pracodawcy nie obchodzi czy skończyłeś MIT, Bootcamp czy Udemy. Pracodawca chce, abyś umiał wymagane w ogłoszeniu technologie. Robiąc projekty pod konkretną firmę musisz to uwzględnić.
Pracodawca nie ma czasu uczyć się w pracy od podstaw. Nawet na stażu teraz wymagają konkretnych umiejętności - nikt się na stażu nie uczy tylko pracuje.

Po 1 - zrób 3-4 porządne, większe projekty. Coś konkretnego, coś co przydałoby ci się w dziennym użyciu. Jesteś studentem więc powinieneś umieć zrobić coś więcej niż hello world.
Po 2 - zrób sensowną dokumentację - readme.md + github wiki.
Po 3 - zastosuj wiedzę z książek: czysty kod, effective java, java podstawy, java concurrency in practise.
Po 4 - jak chcesz wyprzedzić konkurencję - dołącz do projektu open-source, chodź na meetapy, hackatony itd. Korzystaj z faktu bycia studentem.

Jednak to racja, że na zaocznych nic ludzi nie uczą.

0

Tym że takim projektem nikogo nie zainteresuje wiem, bardziej chodziło mi rzeczy typu struktura katalogów, nazewnictwo, obsługa wyjątków, obsługa bazy danych itp. Nawet projekty rekrutacyjne były bardziej skomplikowane, ale mimo że je wykonałem i działały to odpowiedz byłe negatywna. Dlatego napisałem taki mini projekt aby tylko zarysować sposób w jaki piszę, czy nie ma jakiegoś błędu który powielam. Niemniej dzięki za wskazówki, no i co do ostatniego zdania to niestety muszę się zgodzić.

0

To tera już juniorzy po bootcampach książki wydajo, co to sie dzieje :D

4

GallowsGameCLApp wygląda jakby tam nic nie było. Z drugiej strony jak na apkę, która nic nie robi i tak jest tam za dużo plików.

added emty classes

empty* ale to jeszcze nie tak istotne. Bardziej intryguje mnie sposób pisania top-down, który może łatwo doprowadzić do overengineeringu. Po co wstawiać puste klasy? Skąd wiesz, że będziesz je potrzebować?

Może takie są zwyczaje pisania w Javie, żeby robić overengineering od pierwszych linijek kodu... ale z perspektywy ogólno programistycznej to mało efektywny sposób pisania.

Lepiej zrobić prostą apkę, która coś robi, a nie bawić się w abstrakcje dla abstrakcji (WordDao wymiata, 34 linijki kodu, które praktycznie NIC nie robią https://github.com/MateuszJuh/GallowsGameCLApp/commit/480ebf2fefb1dffd0e348f2f39e2c3410500ee43#diff-6a500ad8285a3afeb6fe8a65ec5fd0c0 )

Tzn. owszem abstrakcje się przydają, ale jak wiesz, po co ci one. Jak spełniają konkretną funkcję, a nie dlatego, że "tak się robi".

GallowsGameAPI z kolei to dla mnie przykład, w jaki sposób zrobić Enterprise HelloWorld, czyli prostą apkę, ale pisaną w pseudoprofesjonalny sposób, żeby tylko się popisać pseudoprofesjonalizmem.

Zobacz jak to wygląda - tworzysz prostego wisielca w sposób, w jaki byś tworzył średniej wielkości apkę biznesową... Ale nie wiem, może w Javie się tak pisze po prostu (dlatego Javy nie tykam).

No i:

  1. Niepotrzebna(?) klasa:

Klasa WordsService wydaje się takim pół-wrapperem na klasę WordsRepository, gdzie połowa metod tylko wywołuje WordsRepository, a połowa sprawdza jakieś warunki jeszcze
https://github.com/MateuszJuh/GallowsGameAPI/blob/566abe1a3cd66bf4654f80657c2eb5497d061bab/src/main/java/services/WordsService.java

Nad tym bym się zastanowił. Może ta klasa jest potrzebna, a może nie. W ogóle wg mnie źle podchodzisz. Zamiast myśleć jakimiś wydumanymi książkowymi abstrakcji "service", "repository", weź pomyśl o tym, co masz bezpośrednio w grze w wisielca (tak jakbyś miał to zrobić bez komputera, na kartce papieru).

W wisielcu masz coś więcej niż "słowo", bo można by tam wydzielić "gracza" (a gracz ma "punkty"), można wydzielić "grę", gra się dzieli na "tury". Oczywiście, czasem trzeba zrobić coś związanego z infrastrukturą, ale jeśli sytuacja wygląda tak, że infrastruktura to 90% kodu, to jest to raczej mało produktywny sposób kodowania. I słabo się potem utrzymuje kod pełen wrapperów na wrappery.

Taki kod trudniej potem zrozumieć.

Czyli mam wrażenie, że przesadziłeś z książkami. Programowanie to ma być zabawa, a nie udawanie pseudoprofesjonalisty.

  1. niepotrzebne metody. Np. setId i getId nigdzie nie używasz. W ogóle mam wrażenie, że ta cała 55 linijkowa klasa to tylko wrapper na typ String
    https://github.com/MateuszJuh/GallowsGameAPI/blob/566abe1a3cd66bf4654f80657c2eb5497d061bab/src/main/java/models/Word.java
0
czysteskarpety napisał(a):

To tera już juniorzy po bootcampach książki wydajo, co to sie dzieje :D

Napisałem dokładnie jak w konkretnym przypadku juniorów wcielają się agencje reklamowe i public-relations, ale chyba to nie jest poprawne politycznie na forum bo po chwili jakiś moderator skasował te "niecne posądzenia".
Więc niech już będzie, że juniorzy po bootcampach od razu książki piszą.
Co Morawiecki na taśmach o Chucku Norrisie i reklamie banku mówił? #pdk

1

Ani Twoje repo, ani tej Zuzi nie zachęca. Takie rzeczy wystarczały do zatrudnienia może kilka lat temu (wiem, bo sam się jeszcze załapałem). Teraz każdy może zrobić swojego CRUDa, niestety o poziomie kandydata nie mówi to nic. Zresztą, nie wiem czy te przysłowiowe "CRUDY" i "formatki" to nadal coś czym zajmują się firmy w Polsce. Ja osobiście spotykałem się z ciekawszymi problemami, a jeszcze w żadnej topowej firmie nie pracowałem. Wydaje mi się, że najłatwiejszą obecnie drogą do pracy jako programista, jest pójście na dobre studia i załapanie się na staż mniej więcej po drugim/trzecim roku. Dostanie się na staż nie powinno być takie trudne, zazwyczaj rozwiązuje się różnego rodzaju testy, do tego nie potrzeba mieć żadnego 'portfolio'. Oczywiście nie wystarczy tych studiów po prostu ukończyć, należy się przyłożyć co najmniej do takich przedmiotów jak systemy, sieci i algorytmy. Poza tym, trzeba poćwiczyć rozwiązywanie problemów algorytmicznych (np. na LeetCode.com). W Polsce zazwyczaj nikt nie pyta o żadne rocket science, najtrudniejszą strukturą jaką trzeba znać przy rozwiązywaniu tego typu zadań jest zawyczaj hash mapa :D (mówię tu o poziomie Junior/Regular). Opinie na temat tego typu zadań znajdą się pewnie różne, ale prawda jest taka że pokazują czy kandydat umie myśleć i nie ma sieczki w mózgu. Dodatkowe punkty można dostać za znajomość JVM, jeżeli aplikuje się na Java Developera. I to w zasadzie tyle.

Pewnie są łatwiejsze drogi dostania pracy, ale trzeba być świadomym jak wiele jest chętnych i sama umiejętność klepania jest już standardem, a żeby dostać pracę trzeba się jakoś wyróżnić.

0

W tym roku wielu doktorów z uniwersytetów zdecydowało się iść na na bootcampy po uzupełnienie wiedzy.

Niestety, z wielką stratą dla polskiej nauki, najlepsze szkoły programowania odmówiły przyjęcia wykładowców akademickich, słusznie obawiając się nielojalności po ich stronie. Topowe polskie bootcampy nie chcą stracić prestiżu, dlatego chronią cenne zasoby intelektualne przez zacofanymi uniwersytetami i politechnikami.

Na szczęście inżynierowie i magistrzy mogą liczyć na załapanie się na ostatnie miejsca na weekendowych kursach. Niestety wszystkie miejsca na szkoleniach dziennych zostały wykupione do końca 2020 roku.

Znany każdemu redaktor Marek Wielgo już się przebranżowił. Teraz programuje bloga pod znamienną nazwą "Kto nie poszedł na bootcamp przegrał życie".

1

po tym jak zobaczylem wypushowany na gita katalog .idea po porstu zamknale zakładke

3

Zerknąłem w testy, bo rzadko się widuje w tego typu tematach.
"public class GallowsGameTest {/"/TODO GallowsGameTests

}"
no cóż, może innym razem xD

1

Przede wszystkim więcej cierpliwości, w prawdziwej pracy dostaniesz zadania które mogą ciągnąć się miesiącami przed ich faktycznym ukończeniem a tutaj podajesz owoce 2 dni pracy do "konstruktywnej krytyki". Posiedź nad projektem miesiąc albo dwa i wtedy daj do oceny.

0

a według mnie nawet fajnie to wygląda
ja w takim stylu nie robiłem (tzn. robiłem o wiele prościej, ale zazwyczaj jako-tako rozbudowany projekt) a znalazłem zatrudnienie (z 2 lata temu)

0
Markuz napisał(a):

Przede wszystkim więcej cierpliwości, w prawdziwej pracy dostaniesz zadania które mogą ciągnąć się miesiącami przed ich faktycznym ukończeniem a tutaj podajesz owoce 2 dni pracy do "konstruktywnej krytyki". Posiedź nad projektem miesiąc albo dwa i wtedy daj do oceny.

albo półtora roku
https://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/316833-przez_15_roku_tworzylem_gre_rpg_aby_nauczyc_sie_programowania_gra_jest_gotowa_i_wychodzi_dzisiaj_na_steama_oto_historia_jej_powstawania?view=unread

1 użytkowników online, w tym zalogowanych: 0, gości: 1