Znam podstawy C++. Czego się uczyć dalej do pracy w firmie programistycznej?

0

Witam, doszedłem do momentu w którym nie wiem czego się dalej uczyć. Umiem jeszcze wciąż nie wiele ale nie wiem na czym teraz powinienem się skupić. Sam język C++ mam już w miarę ogarnięty (klasy, funkcje wirtualne, szablony, wyjątki itd.), a jeśli chodzi o znajomość bibliotek to na chwilę obecną znam tylko tylko częściowo bibliotekę standardową (strumienie, wielowątkowość, pojemniki, funkcje matematyczne itd.). Czego powinienem się uczyć teraz? Jeśli biblioteki/frameworki to najlepiej jakie? Jeśli inny język to jaki? W przyszłości chciałbym móc pracować w jakiejś dobrej firmie lub zespole. Na razie próbowałem zabrać się tylko za Open GL i WinAPI ale nie wiem czy by się one do czegoś przydały (wydały mi się być dość przestarzałe).

0

Dołączam się do pytania, uczę się programowania od dwóch miesięcy i jestem w tym samym momencie co kolega. Co warto się uczyć?

0

Skup się na nauce programowania.Język, biblioteki to tylko narzędzia, tak jak młotek, śrubokręt itp, ale trzeba jeszcze wiedzieć jak uderzać, by równo wbić gwoździa (tu trzeba treningu), oraz wiedzieć w którym miejscu wbijać tego gwoździa, żeby konstrukcja trzymała się właściwie (tu trzeba wiedzy i doświadczenia). Więc ucz się, pisz programy, ucz się algorytmów.

0

Pisać swoje programy, gry etc. W międzyczasie można czytać "Czysty kod".

6

Obsługi debuggera. Bez tej umiejętności to nawet na praktyki bym nie przyjmował.
O zgrozo wielu młodych, przekonanych o swojej umiejętności programowania, nawet nie ma pojęcia co to za narzędzie.

0

Zacznij wykorzystywać w swoich programach boosta http://www.boost.org/

0

Ja bym dodał do tego jeszcze umiejętność obsługi narzędzia kontroli wersji typu GIT/SVN (co kto woli) jakieś bug/issue trackery. Warto znać i umieć używać wzorce projektowe. No i może dla niektórych to dziwne (ale wierzcie mi znam takie przypadki które nie umieją tego) warto znać bardzo dobrze środowisko w jakim się pracuje. Czyli obsługa IDE oraz systemu.

0

A do obsługi aplikacji od strony graficznej, czy warto jeszcze uczyć się Windows Forms czy dać sobie spokój i od razu WPF, bo tydzień temu zacząłem WF ale nie wiem czy to ma sens, może później jak będę miał czas. Dałem sobie rok na naukę i w 2017 muszę iść gdzieś do pracy, albo chociaż na staż, jak już wspominałem zacząłem 2 miech temu i uczę się jeszcze programowania webowego(PHP i JS) na szczęście html i css znam już.

0

To i ja już tutaj zapytam, żeby nie tworzyć niepotrzebnego wątku.

Próg wejściowy c++/Qt...?
Od kilku miesięcy uczę się w wolnym czasie ( pracuję na pełny etat w całkowicie niezwiązanej, technicznej dziedzinie-> za kilka miesięcy chcę ją jednak porzucić) i przeszedłem drogę do miejsca w którym jestem, od pisania podstawowych programików konsolowych na podstawie książek, szukania informacji w tutorialach i rozwiązywania zadań na stronach, poprzez próbę forsowania Visual Studio jako IDE ( który to odpuściłem po ciężkich próbach, gdy odnalazłem i zainstalowałem Qt-> dobre rozwiązanie;)), poznawanie IDE, aż do wreszcie kilku ostatnich tygodni, gdy postanowiłem, że gdy będę robić następne projekty, to będą pokazywały coś konkretnego ( co w domyśle mógłbym później pokazać na ewentualnej rozmowie).
Już po tym etapie, ostatnio była to gra w oparciu o QGraphicsScene ( którą na ten moment zostawiam, mimo tego, że najtrudniejsza część jest już za mną i reszta byłaby oparta o to co mam, jednak wypadałoby żebym dodał do niej serwer i możliwość multiplayer- sam sens rozgrywki 1vs1 i odkrywania planszy przeciwnika tego wymaga, a o tych rzeczach nie wiem na razie nic- do douczenia się;)), a aktualnie ( po zaktualizowaniu swojego windows 7 do wyższej wersji), QtQuick/QML ( nad którym teraz właśnie siedzę) i w końcu pisanie aplikacji na swojego smartphona ( czego mi bardzo brakowało, ale nie mogłem pozwolić sobie wcześniej na grzebanie z windowsem w swoim starym laptopie ( używałem go do pracy)- długa i nieistotna historia).

