Jak utrwalać wiedzę i efektywnie przygotowywać się do rekrutacji

0

cześć,

Kilka lat temu zacząłem przygotowania do FAANGa, czytam sporo książek, blogów i oglądam na temat systemów rozporoszonych, algorytmów (+leetcode), wielowątkowości itp. itd., ale bardzo szybko upłynnia mi się ta widza.
Plus jest taki, że moja obecna praca pozwala mi poświęcać sporo czasu na douczanie się, ale wydaje mi się, że robię to nieefektywnie (myślę, że tygodniowo spędzam min. 10-20h na doszkalanie się).

Dla przykładu, tydzień temu znalazłem ofertę pracy w Revolucie, zauważyłem że wymagają wiedzy z wielowątkowości i baz danych. I mimo, że z rok (może dwa lata) temu czytałem Java Concurrency Goetza czy Designing Data-Intensive Applications Kleppmanna (i pewnie z kilkanaście innych książek, których wylistowanie już pomijam) to dużo nie pamiętam, nawet zapomniałem jak dokładnie działa ISR w Kafce.

Może wy macie jakieś sprytne sposoby na przygotowywanie się do rekrutacji czy utrwalania wiedzy - bo mam wrażenie, że albo dochodzę do jakiś limitów pojemności mojej pamięci albo robię to po prostu źle.

5

Jedynie aktywna praca z czymś zapewnia utrwalenie wiedzy. Ważne jest, aby używać tego,co się przeczyta.

3

Nie należy bać się zapominania. Ludzie nie czytają książek, żeby pamiętać, co było na której stronie (chyba że ktoś coś wykuwa na pamięć). Jak coś czytasz, to normalne, że po roku większość zapomnisz.

Natomiast ta sama cecha również pomaga pamiętać, bo skoro większość zapomnisz, to znaczy, że masz do pamiętania tylko mały wycinek. Więc masz łatwiej.

Rozumiesz, do czego dążę? Mam wrażenie, że zabrakło u ciebie pewnej selekcji informacji ważnych od tych, które są nieistotnymi szczegółami. Nie da się pamiętać wszystkiego.

A to, co faktycznie uważasz za na tyle ważne, że chcesz pamiętać po roku:

  • możesz zacząć tego używać w praktyce i sobie mocniej utrwalić
  • Możesz o tym napisać posta na bloga, notatki itp. (Raz że poćwiczysz internalizację wiedzy, dwa że za rok będziesz mógł sięgnąć do własnych notatek)
  • Możesz wreszcie wejść w konkretne tematy mocniej teoretycznie, nie ograniczać się do jednego źródla wiedzy, zrobić porządny research na temat konkretnej rzeczy

Poza tym lepiej traktować wiedzę informatyczną nie jako zbiór faktów, tylko jak pewien model rzeczywistości i wyobrażać sobie to jako system połączonych części, które na siebie oddziałują. Wtedy łatwiej będzie zapamiętać jak coś działa. Możesz nawet rysunki porobić

0

Trzeba używać wiedzy w praktyce, żeby się utrwaliła. Nie ma innej opcji. To, że nie używa się tego wszystkiego w pracy a potem wymagają na rekrutacjach to jest common problem w tej branży.

7

Ja jestem stary dziad, więc zrobiłem sobie Second Brain w notion. Ciągle coś zapominałem, sterta artykułów/blogów/filmików rosła. W czasie wolnym, pomału, porobiłem sobie notatki. Teraz jeśli czytam sobie jakiegoś bloga, słucham na YT jakiejś konferencji, robię sobie z tego notatki od razu i wrzucam do SB. Wiele razy w czasie developmentu, szukania rozwiązania, miałem już gotową odpowiedz. Minus taki, że jednak trzeba na początku spędzić trochę czasu i nauczyć się nawyku. Teraz pamięć mięśniową mi się odpala i nawet podczas spotkania z klientem od razu robię notstki, co jest super przydatne, bo po spotkaniu od razu mogę wysłać podsumowanie. Ogólnie dostaje pozytywy feedback jeśli o to chodzi.

Jeśli chodzi o samo programowanie, to jeśli czytam o nowej bazie, framework, czy libce, to potem sobie robię projekt z wykorzystaniem tego. Sprawdzam features, itd.

