Metody szlifowania zawodu bez wsparcia seniorskiego

Metody szlifowania zawodu bez wsparcia seniorskiego
EM
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:19
2

Ostatnio załąłem moja pierwszą pracę jako programista w zespole wytórczym. Niestety nie uczą mnie dobrych praktyk, tylko "rób zadania, komituj i ma działać".
Jak zrekompensować sobie brak takiej normalnej sytuacji gdzie doświadczony dev podpowie jak należy pisać albo zrobi code review?

Chodzi o back-end w appkach webowych.
Przegladanie jakichs open source? ale jak znaleźć te dobre?
Może macie jakieś inne pomysły?

edytowany 1x, ostatnio: Empek
Miang
a jest tam w ogóle ktoś doświadczony w zespole czy sami początkujący?
EM
to mała firma ale cały przekrój od juniora przez midow po seniora.
Miang
spróbuj sie zakolegować z tymi doświadczonymi nieoficjalnie
EM
to jest myśl
superdurszlak
Jeszcze pytanie jakimi seniorami i midami są seniorzy i midzi, jak seniorzy mają po 2-3 lata to masz w zespole samych juniorów ;)
IK
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 2 lata
8

Jest pełno półśrodków - książki, open source, własne projekty, konferencje... ale najlepiej szukać od razu nowej pracy.

EM
to lece z pół środkami, bo nie czuje się na tyle pewnie żeby żąglować miejscami pracy. Dzieki iksde!
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
7

Ja może rozwinę wypowiedź wyżej. Nawet najlepsza książka nie pomoże bez praktyki, czyli pisania. Pewne rzeczy muszą wejść w nawyk. Poza tym w podczas pisania mogą wyjść różne problemy, o których nie napisano w książce a w internecie informacje są szczątkowe. Sam nie raz tak miałem, że Spring zrobił magię (Spring robi dużo magii, bardzo dużo...) i coś się wysypało. Przekopywania się przez logi i stos wywołań było dużo. Z książek a bynajmniej z kursów nie dowiedziałbym się czegoś takiego. No bo w kursach musi wszystko działać i reklamować Spring jako ósmy cud świata (albo jako ósmy CRUD świata ;) ).
No i z tą pracą faktycznie może coś być, ale nie radzę szukać na wczoraj, żeby nie spaść z deszczu pod rynnę. Mając już pracę można się uczyć i szukać nowej pracy. Wyższe wymagania, wyższe pieniądze, ale też w firmie może być tworzony lepszy kod. Tam, gdzie nie mają wymagań co do kandydatów, mogą nie wymagać nic od kodu przez nich produkowanego. Słaby kod to też nauczka jak nie pisać.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 1x, ostatnio: PerlMonk
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:2 minuty
  • Postów:8398
1

Ostatnio załąłem moja pierwszą pracę jako programista w zespole wytórczym. Niestety nie uczą mnie dobrych praktyk, tylko "rób zadania, komituj i ma działać".

No to możesz zacommitować coś, co nie będzie działać za pierwszym razem. Coś, co się wywali i dzięki temu będziesz mógł się nauczyć na błędach (i nauczysz się np. testowania albo tego, w jaki sposób można uniknąć błędów, które popełniałeś wcześniej, czyli tzw. dobrych praktyk, które sam sobie wtedy rozkminisz w praktyce).

Możesz też patrzeć, co ludzie przed tobą spieprzyli - jeśli to zespół na zasadzie "rób zadania, komituj i ma działać", to jest duża szansa, że pisany przez twoich poprzedników kod jest pisany "na pałę". Wtedy grzebiąc w nieutrzymywalnym spaghetti uczysz się tego, "jak nie należy pisać".

Ogólnie uczyć się można na dobrych praktykach, ale można też na złych. Jak @PerlMonk pisze Słaby kod to też nauczka jak nie pisać.

No chyba, że programiści, którzy z tobą pracują, piszą dobry kod, a po prostu nie tłumaczą. Wtedy możesz się uczyć też pozytywnie, czytając ich kod. (chociaż zwykle to jest pomieszane i kod jest częściowo dobry, częściowo spaghetti).


edytowany 3x, ostatnio: LukeJL
Schadoow
  • Rejestracja:około 13 lat
  • Ostatnio:około 19 godzin
  • Postów:1064