Jak było/jest u was? ( Pytanie jest raczej kierowane do samouków, jeśli przeczytają to tacy i będzie im się chciało odpowiedzieć).
Co potrafiliście, gdy udało się wam załapać do pierwszej pracy? Czy był to staż, czy może posada młodszego programisty? Jakie były wasze pierwsze zadania ( czy też, czym zajmujecie się na co dzień jako programiści c++? pytam trochę w kontekście normalnego dnia roboczego).

Jeszcze może pytanie trochę bardziej światopoglądowe, bo co osoba to opinia, ale jak to jest według was z zaczynaniem kariery w tej branży z c++? Chodzi mi o to, że ogromnie dużą przewagę w ofertach pracy ( junior/staż) ma właśnie java/c# ( c# mniej), przewija się też cały czas w nowych wątkach o rady co do wybrania języka, java. W większości przypadków z c++ trafiałem na ogłoszenia o poszukiwaniu seniora, regurala ( i stąd też ten cały post).

Mniej lub bardziej mgliste pojęcie o tym, co powinienem potrafić, mam ( na podstawie ogłoszeń o pracę i wątków tutaj na forum, albo nawet chociażby tego tematu).
Wiem też, że na większość z tych moich pytań, odpowiedzi można znaleźć w kilku innych wątkach ( co zrobiłem), ale na którymś etapie uczenia się, tego rodzaju pytania muszą jednak paść, z nadzieją na jakąś odpowiedź skierowaną bezpośrednio do pytającej osoby.
Zmianę planuję za kilka miesięcy i na ten moment oszczędzam ile mogę ( liczę się z możliwością, że na samym początku może to być jakiś staż ( bezpłatny), więc jakiś komfort psychiczny/zaplecze z finansami jednak muszę mieć, na wszelki wypadek).

I na koniec, jakikolwiek odzew by nie był, dzięki za odpowiedź.

2

@GregoryI @winiardesign mi na początek udało się dostać na młodszego programistę C++ w rozpoczynającym wtedy działalność startupie. Oficjalnie były to praktyki dla uczelni, praktycznie - junior c++ developer.

Umiałem niewiele - z biblioteki standardowej kontenery, algorytmy, coś tam z iostreamów. Programowanie generyczne w bardzo stopniu podstawowym, na zasadzie "dzięki template nie trzeba pisać 10 funkcji co wyglądają tak samo", boosta nie używałem nigdy ale wiedziałem, że takie coś jest i mniej więcej co zawiera. Miałem podstawową wiedzę o obsłudze gita, względnie dobre obeznanie w algorytmach, trochę zadań ze SPOJa zrobionych, z napisanych rzeczy, którymi mógłbym się pochwalić jakieś gry w życie, proste gierki w konsoli, projekty z algorytmów i struktur danych na studia. Trochę wiedziałem o Qt, na zasadzie, że kiedyś napisałem grę wyścigową i tetrisa, ale bez wgłębiania się szczegółowo w mechanizmy. Nie wiedziałem wtedy za bardzo co to jest te całe C++11/C++14 i co takiego fajnego przynosi.

Zaczynałem z projektem który był praktycznie na etapie narodzin - główny i jedyny wtedy dev rozpisał kilkadziesiąt bazowych klas na zasadzie "tu są pliki nagłówkowe i deklaracje metod, które będą potrzebne bazując na dokumentacji". Na początek dostałem wtedy zadanie ogarnięcia frameworka do testów jednostkowych - o testach tych wiedziałem wtedy tyle, że istnieją - który był do projektu podpięty, następnie przez jakiś czas pisałem testy i implementację najprostszych klas, które były nam potrzebne - specyficzne kody opisujące system, pewne struktury, nic skomplikowanego.

Przez kolejne tygodnie ogarniałem boosta w zakresie który był potrzebny do projektu, do tego poznałem bibliotekę libpqxx - api dla ​PostgreSQL, oraz bibliotekę POCO - http://pocoproject.org/, która uzupełniała C++ o mechanizmy sieciowe, obsługę systemów plików, kompresję i parsowanie chyba CSV w jakimś zakresie.

