niedziela, 11 czerwca 2023

Nauka i poszukiwanie wiedzy

Nauka, poznawanie jaki艣 nowych rzeczy, jest troch臋 jak obserwacja przyrody. Przyk艂adowo, gdybym zapyta艂 Ci臋 o wymienienie 10 gatunk贸w ptak贸w, pewnie wymieni艂by艣 te najbardziej znane. Bocian, orze艂, wr贸bel. Z odr贸偶nieniem gatunk贸w sikorek pewnie mia艂by艣 ju偶 problem. Mn贸stwo gatunk贸w jest podobnych i osoba kt贸ra nie interesuje si臋 ornitologi膮, kategoryzuje je po prostu jako jakie艣 mniejsze lub wi臋ksze ptaki. Je艣li nie znamy jakiego艣 tematu wcale, to nie potrafimy wyznaczy膰 linii pomi臋dzy obszarami, kt贸re zawiera. Cz臋sto nawet nie zauwa偶amy, 偶e otaczaj膮 nas jakie艣 sympatyczne ptaki.

Moim zdaniem podobnie jest z programowaniem. Je艣li dopiero zacz膮艂e艣 kodowa膰, jeste艣 przyt艂oczony ilo艣ci膮 temat贸w kt贸re nale偶y pozna膰. Nie wiesz co jest do czego, nie wiesz, po co porobiono jakie艣 frameworki, czemu aplikacja backend i frontend jest rozdzielona i pr贸bujesz pobiera膰 dane z bazy na froncie. Id膮c dalej w zakresie jednej technologii, mo偶esz nawet nie zdawa膰 sobie sprawy z tego, jakie informacje s膮 kluczowe. Dobrym przyk艂adem s膮 osoby, kt贸re ko艅cz膮 bootcampy i nie wiedza po nich, dlaczego tak wa偶ne s膮 typy danych. Nie zauwa偶aj膮 ich, podobnie jak osoba pocz膮tkuj膮ca kt贸ra wyjdzie na dw贸r i widzi "jakie艣 ptaki". Wszystko zlewa si臋 w ca艂o艣膰, informacji jest bardzo du偶o.

Wr贸膰my do ptak贸w. Postanowi艂e艣 sobie 偶e od dzisiaj b臋dziesz wymiataczem w rozpoznawaniu ptak贸w. W tym celu kupi艂e艣 sobie w popularnej ksi臋garni 5 atlas贸w ptak贸w. 

Po obejrzeniu jednego, Twoja wiedza ornitologiczna szybuje niebotycznie w g贸r臋. Ju偶 wiesz, 偶e br膮zowy ptak kt贸ry odwiedza ogr贸dek to kr臋tog艂贸w,  a sikorka ma kilka gatunk贸w. Dowiedzia艂e艣 si臋 te偶, 偶e ka偶de zwierze mo偶na przyporz膮dkowa膰 do rodziny, rodzaju i gatunku, poszerzy艂e艣 wi臋c wiedz臋 z zakresu taksonomii. Ta wiedza jest przydatna, poniewa偶 teraz widzisz jakie艣 ptaki s膮 ze sob膮 pokrewne. Pozna艂e艣 te偶 informacje na temat ptak贸w kt贸rych nigdy nie zobaczysz w Polsce. 

Teraz wr贸膰my do programowania. Przerobienie od A do Z jakiego艣 kursu, ksi膮偶ki czy serii nagra艅, znacznie zwi臋ksza Twoj膮 wiedz臋. Musisz po艣wi臋ci膰 troch臋 czasu na uporz膮dkowanie nowych informacji, by膰 mo偶e porobisz sobie fiszki / 膰wiczenia, aby wszystko "lepiej u艂o偶y艂o si臋 w g艂owie". Wielokrotnie powiesz sobie wielkie AHA, bo dowiesz si臋, dlaczego co艣 co chcia艂e艣 zrobi膰, nie mia艂o prawa dzia艂a膰. Gdy znasz podstawy, programowanie jest znacznie 艂atwiejsze. Wiem 偶e lec臋 tutaj bana艂ami, ale wiele os贸b nigdy nie si膮dzie do nauki podstaw i zawsze b臋dzie mia艂o problemy z nauk膮.

