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