Czy rozwiązywanie kat ma sens?
Codewars nie nauczy mnie budować aplikacji, nie zastąpi doświadczenia przy prawdziwym projekcie i prawdopodobnie nie zrobi ze mnie lepszej architektki. A mimo to nadal rozwiązuję kolejne katy. Dlaczego? Właśnie o tym jest ten wpis.
Od jakiegoś czasu regularnie rozwiązuję zadania na Codewars. I ostatnio zaczęłam się zastanawiać, po co właściwie to robię. Przecież mogłabym zapytać ChatGPT.
Wklejam zadanie, chwilę czekam i dostaję rozwiązanie. Czasami nawet bardzo ładne. Czasami takie, na które sama bym nie wpadła. Czasami takie, które wygląda świetnie, dopóki nie zacznę pytać „dlaczego?”. Czyli w sumie jak z kodem pisanym przez człowieka, tylko szybciej. 😀
Więc gdzie tu sens siedzenia nad jednym zadaniem przez pół godziny i zastanawiania się, dlaczego mój genialny pomysł nie działa?
Chyba w tym, że ja po prostu lubię rozwiązywać takie rzeczy.
Zawsze lubiłam krzyżówki. Sudoku też. Mam chyba jakąś dziwną potrzebę patrzenia na problem, który na początku wygląda trochę bez sensu, a potem nagle coś zaczyna się układać. I chyba dlatego Codewars całkiem dobrze wpasował się w moje rozrywki.
Tylko że przy okazji jest to trochę zabawne, bo jeszcze kilka lat temu programowanie kojarzyło mi się przede wszystkim z pisaniem kodu. Im dłużej pracuję jako programistka, tym bardziej mam wrażenie, że piszę go coraz mniej.
I nie chodzi nawet o AI.
Coraz częściej zanim coś napiszę, siedzę i myślę. Jak ten problem właściwie wygląda? Co jest jego częścią, a co tylko objawem? Czy naprawdę potrzebuję kolejnego komponentu? Czy ten stan powinien być tutaj? Czy może próbuję właśnie naprawić coś, co sama zaprojektowałam pięć minut wcześniej?
Czasami najwięcej pracy wykonuję zanim powstanie pierwsza linijka kodu.
I chyba właśnie dlatego zaczęły mnie interesować katy trochę bardziej niż na początku.
Kata jest prosta w porównaniu z prawdziwym projektem. Masz problem, wejście, wyjście i mniej więcej wiesz, kiedy wygrałeś. Nie musisz się zastanawiać, czy za trzy miesiące ktoś będzie chciał do tego dorzucić jeszcze pięć przypadków biznesowych, czy ktoś inny odziedziczy po Tobie ten kod i będzie próbował zrozumieć, co autor miał na myśli. Nie ma też PM-a, który mówi „to tylko mała zmiana” i nagle okazuje się, że trzeba przebudować pół aplikacji.
Ale sam sposób myślenia jest trochę podobny.
Masz problem i musisz go rozłożyć na części. Zastanowić się, co właściwie jest wymagane. Poszukać różnych rozwiązań. Odrzucić te, które nie mają sensu. A czasami dojść do rozwiązania, które działa, ale po spojrzeniu na nie następnego dnia myślisz: „Boże, co ja tutaj zrobiłam”.
To ostatnie też jest ważną częścią programowania. 😀
Nie wiem, czy rozwiązywanie kat rzeczywiście pomaga mi w architekturze. Nie mam żadnego eksperymentu, który mógłby to potwierdzić. Nie mogę powiedzieć: rozwiązałam 87 zadań i dzięki temu moje decyzje architektoniczne są o 23% lepsze.
Podejrzewam zresztą, że tak to nie działa.
Ale zauważyłam jedną konkretną rzecz. Kiedy podczas rozmowy rekrutacyjnej usłyszałam: „napisz kod, który...”, nie spanikowałam.
Po prostu zaczęłam kombinować.
I dla mnie to już jest całkiem sporo, bo jeszcze jakiś czas temu samo „napisz kod na żywo” potrafiło uruchomić w głowie pustkę. Nagle człowiek zapomina, czym jest map, czym jest filter, a najlepiej jeszcze własne imię.
Teraz nadal mogę nie znać rozwiązania. Nadal mogę napisać coś głupiego. Nadal mogę dostać zadanie i pomyśleć „serio?”.
Ale jestem bardziej przyzwyczajona do samego procesu dochodzenia do rozwiązania.
I chyba właśnie to daje mi Codewars.
Nie wiedzę, że każdą funkcję potrafię napisać z pamięci. Nie uczę się tam przecież budowania aplikacji. Raczej ćwiczę ten mały moment pomiędzy „mam problem” a „dobra, spróbuję coś z tym zrobić”.
A AI trochę komplikuje całą sprawę, bo mogłabym ten moment po prostu ominąć.
Tylko że wtedy tracę całą zabawę.
To trochę jak z sudoku. Mogę znaleźć rozwiązanie w Google. Mogę poprosić kogoś, żeby mi powiedział, gdzie wpisać każdą liczbę. Tylko że wtedy... po co w ogóle siedzę nad sudoku?
I chyba podobnie mam z Codewars.
Nie rozwiązuję tych zadań dlatego, że świat potrzebuje kolejnej funkcji odwracającej stringa. Świat naprawdę sobie poradzi bez mojego rozwiązania.
Robię to, bo lubię ten moment, kiedy siedzę nad czymś i nagle: „Aaaaa, dobra. Już wiem”.
No i oczywiście trochę też dlatego, że lubię się poczuć mądra.
Czy jestem?
Nie wiem.
Ale wczoraj rozwiązałam katę i przez jakieś pięć minut byłam przekonana, że jestem absolutnym geniuszem programowania.
Potem zobaczyłam rozwiązanie innej osoby.
Miało trzy linijki.
Może jednak trzeba było zapytać ChatGPT. 😀
Możesz wygenerować mi podsumowanie tego postu?