Wpis z mikrobloga

Co powinien umieć Junior C++ w 2020 roku?
Moja wstępna lista wygląda tak:
- Podstawy pracy z GIT
- Ogarnianie środowiska programistycznego pod linuksem
- angielski
- C++/boost/SQL/Qt

Mam kilka pytań, może ktoś mógłby na nie odpowiedzieć?
1. Jak dobrze trzeba znać C++?
a) Czy trzeba ogarniać wszystkie standardy C++11/C++17/C++20? Jeśli tak, to w jakim stopniu? Trzeba znać wszystkie nowe funkcjonalności czy skupić się na najbardziej przydatnych rzeczach?

b) Czy boost to must have, czy można aplikować bez tego (wiem, że niektóre oferty mają napisane wprost o boost, ale czasem jest rzucone ogólne hasło "C++" i weź się człowieku domyśl co autor miał na myśli)

c) Czy junior powinien ogarniać programowanie generyczne?

2. Czy własne projekty na GH są ważne? Ostatnio spotkałem się z opinią, że i tak nikt nie ma zbytnio czasu, żeby przeglądać te projekty, a jeśli są źle napisane, to mogą nawet zaszkodzić, i że lepiej skupić się na doszlifowaniu podstaw.

Wiem, że przygotowywanie się pod sama rozmowę rekrutacyjną może być głupie, ale jakoś trzeba się załapać.

Z drugiej strony też nie chce stresować się cały czas w pracy, gdy nie będę czegoś umiał.

3. Czy warto znać Qt albo SQL? Niektóre firmy w ogóle nie używają Qt (albo częściej występuje w konfiguracji z C), SQL też nie wszędzie widać. Czy warto poświęcić na to czas, jeśli nie ma tego w ofercie?

4. W jakim stopniu trzeba ogarniać struktury danych? Czy trzeba potrafić np. zaimplementować listę, drzewo binarne w czystym C++? Czy raczej chodzi o zastosowanie, np. kiedy lepiej użyć tablicy, a kiedy listy?

5. Wzorce projektowe - co trzeba umieć w tym zakresie?

Wiem, że dużo tych pytań, ale może ktoś z doświadczeniem będzie mógł mniej więcej określić, czego oczekiwałby od swojego nowego kolegi juniora w pracy przy projekcje.

Zapraszam do dyskusji.

#cpp #naukaprogramowania #programowanie #programista15k
  • 12
  • Odpowiedz
@SredniDystans: Powinieneś podejść do tematu z innej strony. Znajdź firmę/firmy w których chcesz pracować. Napisz normalnie maila z pytaniem jaki zakres wiedzy powinien ogarniać kandydat i na czym miałaby polegać ewentualna przyszła praca.

Będziesz wiedział konkretnie, a tak to Ci tu można wymienić wszystkie działy informatyki jakie należy znać.
  • Odpowiedz
@SredniDystans: w c++ zawodowo nie siedzę ale jako programista HTML mogę poradzić

- Ogarnij Conan lub inny menadżer. Znajomość cmake też się przyda.
- 1 a) te standardy ułatwiają programowanie w c++ np. praca że wskaźnikami. Dobrze by było poznać temat.
b) chociaż testy jednostkowe imao
2. Rekruter nie rozumie projektów na GH ale mi to więcej mówi niż rozmowa kwalifikacyjna. Imo warto. To nie musi być nie wiadomo co ale
  • Odpowiedz
@r00ti: myślałem o tym, ale raczej chciałem podpiąć to pod standardy, bo przecież w każdym dodają coś nowego do STL

Zapomniałem o cmake, ale widzę, że ktoś już tutaj o tym wspomniał :)
  • Odpowiedz
@SredniDystans:

Czy trzeba ogarniać wszystkie standardy C++11/C++17/C++20? Jeśli tak, to w jakim stopniu?


Nikt ci nie powie w jakim stopniu ogarniać standardy albo które rzeczy z tych standardów są ważne a które nie. Często jest tak, że trzeba po prostu wiedzieć, że coś istnieje i można tego użyć a nie wynajdywać koło na nowo. Na początek skup się na najważniejszych rzeczach. Zresztą nie wiem czy zdajesz sobie sprawę ile tego jest
  • Odpowiedz
@SredniDystans:
1. Nikt nie oczekuje że junior będzie znał dobrze C++
1a. Musisz biegle poruszać się po https://en.cppreference.com/w/ Wszędzie mogą być jacyś entuzjaści wyszukujący jakimi to sztuczkami można coś zaprogramować, ale w firmie nie o to chodzi - kod ma być zwięzły prosty i czytelny, żeby każdy kto na niego się natknie rozumiał o co chodzi. Numer standardu ma drugorzędne znaczenie
1b. Boost traci na znaczeniu. My w firmie (a robię
  • Odpowiedz
@SredniDystans wszystko zależy od konkretnego stanowiska, każda firma ma inny stack i często inne zastosowania. Dodam też, że pracy w c++ jest relatywnie mało w porównaniu do np. javy, a ludzi co umieją c++ (a raczej myślą że umieją) jest u nas sporo. Co do twoich pytań :
1a) standardy trzeba znać, na tyle by się orientować w jakim standardzie jest napisany dany kod (żebyś się potem nie dziwił, że ci np.
  • Odpowiedz
a) Czy trzeba ogarniać wszystkie standardy C++11/C++17/C++20? Jeśli tak, to w jakim stopniu? Trzeba znać wszystkie nowe funkcjonalności czy skupić się na najbardziej przydatnych rzeczach?


@SredniDystans: wszystko zależy od firmy. Z drugiej strony jak ktoś pisze o C++11 to najlepiej nauczyć się też póżniejszych standardów, bo zmian nie ma aż tak dużo

b) Czy boost to must have, czy można aplikować bez tego (wiem, że niektóre oferty mają napisane wprost o
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@SredniDystans: oki w takim razie:
1.
a) wystarczy max c++11 i ewentualnie jakieś nowinki z c++14/17 dla samych rozmow kwalifikacyjnych bo i tak jak junior zostaniesz rzucony do projektu z utrzymaniowka. Tak wygląda Polski rynek c++
b) Tak, ale nie musisz wszystkiego znać na pamięć bo to duże bydle. Boost optional, filesystem, asio wystarczy.
c) Nie, nikt nie da juniorowi pisać szablonów. Ważne żebyś to rozumiał. Dodatkowo również variadic templates, constexpr,
  • Odpowiedz
Z drugiej strony jak ktoś pisze o C++11 to najlepiej nauczyć się też póżniejszych standardów, bo zmian nie ma aż tak dużo

@Saly: No, szczególnie w C++20 ( ͡° ͜ʖ ͡°)
  • Odpowiedz