Strona 10 z 11

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 17, 2022 18:57
przez Farenz
Niestety zacząłem naukę od pythona, zaraz skończę fajny kurs i zastanawiam się czy nie przejść na język niższego poziomu. Czy symfonia c++ lub jej nowsze wersje są warte przerabiania pod kątem zrozumienia lepiej tematu i szukania pracy? W gimnazjum miałem tą książkę w rękach i teraz żałuję, że tak szybko odpuściłem i wylądowałem na budowie maszyn :lol:

Edit: czy lepiej w tym momencie pójść w C?

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 12:04
przez gouda
Przejrzyj ten wątek od początku, tam była o tym mowa.
Nikt za Ciebie nie wybierze drogi, sam musisz wybrać co Cię interesuje. Jeśli chcesz wiedzieć co jest bardziej popularne to zajrzyj na serwisy takie jak nofluffjobs.com czy justjoin.it.

Python i C++ a tym bardziej C to zupełnie dwa inne światy. Python to jezyk interpretowany. Znajduje zastosowanie w ML czy w aplikacjach webowych (w Polsce nie jest jednak tak popularny w obszarze aplikacji webowych jak Java czy nawet C#).

W C++ tez można pisać aplikacje webowe ale bardzo, bardzo, bardzo rzadko to się robi, najczesciej stosuje się go (zamiennie z C) do programowania mikrokontrolerów w systemach wbudowanych (w samochodach, w pralkach, lodówkach i wielu innych urządzeniach). C++ oraz jego starszy brat C, to też języki wysokopoziomowe ale w zupełnie innym tego słowa znaczeniu. Nie są to języki interpretowane ale kod kompiluje się bezposrednio do jezyka maszynowego rozumianego przez procesor. Są to języki zdecydowanie bliższe sprzetowi, dzięki czemu można bardziej optymalnie wykorzystać sprzęt. Ale takie programowanie wiąże się z zupełnie innymi zagadnieniami i wyzwaniami dla programisty. W C++ programista musi np. zarządzać alokacją pamięci (co w Pythonie czy nawet w jezykach hybrydowych takich jak java czy c++) dzieje się praktycznie automatycznie. Musi skupić się na optymalizacji kodu pod konkretny mikroprocesor.

Developerzy C++ zarabiają też znacznie, znacznie słabiej niż developerzy języków wysokopoziomowych (mimo że ch praca często jest trudniejsza) - prawdopodobnie głównie dlatego że zatrudniani sa najczęsciej przez duze korporacje produkcyjne, jak np. firmy z branży automotive - a w tych branżach dominuje kult wyzyskiwania ludzi stąd mało płacą ;). Oczywiscie to tylko moja teoria. Fakt jest taki że C# czy java developer zarabia często 2x tyle co c++ embeeded developer.
Ale jeśli coś Ci mogę powiedzieć - jeśli chcesz uciec z przemysłu, to nie osiągniesz tego dać w kierunku systemów wbudowanych. Dla twojego dobra psychicznego ;) powinieneś więc przemyśleć wybór innej drogi. Ze swojego doświadczenia życiowego, mogę Ci jedynie powiedzieć że gdzieś daleko poza przemysłem istnieje, zdecydowanie lepszy świat pracy, z lepszą atmosferą i normalnym ludzkim podejściem. A więc moja rada jest taka, warto znać podstawy C++ (nawet niekoneicznie w jego obiektowej wersji, tylko imperatywnej) to pomoże Ci przy zrozumieniu i nace algorytmów i struktur danych. Ale nie ma sensu uczyć się go na mocno zaawansowanym poziomie, tak żeby potem myśleć o pracy jako c++ developer.

Pomiędzy interpretowanymi jezykami jak Python a językami kompilowanymi jak C/C++ jest jeszcze coś pomiędzy - to języki hybrydowe jak Java czy C++. Wymagają one podobnie jak Python środowiska uruchomieniowego, ale tutaj kod nie jest interpretowany, jest on najpierw (w przypadku javy) kompilowany do "kodu bajtowego" który poźniej jest interpretowany przez wirtualna maszynę javy. W c# jest podobnie tylko tam jest środowisko urchomieniowe.net. Języki hybrydowe to jest kompormis pomiędzy językami jakimi jak C++ a jezykiami intepretowanymi jak Python czy JavaScript.

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 12:31
przez gouda
desmoRR napisał(a):@gouda
Z tego co piszesz to ciekawie to wygląda i nie ma nudów. Ogólnie programowanie to kojarzy się z nudnymi tematami ;)

Możesz napisać jakie projekty warto robić do Gita, żeby zrobić wrażenie na rozmowie ? Spodziewam się, że kolejny sklep to jest już oblatany projekt. Bez sensu wrzucić projekt, który jest setną kopią z kursu, który skończyło tysiąc osób.


Szczerze? Nie ma to żadnego znaczenia. Tych projektów na Gicie nikt nie przegląda.
Rekruter nie ma kompetencji żeby to zrobić, a osoba techniczna która będzie prowadziła z Tobą rozmowę nie ma czasu zaglądać w twój amatorski kod który na początku i tak wygląda słabo ;). To by było zbyt czasochłonne.
Zresztą jeśli aplikujesz do jakiejś firmy przez Agencję czy kontraktornie co jest bardzo popularne w IT, to klient końcowy dostaje CV na ich szablonie, a tam nie ma żadnych linków do Gita ;), rekruter zamieszcza tam tylko spójne dane w skondensowanej formie. Nikt nie ma czasu tego czytać i zglądać na twojego gita.

Uczestnicze obecnie w rekrukrutacjach nowych kandydatów więc mogę Ci powiedziec jak to wygląda.
Na Interview zaproszonych jest kilka osob (techncznych i nietechnicznych), dostają CV z wyprzedzeniem kilku dni, nie mają czasu na to żeby przeglądać twojego gita. Cała ocena techniczna odbędzie się podczas rozmowy kwalifikacyjnej.
Zdarza się ze sama rozmowa techniczna jest wyodrębniona z tej ogólnej rozmowy wtedy masz 2 osobne spotkania. Ale to niczego nie zmienia. Ocenia Cię najczęściej deweloper z odpowidnim doswiadczeniem, w mniejszych firmach to może byc sam wlaściciel czy CEO - ale on tym bardziej nie ma czasu na przeglądanie twojego gita.

Owszem mozesz na rozmowie kwalifikacyjnej przejąć inicjatywe i szybko zademonstrować taką apkę ale to tyle.

Wszyscy wiedzą że to nie jest żadna miarodajna ocena. Na kursach na dostajesz takie aplikacja na patelni - to nie znaczy że sam byś potrafił taką napisac.

Ale aplikacjie oczywiscie musisz pisać. To jest tak naprawde jedyny sposób na efektywną naukę.
Ale jak widzisz nie ma to znaczenia czy to jest jakaś oklepana apka jak minionowa apliacja typu TODO List ;).
Nie ważne, jesli robisz backend to ważne żeby tam był dostęp do bazy danych (podstawowy CRUD), zeby była odpwoeidnia struktura aplikacji, możesz zaszaleć z kilkoma mikroserwisami, musi mieć jakis prosty frontend zeby mozna było zobaczyć efekty pracy i zebyś zrozumiał jak działa frontend (tak ze samo API testowane w Postmanie nie wystarczy).

Lepiej na początek zrób coś oklepanego, przynajmniej będziesz miał pewność że ta aplikacja pokrywa większość najważniejszych obszarów. No i niestety musisz korzystać ze wzroców (np z kursów), tak zebys iwedział jak ta aplikacja ma byc zbudowana. Niestety w IT nie jest tak że wystarczy że zadziała. Musi ton być jeszcze odpowiednio napisane, tak aby nadawało się to potem do użytkowania, było łatwe w utrzymaniu, nie doprowadziało do wycieków pamięci itd.

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 13:14
przez desmoRR
@gouda
Twoje rady są cenne więc będę pytał ;)

Kilka pytań.
1. Czy domena biznesowa, w której się wcześniej pracowało (przykładowo przemysł, służba zdrowia itd.) ma jakieś znaczenie przy rekrutacji ? Taka osoba jest wartościowa na rynku pracy ?
2. Praca zdalna raczej nie jest dla osób początkujących ? Raczej kilka miesięcy trzeba popracować z biura, żeby mieć możliwość pracy z domu ?
3. Jak jest z tym zapotrzebowaniem na deweloperów ? W innym temacie pisałeś, że ostatnio dostawałeś mniej ofert pracy.
4. Jest zapotrzebowanie na analityków danych, którzy pracują z Excelem, SQL, Python ?

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 14:14
przez gouda
desmoRR napisał(a):@gouda
Twoje rady są cenne więc będę pytał ;)

Kilka pytań.
1. Czy domena biznesowa, w której się wcześniej pracowało (przykładowo przemysł, służba zdrowia itd.) ma jakieś znaczenie przy rekrutacji ? Taka osoba jest wartościowa na rynku pracy ?
2. Praca zdalna raczej nie jest dla osób początkujących ? Raczej kilka miesięcy trzeba popracować z biura, żeby mieć możliwość pracy z domu ?
3. Jak jest z tym zapotrzebowaniem na deweloperów ? W innym temacie pisałeś, że ostatnio dostawałeś mniej ofert pracy.
4. Jest zapotrzebowanie na analityków danych, którzy pracują z Excelem, SQL, Python ?


Ad 1. Nie, ale mogą być przydatne kompetencje miękkie, doświadczenie w pracy w międzynarodowym zespole, doświadczenie w zarządzaniu projektami, certyfikaty z tym związane które są uniwersalne i praktyczna znajomość angielskiego bez której ani rusz. A więc jeśli w poprzedniejpracy miałeś takie doświadczenia to super.
Ad 2. IT to nie przemysł gdzie stare dziady mają idiotyczne zasady. Jak najbardziej można rozpocząć 1 pracę zdalnie. Ja tak zaczynałem i większość z moich znajomywch wchodzących w branże w podobnym czasie. Jaka jest różnica że ktoś Ci wytłumaczy coś w buirze, czy online kiedy mu udostępnisz pulpit (albo on Tobie)? Może tylko taka że online jest po prostu wygodniej, niż siedzieć we 2 albo 3 a czasami 5 przy jednym biurku. W Przemyśle stare dziady nie znają technologii więc wymyślaja bzdurne zasady jak siedzenie w biurze. Owszem warto się spotkac zeby potdrzymywac międzyludzkie relacje, dlatego praca hybrydowa jest chyba najlepsza, albo spotkania co jakis czas, ale praca online jest po prostu wygodniejsza i bardziej efektywna również dla juniora.
Ad 3. Nie wiem, wydaje mi się ze mniej, ale ogłoszeń jest ciągle tyle samo. Ciężko powiedzieć. Są rózne opinie, jedni mówią ze idzie kryzys, a inni że wręcz przeciwnie, ze w IT nie będzie zadnego kryzysu, ze jest coraz wiecej miejsc pracy. Nie wiem, jestem tylko programistą.
Ad 4. Nie mam pojęcia. Poszukaj na portalach nofluff, justjoin.it itp.

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 15:35
przez desmoRR
@gouda
O jedną rzecz chciałbym jeszcze dopytać.

Automatyczne Testowanie oprogramowania. Więcej używa się Javy/C# czy Pythona i odpowiednich Framework ?
Webdeveloper to wybór jest prosty Java lub C#. A jak to wygląda w temacie testowania ?

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 15:52
przez Asu83
gouda napisał(a):
desmoRR napisał(a):@gouda
Z tego co piszesz to ciekawie to wygląda i nie ma nudów. Ogólnie programowanie to kojarzy się z nudnymi tematami ;)

Możesz napisać jakie projekty warto robić do Gita, żeby zrobić wrażenie na rozmowie ? Spodziewam się, że kolejny sklep to jest już oblatany projekt. Bez sensu wrzucić projekt, który jest setną kopią z kursu, który skończyło tysiąc osób.


Szczerze? Nie ma to żadnego znaczenia. Tych projektów na Gicie nikt nie przegląda.
Rekruter nie ma kompetencji żeby to zrobić, a osoba techniczna która będzie prowadziła z Tobą rozmowę nie ma czasu zaglądać w twój amatorski kod który na początku i tak wygląda słabo ;). To by było zbyt czasochłonne.
Zresztą jeśli aplikujesz do jakiejś firmy przez Agencję czy kontraktornie co jest bardzo popularne w IT, to klient końcowy dostaje CV na ich szablonie, a tam nie ma żadnych linków do Gita ;), rekruter zamieszcza tam tylko spójne dane w skondensowanej formie. Nikt nie ma czasu tego czytać i zglądać na twojego gita.

