pomoc w wyborze ścieżki edukacyjnej

0

Cześć,
na początku się przedstawię, mam na imię Dawid i jestem na I roku informatyki. Chciałbym abyście mi pomogli w wyborze ścieżki samokształcenia się. W przyszłości chciałbym pracować jako programista. Póki co nie wiem, jaki język wybrać za przodujący. Przed studiami głównie programowałem w Pythonie, Pascalu. Obecnie uczę się tylko C++, ponieważ mam przedmiot, który tego wymaga. Oprócz tego zaznajomię się z Javą ale dopiero na 4 semestrze. Z racji, że tego programowania na studiach nie ma dużo (oprócz dużego nacisku na C++) to chciałbym jakoś sam się dokształcać, tak żeby jakiś fajny staż na wakacjach złapać.

Pascal oczywiście odpada, Python mi się podobał jednak ofert praktyk/stażów jest bardzo mało.

W C++ jest już lepiej.
Czy w ofercie pracy C/C++ oznacza, że muszę umieć oba języki? Czy potrafiąc C++ ciężko jest zacząć programować w C?
Za C++ przemawia to, że mam już podstawową znajomość jednego języku skryptowego jakim jest Python, a dosyć często się spotyka w ofertach pracy, że Python jest mile widziany. Znam już także podstawy Linuxa, asemblera. Czasami też w wymaganiach jest wspomniane o znajomości elektroniki, której samemu ciężko się nauczyć. Zastanawiam się czy nie powinienem był pójść na elektronike i telekomunikację, bo w warunkach domowych ciężko jest się uczyć elektroniki, co innego na laboratoriach. Natomiast programowania spokojnie mógłbym się w domu uczyć.

Za Javą przemawia fakt, że jest teraz na topie i jest mnóstwo ofert pracy z nią związaną, jednak z nią często jest powiązane HTML, CSS, JavaScript a póki co nic z tych rzeczy jeszcze się nie uczyłem.

Pozdrawiam i życzę miłego wieczoru! ;)

2

Leć w biznesowe języki (C#, java) albo nietknięty jeszcze przez Ciebie frontend. Łatwo znajdziesz w tym fajną pracę, co o wiele trudniej powiedzieć o C++sie.

Ewentualnie jeśli szanujesz siebie to zainteresuj się rubim i elixirem, chociaż z pracą w tym drugim może być Ci ciężko.

2

Moim zdaniem nie powinieneś wiązać się z konkretną technologią tylko starać się zdobyć jak najszerszą wiedzę, tym bardziej że masz jeszcze przed sobą 3,5-5 lat studiów.

Na twoim miejscu zastanowiłbym się przede wszystkim co jest najbardziej interesujące, przykładowo jeśli ciekawi cie elektronika to możesz sobie kupić jakiś układ np. Arduino i nim się pobawić, znudzi ci się to zajmujesz się czymś innymi np. stronkami webowymi itd. Innymi słowy rób to co cię interesuje a pracą możesz się przejmować (w zasadzie nie będziesz musiał jak znajdziesz swoją niszę) pod koniec studiów.

Staraj się każdy swój projekt wrzucać na GitHuba dzięki czemu będziesz mógł udowodnić pracodawcom że naprawdę się tym interesujesz. Na zmianę z tym staraj się znaleźć istniejące projekty open source które cię interesują i wysyłać do nich poprawki (i nie ma się tutaj czego bać, że np. wyśmieją słaby kod - w 99% przypadkach ludzie utrzymujący projekty open source są bardzo życzliwi i chętnie zrobią przegląd kodu linijka po linijce - coś czego nie da ci najlepszy nauczyciel na studiach czy nawet mentor podczas stażu, który nie będzie miał czasu ci wszystkiego tłumaczyć).

W ten sposób pisząc własne projekty będziesz jednocześnie eksplorował możliwości języka/technologii/rozwiązań danego problemu, a później tworząc poprawki zobaczysz jak ten kod piszą inni, tzn. odpowiednio się nastawisz/ograniczysz do tego co jest istotne.

Wydaje mi się że takie podejście jest optymalne jeśli ktoś chce być naprawdę dobry programistą.

1

SNa zmianę z tym staraj się znaleźć istniejące projekty open source które cię interesują i wysyłać do nich poprawki

...oraz zajrzeć do pozycji issues na GitHubie. Tam się toczą dyskusje nad projektami, czemu tak, czemu inaczej, jakiego rodzaju bugi są obecnie w projekcie, nad jakimi problemami głowią się twórcy. To też bardzo ważne, pozwala zobaczyć szerszy obraz danego projektu niż tylko efekt końcowy (kod).

3

Od slajdu 18 :) https://koziolek.github.io/KarieraIT22102016/#/18 Obiecuję, że w chwili wolnej dorobię komentarze i będzie można z tej prezentacji korzystać już bez domyślania się co autor miał na myśli.

