Mentoring-doradztwo: Python/Flask/Webdevelopment - weryfikacja materiałów, obranej ścieżki nauki i porady

0

Witam,

wiem, że podobne wątki już tu istnieją, ale chyba rozglądam się za czymś odrobinę innym. W wielkim skrócie: otóż kiedyś uczyłem się Perla (+ trochę Perl/CGI) oraz C/C++ (+ trochę SVGALib, Ncurses i Qt3 - w tym czasie całe szczęście przeszedłem przez tutorials hell, zatem mogłem sobie tego oszczędzić później), jednakże ostatecznie kształciłem się na kierunkach humanistycznych. Dwa lata temu zacząłem podejrzewać, że nawet kształcąc się samemu, można dojść do poziomu na którym jest się zatrudnialnym lub formalne potwierdzenie kwalifikacji zdobyć już zarabiając w ten sposób (a program Bootcampów, mimo kwot 14tys pln za cykl w najważniejszym momencie uczy jak zrobić listę zadań w PHP). Żeby nie było (iż) jestem takim materialistą - generalnie chcę, żeby coś, czym zajmować/pasjonować/bawić się lubię przynosiło mi przynajmniej zwrot kosztów.

Zatem skracając - w jakimś stopniu ogarnąłem:

  • Python (the Official Tutorial sygnowany przez G. van Rossuma - https://docs.python.org/3.6/tutorial/); Learning Python (wyd. 4. - przy czym, jak na razie, pozostawiłem sobie na później metaklasy i to, co jest po nich)
  • Flask + trochę SQLAlchemy (M. Grinberg, Flask Web Development...)
  • Trochę mniej JS (trochę Eloquent JavaScript + materiały z https://developer.mozilla.org/en-US/)
  • Tkinter (kiedyś przerabiałem "Mastering Perl/Tk" zatem uznałem, że ogarnę tylko różnice a resztę doczytam z dokumentacji)
  • Z grubsza HTML+CSS (Duckett, Jon. HTML & CSS., uzupełniłem o wiedzę nt Grid i Flexbox z https://css-tricks.com/)

Oraz:

  • Diagramy UML (Learning UML 2.0)
  • Podstawy SQL i projektowania baz danych (P. Pratt, Concepts of Database Management)
  • Podstawowe komendy Git-a

Do każdego etapu robiłem projekt, zatem:

  • Do Pythona - edytor HTML w Tkinter z własnym komponentem kolorującym składnię
  • Flask/SQLAlchemy/HTML + Bootstrap i trochę JS z JQuery: aplikacja internetowa

Plus mniejsze:

  • CSS - prosta strona na podstawie mock page
  • JS i manipulacja DOM - hm... Niby-gierka a la Arkanoid, która zmusiła mnie do ponownej nauki trygonometrii

Na tym etapie chciałbym to poddać weryfikacji przez drugą osobę, a z tej weryfikacji bym się chciał dowiedzieć:

  • Czy w ogóle jest sens iść w tym kierunku, czy też może zbłądziłem i należy zająć się czymś innym?
  • Na ile opanowałem potrzebny do zatrudnienia materiał a nad czym jeszcze muszę popracować
  • Sprawdzenie i omówienie jakości kodu, na co powinienem zwrócić uwagę, czego unikać etc.
  • Czego muszę się jeszcze KONIECZNIE nauczyć a czego powinienem się nauczyć, czy może w ogóle powinienem wrócić do podstaw?

Oraz gwóźdź programu - czy nie jestem na takie przekwalifikowanie za stary.

Zaczynam się zatem rozglądać za mentorem/doradcą, z którym na paru konsultacjach bym omówił powyższe problemy. Czy zatem ktoś stąd byłby w stanie polecić kogoś (w polskim Internecie, stronę gdzie można znaleźć takie osoby etc.), kto świadczy takie usługi? Jak dotąd, wysłałem jedno bezpośrednie zapytanie, ale odpowiedzi brak, zatem próbuję tu.

1

@Radoslav LTD: Z takim mentoringiem bywa ciężko bo często można trafić na kogoś ze słabym skillem, ale dużym ego, kto tylko będzie chciał na Tobie zarobić, najłatwiej byłoby kontrybuować w jakimś projekcie open source i np. wrzucając merge requesta miałbyś za free w pełni wartościowy feedback od doświadczonych osób. A jeszcze lepiej byłoby wziąć udział w kilku rozmowach, dzięki czemu zweryfikujesz swoje umiejętności i jeśli będzie kicha, to robisz rachunek sumienia, nadrabiasz zaległości i powtarzasz proces. Tylko trzeba do tego podchodzić z dystansem bo jest wiele firm, od których nawet nie masz co liczyć na feedback w przypadku niepowodzenia i w takich sytuacjach nie ma co wpadać w frustrację, tylko działać dalej w swoim tempie.

Oraz gwóźdź programu - czy nie jestem na takie przekwalifikowanie za stary.

Oczywiście że nie

1

@Radoslav LTD: Jak najbardziej idziesz w dobrym kierunku. Jeśli chodzi o to co napisałeś. Jeśli nie jesteś mocno nastawiony na flullstacka to możesz skupić się na samym backendzie. Więc JS, JQuery itp będzie mocno trzeciorzędne. Flaska zamieniłbym na Django i rozszerzył to po opanowaniu podstaw (wdoki, querysety, templatki i formsy) o Django Rest Framework (serializery i widoki restowe w tym zapoznanie się z widokami generycznymi). Masz już jakieś obycie z Flaskiem więc nie będzie to ogromny przeskok. Tkinter i wszelaki GUI tematy możesz porzucić. Python króluje w webdevie i tu jest to całkowicie zbędne. Dodakowo zainteresuj się Dockerem i docker-compose (co to k8s czy docker swarm możesz poczytać czym jest ale na entry level całkowicie zbędne więc się w to nie pchaj), jak konteneryzować proste aplikacje backendowe (django/flask nie ma żadnej różnicy), obecnie jest to podstawa. Co do książek Learning Python jest solidną pozycją ale uważaj żeby w niej nie utonąć, jak dla mnie to dobre źródło wiedzy ale gdzieś tak po przynajmniej roku solidnej praktyki by sobie usystematyzować wiedzę. Na początek wiele informacji z niej nie da Ci boosta odpowiedniego. Co do samej jakości kodu jak znasz pep8 i starasz się tego trzymać to już jest dobrze. Zainteresuj się takimi narzędziami jak isort, flake8, black i używaj je podczas pracy z kodem. Dodatkowo naucz się własny kod testować unittest/pytest wybierz jedno i stosuj każdego dnia.

0
masochista napisał(a):

najłatwiej byłoby kontrybuować w jakimś projekcie open source i np. wrzucając merge requesta miałbyś za free w pełni wartościowy feedback od doświadczonych osób. A jeszcze lepiej byłoby wziąć udział w kilku rozmowach

Ok, jedno i drugie rozważę. Jeżeli chodzi o weryfikację potencjalnych mentorów - podejrzewam, że rzut oka na LinkedIna, jakiegoś prywatnego bloga czy podobne materiały dałyby mi jakieś wskazówki, z kim mam do czynienia. W sumie zacząłem się dopiero rozglądać ale mam dość jasno wyznaczone granice takiej pomocy/wsparcia.

cmd napisał(a):

Flaska zamieniłbym na Django i rozszerzył to po opanowaniu podstaw

Nad tym się też zastanawiałem i mam nawet na swojej liście priorytetów (przy czym trochę wyżej mam sformalizowaną, wg podręcznika - naukę algorytmów i struktur danych - tak nawiasem, zauważyłem, że na Bootcampach tego w ogóle nie uczą, zastanawiam się, jak bardzo jest to niezbędne) - tym bardziej, że nim się na rozmowę załapię/gdziekolwiek mnie przyjmą, zapewne zdążę się tego nauczyć (tak jak Dockera/konteneryzacji).

Dzięki zatem za rady/pomoc, mogę zrobić zatem tak:

  1. Mimo wszystko, rozejrzę się za mentorem (już trochę czasu temu odłożyłem sobie budżet na to, zatem taki wydatek nie będzie jakimś szokiem)
  2. Niezależnie od powodzenia pkt 1. spróbuję się dostać na rozmowę.
  3. Kontrybuuję do jakiegoś projektu open source.

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