Różnica pomiędzy zwykłym pisaniem, a zawodowym

0

Witam wszystkich bardzo serdecznie. W sumie sam nie wiedziałem czy ten temat umieścić lepiej w dziale edukacja (Bo w sumie po części o nią też mi się rozchodzi), czy karierze, zdecydowałem jak widać ; )

Opiszę więc może ogólnie moją sytuację. Mam lat 18, po wakacjach przystąpię, do pisania matury. Przeczytałem symfonie C++, wiele kursów w internecie, obejrzałem także wiele clipów na yt, o programowaniu w C++, czytałem także o algorytmach, i strukturach danych, szczególnie z tej strony http://edu.i-lo.tarnow.pl/inf/alg/001_search/index.php, oraz kilka poradników w internecie. I chce się z pewnością dalej rozwijać. Z programowaniem wiąże moją przyszłość, i chce pracować jako programista. Po napisaniu matury chciałbym pójść na studia zaoczne, a w trakcie nich, znaleźć chociaż darmowy staż w jakiejś firmie, gdzie mógłbym zdobyć cenne doświadczenie.

Pojawia się tutaj problem. Co prawda wiem coś o C++, ale wszystko co pisałem było oparte o zwykłe okno konsolowe! Rozwiązywałem problemy(dość proste) i tak dalej, ale nie czuję żeby to było na tyle wartościowe, abym mógł już pójść do pracy. A więc co jest potrzebne, jaka wiedza, aby przejść z zwykłego pisania programów domowych, do programowania zawodowego, jako pracownik w firmie? Wiem, że C++ jest językiem który znajduje wiele zastosowań, ale jeśli możecie proszę podajcie przykłady, co wy robicie w waszej pracy? Jak wyglądają mniej więcej programy które piszecie, jakie problemu rozwiązujecie? Oraz jak wy przeskoczyliście z zwykłego pisania, do zawodowego? Jakie książki przeczytaliście, zanim weszliście w mury firmy programistycznej? Oraz wasze opinie o tym czy dobry jest pomysł z studiami zaocznymi? Oraz czy zaczęcie nauki java, na tym etapie, było by dobrym pomysłem? Java zawsze uważałem za dość ciekawy język, składnią przypominającą C++. Oraz pytanko do zorientowanych w Javie, jak tam jest z tworzeniem grafiki, podobnie jak w bibliotekach C++?

Wiem, że to dość dużo pytań, dlatego na prawdę z góry bardzo dziękuje, wszystkim którzy odpowiedzą, chociaż na jedno, lub chodź chociaż napiszą jakąkolwiek poradę. Wiem, że może i powinienem się po prostu uczyć i nie marudzić, ale bardzo bym chciał mieć chociaż trochę nakreśloną moją dalszą ścieżkę. Pozdrawiam serdecznie!

9

Znajomość języka to jest absolutne minimum. Żeby pracować w jakimś języku musisz też znać:

  • biblioteki (!) i frameworki do tego języka. Jakie? To zależy od tego co będziesz programował. Takie najbardziej popularne to np. boost czy Qt
  • wzorce projektowe
  • ooa, ood, oop
  • bardzo dobra znajomość IDE
  • narzędzia pracy zespołowej -> systemy kontroli wersji, narzędzia CI, issue trackery
  • znajomość baz danych
  • znajomość jakiegoś jezyka skryptowego

Bez tego pracować właściwie się nie da.

0

Nie musisz zawsze rwać się do pracy, możesz odbyć staż czy praktyki. Zresztą jak ktoś Cię przyjmie - to będzie miał świadomość że nie potrafisz za wiele. Jak znasz tego c++'sa na komunikatywnym poziomie to już coś na czym możesz dalej budować. Napisz do firm z okolic czy istnieje jakaś możliwość nawiązania współpracy.

p.s jak nie wyjdzie Ci w c++ to znajdź co innego, jak nie drzwiami to oknem.

0

Jak napisał Shalom, sama znajomość języka to faktycznie za mało do poważniejszej pracy. A, nie obraź się, wydaje mi się, że nie znasz C++ za dobrze. U siebie w pracy piszę w C++ pod Windows z wykorzystaniem MFC, ATL, COM. Środowisko to Visual Studio. Od czasu do czasu muszę coś też napisać w C# i Windows Forms. Muszę też mniej więcej znać takie "języki", jak XML, XSLT, XML Schema i HTML. Pewnie jeszcze o czymś zapomniałem. Jak widzisz trochę tego jest. Niektóre języki/technologie znam lepiej, inne gorzej, ale coś tam zawsze wiem.
Jeśli w czasie studiów musisz pracować i zarabiać, to wtedy wybierz zaocznie. Jeżeli jednak nie musisz, to idź na jakąś w miarę przyzwoitą uczelnie na studia dzienne. Pracować możesz w wakacje i, powiedzmy, po drugim roku, kiedy jest już mniej zajęć.
Co do Javy, to warto się nauczyć. Na pewno ci to nie zaszkodzi, a pozwoli ci trochę inaczej spojrzeć na programowanie. Pomoże też w tworzeniu lepszego kodu w C++.

0