Ogólnie jak kiedyś policzyłem, to wychodzi +-10h tygodniowo na to moje czytanie, pisanie i zabawę z nowymi narzędziami. Natomiast dzięki temu, że to już mam +umiejętność notowania, oszczędza 25-30h tygodniowo i to luźno.

0
bartekk_ napisał(a):

Może wy macie jakieś sprytne sposoby na przygotowywanie się do rekrutacji czy utrwalania wiedzy - bo mam wrażenie, że albo dochodzę do jakiś limitów pojemności mojej pamięci albo robię to po prostu źle.

Pijesz kawę przed pracą? To może przed rekrutacją też powinieneś użyć czegoś wzmacniającego?

0

Uczyć się czegoś, by potem przypadkiem użyć jest raczej słabe.

Lepiej jest zacząć coś konkretnego robić, pogodzić się, że to co robisz nie będzie perfekcyjne i w przypadku, gdy wyjdzie blokujący problem musisz umieć się zatrzymać. Pozwolić sobie na przerwę, by rozpoznać problem i uzupełnić wiedzę, inaczej będziesz się stresował i totalny szajs produkował.

1

Same czytanie nic nie daje przerabiałem to.
Czytanie to najbardziej prymitywna, pasywna forma uczenia się, człowiek jest tak leniwy, że nie chce mu się pisać kodu, to tylko udaje, że się uczy czytając.

Najpierw to budujesz coś co cię interesuje i jak to zrobisz to potem jak czytasz na ten temat książkę to w introspekcji masz odniesienia do swojego kodu i podczas czytania odnosisz się do swojej wiedzy i problemów jakie napotkałeś podczas pisania i teraz widzisz co najwyżej alternatywne sposoby zrobienia tego samego i czasem może nawet lepiej.
Wpadasz na pomysły podczas czytania i piszesz kod testowy lub modyfikujesz coś według tego.

Jeśli nic wcześniej nie pisałeś i tylko czytasz to to nie masz żadnego odniesienia do tematu, mało się trzyma kupy i to tak tylko się wydaje, że coś rozumiesz.

2

Mam to samo, chyba jak większość. Dlatego przeszedłem z modelu gromadzenia wiedzy na rzecz jej używania. Mam w głowie wielki projekt którego na pewno nie zrealizuję w tym życiu ale użyję w nim większości rzeczy o których się uczyłem. Jednym ogromnym plusem gromadzenia wiedzy i jej zapominania jest fakt że pointer do niej pozostaje w głowie w sensie: wiem, że coś jest do zrobienia, i wiem gdzie szukać aby wiedzieć jak. A powtórki zawsze szybciej wchodzą. poza tym jak się czegoś nie wie bo nie czytało, a na chama potrzebuje rozwiązania to w moim przypadku subskrypcja np. pluralsight pomaga. Na zniechęcenie polecam lions mane - taki grzybek.

1

Nie wiem czy się da inaczej niż przez pracę
Jest coś co ci wchodzi?

Np mi wchodzą bazy danych, szybko łapie, długo pamiętam
Algo to odwrotność, erozja błyskawiczna, utrzymanie wiedzy kosztuje majątek (o czas chodzi)

0

Ja też szybko zapominam. Mam kupę repo z notatkami i snippetami na temat różnych rzeczy, które rozgryzałem - lepsze to niż nic (zdecydowanie), ale jeśli coś ma zostać w głowie, to trzeba użyć tego choć raz w jakimś praktycznym zastosowaniu. Mnie co jakiś czas wpada do głowy jakiś taki mini projekcik, notuję to sobie i gdy przyjdzie właściwy moment, to go realizuję z użyciem - często "na siłę" - technologii którą się akurat bawię. Np. stosuję MongoDB, choć całkowicie wystarczyłoby SQLite :)