Jak pisa艂em, kupi艂e艣 5 "casualowych" atlas贸w ornitologicznych. Teraz pojawia si臋 problem, poniewa偶 po przeczytaniu 2 pierwszych, przeczytanie 3 dostarcza Ci bardzo ma艂o nowych informacji. Wchodzisz w faz臋 plateau, krzywa uczenia si臋 przestaje i艣膰 w g贸r臋. Wychodz膮c na dw贸r poznajesz ka偶dego ptaka "od r臋ki", ornitologia wydaje si臋 by膰 mniej ciekawa, poniewa偶 ile razy mo偶na ogl膮da膰 to samo.
Czujesz niepok贸j, bo wydaje Ci si臋, 偶e 艣wiat powinien by膰 ciekawszy. Tak na marginesie, czy wiedzia艂e艣 偶e w Polsce w latach 80. gniazdowa艂o tylko 10 - 30 par 偶o艂ny? Z czego jedno stanowisko by艂o jaki艣 kilometr od mojego domu przy wschodniej granicy?

Podobnie jest je艣li uczysz si臋 jakiego艣 frameworka. Na pocz膮tku musisz pozna膰 bardzo du偶o informacji, potem gdy nauczysz si臋 robi膰 podstawowe rzeczy, mo偶esz odczuwa膰 znudzenie. Je艣li uczysz si臋 JS i si臋gasz po kolejn膮 ksi膮偶k臋, najprawdopodobniej b臋dziesz zna艂 ju偶 90% informacji, 5% nowych informacji b臋dzie nieu偶yteczne (bo na przyk艂ad nie potrzebujesz programowania na Canvas), a 5% b臋dzie u偶yteczne. Kupowanie 5 s艂abych ksi膮偶ek do nauki jedynie Ci臋 sfrustruje, bo b臋d膮 powiela艂y ci膮gle te same informacje. O wiele lepiej jest kupi膰 jedn膮 bardzo dobr膮 ksi膮偶k臋, kt贸ra mo偶e na pocz膮tku wyda Ci si臋 zbyt skomplikowana, ale z czasem po kt贸rej艣 lekturze w pe艂ni j膮 zrozumiesz. 

W jaki spos贸b wyj艣膰 z tego impasu?

Musisz zda膰 sobie spraw臋 z tego, 偶e istniej膮 informacje kt贸re u艂atwi膮 Ci prac臋 i s膮 w Twoim zasi臋gu, a do kt贸rych dotarcie mo偶e by膰 trudne je艣li nie jeste艣 dociekliwy. Najtrudniej jest zobaczy膰 to, co mamy pod r臋k膮.

Przyk艂adowo, testowanie GUI jest trudne, ale je艣li bardzo dobrze przyjrzysz si臋 obecnym narz臋dziom, u艂atwisz je sobie. Kiedy艣 testuj膮c Angulara mia艂em ju偶 do艣膰 skomplikowanych metod z Jest i przypadkiem natrafi艂em na temat Harnesses. Pozwalaj膮 one na znacznie 艂atwiejsze u偶ywanie kontrolek. Nie trafi艂em na to w 偶adnym tutorialu i nikt tego nie u偶ywa艂 w 偶adnym projekcie w kt贸rym by艂em. Jak je znalaz艂em? Okaza艂o si臋 偶e s膮 one opisane w dokumentacji ka偶dego elementu w Angular Material, wystarczy艂o wykaza膰 zainteresowanie. Je艣li czujesz, 偶e co艣 co robisz jest trudne i powtarzalne, prawdopodobnie kto艣 ju偶 rozwi膮za艂 ten problem.

Po drugie, wielu rzeczy nauczysz si臋 po prostu czytaj膮c bie偶膮ce artyku艂y / ogl膮daj膮c nagrania wideo dobrych tw贸rc贸w. Nigdy nie pomijaj nowych informacji / propozycji od koleg贸w z teamu - mo偶esz w nich znale藕膰 prawdziwe z艂oto.