1

Można podzielić to na dwa podproblemy jakość i wygląd kodu i umiejętności techniczne(np cloud, internalsy javy i springa, różnego rodzaju biblioteki, drugi język na JVM). O ile do pierwszego problemu potrzebne są ci realne casy i druga para oczu tak drugą część tj umiejętności techniczne możesz nauczyć się z czytając odpowiednie książki robiąc certyfikacje czy czytając whitepapersy i dokumentacje jakiejs technologii.

I warto pamiętać, że ładny kod mało kiedy przekłada się na twoją realną wartość biznesową.

PK
PK
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:245
1

Odnośnie nauki poprzez pisanie byłbym daleki od stwierdzenia, że samo pisanie kodu to najlepsza metoda na naukę. Tak to łatwo można zweryfikować czy wiedza jaka masz i umiejętności dobrze rzutują na projekt, i albo coś nam wychodzi albo projekt stawia opór. Oczywiście można się zatrzymać, pomyśleć, zbadać alternatywy, poznać więcej informacji, przećwiczyć inne ścieżki itp, ale podczas pisania projektu, zwłaszcza komercyjnego to takiego komfortu zbytnio nie ma, w trakcie pisania kodu skłaniamy się ku nieciekawym kompromisom, to nie są rzeczy jakie chce się powtarzać w kolejnych projektach.

Także tak to nawet nie zawsze sie dowiemy czego nie wiemy, w zasadzie bardziej byłbym skłonny do stwierdzenia, że dowiemy się tylko jakie problemy były dla nas kłopotliwe / niewygodne.

Tutaj rokujący programista to taki, który tutaj odrobi pracę domową i ten problem wyłapie i zacznie studiować metody radzenia sobie z takimi rzeczami. W lepszej sytuacji jest ten kto zna więcej paradygmatów, więcej zróżnicowanych technik, bo takie rzeczy pozwalają patrzeć z różnych perspektyw, pozwalają sprawniej dokonać selekcji i zawęzić obszar przeszukiwania.

Ale samo programowanie to nie wszystko, bo ważniejsze są narzędzia. To drugi ważny obszar od którego zależy jak bardzo pewny grunt mam pod sobą. Tutaj warto poznać ograniczenia z jakich składają się narzędzia, wiedzieć dlaczego tak te narzędzia działają, jakie są problemy, jak mozna przy nich postąpić - ta rzecz wymaga przebrnięcia przez książki, dokumentacje, rozmowy z programistami, czytanie kodu, coraz większego zagłębiania się w temat i problemy związane z narzędziem itp. Bez tej świadomości nic nam po samym pisaniu, bo to co przedstawiamy w kodzie wtedy wygląda raczej jak zgadywanie.

No i trzecia rzecz, jak ktoś się nauczył wielu technik oraz rzeczywiście zna narzędzia to kolejna trudna rzecz jaka go czeka to mooooocne wdepnięce hamulcja, ponieważ potrzebny będzie umiar, słuchanie innych, rozkładanie sił na cały projekt, pisanie możliwie prostego kodu i to nie jest taka łatwa zrobić to (to tak jak przejście z haskella / rusta do pracy okopach w javascript es 3). Ciężko jest powiedzieć stop sobie, a co gorsza innym, gdy przecież cały świat przecież gna do przodu jak gazela.

Jeśli mamy taką osobę w zespole to niemal wszyscy programisci przy takim gościu również wyglądają jak gwiazdy. Dużo łatwiej jest wtedy redukować poziom złożoności w projekcie, ryzyka jakie wiąże się z projektem, nie wspominając już o samym utrzymaniu.

Także ja tak bym w skrócie ujął to co ma znaczenie z perspektywy uczenia się programowania.

edytowany 2x, ostatnio: pan_krewetek
GI
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad rok
  • Postów:37
0
  1. Jest to praca i zarabia się pieniążki i trzeba to szanować. Ktoś płaci za produkt który wykonujesz i możesz pogłębić ten temat - kto za to płaci i dlaczego ? Wgłębić się w logikę biznesową aplikacji do której prawdopodobnie nikt Cie nie będzie chciał dopuścić ;)

  2. Można znaleźć sobie w ofertach prace do której chciałbyś się dostać i nauczyć się technologi które są w niej wykorzystywane np. Angular 8 , rabbit MQ, mongo.