Tak czy siak to wszystko zabiera czas i prawdę mówiąc im jestem starszy, tym mniej widzę w tym sens. Niestety na rekrutacjach często oczekują obycia z technologiami w tak szerokim spektrum i na takim poziomie, że 95% ludzi nie ma szans tego opanować. Większość z nas pracuje w zwyczajnej robocie, gdzie nie eksperymentuje z codziennie nowymi ciekawymi technologiami, tylko pół dnia dyskutuje z biznesem i kolegami, żeby na koniec zmienić kilka linijek kodu. Irytuje mnie to bardzo, bo widzę, że ja na przykład (pracuję ze 20 lat już) szybko poznaję nowe rzeczy - daj mi X dni, a będę w wystarczający sposób operował jakąś technologią. Natomiast nie mam już ochoty uczyć się tych technologii na zapas, tym bardziej gdy mam życie poza pracą, z którego korzystanie coraz bardziej doceniam.

0
abuwiktor napisał(a):

Ja też szybko zapominam. Mam kupę repo z notatkami i snippetami na temat różnych rzeczy, które rozgryzałem - lepsze to niż nic (zdecydowanie), ale jeśli coś ma zostać w głowie, to trzeba użyć tego choć raz w jakimś praktycznym zastosowaniu. Mnie co jakiś czas wpada do głowy jakiś taki mini projekcik, notuję to sobie i gdy przyjdzie właściwy moment, to go realizuję z użyciem - często "na siłę" - technologii którą się akurat bawię. Np. stosuję MongoDB, choć całkowicie wystarczyłoby SQLite :)

Tak czy siak to wszystko zabiera czas i prawdę mówiąc im jestem starszy, tym mniej widzę w tym sens. Niestety na rekrutacjach często oczekują obycia z technologiami w tak szerokim spektrum i na takim poziomie, że 95% ludzi nie ma szans tego opanować. Większość z nas pracuje w zwyczajnej robocie, gdzie nie eksperymentuje z codziennie nowymi ciekawymi technologiami, tylko pół dnia dyskutuje z biznesem i kolegami, żeby na koniec zmienić kilka linijek kodu. Irytuje mnie to bardzo, bo widzę, że ja na przykład (pracuję ze 20 lat już) szybko poznaję nowe rzeczy - daj mi X dni, a będę w wystarczający sposób operował jakąś technologią. Natomiast nie mam już ochoty uczyć się tych technologii na zapas, tym bardziej gdy mam życie poza pracą, z którego korzystanie coraz bardziej doceniam.

to prawda
znikąd memy tech interview vs actual job się nie wzięły
To jak z nauką języka
uczenie się języka bo tak nic nie da, szybko się zapomni, nie będzie się chciało sięgać głębiej
uczenie się języka, dla pieniędzy, żeby książkę przeczytać, film obejrzeć, gazety czytać - obojętnie co - daje nieporównywalnie lepsze efekty

co do technologii - to uczenie się jej teoretycznie jest jak uczenie się książki kucharskiej na pamięć i liczenie że się załapiesz na szefa kuchni
no nie tędy droga

w życiu trzeba po prostu mieć szczęście, prawda jest taka, że większość pracy, obojętnie od profesji, to rutyna, ciekawe rzeczy może zrobić niewielu, sam nie wiem jak zajebistą, rozwojową pracę zdobyć, bo każda po czasie wchodziła w rutynę.

1

Ja powiem taką anegdotę, mnie kiedyś raz zbanowali na jakimś forum i następnego dnia miałem już zbudowaną całą infrastrukturę.

Zrobiłem sobie cały cluster, który miał różne maszyny wirtualne na całym świecie + różne pody z clientami vpn i każdy udostępniał proxy porty, a potem round robinem każde zapytanie schedulowałem pomiędzy tymi wszystkimi replikiami usług.

I tak po prostu banując mnie, ktoś mnie zmusił do zbudowania całego systemu.
Powiem wam, że to działa zajebiście, czy to w cloud na nieswoich maszynach, czy to na jednoosobowym komputerze, sobie zrobisz 5 kontenerów lub jeden, każdy pod innego providera vpn podpięty, wypinający proxy + load balancer, co każde zapytanie rzuca w inny kontener i masz polimorfizm ip, każde zapytanie z innego adresu ip robisz.

Najlepiej rozwiązywać problemy.

2

