艣roda, 13 pa藕dziernika 2021

Dlaczego tak wa偶na jest nauka podstaw?

 Wyobra藕 sobie, 偶e po raz pierwszy uk艂adasz kostk臋 Rubika. Chaotycznie machasz ni膮 na lewo i prawo, przekr臋casz losowo 艣cianki. Z czasem udaje Ci si臋 u艂o偶y膰 jedn膮 stron臋, jednak gdy chcesz u艂o偶y膰 kolejn膮, rozwalasz t臋 pierwsz膮. Czujesz frustracj臋. Podobno tw贸rca kostki, Erno Rubik, u艂o偶y艂 j膮 po raz pierwszy dopiero po miesi膮cu.

Mo偶na zrobi膰 to lepiej – wpisujesz w sieci „metody na u艂o偶enie kostki Rubika”, wyskakuje Ci poradnik do metody LBL. Uczysz si臋 jeszcze jednej rzeczy – metody oznakowania poszczeg贸lnych 艣cian i po jakim艣 czasie udaje Ci si臋 u艂o偶y膰 kostk臋. Metoda jest na tyle prosta 偶e mo偶na si臋 j膮 szybko nauczy膰 na pami臋膰 i szokowa膰 innych tym, 偶e umiesz u艂o偶y膰 kostk臋 w mniej ni偶 minut臋. Gdyby nie nauka algorytm贸w, od艂o偶y艂by艣 kostk臋 na p贸艂k臋 i nigdy jej nie u艂o偶y艂.

Podobnie jest z programowaniem – znam wielu ludzi, kt贸rzy pr贸buj膮 programowa膰 przez permumation programming, metod膮 pr贸b i b艂臋d贸w. Dobrym przyk艂adem s膮 ludzie zajmuj膮cy si臋 backendem, kt贸rym kazano poprawi膰 co艣 w CSS i bardzo si臋 przez to m臋cz膮. Nie wiedz膮, dlaczego jedne style nadpisuj膮 drugie, nie umiej膮 te偶 sprawdzi膰 tego, jakie style s膮 nadane, a kt贸re nadpisywane.

Powstaje przez to okropny kod, kt贸ry jest jeszcze trudniej zmienia膰.

Przyk艂ady mo偶na mno偶y膰 – gdy nie wiemy, jak dzia艂a Excel, m臋czymy si臋 przy jego obs艂udze. Gdy s艂abo znamy nasz edytor tekstu, przeklinamy go. Gdy nie nauczymy si臋 asynchroniczno艣ci, b臋dziemy sfrustrowani tym 偶e kod wykonuje si臋 nie tak, jak si臋 spodziewamy. Je艣li nie zajrzymy do dokumentacji Bootstrapa, to layout zawsze b臋dzie si臋 nam rozje偶d偶a艂. Mo偶na pracowa膰 jaki艣 czas, po prostu kopiuj膮c rozwi膮zania ze Stacka, jednak takie podej艣cie szybko si臋 na nas zem艣ci.

Mo偶emy domy艣la膰 si臋 przez d艂ugi czas, dlaczego jakie艣 rozwi膮zanie dzia艂a, a inne nie i pr贸bowa膰 jak w starych przygod贸wkach, „wszystkiego na wszystkim”. Okazuje si臋 jednak, 偶e wystarczy wej艣膰 w dokumentacj臋 i tam jest napisane czarne na bia艂ym.

Druga sytuacja to ta, kiedy chc膮c pozyska膰 informacje na temat jednej technologii, otrzymujemy j膮 w formie drugiej, kt贸rej te偶 nie znamy. Czytamy o algorytmie, dostajemy wiedz臋 w formie r贸wna艅 matematycznych, kt贸rych tym bardziej nie rozumiemy. Chcemy pozna膰 znaczenie s艂owa po angielsku, ale mamy dost臋py tylko s艂ownik angielsko-angielski i nic nie rozumiemy z „wyt艂umaczonej” definicji. Programujemy i nie mo偶emy zrozumie膰 dokumentacji, bo jest napisano mocno technicznym j臋zykiem.

W jaki spos贸b unika膰 problem贸w kt贸re wymieni艂em powy偶ej? W prosty spos贸b – pracuj膮c nad podstawami, czytaj膮c dokumentacj臋 technologii w kt贸rych pracujemy i rozwijaj膮c og贸ln膮 wiedz臋 programistyczn膮.

Brak komentarzy:

Prze艣lij komentarz