Programowanie i WWW

Proste rozwiązania

Proste rozwiązania stają się oczywiste w chwili gdy je zobaczymy. Dlaczego zwykle są poza naszym zasięgiem i co możemy z tym zrobić? Jak zobaczyć…

Proste rozwiązania stają się oczywiste w chwili gdy je zobaczymy. Dlaczego zwykle są poza naszym zasięgiem i co możemy z tym zrobić? Jak zobaczyć to, czego nie widzą inni?

Arthur Schopenhauer powiedział "Talent pozwala osiągać to, czego inni nie mogą dosięgnąć. Geniusz pozwala osiągnąć to, czego inni nie są w stanie dostrzec". Według mnie ważną rolę odgrywa tutaj prostota. Tylko jak ma się to do programowania?

Kilka lat temu w moim dzienniku zanotowałem słowa, które pamiętam do dziś. "Coś jest proste nie wtedy gdy ignorujemy niektóre elementy, ale wtedy gdy docierając do źródła świadomie odrzucamy te niepotrzebne". Inaczej mówiąc – prostota nie wynika z ignorancji, lecz zrozumienia.

To może sugerować że niezbędnym elementem prostych rozwiązań jest odpowiednia ilość danych oraz ich analiza, które w połączeniu dają odpowiedni poziom zrozumienia ale jednocześnie zajmują dużo czasu. Tak być może ale nie musi.

Jak więc myśleć prosto?

#1 Mindset
Pierwszym krokiem jest odpowiednie nastawienie. Nie na rozwiązanie, lecz na PROSTE rozwiązanie. Brzmi jak coś oczywistego? Bynajmniej takie nie jest. Rozwiązując problem nie skupiaj się wyłącznie na osiągnięciu pożądanego rezultatu ale również tym aby opracować najlepszą możliwą ścieżkę.

Ciekawostka: Wydawać by się mogło że najszybszą drogą z punktu A do B jest linia prosta.
Sprawdź sobie pojęcie "*A brachistochrone curve" *i zobacz że nie zawsze tak musi być.

#2 Beginner's mind
"In the beginner's mind there are many possibilities, in the expert's mind there are few." ~ Shunryu Suzuki

Dobrą praktyką przeprowadzania "burzy mózgów" jest zaproszenie do grona ekspertów jednej osoby, która nie posiada dużego doświadczenia. Często to ona zadaje pytania, których nie widzą pozostali i które tylko pozostali są w stanie rozwinąć i zastosować.

Jak widzisz kluczowe jest tutaj połączenie braku doświadczenia z doświadczeniem. O tym dlaczego tak się dzieje, mógłbym napisać oddzielny artykuł, ale ważne abyś wiedział "co możesz z tym zrobić".

Odsyłam Cię do określenia "Beginner's Mind", które skupia się na odpowiedniej postawie względem swojej wiedzy oraz ego. Uwzględnia m.in. zakładanie że MOŻEMY się mylić oraz że NIE WIEMY wszystkiego. Są to cechy które z wielu powodów są zatracane razem ze wzrostem naszego doświadczenia.

#3 Iteracje
Rysowałeś kiedyś lub widziałeś jak ktoś to robi? W zależności od techniki proces ten zwykle zaczyna się od szkicu, potem drugiego, trzeciego … i kolejnego aż do czasu uzyskania pożądanego efektu.

Podobnie bywa z upraszczaniem. Czasem faktycznie pierwsze rozwiązanie które przychodzi nam do głowy jest najlepsze (czyt. więcej "Occam's Razor"), ale w sytuacji gdy tak się nie dzieje, iteracje stają się pomocne.

To wymaga przede wszystkim wytrwałości ale efekt końcowy jest po prostu warty tej gry.

#4 Mechanizm dźwigni
Jak działa dźwignia zapewne wiesz. Natomiast nie każdy zdaje sobie sprawę że analogiczny do fizycznej dźwigni mechanizm można stosować w procesie myślenia.

Chodzi o myślenie uwzględniające ilość wymaganego wysiłku w porównaniu z rezultatem.
Wybitne rezultaty można osiągnąć niskim kosztem, stosując uproszczenie.

Wykorzystanie mechanizmu dźwigni ma na celu nakierowanie naszych myśli na odpowiednie tory i zmuszenie nas do zadawania odpowiednich pytań. I tutaj zachęcam do myślenia na dużą skalę przez zadawanie pytań w stylu "Jak mogę zrobić to samo 10x prościej?" albo "Jak wykonać pracę z miesiąca w jeden dzień?".