Odnosząc się do komentarza @ccwrc Rozwiń go, daj linki, przykłady. Jak będziesz miał czas.
Źródła, z których korzystałem by zdobyć "wiedzę":

  1. https://www.buildingasecondbrain.com/book
  2. https://www.amazon.pl/Deep-Work-Focused-Success-Distracted/dp/1455586692
  3. https://www.amazon.com/Atomic-Habits-Proven-Build-Break/dp/0735211299
  4. - ogólnie polecam cały kanał tej Pani, książki wyżej poznałem dzięki niej,
  5. https://www.notion.so/blog - jest kilka zakładek, blog, community, wiki - gdzie można szukać inspiracji i pomocy w tworzeniu swojego "drugiego mózgu",
  6. https://obsidian.md/ - alternatywa dla notion, nie ma takiej możliwości "customowania" jak Notion, ale czasami to zaleta :P,
  7. - używając notion można wsiąknąć na długie miesiące budując swoje wymarzone miejsce, nie wymyślam koła na nowo i korzystam z gotowców jak np. ten.

Te trzy pierwsze książki pozwoliły mi na stworzenie planu i dały "narzędzia" jak chce organizować swój dzień, tydzień, miesiąc, itd. Zaznaczę tylko, że wszyscy jesteśmy inni. Na mnie działa rutyna i wojskowy dryl. Jeśli mam zaplanowany dzień co do godziny, to wiem, że na 99% będzie wszystko wykonane i nie skończę na prokrastynacji. Wiem, że nie każdy może sobie na to pozwolić, ale jest wiele różnych podejść, trzeba tylko wybrać najlepsze, które do nas pasuje.

Jeśli chodzi o czas i to jak staram się go oszczędzać:

  1. Ćwiczenia na siłowni, zakupy, sprzątanie, inne aktywności, które nie wymagają ode mnie dużego skupienia wykorzystuję by słuchać podcastów/książek,
  2. Jeśli usłyszę coś ciekawego, "udostępniam" sobie "minutę" z danego filmu, by w czasie do tego przeznaczonym, łatwo mogłem namierzyć dany fragment i zrobić notatkę,
  3. Nie boję się odwoływać spotkań i pisać maili. Jak jeszcze pracowałem w korpo, to "zmusiłem" cały team by zrezygnować z części meetingów, które nie miały sensu, bo tylko "traciliśmy" czas na gadanie. O ile manager był wdzięczny, to koledzy nie bardzo, więc nie wiem czy polecać tą metodę :P. Można natomiast podczas takich spotkań robić coś innego, dzięki czemu "oszczędzimy" czas,
  4. Od małego nauczyć dzieciaki i żonę (tylko jeśli pracujemy z domu), że jak tata siedzi w danym pokoju/przy danym biurku/ma włączoną lampkę/jakikolwiek inny sygnał, "nie ma go" i nie przeszkadzamy, długi i żmudny proces, ale opłacalny,
  5. Nagrywanie siebie, używam dyktafonu w telefonie + Transkriptor (szukam jakiejś lepszej alternatywy. Po testach, jeśli coś znajdę, postaram się zrobić update) by zamienić w tekst nagranie. Oszczędza to sporo czasu.

Notatki:

  • Jeśli dotyczą filmiku, dodaję "udostępniony" czas i krótkie streszczenie,
  • Jeśli jakiegoś fragmentu książki, tworzę wpis na zasadzie bibliografii + krótką parafrazę,
  • Notion, ale inne narzędzia jak np, obsidian, pozwalają na "linkowanie" wpisów między sobą, dzięki temu łatwo jest szukać danych tematów, przykład: mam wpisy o poleceniu SHOW dla baz danych, to co dzięki niemu (poleceniu) osiągniemy, różni się między silnikami. Notion pozwala mi bym szukając po frazie SHOW mógł znaleźć wszystkie te wpisy, ale wchodząc bezpośrednio w zakładkę np. PostgreSQL też znajdę ten wpis, można sobie też wygenerować graf z zależnościami, jeśli ktoś lubi się bawić w takie rzeczy. Jest to bardzo przydatne by szybko zrobić np. powtórkę materiału.

EDIT.
https://mrugalski.notion.site/MIKR-US-Don-t-Panic-5c3bdde2e0b545e7866524fc117446c3 - przykład jak można wykorzystać "drugi mózg". Na moim jest za dużo prywaty bym udostępnił :P

Na szybko to chyba tyle, @ccwrc nie wiem czy o coś takiego Ci chodziło?

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