Uczestnicze obecnie w rekrukrutacjach nowych kandydatów więc mogę Ci powiedziec jak to wygląda.
Na Interview zaproszonych jest kilka osob (techncznych i nietechnicznych), dostają CV z wyprzedzeniem kilku dni, nie mają czasu na to żeby przeglądać twojego gita. Cała ocena techniczna odbędzie się podczas rozmowy kwalifikacyjnej.
Zdarza się ze sama rozmowa techniczna jest wyodrębniona z tej ogólnej rozmowy wtedy masz 2 osobne spotkania. Ale to niczego nie zmienia. Ocenia Cię najczęściej deweloper z odpowidnim doswiadczeniem, w mniejszych firmach to może byc sam wlaściciel czy CEO - ale on tym bardziej nie ma czasu na przeglądanie twojego gita.

Owszem mozesz na rozmowie kwalifikacyjnej przejąć inicjatywe i szybko zademonstrować taką apkę ale to tyle.

Wszyscy wiedzą że to nie jest żadna miarodajna ocena. Na kursach na dostajesz takie aplikacja na patelni - to nie znaczy że sam byś potrafił taką napisac.

Ale aplikacjie oczywiscie musisz pisać. To jest tak naprawde jedyny sposób na efektywną naukę.
Ale jak widzisz nie ma to znaczenia czy to jest jakaś oklepana apka jak minionowa apliacja typu TODO List ;).
Nie ważne, jesli robisz backend to ważne żeby tam był dostęp do bazy danych (podstawowy CRUD), zeby była odpwoeidnia struktura aplikacji, możesz zaszaleć z kilkoma mikroserwisami, musi mieć jakis prosty frontend zeby mozna było zobaczyć efekty pracy i zebyś zrozumiał jak działa frontend (tak ze samo API testowane w Postmanie nie wystarczy).

Lepiej na początek zrób coś oklepanego, przynajmniej będziesz miał pewność że ta aplikacja pokrywa większość najważniejszych obszarów. No i niestety musisz korzystać ze wzroców (np z kursów), tak zebys iwedział jak ta aplikacja ma byc zbudowana. Niestety w IT nie jest tak że wystarczy że zadziała. Musi ton być jeszcze odpowiednio napisane, tak aby nadawało się to potem do użytkowania, było łatwe w utrzymaniu, nie doprowadziało do wycieków pamięci itd.


Dzięki za podzielenie się tajemnicą poliszynela odnośnie rekrutacji. Na yt masa jest wydumanych materiałów dotyczących portfolio.

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 18, 2022 17:59
przez gouda
desmoRR napisał(a):@gouda
O jedną rzecz chciałbym jeszcze dopytać.

Automatyczne Testowanie oprogramowania. Więcej używa się Javy/C# czy Pythona i odpowiednich Framework ?
Webdeveloper to wybór jest prosty Java lub C#. A jak to wygląda w temacie testowania ?


Wybór nie jest prosty ;) backend to owszem Java, C# ale także JavaScirpt (NodeJs), a także Python (Flask, Django), jest też GoLang, Elixir i wiele innych...
Poza tym robiąc backend to moze byc backend aplikacji webowej, ale niekoniecznie. Zreszta to są czesto rozległe systemy z wieloma interfejsami, o wiele bardziej złozone niz aplikacje desktopowe.
Jest też frontend a tu masz do wyboru 3 nowoczesne frameworki Angular, Reacj i Vue, JavaScirpt oraz TypeScript w przypadku Angualra który jest nazdbiorem JavaScript. Frontend tez mozesz pisac bardziej klasycznie z uzyciem czystego JavaScript albo jQuery ;).
Nie to nie jest prosty wybór. Osobiście uważam że jeśli chodzi o backend to faktycznie Java czy C# wydają się racjonalnym wyborem. Ale warto się też przyjrzeć chociażby językowi Go, bo on staje się coraz bardziej popularny a developerów Go brakuje, więc podobno zarobki są bardzo dobre.