Dziękuje, za porady! Tak to prawda, nie czuje się być dobrym w C++. Mam jeszcze rok i kilka miesięcy ciężkiej pracy, z "po wakacjach przystąpię do matury" - chodziło mi, że za rok ją napiszę, teraz ukończyłem drugą klasę LO. Czas ten poświęcę na naukę tego co mi napisaliście, wiem, że z jednej strony rok to niewiele, ale z drugiej może on wiele wnieść.
Hmm, wydaję mi się, że jednak wybiorę studia zaoczne, jakiś na prawdę dobrze uzasadniony argument odradzający, mógłby mnie skłonić do przemyśleń, w tym kierunku.
Jeśli komuś jeszcze przyjdą na myśl jakieś wskazówki, chętnie ich posłucham, i jeszcze raz stukrotne dzięki, za te otrzymane!

1

@dbordzo moim zdaniem studia zaoczne są bez sensu. Bez problemów od 2 roku dziennych studiów można pracować na 1/2 etatu, później na 3/5 czy nawet 4/5 na 4-5 roku, więc argument że w trakcie zaocznych można pracować a w trakcie dziennych nie, jest wyssany z palca. Szczególnie jeśli nie jesteś jeszcze taki dobry żeby od razu na 1 roku załapać sie na pracę na cały etat.
Poza tym jeśli chcesz sie czegoś na studiach nauczyć to zaoczne ci w tym nie pomogą ;]

2

Czym się różni pisanie hobbystyczne od zawodowego - terminami, narzuconymi technologiami, koniecznością zrozumienia czego oczekuje klient i dokumentowania swojej pracy. Jak piszesz dla siebie to wiesz co chcesz stworzyć, a w rzeczywistych projektach musisz pisać "pod klienta", który nie zawsze wie co sam chce otrzymać lub w firmie obowiązują niejasne procedury. Dodatkowo często trzeba sięgnąć do aktów prawnych takich jak np. rozporządzenia do ustawy o ochronie danych osobowych.

0

"dla siebie" mogę pisać jak mi się chce, w czym mi się chce, i co mi się chce :-)
i przede wszystkim od zera, bo w firmie bardzo rzadko trafiasz na nowy projekt, zwykle jest to utrzymanie jakiejś starej krowy.

dodatkowo dochodzą: biurokracja, terminy, narzucone narzędzia i biblioteki, narzucony bagaż WTF-ów których nie wolno poprawiać a trzeba z nimi żyć, systemy kontroli wersji (choć w jednoosobowym projekcie też bywają przydatne)

0

A na czym polega bardzo dobra znajomość IDE? Oraz czy programista Java, musi spełniać podobne wymagania jak te co opisałeś Shalom? Dodatkowo napisałeś w komentarzu, że to zupełne minimum, a więc może jeszcze zdradzisz co powinien umieć? Na prawdę dziękuje wszystkim bardzo za pomoc!

0
dbordzo napisał(a):

A na czym polega bardzo dobra znajomość IDE?

To znaczy, że znasz jego możliwości i prawie nie używasz myszy do jego obsługi.

0

Niestety prawda jest taka ze teraz wiekszosc ofert to java, c#. Coraz mniej juz szukaja programistow c++. Osobiscie duzo bardziej lubie c++ i jakas algorytmike, ale ze pod reka nie bylo zadnych ofert, to poszedlem w kierunku javy. Poziom duzy wymagany nie byl i tak nas doszkolili z niej, zeby wyrownac poziom. Wiekszosc firm i tak prowadzi testy rekrutacyjne, po nich bedziesz wiedzial co potrafisz, a co jeszcze musisz pocwiczyc. Ja teraz siedze na projekcie, niestety jak juz mowili wrzucili mnie na stara krowe bo juz sie ciagnie pare lat ;) Z terminami wszystko zalezy od fazy projektu i podejscia klienta. Czy chce jakies szybkie sprinty, czy cos innego. Wazne zeby w temacie troche byc, a reszte informacji zawsze sie znajdzie. Ofert pracy dla informatykow jest od groma, zawsze cos sie znajdzie.

1
somekind napisał(a):
dbordzo napisał(a):

A na czym polega bardzo dobra znajomość IDE?

To znaczy, że znasz jego możliwości i prawie nie używasz myszy do jego obsługi.

Zasadniczo tak :) Rozwijając nieco:

  • umiesz używać opcji refaktorowania bez szukania ich w menu przez 5 minut (extract method, extract variable, extract field, extract superclass, extract interface, rename etc)
  • umiesz używać takich cudów jak narzędzia do rozwiązywania konfliktów, puszczać buildy do CI etc
  • umiesz używać debuggera w swoim IDE, wiesz gdzie są potrzebne ci kontrolki, stan stosu, zmienne, watche etc
  • umiesz nawigować po kodzie za pomocą skrótów w IDE (przeskakiwanie pomiędzy deklaracjami i implementacjami, przeskakiwanie do odpowiedniej klasy, wyszukiwanie klas po nazwie etc)
  • umiesz używać skrótów do code-completion ;]
  • wiesz gdzie ustawia się parametry kompilatora, wersję, ścieżki do bibliotek

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