Jak się uczyć/rozwijać jako programista (Java developer)

Jak się uczyć/rozwijać jako programista (Java developer)
Darth Bane
  • Rejestracja:około 9 lat
  • Ostatnio:około 18 godzin
  • Postów:29
0

Temat może dziwny, nie znalazłem podobnego. Zastanawia mnie jak wygląda u was rozwój umiejętności zawodowych? Mam na myśli naukę nowych rzeczy. Co robicie po godzinach? Pytam bo wciąż na papierze mam nieduże doświadczenie zawodowe. Chciałbym się dowiedzieć jaką przyjąć strategie żeby nie zostać w przyszłości powiedzmy dziesięcioletnim juniorem. Ja np. po pracy lubię programować rzeczy nie koniecznie związane z typowymi zadaniami Java developera np. programowanie gier, jakieś mini projekty algorytmiczne. Nie zawsze mam na celu naukę nowych konkretnych rzeczy (często robię to czysto dla przyjemności) jednak w większości przypadków staram się stosować dobre praktyki. Zastanawiam się czy jest to dobra strategia? Czy lepiej gimnastykować umysł wcześniej wspomnianymi rzeczami oraz np. nauką innych czasami "dziwnych" języków programowania (żeby poznać też inny punkt widzenia)? A może lepsze jest podejście takie w którym po spotkaniu się w pracy z nową biblioteką/frameworkiem katuje go po godzinach w domu?
Podsumowując co jest lepsze?
A - programuje sobie to co sprawia mi przyjemność i w ten sposób nauka programowania = nauka sposobu myślenia
B - stawiam na naukę konkretnych frameworków, bibliotek, technologii + czytanie dokumentacja owych rzeczy (tego co jest na topie)
C - literatura fachowa, konferencje, JUG'i
D - a może wszystkiego po trochu
E - podejście "zachłanne" skoro już mam z czymś nowym do czynienie w pracy, nauczę się tego na tyle na ile potrzebuje w danej chwili

Z góry dziękuję za każdą odpowiedź.


(...) siła przetrwania musi pochodzić z wnętrza. Inni zawsze zawiodą. Przyjaciele, rodzina, towarzysze broni... w ostatecznym rozrachunku każdy zostaje sam. W potrzebie zawsze szukaj pomocy w sobie.
RE
  • Rejestracja:prawie 5 lat
  • Ostatnio:minuta
  • Postów:105
2

wszystko zależy od Ciebie i sytuacji życiowej - masz dzieci, chorych rodziców itd, co za tym idzie ile masz czasu
Generalnie, to co mi pomaga to live coding, przepisywanie przykładów w celu nabycia pamięci mięśniowej - jak masz czas to rób swój projekt, nie musi to być coś nowatorskiego, wystarczy kopia istniejącego narzędzia, jak nie masz - koduj z książką czy yt,

Darth Bane
Wychodzi na to że obecnie tak robię, gdy mam czas i chęci po pracy klępę kod "nie korporacyjny" czy to grę, czy coś innego. Robiąc "to samo" co w pracy to zbiera się na konwulsje.
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
6

Doświadczenie najlepiej zdobywać w pracy. Po godzinach: głównie odpoczynek. Czasem warto popatrzeć na coś nowego w programowaniu, ale nie cały czas. Poza tym trzeba też dbać o:

  • relacje - w końcu każdy chce mieć z kim spędzać czas,
  • zdrowie fizyczne - całymi dniami nie da się siedzieć przed komputerem,
  • zdrowie psychiczne - czyli jak sobie radzić z problemami albo ich brakiem.

Gdy weźmiemy pod uwagę to wszystko okaże się, że nie mamy czasu na naukę programowania po godzinach. Często lepiej zadbać o inne rzeczy, niż ciągle siedzieć nad programowaniem. Dlaczego? A no dlatego, że dbając też o inne wymienione sprawy zyskujemy dużo więcej, niż pochłaniając kolejną książkę o programowaniu. Poważnie, wiedza o frameworkach szybko się przedawnia.
Pewnie wielu zna schemat: ciągłe kodowanie, żadnego odpoczynku. Człowiek coraz starszy a tu bebech rośnie, koledzy się pożenili a samotność daje się we znaki. Scenariuszy może być dużo, ale wniosek jest jeden: jesteśmy nauczeni napierdalać bez namysłu. Programowanie to nie religia. To tylko praca. Albo tylko hobby.

Podsumowując: po godzinach ćwiczyć umysł czymś innym, niż programowanie. Pozwala to odpocząć od programowania a potem w pracy jest się bardziej efektywnym.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
edytowany 2x, ostatnio: PerlMonk
Darth Bane
  • Rejestracja:około 9 lat
  • Ostatnio:około 18 godzin
  • Postów:29
0

Brzmi rozsądnie. Moja obawa polega na tym że czasami w pracy spotykałem seniorów czy mid'ów którzy popełniali juniorskie błędy. Nie chciałbym tak skończyć, ale też nie wiem co jest tego przyczyną. Czy to zbiór cech charakteru, czy to że nie siedzieli nad programowaniem po 16h dziennie (przykład trochę przerysowany)? Kiedyś senior powiedział mi że programowanie to nie klepanie kodu tylko sposób myślenia. Może mój problem wynika z tego że nie potrafię określić czego warto się uczyć. Kiedyś w pracy miałem okazje pisać testy integracyjne w Camelu. Więc się go nauczyłem na tyle żeby te testy napisać. Nie zanosi się żebym ponownie używał Camela, więc chyba nie ma sensu żeby czytać książkę o nim i robić sobie jakiś projekt wykorzystujący go. Bo jeśli do niego szybko nie wrócę to i tak większość zapomnę. Chyba ważniejsze jest to że wiem że coś takiego istnieje jak Camel oraz jak i gdzie go zastosować. @PerlMonk Lepiej chyba stawiać na wiedzę "miękką" mam na myśli wiedzę nie zależną od języka programowanie jakieś wzorce projektowe, DDD, architektura itp. Oczywiście mając na uwadze Work-life balance.


(...) siła przetrwania musi pochodzić z wnętrza. Inni zawsze zawiodą. Przyjaciele, rodzina, towarzysze broni... w ostatecznym rozrachunku każdy zostaje sam. W potrzebie zawsze szukaj pomocy w sobie.
RE
przyczyną jest to, że seniorem zostaje się bardzo często za wiedzę domenową, a nie techniczną. Co do wiedzy - to trzeba mieć trochę szczęścia, nigdy nie wiadomo co się przyda, a co będzie stratą czasu. Na co warto poświęcić swój czas - musisz sam spróbować, co Tobie leży, co nie nuży (wieczorem po dniu pracy i zycia wiedza gorzej wchodzi). Na pewno nie opłaca się czegoś szlifować na 100%, bo jak słusznie zauważył @PerlMonk jak czegoś nie ma w pracy to uleci, jedyny plus, że (być może) szybciej odnowisz wiedzę, którą kiedyś miałeś
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
3

@Darth Bane: Początki nauki programowania są fajne: chłoniesz wiedzę jak gąbka. Jak już ogarniesz podstawy, język programowania stanie się drugorzędnym narzędziem. Problemy, które będziesz rozwiązywać, będą wymagały abstrakcyjnego myślenia. Dotrzesz do momentu, w którym okaże się, że olałeś pozostałe punkty, które wymieniłem. Rozwiązać proste zadanie na studiach można nawet po pijaku, ale do poważniejszych problemów musisz być wypoczęty i zrelaksowany. Ciężko to osiągnąć jeśli się nie wyspałeś, nie dbałeś o siebie albo pokłóciłeś się z kobietą - im bardziej się zgrywa twardziela tym bardziej problem rośnie.

Wracając do wątku. Czasem zamiast uczyć się kolejnych języków polecam np. czytać książki, czasem nawet beletrystykę. Pasje często rozwijają bardziej, niż wielu osobom się wydaje. Np. kaligrafia uczy cierpliwości i poprawia zdolności manualne. Ja co prawda za kaligrafię jeszcze się nie zabrałem, ale samo pisanie piórem wiecznym wymagało ode mnie uwagi i nauki pewnych rzeczy. Mówiąc krótko: ucząc się tylko programowania rozwijasz się wgłąb. Mając pasję i życie poza programowaniem, uczysz się wszerz i wychodzisz poza schematy.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
PI
Jesteś mądrym człowiekiem. Ile masz lat?
PerlMonk
Słaby troll...
Darth Bane
  • Rejestracja:około 9 lat
  • Ostatnio:około 18 godzin
  • Postów:29
0

Oczywiście ciesze się z waszych odpowiedzi, chociaż nie do końca mnie satysfakcjonują. Fajnie jest programować markerami po tablicy (jako wyraz bycia na wyższym poziome abstrakcji i niezależności od technologii itp.). Zastanawia mnie natomiast jak powinna wyglądać droga do takiego poziomu? Co robić żeby się tam znaleźć? Z wyjątkiem budowania kariery na jednym projekcie. Już wiem po co jest architektura hexagonalna, seniorzy programują logikę biznesową i porty a juniorzy adaptery ;)


(...) siła przetrwania musi pochodzić z wnętrza. Inni zawsze zawiodą. Przyjaciele, rodzina, towarzysze broni... w ostatecznym rozrachunku każdy zostaje sam. W potrzebie zawsze szukaj pomocy w sobie.
edytowany 2x, ostatnio: Darth Bane
RE
  • Rejestracja:prawie 5 lat
  • Ostatnio:minuta
  • Postów:105
0
Darth Bane napisał(a):

Oczywiście ciesze się z waszych odpowiedzi, chociaż nie do końca mnie satysfakcjonują.

Dwaj portretów malarze słynęli przed laty:
Piotr dobry, a ubogi. Jan zły, a bogaty.
Piotr malował wybornie, a głód go uciskał,
Jan mato i źle robił, więcej jednak zyskał.
Dlaczegoż los tak różny mieli ci malarze?
Piotr malował podobne, Jan piękniejsze twarze.

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)