Rozwiązywanie problemów – jak zmierzyć się z trudnymi zadaniami?
Niezależnie czy jesteś juniorem, czy seniorem, a może dopiero zaczęłaś swoją przygodę z programowaniem, to przyjdzie taki dzień, w którym zetkniesz się z problemem i nie będziesz wiedziała, jak się za niego zabrać. I jest to całkowicie normalne! Praca programistyczna często wiąże się z robieniem czegoś po raz pierwszy. Ważne jest to, żeby trudność danego zadania nie przytłoczyła Cię na tyle, żeby odkładać je w nieskończoność lub żeby uciec od niego jak najdalej, najlepiej w Bieszczady 😀 . Rozwiązywanie problemów jest znaczącą częścią tej pracy, dlatego też przedstawię Ci teraz parę sposobów, jak można się z nimi uporać, lecimy! Zdefiniuj co masz zrobić Ogółem sporo problemów wynika z niezrozumienia zadania lub jego celu 😀 . Nie da się zrobić zadania, jeśli go nie zrozumiesz. Najlepiej odpowiedzieć sobie na kilka pytań: co jest od Ciebie wymagane, jaki ma być rezultat, jak ma to działać? Dzięki temu, jeśli wymaga się od Ciebie dostarczenia X rozwiązania, to będziesz pewna, że właśnie to robisz. Jeśli opis jest dla Ciebie niejasny, to najlepiej to omówić, niż zaczynać i robić po swojemu. Efekt końcowy w takim przypadku może być zupełnie inny niż oczekiwany. Rozbicie na mniejsze zadania Tak jak w życiu, tak i w developmencie najpewniej jest to najważniejsza czynność. Jeśli postanowisz sobie – nauczę się frontendu, musisz zdefiniować sobie składowe i krok po kroku je realizować. Mogłabyś np. to podzielić na HTML, CSS i JavaScript, ale to wciąż duże cele! Bo co to oznacza nauczyć się JavaScriptu? Muszą to być rzeczy konkretne, mierzalne. Inaczej może Cię doprowadzić do frustracji, ponieważ zupełnie nie będziesz widziała postępu prac. To samo tyczy się zadań. Niektóre są tak sformułowane, że spokojnie mogą zająć tydzień. I może więcej kodu będzie napisane, ale czy będziesz w stanie stwierdzić, w którym punkcie zadania jesteś? Bliżej, czy dalej końca? Podział na mniejsze zadania, oprócz widocznego postępu prac, ma jeszcze jedną ważną zaletę – motywuje! Jeśli w danym dniu założysz, że zrobisz rzeczy: A, B i C, a na koniec dnia będą one zrobione, to dostaniesz zastrzyk energii i chęci na kolejny dzień. Są również inne podejścia do wykonywanych podzadań. Niektórzy wolą skończyć wszystko co mieli zaplanowane na dany dzień. Inni preferują zostawić końcówkę zadania rozkopaną. Tak, by siadając do niego dnia następnego, móc już na samym początku dnia odhaczyć sobie coś jako zrobione. I później już na pełnych obrotach siadać do kolejnych zadań. To jak Ty wolisz pracować, to zależy tylko od Ciebie 😉 Kartka to Twój sprzymierzeniec Często deprecjonuje się użyteczność kartki i długopisu, a niepotrzebnie! Problemy warto sobie rozpisywać. Wtedy będziesz miała ogląd, co się dzieje po kolei lub czego jeszcze nie ujęłaś w rozwiązaniu. Być może warto stworzyć jakiś pseudokod, czyli luźny zapis, który ma emitować kod, mający za zadanie opisywać działanie danej funkcji. Kartka może też się przydać w przypadku, kiedy podczas rozwiązywania jednego problemu zauważyliśmy inny lub go sami wygenerowaliśmy. Wtedy, oczywiście w zależności od wagi tego problemu, warto go sobie zapisać i wrócić do niego w późniejszym momencie. Dzięki temu jesteśmy skupieni tylko na danym problemie, nad którym pracujemy i nie rozpraszamy się niczym innym. Prototypowanie W wielu procesach etap prototypowania jest podstawą. Dzięki temu, zanim wypuścimy dany produkt, oprogramowanie, jesteśmy w stanie sprawdzić, czy dane rozwiązanie działa. W przypadku zadania może to być w formie wspomnianego pseudokodu, bądź faktycznego kodu, który będzie operował na uproszczonych danych, testowych zmiennych itd. Nie musi być on ani ładny, ani optymalny itd.. Jedyne co ma zrobić, to zweryfikować działanie. Jeśli okaże się, że jest okej, wtedy można przystąpić do jego ulepszenia. Jeśli nie, przynajmniej nie straciliśmy więcej czasu na wdrażanie jego i możemy zabrać się za znalezienie innego rozwiązania. via GIPHY Sposób na kaczkę Mowa tu oczywiście o gumowych kaczuszkach, które często mogą być podstawowym wyposażeniem programisty. Gumowe kaczki, o ile nie mogą się pochwalić umiejętnościami programistycznymi, to są świetnymi słuchaczami. Może dla niektórych to fun fact, ale jest to faktyczna metoda nazwana “rubber duck debugging”, która pierwszy raz została opisana w 1999 i sprawdza się do teraz. Chodzi o to, by zwerbalizować swój problem. Powiedzieć po kolei, co Twój kod robi. Dzięki tłumaczeniu tego na głos, jesteś w stanie wychwycić jakiś błąd w kodzie, którego wcześniej nie zauważyłaś, kiedy jedynie na niego patrzyłaś. W praktyce, często jest też tak, że tłumacząc komuś swój problem, nagle zapala się ta lampka nad głową i wiesz co poszło nie tak. Jeśli nie masz więc nikogo pod ręką lub nie chcesz nikomu zabierać czasu, to gumowa kaczka będzie wtedy niezastąpionym kompanem. via imgur Nie bój się pytać To à propos mówienia do kogoś o swoim problemie. Często utykając w kodzie, możemy tam utknąć na wieki. W takim przypadku najlepiej poradzić się innej osoby. Nie jest niczym złym, powiedzieć, że się utknęło. Ba! powiedziałabym, że nawet jest to dobre. Każda osoba mi inne kompetencje, wiedzę i myślenie. Jeśli wiesz do kogo się zwrócić, może okazać się, że w parę chwil przedstawi Ci pomysł albo nawet całe rozwiązanie. Jest to podyktowane tym, że ktoś zwyczajnie mógł się z tym zetknąć wcześniej i dzięki temu będzie mógł Ci pomóc. Dodatkowo spora część programistów po prostu lubi, to co robi i na pewno znajdzie się ktoś chętny do poszukiwania rozwiązania razem. Odejście od problemu Prawdą jest, że im dłużej na jakiś problem się patrzy, tym gorzej, a już tym bardziej pod koniec pracy 😛 . Kiedy już kończą się pomysły lub twierdzisz, że Twój kod powinien działać, a oczywiście nie działa, to właśnie dobry moment na odejście z dala od kłopotów. Umysł zwyczajnie może się przeciążyć, wtedy lepiej pooglądać sobie np. kotki czy inne głupotki, pójść pobiegać, pójść na spacer, zrobić cokolwiek innego co nie jest związane z programowaniem, czy nawet myśleniem 😀 . Powrót do problemu ze świeżym umysłem, po odpoczynku, da Ci nowe spojrzenie, może też i nowe koncepcje 🙂 . Podsumowanie Przedstawione rozwiązania, to sposoby, które praktykuje się na co dzień w pracy. Również takie, które sama używam 😉 . Wydaje mi się, że ujęłam większość z nich. Czy słyszałaś o nich wszystkich? A może jest taki, który Ty stosujesz i chcesz się nim podzielić? Pamiętaj także, że może być i tak, że zadanie nas przerośnie. Warto zdawać sobie sprawę ze swoich ograniczeń czy braku jakiejś wiedzy, ponieważ nikt nie jest alfą i omegą.
Artykuł Rozwiązywanie problemów – jak zmierzyć się z trudnymi zadaniami? pochodzi z serwisu Frontowisko.
Chcesz więcej? Sprawdź w oryginale!
Przejdź do artykułu