Przebranżowienie - kilka pytań

0

Prolog:
37lvl na karku, background w offpage seo i szeroko pojętym marketingu szemranym ale mam dość tej branży i chce pójść w stronę webdev.
Napisałem trochę skryptów w pythonie, wystawiałem fv za usługi programistyczne, ale... zescrapowanie stronki używając requestów i bs4 to nawet nie jest lvl trainee. Widzę, że nie znam dobrze samego pythona (nie używam lambd, yield itp), moja wiedza niewiele wykracza poza książkę python crash course (w sumie nawet jej nie przeczytałem od deski do deski). Tyle wystarczało do tego co robiłem aktualnie, ale to za mało by pójść pewnym krokiem dalej, trzeba nabić trochę expa.

Przechodząc do sedna, chce ogarnąć backend (python + może nodejs/golang lub c# żeby zobaczyć jak inne języki wyglądają), frotnend (pewnie react), bazy danych(postgresql, redis), linuksa (którego używam, ale niewiele umiem poza wklepaniem w konsole top, nload i blkdiscard /dev/sda), pewnie też trochę devopsa i UI/UX co rodzi pytania które dręczą mnie od jakiegoś czasu:

  1. Ile się uczyć/do jakiego poziomu dojść zanim zacznę klepać swój(e) projekt(y) (mam na myśli projekt(y) w stylu 10k loc albo więcej)? Jedni mówią żeby robić projekty asap, z drugiej strony mam wrażenie że pisanie czegokolwiek bez dogłębnej wiedzy o używanym języku/bibliotekach zaowocuje marnej jakości kodem który po kilku miesiącach będę chciał wyrzucić do kosza widząc jakie spaghetti napisałem.

  2. Mam pomysł na SAAS - będzie musiał pobrać kilkaset TB danych miesięcznie, odpowiednio obrobić i zaprezentować userowi na stronie oraz udostępnić dane przez api, nie mam $$ żeby komuś zapłacić za wykonanie więc pozostaje zrobienie wszystkiego samodzielnie po nabyciu odpowiednich skilli. Jestem zdecydowany i chętnie uszczknę tę jagódkę - jak nie wyjdzie to doświadczenie które zdobędę w trakcie powinno wystarczyć(?) na stanowisko juniorskie. Czy dobrze wnioskuje, że taki... rozbudowany projekt otworzy wiele drzwi? Nie użyje sformułowania "dobrze napisany projekt" chociaż mam nadzieję, że obrabianie takiej ilości danych wymusi optymalizacje kodu która wiele mnie nauczy.

Wiem, że to jest (trochę) porywanie się z motyką na słońce, ale na głupotę nie ma lekarstwa więc nie ma dla mnie ratunku :D

  1. Jak ogarnąć kwestie potencjalnego code review. Wrzucać na tutaj i na reddit, czy szukać mentora?

  2. Używanie github copilot na początku drogi to dobry czy zły pomysł?

Wszelkie sugestie mile widziane :)

0

Znajdź mentora, będzie Ci łatwiej, a widać że jakis background masz. Lepsze to niż nic, niektórzy siedzą w piwnicy tutorialowej i kodują todo app i kalkulatory.

0

Szukaj jakiegoś internshipu. Im szybciej zaczniesz mieć styk z branżą tym lepiej. Ja tak zacząłem, że zacząłem jako stażysta z urzędu pracy... :D I nie żałuję tej decyzji ani trochę, bo w domowych warunkach możesz się uczyć teorii, a im szybciej zobaczysz realne projekty od podszewki, tym lepiej dla Ciebie.

2
lubie_placki777 napisał(a):