Jest to rozwój i motywacja do pracy ( często zmiana pracy wiąże się również z podwyżką )

  1. Znaleźć sobie jakiegoś projekt open source z seniorem.
    Np. tutaj robimy taki projekt : https://4programmers.net/Forum/Edukacja/345722-jak_zdobyc_prace_jako_junior_java_developer?p=1721303#id1721303

What is the difference between "hero" and "coward" ?
There is no difference - they feel the same
but hero do what coward doesnt
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około miesiąc
  • Postów:2284
4

Jak poszedłem do mojej pierwszej pracy jako programista z zerowym doświadczeniem to było podobnie. Parę szkoleń ale jedynie produktowych. Poza tym od razu jakiś bug do naprawy i jazda bez tłumaczen. Na początku nie wiedziałem co się dzieje, bo kod był ogromny i to taki stary c++ gdzie ma się nieraz po 10k linii w jednym pliku, dziedziczenie po kilkunastu klasach, bez testów itd, no ale po czasie udało mi się odnajdywać w czymś takim.
Niestety teoretycznie miał być ktoś moim tz mentorem, ale sam powiedział menadżerowi przy wszystkich, że on nie chce i raczej nie miałem z nim później większego kontaktu xD.
I tak przejechałem 1,5 roku, bo nie wiedziałem jak powinno wszystko wyglądać a praca polegała tylko na debugowaniu i dopisywanie pojedynczych ifow, albo dodawania czegoś nowego ale w C# xD.
Później na wskutek covidu straciłem pracę. Uratowalo mnie trochę to, że zakolegowalem się z jednym gościem który siedział obok mnie i od niego czasem czerpałem wiedzę, ale to pod koniec. Poza tym czuje jakbym przespał te 1,5 roku. Kiedy po roku stwierdziłem, że dość tego syfu to zacząłem chodzić na rozmowy rekrutacyjne i wtedy się okazało że tak naprawdę mam totalnie beznadziejna wiedzę teoretyczną, musiałem wyciągnąć książkę i zacząć się uczyć. Niemniej jednak najchętniej zatrudniłbym się jeszcze raz jako junior gdzieś gdzie mógłbym się uczyć od zera ... Ale nadrobić się już nie da i będę musiał bez pewności siebie, że umiem wystarczająco jakoś funkcjonować w nowej pracy. Także uciekaj stamtąd po 3 miesiącach najdalej jak się da, bo tylko sobie krzywdę zrobisz

PK
pan_krewetek
Gdybyś więcej umiał i wiedział na początku to byłoby Ci znacznie ciężej wpasować się w ten projekt - ja tak na początku miałem. Po prostu to czego byłbyś nauczony nie pasowałoby do tego jak jest prowadzony projekt i wpadłbyś w jedną wielką pętlę irytacji. A tak zdobyłeś cenną perspektywę, wiesz jak wygląda prowadzenie ifologii, i masz większe szanse, że odnajdziesz się w nie jednym g'wnie, a to jednak ma duże znaczenie z perspektywy samej kariery, i kasy itp
PK
pan_krewetek
Oczywiście warto na boku rozwijać swój gust, techniki, poprawne podejście do wielu spraw itp - ale to i tak nie zmienia faktu, że Twój exp ma znaczenie i wcale nie jest gorszy od doświadczenia ludzi, którzy mają projekt od zera. Ulepszałeś coś co działa, i jest potrzebne, podczas gdy inni nie raz tworzą rzeczy wprost do koszta, bo rynek nie wział. Dlatego tym bardziej nie rozumiem czemu traci na tym Twoja pewność :)
BraVolt
  • Rejestracja:prawie 6 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Warszawa
  • Postów:2918
3

@Czitels:

I tak masz ogromne szczęście, bo przyszedł COVID i nie pozwolił ci się zasiedzieć jeszcze dłużej.


"Kiedy wiedzieć czy zacząć nauke Springa? bo w czystej Javie to nic ciekawego nie zrobie chyba"
Ein Volk, ein Reich, ein Kwa-Kwa ***** ***
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)