To ostatnie pytanie mogłeś usłyszeć od Elona Muska, który podkreśla że nawet jeżeli nie uda Ci się osiągnąć takiego uproszczenia to i tak będziesz bliżej niż pozostali, którzy nie myślą w takich kategoriach.

#5 Skłonność do komplikowania
Z jakiegoś powodu jako ludzie komplikujemy rzeczy proste. Jakiś czas temu słuchałem wypowiedzi osoby posiadającej wieloletnie doświadczenie jako konsultant biznesowy. Jego specjalizacja opierała się o wymianę wiedzy pomiędzy światem biznesu i technologii. W swojej wypowiedzi podkreślał jak ważna jest odpowiednia komunikacja i omawiał techniki które warto stosować. Problem w tym że podczas wypowiedzi stosował skomplikowane terminy. Pomimo faktu że świetnie odnajduję się zarówno w świecie biznesu jak i technologii, autentycznie trudno było mi go zrozumieć.

Podobnie jest w przypadku gdy pracuję z programistami posiadającymi często niesamowite doświadczenie w programowaniu skomplikowanych systemów. Zwykle ich rozwiązania są 10x … bardziej złożone niż być powinny. Oczywiście można to uzasadnić faktem, że rozbudowane systemy które budowali są odpowiednio bardziej wymagające. Problem jednak tutaj polega na zatraceniu umiejętności stosowania prostych rozwiązań w sytuacjach gdy złożoność jest niska.

Sam doświadczam tego, że skłonność do komplikowania istnieje i zwiększa się z naszym doświadczeniem w wybranym temacie. Jednocześnie jestem też przekonany o tym, że zdolność do upraszczania jest umiejętnością jak każda inna i można ją wypracować.

Na koniec polecam kilka książek w temacie: Simplify: How the Best Businesses in the World Succeed, Insanely Simple: The Obsession That Drives Apple's Success, Think Like a Rocket Scientist

Lista linków z Newslettera:

Ćwiczenia oddechowe lepsze niż kawa



Oak to aplikacja do medytacji ale posiada świetne funkcje do ćwiczeń oddechowych zarówno na uspokojenie jak i pobudzenie. Jedna minuta potrafi wiele zmienić.

Podcast neurobiologa – TOP3 moich podcastów



Jeden z najlepszych podcastów jakie miałem okazję kiedykolwiek słyszeć. Masa praktycznych sugestii dotyczących skutecznej nauki, zarządzania energią i psychiką.

Jak zarządzać zmiennymi środowiskowymi?



Zarządzanie zmiennymi środowiskowymi nie ogranicza się wyłącznie do pliku .env a ze względu na ich istotę, warto poszerzyć swoją wiedzę w tym temacie.

Książka dzięki której staniesz się mądrzejszy



The Beginning of Infinity to niesamowita książka poruszająca wiele skomplikowanych koncepcji. ToKast to podcast, który ułatwia ich zrozumienie.

Życiowe umiejętności



Lifeclub to strona której misją jest gromadzenie opisów przydatnych w życiu umiejętności, których z jakiegoś powodu nie uczy nas szkoła. Kształtowanie nawyków, efektywna komunikacja, wrażliwość czy radzenie sobie ze stresem to niektóre z nich.

UDOSTĘPNIJ ARTYKUŁ:

Powiązane artykuły

Programowanie i WWW

Jak mądrze wybrać stack technologiczny do projektu?

Rozpoczynasz nowy projekt i jesteś odpowiedzialny za jego dalszy rozwój. Przed Tobą decyzje dotyczące technologii, frameworków i narzędzi. Jak wybrać mądrze i czy to w ogóle możliwe?…

Programowanie i WWW

5 rzeczy, które programista musi wiedzieć o designie

Programowanie w pewnym punkcie łączy się z designem i od jakości tego połączenia w dużym stopniu zależy końcowy efekt. Nawet jeżeli designerzy i programiści zrobią "swoją robotę"…

Programowanie i WWW

5 nieoczywistych narzędzi programisty w 2021 roku

Pozostań na bieżąco!

Już nigdy nie przegapisz ważnych informacji, promocji oraz nowych kursów. Zapisz się na newsletter już teraz!

Zapisując się do newslettera akceptujesz naszą politykę prywatności