Przechodząc do sedna, chce ogarnąć backend (python + może nodejs/golang lub c# żeby zobaczyć jak inne języki wyglądają),

Zdecydowałbym się na coś, bo nauka jednocześnie Pythona, Node.js, Golang i C# to nie jest dobry pomysł (chociaż nie wiem, czy miałeś na myśli jedno z tych, czy kilka).

  1. Ile się uczyć/do jakiego poziomu dojść zanim zacznę klepać swój(e) projekt(y) (mam na myśli projekt(y) w stylu 10k loc albo więcej)?

Linie kodu są słabą metryką. Można naklepać kodu jak szalony, a potem będzie to nieutrzymywalne.

Jeśli już chcesz jakąś metrykę, to lepiej liczyć w miesiącach. Napisać tonę kodu w tydzień to każdy umie, ale prowadzić swój projekt przez całe miesiące to już trudniejsze wyzwanie, bo jak napiszesz spaghetti kod albo kod źle zaprojektowany, to będziesz miał trudności później z utrzymywaniem. A im większy projekt, tym trudniej go dalej rozwijać, jeśli kod jest zły. No i też trzeba testować, czy program działa, jak trzeba. Na początku można ręcznie, ale potem coraz bardziej jest to męczące, żeby wszystko przeklikiwać, więc potrzeba posiadania w projekcie testów automatycznych staje się coraz bardziej paląca (chyba, że od razu piszesz testy. Ale z drugiej strony testy też trzeba się nauczyć pisać).

z drugiej strony mam wrażenie że pisanie czegokolwiek bez dogłębnej wiedzy o używanym języku/bibliotekach zaowocuje marnej jakości kodem który po kilku miesiącach będę chciał wyrzucić do kosza widząc jakie spaghetti napisałem.

No dobra - tylko jak chcesz się napisać ładny kod, jak się boisz pisać spaghetti? To skąd ten ładny kod ma się wziąć? Przecież od razu nie napiszesz ładnego. Programowanie to jak każde inne rzemiosło, sztuka czy sport. Trzeba robić coś na początku słabo, żeby robić potem dobrze.

z drugiej strony mam wrażenie że pisanie czegokolwiek bez dogłębnej wiedzy o używanym języku/bibliotekach

Trzeba podchodzić iteracyjnie.
trochę teorii --> trochę praktyki --> trochę teorii --> trochę praktyki
Plus dokonywać też samorefleksji między tymi dwoma.

  1. Mam pomysł na SAAS - będzie musiał pobrać kilkaset TB danych miesięcznie, odpowiednio obrobić i zaprezentować userowi na stronie oraz udostępnić dane przez api, nie mam $$ żeby komuś zapłacić za wykonanie więc pozostaje zrobienie wszystkiego samodzielnie po nabyciu odpowiednich skilli.

Jeśli masz konkretny pomysł, to możesz zrobić research i się zorientować, czy nie mógłbyś użyć do tego celu jakiejś gotowego API (np. w usłudze chmurowej) czy gotowej biblioteki.

1
lubie_placki777 napisał(a):

Prolog:
z drugiej strony mam wrażenie że pisanie czegokolwiek bez dogłębnej wiedzy o używanym języku/bibliotekach zaowocuje marnej jakości kodem który po kilku miesiącach będę chciał wyrzucić do kosza widząc jakie spaghetti napisałem.

No ale to już sukces. Bo żeby ocenić, że coś jest speghetti musisz mieć doświadczenie/wiedzę. Potem napiszesz następny projekt lepiej i już będziesz mógł szukać pracy jeśli do tej pory nie będziesz miał

2

Przechodząc do sedna, chce ogarnąć backend (python + może nodejs/golang lub c# żeby zobaczyć jak inne języki wyglądają), frotnend (pewnie react), bazy danych(postgresql, redis), linuksa (którego używam, ale niewiele umiem poza wklepaniem w konsole top, nload i blkdiscard /dev/sda), pewnie też trochę devopsa i UI/UX co rodzi pytania które dręczą mnie od jakiegoś czasu

Popróbuj, który język Ci leży i skup się tylko na jednej technologii bo szybko się zniechęcisz, sam zaczynałem od pythona przez js a stanęło na c#, przebranżowiłem się po 30.

  1. Ile się uczyć/do jakiego poziomu dojść zanim zacznę klepać swój(e) projekt(y) (mam na myśli projekt(y) w stylu 10k loc albo więcej)? Jedni mówią żeby robić projekty asap, z drugiej strony mam wrażenie że pisanie czegokolwiek bez dogłębnej wiedzy o używanym języku/bibliotekach zaowocuje marnej jakości kodem który po kilku miesiącach będę chciał wyrzucić do kosza widząc jakie spaghetti napisałem.

Ciągle się uczyć … Największy postęp widzę jak siadam w robocie do 10 letniej apki, wprowadzam nową funkcjonalność co nie ruszysz to się spieprzy w kilkunastu innych miejscach i kombinuj jak to zrobić. Każdy Cie zlewa, masz być samodzielny, szukaj sposobu po necie, dokumentacji, notatkach może po kilku próbach i błędach coś wymyślisz.

Widzę, że nie znam dobrze samego pythona (nie używam lambd, yield itp), moja wiedza niewiele wykracza poza książkę python crash course (w sumie nawet jej nie przeczytałem od deski do deski).

Nudzi mnie robienie tutoriali, ale siadam wieczorami do teorii, lekcja trwa 10 minut, spędzam nad nią 30, obejrzę raz dobra kumam, drugi raz zakoduje, trzeci raz zrobie notatki, przejdę 2-3 lekcje i kima. Rano głowa świeża ale jest efekt przy kodowaniu, nie przeskoczysz braków w nieznajomości składni.

0

"linuksa (którego używam, ale niewiele umiem poza wklepaniem w konsole top, nload i blkdiscard /dev/sda),"

Ile czasu siedzisz na linuksie, że się nawet paru prostych rzecz w shellu nie nauczyłeś? Wydawało mi się, że to jakby samo naturalnie przychodzi.

Pisz programy dla których znajdziesz jakieś zastosowanie. Inaczej nie będzie z tego satysfakcji. Moim zdaniem to jest ślepa uliczka, ze o "wiele sie nauczyłem" tylko na koniec program który napisałem do niczego nie użyłem. Na moją logikę skoro w pracy będziesz pisał programy za których robienie dostajesz kasę to Twoim celem powinno być pisanie takich projektów które chociaż tobie się do czegoś przydadzą. Za nieprzydatne rzeczy ludzie mniej chętnie płacą. Więc powinieneś skupić się na tych potrzebnych.

Tak sobie pofilozofowałem. Bo nigdy mi się nie podobało pisanie projektów dla pisania. Sam tak nigdy nie robiłem. Używam nawet programów napisanych gdzieś 1-2 latach kiedy zacząłem programować. ( Oczywiście je rewidowałem po czasie i zmieniałem, ale to nie było na zasadzie skasowania całego kodu [ok raz tak było ale tylko raz ] i napisania od zera

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