Na co powinieneś zwrócić uwagę, moim zdaniem:

  • C++11/C++14/C++17 - to dzięki zmianom zawartych w nowych wersjach języka wraca on do łask, jak najszybciej naucz się wykorzystywać jego możliwości
  • programowanie generyczne, programowanie funkcyjne z użyciem szablonów - po roku w naszym projekcie pojawiły się tego kosmiczne ilości robiące różnorakie cuda na etapie kompilacji
  • Boost jest niezbędny z czasem,
  • testy jednostkowe - C++ nie ma takich cudów jak java, ale ogarnij sobie libki do testów jednostkowych z Boosta albo od Google
  • znajomość systemów kontroli wersji, chociażby git'a, stawia Cię wyżej od większości studentów pierwszych dwóch lat studiów informatycznych
  • narzędzia do budowania - Make, Makefile, Cmake - u mnie było tak, że żadne IDE sensownie nie radziło sobie z kodem projektu gry się rozrósł (tu trochę nasza wina, bo modularyzacja była odkładana długi czas), więc finalnie pisało się w Eclipsie/QtCreatorze a kompilowało z konsoli. Z czasem stało się to nawet fajne, bo dostaliśmy zewnętrzną maszynę, na której kompilacja trwała rząd wielkości szybciej niż na kompie deweloperów i nie było zabawy z podpinaniem zdalnej kompilacji pod IDE.
  • znajomość języka skryptowego jest zawsze spoko - Python, Perl, Bash - znając jeden z nich nie raz oszczędzisz sobie czasu automatyzując zadania.
  • wzorce projektowe ogólnie

Jakbyś miał jakieś pytania - pisz.
J.

PS Dwa ciekawe linki - https://www.quora.com/What-are-the-most-efficient-ways-to-master-C++# oraz post na 4p - https://4programmers.net/Forum/1184170

0
Zimny Pomidor napisał(a):

Witam, doszedłem do momentu w którym nie wiem czego się dalej uczyć. Umiem jeszcze wciąż nie wiele ale nie wiem na czym teraz powinienem się skupić. Sam język C++ mam już w miarę ogarnięty (klasy, funkcje wirtualne, szablony, wyjątki itd.), a jeśli chodzi o znajomość bibliotek to na chwilę obecną znam tylko tylko częściowo bibliotekę standardową (strumienie, wielowątkowość, pojemniki, funkcje matematyczne itd.). Czego powinienem się uczyć teraz? Jeśli biblioteki/frameworki to najlepiej jakie? Jeśli inny język to jaki? W przyszłości chciałbym móc pracować w jakiejś dobrej firmie lub zespole. Na razie próbowałem zabrać się tylko za Open GL i WinAPI ale nie wiem czy by się one do czegoś przydały (wydały mi się być dość przestarzałe).

Z pełną pewnością g**no wiesz, bowiem całe programowanie sprowadza się właśnie do tego WinApi,
ewentualnie czegoś równoważnego, co i tak będzie w 90% tożsame...

0

No to jeszcze jeden problem. Wiem że tego typu pytań było już mase, ale... Jak już wspominałem uczę się PHP i C++. Ogólnie przygodę z "programowaniem" zacząłem od zajawki na projektowanie stron www. Nauczyłem się html i css oraz Photoshopa, następnie przyszło PHP z którego jakieś podstawy umiem. Teraz z racji iż zacząłem zaocznie studiować infe na PG, zainteresowałem się C++. W mojej obecnej pracy jest dział IT i są programiści C++, C# jak pod szlifuje skilla to mogę do nich przejść(w mojej okolicy to jest praktycznie jedyna firma IT, a nie chce wyjeżdżać z mojej małej wioski do miasta, najbliższe miasto Słupsk 40km). I tu pojawia się problem bo bardziej ciągnie mnie do programowania webowego. Czy warto w takiej sytuacji rozważać przejście do działu IT mojej firmy i uczyć się c++/C# oraz PHP i ogólnie tworzenia stron/aplikacji internetowych(bo z tego raczej nie zrezygnuję) czy rzucić C++/C# i uczyć się tylko PHP itd. Jak wygląda to czasowo, dziennie mogę poświęcić z 2-3h na naukę programowania. Czyli po 1-1,5h na każdą dziedzinę (C++/C# lub programowanie weba). Czy taki podział jest sensowny, bo mi się zdaje że z takim małym nakładem pracy to ja zostanę programistą w wieku 40lat. Z drugiej strony nie che się ograniczać do jednej technologi, najchętniej nauczył bym się tego oraz tego, ale mam na uwadze że im szybciej pójdę pracować jako programista tym więcej się nauczę. Co sądzicie? Jakieś propozycje?

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