Cześć.
Mam takie pytanie, czy moje programy z Githuba nadają się na portfolio w takim sensie, żeby pracować jako programista, a najlepiej C++ junior?
Jeżeli nie, to co można by jeszcze zrobić, żeby zwiększyć swoje szanse na zatrudnienie ?
Piszę z czystej ciekawości, raczej nie widzę siebie w roli programisty w biurze 8h dziennie - nie wiem czy bym wytrzymał tyle pisać
Co do portfolio na stanowisko programista?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1132
a najlepiej C++ junior?
Zamiast myśleć o portfolio lepiej zbadać rynek, bo C++ jest specyficzny.
Jak to wygląda w typowym webowym stacku (Java, C#, JS):
- trzeba znać język
- trzeba ogarniać weba
- trzeba umieć klepać crudy
Dużo z tych rzeczy jest bardzo "typowych" i to właśnie na tą ścieżkę było tyle bootcampów, więc i istnieją typowe sposoby odpytywania i oceniania portfolio
W C++ nie klepie się weba tylko wszystko. Moje zrozumienie tematu jest następujące:
- gamedev: nie wiem w sumie o co pytają, nie znam tego rynku. Nie wiem też czy w dzisiejszych czasach biorą ludzi z ulicy na C++ jak dużo roboty to teraz gotowe silniki
- jakieś stare korpo utrzymujące legacy projekt, jest tego dużo: wiedza ogólna, "studencka" i ogarnianie języka + narzędzi np. git
- duże i dobre korpo w stylu FAANG: bardzo mocne algorytmy, studia, system design. Pewnie mógłbyś dostać taką pracę jakbyś był kozakiem w algorytmy nigdy niczego nie tworząc
- embedded: nie znam rynku. Pewnie wymagane są jakieś projekty embedded i wiedza z tego zakresu
Jeżeli nie, to co można by jeszcze zrobić, żeby zwiększyć swoje szanse na zatrudnienie ?
Tak na pierwszy rzut oka to pewnie patrzyłbym na README.md i pliki w repo:
- brak
.clang-formatco oznacza, że nie formatujesz kodu. To standard w każdym języku programowania - brak CI: testy, formatowanie, lint (https://clang.llvm.org/extra/clang-tidy/) , budowanie. Jak ogarniesz CI to możesz sobie wrzucić badże w opis, od razu wygląda bardziej profesjonalnie xd
- polski język
- używaj gotowych licencji np.
MIT, wygląda to bardziej profesjonalnie niż to co masz
Piszę z czystej ciekawości, raczej nie widzę siebie w roli programisty w biurze 8h dziennie - nie wiem czy bym wytrzymał tyle pisać
Raczej nikt nie pracuje po te 8h. Programowanie jest jednak męczące jakbyś chciał pracować po 100% normy. Do tego najczęściej sam rozkminiasz jak zrobić danie zadania co sprawia, że trudno cię kontrolować i trzeba naprawdę lecieć w c**a albo robić po 3 etaty, żeby ktoś się przyczepił lub ewentualnie pracować w jakimś kołchozie
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
Czy jeśli chodzi o Crud to to jest to ?
CRUD to bardzo podstawowe pojęcie w programowaniu aplikacji (zwłaszcza webowych).
To skrót od czterech operacji,które wykonujesz na danych:
C – Create → tworzenie danych
R – Read → odczytywanie danych
U – Update → aktualizacja danych
D – Delete → usuwanie danych
brak .clang-format co oznacza, że nie formatujesz kodu. To standard w każdym języku programowania
staram się pisać poprawnie kod a czasami formatowanie mogłoby źle wyglądać przy dłuższych if'ach
brak CI: testy, formatowanie, lint (https://clang.llvm.org/extra/clang-tidy/) , budowanie. Jak ogarniesz CI to możesz sobie wrzucić badże w opis, od razu wygląda bardziej profesjonalnie xd
polski język
możesz rozwinąć myśl? nie za bardzo wiem o co chodzi :-/
polski język
to źle? spróbuję przetłmaczyć wszystko na angielski
- Rejestracja: dni
- Ostatnio: dni
O ile nie masz tam jakichś bardzo robiących wrażenie projektów które opisujesz w cv to raczej nikt nie zajrzy, może zerknie na to czy contribution graph jest cały zielony (co oznacza pasjonata) i ewentualnie przeklika parę plików szukając red flagów.
tBane napisał(a):
staram się pisać poprawnie kod a czasami formatowanie mogłoby źle wyglądać przy dłuższych if'ach
co.
To brzmi jak duży red flag, w poprawnym kodzie w ogóle nie powinno być dłuższych ifów i to niezależnie co masz na myśli pisząc "dłuższe" (więcej warunków czy bardziej zagnieżdżone).
To że masz w avatarze githuba minotaura w pozycji "na pieska" też nie pomaga.
Tak naprawdę github dziś nic o nikim nie mówi, każdy może sobie stworzyć profesjonalnie wyglądające portfolio z udziałem AI w parę godzin. I tak nikt tego nie będzie pobierać i sprawdzać czy się kompiluje, uruchamia i działa.
Ale jak już to lepszy jeden konkretny projekt który aktywnie rozwijasz i starasz się żeby spełniał "industry standards" niż dziesiątki projektów "do portfolio" typu todo list, kalkulator bmi, itp. Pytanie "co do portfolio" jest złe bo nikt ci nie podpowie na co masz zajawkę; wstawianie takich typowych projektów które ci ludzie podpowiedzą do zrobienia na szybko zadziała tylko na niekorzyść.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1132
tBane napisał(a):
Czy jeśli chodzi o Crud to to jest to ?
Większość aplikacji webowych to mała liczba ciekawej logiki i dużo przepychania danych z/do bazy danych:
- sklep internetowy - tabela z zamówieniami, ofertami, stanem przedmiotów
- media społecznościowe: czaty, posty, ludzie
Z tego powodu często używa się pejoratywnego określenia CRUD jako synonim mało ciekawej pracy, którą trzeba robić, bo jest zapotrzebowanie
staram się pisać poprawnie kod
Generalnie dobrym nawykiem jest używanie automatyzacji do wszystkiego. Może twoje formatowanie ci pasuje, ale w firmach pracujesz z wieloma osobami i każdy ma własne zdanie. Do tego automat jest po prostu pomocny, bo robi robotę za ciebie
mogłoby źle wyglądać przy dłuższych if'ach
Zawsze można rozbijać długiego ifa do zmiennych bool.
brak CI: testy, formatowanie, lint (https://clang.llvm.org/extra/clang-tidy/)
możesz rozwinąć myśl? nie za bardzo wiem o co chodzi :-/
Chodzi o skrypty, które budują kod i odpalają inne sprawdzarki dla każdego commita, który wrzucisz. Dzięki temu nie ma czegoś takiego, że u mnie działa. To też znowuż pozwala na pracę wielu osób nad tym samym kodem
Odpal se jakiegoś agenta AI, niech ci napiszę CI dla githuba to od razu załapiesz co to robi
polski język
to źle? spróbuję przetłmaczyć wszystko na angielski
Praktycznie wszyscy używają angielskiego w branży. Nawet jak piszesz kod od polaków dla polaków to:
- jest szansa, że będzie z tobą pracowała osoba z zagranicy. Np. jest całkiem sporo Ukraińców z wiadomej przyczyny
- biblioteki i języki programowania są po angielsku. Mieszanie wygląda źle
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
no dobra. Spróbuję jutro te wszystkie if'y porozdzielać na bool'e.
A to Cl to nie wiem.. spróbuję. Nadal nie rozumiem co daje to narzędzie, nie wystarczy sama poprawna kompilacja?
A taki program graficzny się nada na portfolio?
https://github.com/tBane-Dev/Anim-Paint.git
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
Dobra, wysłałem CV do agencji z linkiem do Githuba. Zobaczymy, może się ktoś odezwie :D
Napisałem, że umiem w C++ (SFML 2.5.2 i 3.0.2), Python3 (pySDL) oraz Java (libGDX).
To chyba nie tak źle ? :P
- Rejestracja: dni
- Ostatnio: dni
- Postów: 36
Odnośnie C++ spotkałem w pracy może 2 na 50 aplikacji w tym języku. Reszta to głównie .NET lub Java.
Były to głównie aplikacje okienkowe na Windowsa robione z użyciem Buildera Borlanda (aktualnie Embarcadero), czyli apki, które powstały dobre 20 lat temu i sobie żyją.
Wersja Community: https://www.embarcadero.com/products/cbuilder/starter
To co mogę Ci polecić osobiście to nauczyć się jak robi się takie typowe apki jak:
Uruchamiasz aplikacje -> Logowanie -> Panel główny (wybór instancji / bazy) -> Przeglądy - tu zależnie od branży mogą to być zamówienia sprzedażowe lub jakieś dostawy logistyczne. Z poziomu przeglądu wchodzisz na dane zlecenie i możesz w nim wykonywać różne czynności jak dodawanie / edycja pozycji lub ilości / promocje / składy.
Przeważnie takie zlecenia / dostawy są podzielone na część nagłówkową oraz pozycje. To ma również odzwierciedlenie na poziomie bazy danych.
W większości aplikacji były funkcjonalności takie jak:
a) łączenie się do bazy danych MS SQL Server lub PostrgreSQL. Tu głównie trzymasz stany powyższych rzeczy, czyli jak zmieniasz nagłówek zlecenia to zmienia się wiersz nagłówkowy na bazie. Jak edytujesz pozycje to analogicznie tabela pozycyjna. W tym pomogą Ci takie rzeczy jak FireDAC lub UniDAC.
b) wykonywanie zapytań do różnych API z poziomu tej aplikacji okienkowej, czyli Twoja aplikacja używa klienta HTTP strzela do jakiegoś API. Skoro pisałeś już coś w Javie to najlepszym sposobem byłoby połączenie Twojej wiedzy. Robisz sobie np. proste API w Javie i frameworku Spring Boot. To nie musi być coś szałowego. Wystarczy, że zrobisz prosty 1-2 kontrolery typu GET twojeapi.pl/api/v1/price/materialId lub twojeapi.pl/api/v1/customer/123456
Jak już masz to API i sobie chodzi to w momencie jak robisz sobie zlecenie w aplikacji okienkowej otwierasz okno i w tym momencie chwilę się ono stopuje na wyświetlaniu -> strzela do Twojego API o konkretnego klienta i zwraca jego dane w formacie JSON, CSV lub Protobuf. Ty te dane odbierasz apką C++ robisz jakieś rzeczy w pamięci i finalnie zapisujesz do tabeli w bazie danych, czyli używasz wiedzy z kroku a)
c) analogicznie do b) tylko w drugą stronę. Pobrałeś sobie dane z API. Utworzyłeś na ich podstawie jakieś zlecenie to teraz klikasz sobie guzik finalizuj lub wyślij i budujesz strzał, który wysyłasz na inne API. Takie API zwróci Ci potwierdzenie zlecenie przyjęto status 200 i Ty jak dostaniesz status 200 to np. blokujesz już to zlecenie, bo zostało wysłane, wiec nie można go zmienić i np. dajesz status wysłane i potwierdzone
d) często występowało też eksportowanie do pliku np. jako csv lub xlsx. Najprościej to możesz sobie zrobić coś podobnego do wysyłki zamówień tylko np. eksport zrealizowanych zleceń. Masz jakiś guzik eksportu na GUI. Klikasz, wybierasz np. 3 zlecenia Enter i pojawia Ci się okienko Windows do eksportu zamówień. Analogicznie możesz w drugą stronę. Czyścisz zamówienia np. na bazie i masz guzik importuj zamówienia z pliku. Wskazujesz tylko wyeksportowany wcześniej plik i guzik ok. Po czym chwilę aplikacja sobie mieli i jak skończy odświeża okno i masz np. te 3 zlecenia na panelu.
Bardziej skomplikowane tematy:
e) cache. Możesz do tego np. użyć SQLite. To jest temat czysto wydajnościowy. Robisz sobie 1 duży strzał do bazy danych tej z punktu a) i np. pobierasz wszystkich klientów (np. 500 tysięcy wierszy) albo ceny. Jak odbierasz strzał to zapisujesz to sobie do SQLite i możesz już tam porobić jakieś proste operacje na tych danych, które masz w pamięci, a nie w bazie tej głównej. Po zrobieniu operacji wyświetlasz dane na bieżąco na GUI, bo masz do nich szybki dostęp nie musisz czekać na strzały z bazy. Z takich starszych rzeczy to ADO DataSety.
f) wielowątkowość. Zbuduj sobie jakiś prosty serwis windowsowy lub robota, który działa na tych zleceniach np. wchodzi do nich coś liczy lub zmienia i wysyła. Możesz mieć coś dodatkowego co w pętli dorzuca jakieś losowe zlecenia, żeby robot miał co robić. Zadanie polega na tym, żeby robot nie robił 1 zamówienia naraz tylko np. robisz tak, że działa na 4 wątkach to może być na parametr. Parametr można ustawić np. w pliku konfiguracyjnym aplikacji lub na tabeli parametry w bazie danych. Jak robot startuje czyta parametry i zaczyna wysyłać zlecenia lub robić działania dzięki wielowątkowości jak masz np. 100 zleceń to nie robi 1 potem 2 i tak do 100 tylko robi 4 naraz i dzięki temu oszczędzasz czas, bo zlecenia mogą się pojawiać na bieżąco. Przy czym tutaj nie może być tak, że robot wciąga 1 zamówienie, a drugi wątek np. też próbuje brać to samo zlecenie.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
@Ryan_1975 super. Na pewno spróbuję coś w tym zrobić. Może jakiś prosty sklep z bazą danych :-)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 36
@tBane Jasne. Nie zrażaj się na początku ilością rzeczy. Pamiętaj, żeby sobie dzielić problemy na małe fragmenty i po trochu dłubiesz. Tak jak piszesz może to być sklep lub aplikacja do zamówień lub magazynu. Ten powyższy schemat jak sobie popatrzysz jest w porażającej ilości systemów wielu firm na całym świecie.
Zauważ, że jak masz przykładowo:
Nagłówek
Nazwa zamówienia - Klient - Data zamówienia - Suma wartości nagłówka - Terminy płatności itd.
Pozycje
Nazwa pozycji / materiału - Ilość - Cena jednostkowa - Promocja lub jej brak - Skład
Teraz jak zmieniasz ilość na pozycji z 1 sztuki na 3 to musisz zmienić cenę całej pozycji (wiersza). Analogicznie przy takim działaniu zmienia się sumaryczna wartość nagłówka i baza też musi mieć to zapisane po edycji.
Możesz zobaczyć jak coś takiego działa na filmach z systemu typu ERP jakim jest SAP - np. Sales Order Creation.
Stworzyłeś już kilka fajnych projektów z grami, więc bardzo dobrym pomysłem jest ich wykorzystanie. Wybierz sobie najlepiej jakiś Twój ulubiony i ten sklep lub aplikacje, którą będziesz robił może być w jej tematyce. Ludzie często biorą jakieś nudne tematy, a wystarczy po prostu trochę kreatywności. Może to być na początku Twój sklep z kartami lub obrazami potworków. Dobrym przykładem jest Twój projekt Editor-RPG2D. Zauważ, że masz w nim już sporo obiektów jak potwory / ludzie. Lub typowe materiały jak drewno / domki / drzewa. Dużo z tych rzeczy ma coś takiego jak jednostki miary. Przykładowo 2 opakowania szamponu lub 4 sztuki igieł. W Twoim przypadku 4 belki drewna lub 5 litrów wody. Niektórzy tez lubią klimaty typu Pokemon lub inne znane serie tylko tu musisz pamiętać, że te rzeczy są na licencji, więc lepiej stworzyć coś własnego co będziesz mógł pokazać legalnie.
Kiedyś znajomy opowiadał mi jak robił algorytm przeliczenia benzyny i jest to mega ciekawe zagadnienie.
Zamiana polega na przeliczaniu między objętością (litry) a masą (kilogramy) przy użyciu gęstości paliwa. Na stacji paliwo sprzedaje się w litrach, ale w dostawach i księgowości często operuje się kilogramami, bo masa nie zmienia się z temperaturą. System ERP, np. SAP, używa współczynnika gęstości, żeby przeliczyć jedną jednostkę na drugą. Dodatkowo uwzględnia się temperaturę, bo objętość paliwa rośnie lub maleje wraz z jej zmianą. Dlatego stosuje się przeliczenie do standardowej temperatury (np. 15°C), żeby dane były spójne. Dzięki temu firma dokładnie wie, ile paliwa faktycznie posiada i sprzedaje.
Głowa do góry, dasz radę i jesteś w stanie stworzyć wszystko. Na pewno ktoś się kiedyś odezwie i doceni to, że teraz się przykładasz jeśli będziesz dalej konsekwentny. W razie pytań pisz śmiało
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Poznań
- Postów: 576
Albo zrobię bazę danych do gry i tabele potworki, przedmioty, dialogi, questy
Potworki miały by kolumny id, nazwa, atak, obrona, życie, spritesheet
Przedmioty miały by kolumny id, nazwa, statystyki, wartość, opis
Natomiast dialogi id, tekst pl, tekst eng, id następnego dialogu
I questy id, nazwa, warunek, id następny
Chociaż sklep bardziej do mnie przemawia, bo planuję w sfml zrobić edytor do gier RPG i w sumie to by były dwa takie same projekty ... :-/
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 55
Nie wiem czy coś takiego Ryan_1975 ma na myśli ale jeśli chodzi o RPG to mógłbyś pójść w MMO. Masz te 'itemy' więc możesz symulować ich handel. Jest baza danych, zlecenia, transakcje (zarówno w sensie biznesowym, jak i SQL). Myślę że dużą część (jak nie wszystkie) z wymienionych wyżej spraw można w tym zmieścić. Jakiś frontend do tego, wrzucić gdzieś działający prototyp i będzie.
Może to na kimś decyzyjnym zrobi wrażenie.
Dodatkową zaletą jest to, że jeśli masz pomysł, przyłożysz się i rozwiniesz projekt, to zamiast zwykłego „projektu do CV” możesz stworzyć działający produkt na którym będziesz mógł zarabiać.
Dodatkowo całość zmusza Cię do myślenia o skalowalności, obsłudze wielu równoczesnych transakcji i balansowaniu gospodarki. Możesz też zrobić boty które będą w to grały w celach demonstracyjnych (choć to już może być trochę za grubo na ten moment).
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2696
Szczerze? Patrząc na twój profil to wolałbym Ciebie jako juniora niż jakiegoś randomowego mida, który wstrzelił się w czasach hossy. Możesz nawet podpiąć to konto z 4p, bo pokazujesz tutaj realną kontrybucje, swój kod i dużo wnosisz np do mikrobloga.
Jakie byłoby najlepsze portfolio? Gdyby twoja gra/apka znalazła się na steamie/googlestore i przynosiła realny dochód, albo przynajmniej była używana przez różnych użytkowników. Stwórz linkedina i regularnie wrzucaj tam etapy tworzenia twoich projektów. To bardzo ładnie wygląda.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1132
tBane napisał(a):
Albo zrobię bazę danych do gry i tabele potworki, przedmioty, dialogi, questy
Jak chcesz podbić swoje ogólne skille to IMO jakaś gra w przeglądarce brzmi dobrze. Z plusów
- robisz wizualne gry czyli to co lubisz
- uczysz się webowego stacka
- możesz dodać do tego jakiś backend w podstawowym zakresie np. logowanie do gry i zapis:
- uczysz się jak się pisze backend
- możesz dodać do tego bazę danych więc uczysz się jak to wszystko działa
- wiesz jak to wszystko pospinać ze sobą
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: London
- Postów: 142
Szczerze to ja bym sobie darował zvibecodowane szafowe projekty w czasach Claude Code.
W tych czasach lepiej wykazać się:
- Research paperami
- Hackathonami
- Konkursami algorytmicznymi
- Startupami - zvibecodowanymi projektami, które rozwiązują jakiś problem, maja traction (userów) i generują revenue
- Open source