Po trzecie, warto uczy膰 si臋 te偶 wszystkiego dooko艂a naszego g艂贸wnego tematu, buduj膮c ekspertyz臋 w kszta艂cie litery T. Niekt贸re tematy s膮 trudne do zrozumienia jedynie w kontek艣cie Twojej g艂贸wnej technologii, natomiast w innych j臋zykach mog膮 by膰 艂atwiejsze.

Pasowa艂o by znowu nawi膮za膰 do ornitologii. Je艣li chcesz wype艂ni膰 sw贸j domowy zeszyt obserwacji ptak贸w wszystkimi ptakami Polski, musisz po艣wi臋ci膰 czas i pieni膮dze. Warto zainwestowa膰 w najlepszy sprz臋t, kontaktowa膰 si臋 z fachowcami i pr贸bowa膰 nowych rzeczy. Poszerzysz swoj膮 wiedz臋 nie tylko o ptakach, ale o ca艂ej przyrodzie. B臋dziesz prowadzi艂 dyskusje z innymi pasjonatami, publikowa艂 swoje wyniki bada艅 i zdj臋cia. 

Z czasem posi膮dziesz informacje kt贸re nie s膮 dost臋pne amatorom,staniesz si臋 warto艣ciowym cz艂onkiem spo艂eczno艣ci i b臋dziesz wspiera艂 przyrod臋. Koniec ko艅c贸w zostaniesz ekspertem z ornitologii ... na chwil臋, poniewa偶 przyroda ci膮gle si臋 zmienia. 

Na drodze do bieg艂o艣ci w ka偶dej dziedzinie stoi kilka przeszk贸d. Je艣li uznamy 偶e jeste艣my ju偶 super wymiataczami i przestaniemy si臋 uczy膰, nasz poziom bieg艂o艣ci b臋dzie spada艂. Mo偶emy te偶 nie wiedzie膰 偶e robimy co艣 ca艂y czas 藕le. Kolega z teamu kiedy艣 powiedzia艂 偶e przez godzin臋 pair programmingu ze mn膮 nauczy艂 si臋 tyle, co w czasie ca艂ego roku programowania samodzielnie. Cytuj膮c klasyka, musisz zna膰 swoje wsp贸艂czynniki, musisz si臋 por贸wna膰. By膰 mo偶e jeste艣 mega s艂aby, tylko wydaje ci si臋, 偶e jeste艣 dobry. W jednym projekcie mo偶esz by膰 wymiataczem, w drugim, 艣redniakiem.

Mo偶emy te偶 zb艂膮dzi膰 w 艣lepe zau艂ki, na przyk艂ad ucz膮c si臋 technologii kt贸re szybko odejd膮 w zapomnienie. M贸j znajomy zawsze powtarza艂, 偶e na koniec dnia i tak programujemy w JS. 

Niekt贸re tematy mog膮 wydawa膰 si臋 kusz膮ce, ale nie przybli偶aj膮 nas do sukcesu w 偶aden spos贸b. Wyobra藕 sobie, 偶e wk艂adasz 100% czasu w nauk臋 HTML Canvas, ale nie planujesz w nim robi膰 偶adnych projekt贸w. W pracy raczej jest tak, 偶e na Canvas robimy co艣 raz na kilka miesi臋cy lub rzadziej. Je艣li znasz dobrze JS, prawdopodobnie zakodowanie co艣 w do艣膰 niestandardowej technologii nie b臋dzie trudne. Podobnie jest np. z integracjami wykres贸w, wyra偶eniami regularnymi czy prac膮 z mapkami Google. Mo偶na si臋 tego nauczy膰 just in time.

Zmiany w programowaniu zachodz膮 znacznie szybciej ni偶 w przyrodzie, ale zasady bycia ekspertem s膮 te same. Wa偶ne jest by:

  1. Poznawa膰 i wg艂臋bia膰 si臋 w podstawy
  2. By膰 na bie偶膮co ze zmianami w technologii
  3. Pozyskiwa膰 wiedz臋 na oko艂o naszej technologii, pr贸bowa膰 nowych rzeczy
  4. Stosowaniem u艂atwie艅 dostarczanych przez rozw贸j technologii

1 komentarz: