sobota, 2 wrze艣nia 2023

Rozwi膮zywanie problem贸w u sedna

Kiedy艣 jako dziecko spotka艂em si臋 z nast臋puj膮cym problemem. Mia艂em akwarium, w kt贸rymi zacz臋艂a rosn膮膰 ro艣lina o nazwie wg艂臋bka. To taki zielony mech, kt贸ry szybko si臋 rozrasta i p艂ywa po powierzchni. W ma艂ych ilo艣ciach nie szkodzi, natomiast w wi臋kszych powodowa艂a problemy. Jej nadmiar wpada艂 do filtra, a dzia艂o si臋 tak szczeg贸lnie wtedy, gdy przep艂yw wody by艂 du偶y. Z tego powodu kupi艂em deszczownic臋, urz膮dzenie do rozpraszania strumienia wody z filtra. Do艂o偶y艂em te偶 zabezpieczenie na filtrze, aby chroni膰 go przed zapychaniem. Wg艂臋bka nadal ros艂a, a ja szuka艂em nowych sposob贸w na zmniejszenie jej wp艂ywu na akwarium. W pewnym momencie woda w akwarium zacz臋艂a si臋 psu膰, poniewa偶 wg艂臋bka gni艂a. Wymienia艂em wtedy wod臋, czy艣ci艂em szyby i robi艂em inne rzeczy.


Kt贸rego艣 dnia m贸j wujek - do艣wiadczony akwarysta zobaczy艂, 偶e rozwi膮zywanie problemu z wg艂臋bk膮 nie sensu - po prostu wzi膮艂 sitko i wywali艂 wszystko, co uda艂o mu si臋 z艂apa膰. Mo偶na by艂o pozby膰 si臋 wszystkich poprzednich obej艣膰 problemu. Takie dzia艂anie by艂o bardzo m膮dre, ale wymaga艂o g艂臋bokiej wiedzy o tym, jak prowadzi si臋 akwarium.

Analogi臋 do tego zdarzenia widz臋 te偶 w programowaniu. Powiedzmy, 偶e chcesz zrobi膰 animacj臋 obrotu Ziemi wok贸艂 S艂o艅ca. Zamiast zapozna膰 si臋 z problemem i zrobi膰 animacj臋 jednego obiektu po 艣cie偶ce ko艂a, to przemieszczasz go w r贸偶ne miejsca o okre艣lon膮 ilo艣膰 pikseli. Gdy kto艣 powi臋kszy obraz, to rozwi膮zanie przestaje dzia艂a膰. Mimo tego, wydaje Ci si臋 偶e Twoje rozwi膮zanie jest niez艂e w wi臋kszo艣ci przypadk贸w. 

Cz臋stym problemem w projektach programistycznych jest zaokr膮glanie warto艣ci. W dw贸ch projektach spotka艂em si臋 z tym, 偶e dane monetarne wyrzucane przez aplikacj臋 by艂y 藕le zaokr膮glane. Testerzy to zg艂aszali, programi艣ci dodawali kolejny quick fix, b艂臋dy pojawia艂y si臋 w innych miejscach. Problem le偶y w tym, 偶e warto艣ci monetarnych nie mo偶na traktowa膰 jako float贸w, to po prostu nie dzia艂a.

Na daily powiesz, 偶e jeste艣 o krok od rozwi膮zania problemu. Przecie偶 po艣wi臋ci艂e艣 ju偶 na nie tyle czasu, traktujesz je osobi艣cie.

W rzeczywisto艣ci rozwi膮zanie pewnie musi by膰 ca艂kiem zmienione, poniewa偶 nie pozna艂e艣 problemu. Podobnie jest gdy programujesz bez zrozumienia struktury danej i logiki biznesowej.

Jeszcze gorzej jest gdy rozwi膮zujesz problem kt贸ry zosta艂 ju偶 wielokrotnie rozwi膮zany. Wydaje mi si臋, 偶e wi臋kszo艣膰 problem贸w os贸b, kt贸re dopiero zaczynaj膮 programowa膰, wynika z braku zrozumienia problem贸w oraz rozwi膮zywania ich powierzchownie. Osoba bardziej do艣wiadczona rzuci okiem na problem, znajdzie podobny w zbiorze tych, kt贸re ju偶 widzia艂a i przedstawi kilka gotowych rozwi膮za艅. W jaki spos贸b zrobi膰 taki katalog rozwi膮za艅 z kt贸rymi si臋 ju偶 spotkali艣my? Moim zdaniem, nale偶y zag艂臋bia膰 si臋 w to co robimy, a ewentualne problemy i b艂臋dy, spisywa膰 na przestrzeni kariery. 

Rozwi膮zaniem mo偶e by膰 te偶 zastosowanie filozofii Kaizen, czyli zadawanie wi臋kszej ilo艣ci pyta艅, z pr贸b膮 dotarcia do g艂贸wnych przyczyn.

Pozdrawiam - Kamil Naja

Brak komentarzy:

Prze艣lij komentarz