3

Te ścieżki które podałeś są bardzo różne:

  1. Java / C# / COBOL to ścieżka enterprise. Dużo roboty w korporacjach i outsourcingu (czyli nad kodem którego nikt nie chce).
    Raczej najlepiej płatne, bo nikt się do tego nie pcha.

  2. C/C++ to ścieżka "jednoukładowce" - trochę elektroniki, trochę programowania. Może też być Android (mój znajomy robi w C/C++ aplikacje androidowe na eksport).
    Z tej tu roboty co wymieniłeś to najciekawsza ścieżka, ale też najtrudniejsza i najbardziej pracochłonna.

C stosunkowo łatwo się nauczyć. Jest to 40-letni język, więc ma parę wad, ale jest wielokrotnie prostszy od wszystkiego co jest obecnie popularne na rynku.
Warto się go nauczyć bo jest to wspólny mianownik wszystkich komputerów. Obecnie większość kodu systemowego pewnie powstaje w tym języku (piszę "pewnie" bo sam takiego nie tworzę).

C++: Nauka C++ nigdy się nie kończy. Możesz przeczytać 5 książek na ten temat i nadal będzie mało. W moim profilu masz link do strony która wymienia wszystkie główne tematy związane z tym językiem. W C++ obecnie oprócz zastosowań takich jak w C można programować wysokowydajne algorytmy w wersji produkcyjnej (czyli nie prototypy tylko docelowe rozwiązania).

  1. Web warto znać chociażby pobieżnie. Np. żeby zrobić własnego bloga lub samodzielnie aplikację. W Javie / C# zwykle potrzebna jest chociaż podstawowa znajomość tego tematu (HTML, CSS, JavaScript, jQuery, XML). Jako ścieżka kariery to jest najprostsza ścieżka i najwięcej ofert jest z nią związanych, chociaż zwykle do tego trzeba umieć jakiś język back-endowy. Do wyboru Java, C#, PHP, Python etc.

Na studiach polecam Ci poznać C++ przynajmniej w stopniu podstawowym, natomiast robienie projektów w Javie lub Pythonie. Nadają się do algorytmów, OOP, AI i grafiki.
Python jak będzie za wolny można podrasować modułami w C/C++/Free Pascalu.
Javy niczym nie podrasujesz, ale sama w sobie jest szybka.

Jak zainteresują Cię obliczenia naukowe to zainteresuj się Julią lub R.
Jak chcesz poznać coś co może będzie w przyszłości na to branie to poćwicz Elixir / Haskell / Kotlin / Scala.

BTW, elektroniką właśnie najłatwiej się zainteresować w domu, kiedy masz czasu od liku i możesz sobie dłubać bez stresu. Jak Cię to będzie interesowało to hasła z tego segmentu do wyszukiwarki:
Arduino
Raspberry Pi
Noobs
Python
C/C++

Na początek ciekawa pozycja:
http://helion.pl/ksiazki/elektronika-od-praktyki-do-teorii-wydanie-ii-charles-platt,eleod2.htm
kontynuacja:
http://helion.pl/ksiazki/elektronika-od-praktyki-do-teorii-kolejne-eksperymenty-charles-platt,eleodk.htm

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