A co do testów to nie wiem. Cześć testerów pracuje w Selenium (zamiast klikac przez UI codzienie to samo mozna sobie to zautomatyzować), cześć pisze automaty w Postmanie (ale w Postmanie testuje się samo API). Wiekszosć backendowców tez używa Postmana czy podobnego softwaru do testowania API i deweloperzy też to sobie autumatyzują. Postman yżywa JavaScript. Tester może też pisać testy w podobny sposób jak się pisze testy jednostkowe czy integracyjne np. w Javie w JUnit albo w Spock (chociaż Spock to w zasadzie nie Java a Groovy, ale można go wykorzystywac do testowania aplikaji napisanych w Javie, Groovy czy Kotlinie).
Można pisac testy performance testy w K2 w JavaScript. Są testy Cucumber.. Tego jest naprawde dużo. Nie wiem niestety co się cieszy największą popularnością wśród testerów automatyzująch. Musiał byś pogadać z testerem

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 19, 2022 15:43
przez Farenz
@gouda
Przepraszam, jakoś skróciłem swój tok myślenia dość mocno. Chodziło mi o to, że zaczynając naukę od Pythona to w oczach ludzi rekrutujących nie mam solidnych podstaw. Mam tu na myśli przykładowo rozumienie jak dokładnie działa iteracja czy OOP, które w Pythonie są raczej bardzo uproszczone dla szybszego klepnięcia kodu i efektu. Tak to rozumiem. Stąd wyszło moje pytanie o książkę do C++.
Plan jest taki, żeby najpierw to lepiej zrozumieć, a później móc wybierać technologię do konkretnych projektów, które chce wykonać w ramach dalszej nauki.
Czyli z tego co piszesz C++ pomoże mi nie tylko w algorytmach (rozumieniu i pisaniu), a o to mi chodziło. Teraz pytanie powtórzę odnośnie książki. Najaktualniejsza od Grebosza jest Opus Magnum, ale nadal na C++ 11, więc do dzisiejszych technologii przestarzałe. Mimo tego warto? Czy coś lepszego polecasz?

Teraz przeczytałem to, że tych projektów na githubie nikt nie przegląda. Zatem co może sprawić, że ktoś bez skończonych studiów kierunkowych zostanie zaproszony na rozmowę?

Re: Inżynier mechanik zostaje programistą

PostNapisane: wrz 20, 2022 10:35
przez gouda
Tak, dzięki temu że będziesz używał C++ do implementacji algorytmów i struktur danych w celach edukacyjnych, łatwiej zrozumiesz jak działa komputer, pamięć, stos i sterta. A to m.in. dzięki jawnym wskaźnikom, destruktorom itp. W C++ programista jest odpowiedzialny z zarządzanie pamięcią aplikacji.

Wystarczy Ci nawet C++98. Opus Magnum jest ok, to bardzo dobra pozycja,ale to przytłaczają kobyla, ma też parę błędów np. Nie do końca trafione przykłady wykorzystania podejścia obiektowego (dziedziczenie wykorzystane tam gdzie powinna być wykorzystana kompozycja - ale to akurat standard w literaturze, że to zagadnienie jest źle wyjaśnione). Tobie wystarczą podstawy nawet bez obiektowki. Tylko funkcje i podstawowe pętlę oraz wskaźniki.

Jest w internecie fajny kurs https://cpp0x.pl/kursy/Kurs-C++/1

Opus Magnum też warto mieć, jako kompendium wiedzy i do wybranych zagadnień.

Chociaż jeśli idziesz w Pythona to sam nie wiem czy c++ jest dobrym wyborem. Zależy co chcesz w ogóle robić. Jeśli pójdziesz później Javę, C#, GoLang czy nawet JavaScript inne języki wzorowane na składni C/C++ to warto liznąć C++.
Jeśli chodzi o Pythona? Ja nie lubie Pythona bo on ma dla mnie dziwna składnię więc jestem uprzedzony. Dla mnie jest to dziwny i nienaturalny język. On jest głównie stosowany przez ludzi od ML czy Data Scienyistow - a to najczęściej w ogóle nie są informatycy. To są najczęściej matematycy, fizycy itp. Na tych kierunkach często się wykorzystuje Pythona bo jest podobno łatwy w nauce i dobry do zastosowań naukowych, obliczeń itd. Ale absolwenci tych kierunków nie mają wiedzy na temat tego jak działa komputer, chociaż w sumie też piszą algorytmy i to często zaawansowane, więc złożoność obliczeniowa i pamięciowa jest tu kluczowa.
Dla osoby która liznela C++ łatwiejsza będzie jednak Java.

Zarówno w mojej obecnej formie jak i w poprzedniej był wyraźny podział na programistów znających normalne języki i na naukowców znających o wykorzystujących Pythona. To mogą być naukowcy rozumiani jaki ludzie od ML, ale mogą to być też domenowi specjaliści jak np. fizycy, biolodzy, genetycy, bioinformatycy jak to jest w mojej obecnej formie. O i używają głównie Pytona. Niezależnie czy to spece od ML czy domenowi specjaliści, w obu przypadkach to nie są ludzie po IT, ani też typowo programiści. Często bliżej im do statystyki niż informatyki.

Nie wiem przynajmniej ja mam takie doświadczenia.